2025-04-27 07:49:33 -04:00

115 lines
2.9 KiB
C++

/*++
Copyright (C) 1997-2001 Microsoft Corporation
Module Name:
WINMGMT.H
Abstract:
Declares the PROG_RESOURCES stucture, the MyService class and a few
utility type functions.
History:
--*/
#ifndef _WinMgmt_H_
#define _WinMgmt_H_
#include <flexarry.h>
typedef LPVOID * PPVOID;
//***************************************************************************
//
// STRUCT NAME:
//
// PROG_RESOURCES
//
// DESCRIPTION:
//
// Holds various resource that need to be freed at the end of execution.
//
//***************************************************************************
struct PROG_RESOURCES
{
HANDLE m_hExclusive;
HANDLE m_hTerminateEvent;
BOOL m_bOleInitialized;
IClassFactory* m_pLoginFactory;
IClassFactory* m_pBackupFactory;
DWORD m_dwLoginClsFacReg;
DWORD m_dwBackupClsFacReg;
CFlexArray m_Array;
PROG_RESOURCES();
} ;
class CForwardFactory : public IClassFactory
{
protected:
long m_lRef;
CLSID m_ForwardClsid;
IClassFactory* m_pFactory;
public:
CForwardFactory(REFCLSID rForwardClsid)
: m_lRef(0), m_ForwardClsid(rForwardClsid), m_pFactory(NULL)
{}
~CForwardFactory();
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppv);
HRESULT STDMETHODCALLTYPE CreateInstance(IUnknown* pUnkOuter,
REFIID riid, void** ppv);
HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock);
};
//***************************************************************************
//
// CLASS NAME:
//
// MyService
//
// DESCRIPTION:
//
// Having an instace of this class allows WinMgmt to run as a service.
// routes the calls to the actual WBEM core functions. See SERVICE.TXT,
// which should be in the coredll project, for a few pages of details!
//
//***************************************************************************
class MyService : public CNtService{
public:
MyService();
~MyService();
DWORD WorkerThread();
void UserCode(int nCode);
BOOL bOK(){return (m_hStopEvent != NULL && m_hBreakPoint != NULL);};
void Stop(){SetEvent(m_hStopEvent);};
VOID Log(LPCSTR lpszMsg);
HANDLE m_hStopEvent;
HANDLE m_hBreakPoint;
};
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
BOOL Initialize(PROG_RESOURCES & pr, BOOL bRunAsApp);
void Cleanup();
HWND MyCreateWindow(HINSTANCE hInstance);
typedef HRESULT (ADAP_DORESYNCPERF) ( HANDLE, DWORD, long, DWORD );
#define WBEM_REG_ADAP __TEXT("Software\\Microsoft\\WBEM\\CIMOM\\ADAP")
#define WBEM_NORESYNCPERF __TEXT("NoResyncPerf")
#define WBEM_NOSHELL __TEXT("NoShell")
#define WBEM_WMISETUP __TEXT("WMISetup")
#define WBEM_ADAPEXTDLL __TEXT("ADAPExtDll")
#endif