windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/wbemtest/wbemntfy.h

96 lines
2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (C) 1996-2001 Microsoft Corporation
Module Name:
WBEMNTFY.H
Abstract:
History:
--*/
#ifndef _WBEMNOTFY_H_
#define _WBEMNOTFY_H_
#include <wbemidl.h>
//#include <arena.h>
#include <WT_flexarry.h>
DWORD WINAPI WbemWaitForSingleObject(
HANDLE hHandle, // handle of object to wait for
DWORD dwMilliseconds // time-out interval in milliseconds
);
class CStatusMonitor
{
private:
BOOL m_bOpen;
HWND m_hDlg;
HWND m_hList;
BOOL m_bVisible;
public:
CStatusMonitor();
~CStatusMonitor();
void Hide();
void Add(long lFlags, HRESULT hRes, BSTR bstr);
static BOOL CALLBACK DlgProc(
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
};
class CTestNotify : public IWbemObjectSinkEx
{
CFlexArray m_aObjects;
LONG m_lRefCount;
CRITICAL_SECTION m_cs;
HANDLE m_hEvent;
HRESULT m_hres;
IWbemClassObject* m_pErrorObj;
IID m_pInterfaceID;
IUnknown *m_pInterface;
public:
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj);
STDMETHOD_(ULONG, AddRef)(THIS);
STDMETHOD_(ULONG, Release)(THIS);
STDMETHOD(Indicate)(long lObjectCount, IWbemClassObject** pObjArray);
STDMETHOD(SetStatus)(long lFlags, HRESULT hResult, BSTR strParam,
IWbemClassObject* pObjPAram);
STDMETHOD(Set)(long lFlags, REFIID riid, void *pComObject);
// Private to implementation.
// ==========================
CTestNotify(LONG lStartingRefCount = 1);
~CTestNotify();
UINT WaitForSignal(DWORD dwMSec) { return ::WbemWaitForSingleObject(m_hEvent, dwMSec); }
CFlexArray* GetObjectArray() { return &m_aObjects; }
IUnknown *GetInterface() { return m_pInterface; }
HRESULT GetStatusCode(IWbemClassObject** ppErrorObj = NULL)
{
if(ppErrorObj)
{
*ppErrorObj = m_pErrorObj;
if(m_pErrorObj) m_pErrorObj->AddRef();
}
return m_hres;
}
void Lock() { EnterCriticalSection(&m_cs); }
void Unlock() { LeaveCriticalSection(&m_cs); }
};
#endif