1069 lines
28 KiB
C++
1069 lines
28 KiB
C++
// Events.cpp
|
|
#include "stdafx.h"
|
|
#include <wbemcli.h>
|
|
#include "NCObjApi.h"
|
|
#include "Events.h"
|
|
|
|
#define COUNTOF(x) (sizeof(x)/sizeof(x[0]))
|
|
|
|
// Some random data to send.
|
|
#define NUM_STRINGS 3
|
|
#define NUM_REFS 3
|
|
#define NUM_DATES 3
|
|
|
|
LPCWSTR szStringArray[] = { L"String1", L"String2", L"String3" };
|
|
LPCWSTR szRefArray[] = { L"Win32_Bus.DeviceID=\"PCI_BUS_0\"",
|
|
L"Win32_Bus.DeviceID=\"PCI_BUS_1\"",
|
|
L"Win32_Bus.DeviceID=\"Isa_BUS_0\"" };
|
|
LPCWSTR szDateArray[] = { L"199903260900**.**********",
|
|
L"199903270900**.**********",
|
|
L"199903280900**.**********" };
|
|
BYTE cByteArray[] = { 0, 1, 2 };
|
|
WORD bBoolArray[] = { 0, 1, 0, 1 };
|
|
WORD wWordArray[] = { 3, 4, 5 };
|
|
DWORD dwDwordArray[] = { 6, 7, 8 };
|
|
DWORD64 dwDword64Array[] = { 9, 10, 11 };
|
|
float fFloatArray[] = { 0.25, 0.5, 0.75 };
|
|
double dDoubleArray[] = { 1.33, 1.66, 2.0 };
|
|
|
|
// Our connections.
|
|
extern HANDLE g_hConnection;
|
|
//extern HANDLE g_hConnectionDWORD;
|
|
|
|
BOOL CGenericEvent::Init()
|
|
{
|
|
m_strName = "Generic Event";
|
|
m_strQuery =
|
|
"select * from MSFT_WMI_GenericNonCOMEvent "
|
|
"where providername=\"NCETest Event Provider\"";
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
DWORD g_dwIndexGeneric = 0;
|
|
|
|
BOOL CGenericEvent::ReportEvent()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiReportEvent(
|
|
g_hConnection,
|
|
L"MSFT_WMI_GenericNonCOMEvent",
|
|
L"StringParam!s! Sint64Param!I64i! Uint32Param!u! "
|
|
L"Uint8Array!c[]! StringArray!s[]! BoolArray!b[]!",
|
|
L"Another string.", // StringParam
|
|
(DWORD64) 1024, // Sint64Param
|
|
g_dwIndexGeneric++, // Uint32Param
|
|
cByteArray, COUNTOF(cByteArray), // Uint8Array,
|
|
szStringArray, NUM_STRINGS, // StringArray
|
|
bBoolArray, COUNTOF(bBoolArray) // BoolArray
|
|
);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CBlobEvent::Init()
|
|
{
|
|
m_strName = "Blob Event";
|
|
m_strQuery =
|
|
"select * from MSFT_NCETest_BlobEvent";
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
// Used for testing WmiReportEventBlob.
|
|
struct TEST_BLOB
|
|
{
|
|
WCHAR szName[25];
|
|
DWORD dwIndex;
|
|
BYTE cData[10];
|
|
WCHAR szStrings[3][25];
|
|
};
|
|
|
|
TEST_BLOB g_blob =
|
|
{ L"My blob", 0, { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
|
|
{ L"String1", L"String2", L"String3" } };
|
|
|
|
BOOL CBlobEvent::ReportEvent()
|
|
{
|
|
BOOL bRet;
|
|
|
|
// Just to make it interesting.
|
|
g_blob.dwIndex++;
|
|
|
|
bRet =
|
|
WmiReportEventBlob(
|
|
g_hConnection,
|
|
L"MSFT_NCETest_BlobEvent",
|
|
&g_blob,
|
|
sizeof(g_blob));
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CDWORDEvent::Init()
|
|
{
|
|
LPCWSTR szIndex = L"Index";
|
|
CIMTYPE type = CIM_UINT32;
|
|
|
|
m_strName = "DWORD Event";
|
|
m_strQuery =
|
|
"select * from MSFT_NCETest_DWORDEvent";
|
|
|
|
m_hEvent =
|
|
WmiCreateObjectWithProps(
|
|
//g_hConnectionDWORD,
|
|
g_hConnection,
|
|
L"MSFT_NCETest_DWORDEvent",
|
|
WMI_CREATEOBJ_LOCKABLE,
|
|
1,
|
|
&szIndex,
|
|
&type);
|
|
|
|
SetPropsWithManyCalls();
|
|
|
|
return m_hEvent != NULL;
|
|
}
|
|
|
|
DWORD g_dwIndexDWORD = 0;
|
|
|
|
BOOL CDWORDEvent::SetAndFire(DWORD dwFlags)
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetAndCommitObject(
|
|
m_hEvent,
|
|
dwFlags,
|
|
g_dwIndexDWORD++);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CDWORDEvent::SetPropsWithOneCall()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetObjectProps(
|
|
m_hEvent,
|
|
g_dwIndexDWORD++);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CDWORDEvent::SetPropsWithManyCalls()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
0,
|
|
g_dwIndexDWORD++);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CDWORDEvent::ReportEvent()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiReportEvent(
|
|
//g_hConnectionDWORD,
|
|
g_hConnection,
|
|
L"MSFT_NCETest_DWORDEvent",
|
|
L"Index!d!",
|
|
g_dwIndexDWORD++);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CSmallEvent::Init()
|
|
{
|
|
LPCWSTR szNames[3] = { L"Index", L"BoolParam", L"StringParam" };
|
|
CIMTYPE pTypes[3] = { CIM_UINT32, CIM_BOOLEAN, CIM_STRING };
|
|
|
|
m_strName = "Small Event";
|
|
m_strQuery =
|
|
"select * from MSFT_NCETest_3PropEvent";
|
|
|
|
m_hEvent =
|
|
WmiCreateObjectWithProps(
|
|
g_hConnection,
|
|
L"MSFT_NCETest_3PropEvent",
|
|
0,
|
|
3,
|
|
szNames,
|
|
pTypes);
|
|
|
|
SetPropsWithManyCalls();
|
|
|
|
return m_hEvent != NULL;
|
|
}
|
|
|
|
DWORD g_dwIndexSmall = 0;
|
|
|
|
BOOL CSmallEvent::SetAndFire(DWORD dwFlags)
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetAndCommitObject(
|
|
m_hEvent,
|
|
dwFlags,
|
|
g_dwIndexSmall++,
|
|
TRUE,
|
|
L"1");
|
|
|
|
bRet =
|
|
WmiSetAndCommitObject(
|
|
m_hEvent,
|
|
dwFlags,
|
|
g_dwIndexSmall++,
|
|
TRUE,
|
|
L"WmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObjectWmiSetAndCommitObject");
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CSmallEvent::SetPropsWithOneCall()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetObjectProps(
|
|
m_hEvent,
|
|
g_dwIndexSmall++,
|
|
TRUE,
|
|
L"WmiSetObjectProps");
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CSmallEvent::ReportEvent()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiReportEvent(
|
|
g_hConnection,
|
|
L"MSFT_NCETest_3PropEvent",
|
|
L"Index!d! BoolParam!b! StringParam!s!",
|
|
g_dwIndexSmall++,
|
|
TRUE,
|
|
L"WmiReportEvent");
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CSmallEvent::SetPropsWithManyCalls()
|
|
{
|
|
BOOL bRet;
|
|
|
|
bRet =
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
0,
|
|
g_dwIndexSmall++);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
1,
|
|
TRUE);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
2,
|
|
L"WmiSetObjectProp");
|
|
|
|
return bRet;
|
|
}
|
|
|
|
HANDLE hEmbeddedObjs[3];
|
|
|
|
void InitEmbeddedObjs(HANDLE hSource)
|
|
{
|
|
LPCWSTR szProcessorNames[3] = { L"Name", L"CurrentClockSpeed", L"L2CacheSize" },
|
|
szBusNames[3] = { L"Name", L"DeviceID", L"BusNum" },
|
|
szBIOSNames[3] = { L"Name", L"Status", L"PrimaryBIOS" };
|
|
CIMTYPE pProcessorTypes[3] = { CIM_STRING, CIM_UINT32, CIM_UINT32 },
|
|
pBusTypes[3] = { CIM_STRING, CIM_STRING, CIM_UINT32 },
|
|
pBIOSTypes[3] = { CIM_STRING, CIM_STRING, CIM_BOOLEAN };
|
|
|
|
hEmbeddedObjs[0] =
|
|
WmiCreateObjectWithProps(
|
|
hSource,
|
|
L"Win32_Processor",
|
|
WMI_CREATEOBJ_LOCKABLE,
|
|
3,
|
|
szProcessorNames,
|
|
pProcessorTypes);
|
|
|
|
WmiSetObjectProps(
|
|
hEmbeddedObjs[0],
|
|
L"Intel Pentium III processor",
|
|
800,
|
|
256);
|
|
|
|
|
|
hEmbeddedObjs[1] =
|
|
WmiCreateObjectWithProps(
|
|
hSource,
|
|
L"Win32_Bus",
|
|
WMI_CREATEOBJ_LOCKABLE,
|
|
3,
|
|
szBusNames,
|
|
pBusTypes);
|
|
|
|
WmiSetObjectProps(
|
|
hEmbeddedObjs[1],
|
|
L"Bus",
|
|
L"PCI_BUS_1",
|
|
5);
|
|
|
|
|
|
hEmbeddedObjs[2] =
|
|
WmiCreateObjectWithProps(
|
|
hSource,
|
|
L"Win32_BIOS",
|
|
WMI_CREATEOBJ_LOCKABLE,
|
|
3,
|
|
szBIOSNames,
|
|
pBIOSTypes);
|
|
|
|
WmiSetObjectProps(
|
|
hEmbeddedObjs[2],
|
|
L"Default System BIOS",
|
|
L"OK",
|
|
TRUE);
|
|
}
|
|
|
|
|
|
#ifdef USE_NULLS
|
|
IWbemClassObject *pWbemClassObjs[5];
|
|
#else
|
|
IWbemClassObject *pWbemClassObjs[3];
|
|
#endif
|
|
|
|
LPCWSTR szWbemClassNames[3] = { L"Win32_Bus", L"Win32_Processor", L"Win32_BIOS" };
|
|
|
|
void InitWbemClassObjs()
|
|
{
|
|
IWbemLocator *pLocator;
|
|
HRESULT hr;
|
|
|
|
// Only do this once.
|
|
if (pWbemClassObjs[0])
|
|
return;
|
|
|
|
CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
|
|
if ((hr = CoCreateInstance(
|
|
CLSID_WbemLocator,
|
|
NULL,
|
|
CLSCTX_INPROC_SERVER,
|
|
IID_IWbemLocator,
|
|
(LPVOID *) &pLocator)) == S_OK)
|
|
{
|
|
IWbemServices *pNamespace = NULL;
|
|
|
|
if ((hr = pLocator->ConnectServer(
|
|
_bstr_t(L"root\\cimv2"),
|
|
NULL, // username
|
|
NULL, // password
|
|
NULL, // locale
|
|
0L, // securityFlags
|
|
NULL, // authority (domain for NTLM)
|
|
NULL, // context
|
|
&pNamespace)) == S_OK)
|
|
{
|
|
pLocator->Release();
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
{
|
|
IWbemClassObject *pClass = NULL;
|
|
|
|
pNamespace->GetObject(
|
|
_bstr_t(szWbemClassNames[i]),
|
|
0,
|
|
NULL,
|
|
&pClass,
|
|
NULL);
|
|
|
|
#ifdef USE_NULLS
|
|
// i + 1 so that the 1st and last ones will be NULL (to make sure
|
|
// we allow for NULLs in IWbemClassObject arrays).
|
|
pClass->SpawnInstance(0, (IWbemClassObject**) &pWbemClassObjs[i + 1]);
|
|
#else
|
|
pClass->SpawnInstance(0, (IWbemClassObject**) &pWbemClassObjs[i]);
|
|
#endif
|
|
|
|
pClass->Release();
|
|
}
|
|
|
|
//pNamespace->Release();
|
|
}
|
|
}
|
|
|
|
// CoUninitialize();
|
|
}
|
|
|
|
|
|
enum PROP_INDEX
|
|
{
|
|
PI_StringParam,
|
|
PI_StringArray,
|
|
|
|
PI_Char16Param,
|
|
PI_Char16Array,
|
|
|
|
PI_DateParam,
|
|
PI_DateArray,
|
|
|
|
PI_RefParam,
|
|
PI_RefArray,
|
|
|
|
PI_BoolParam,
|
|
PI_BoolArray,
|
|
|
|
PI_ObjParam,
|
|
PI_ObjArray,
|
|
|
|
PI_WbemClassObjParam,
|
|
PI_WbemClassObjArray,
|
|
|
|
PI_Real32Param,
|
|
PI_Real32Array,
|
|
|
|
PI_Real64Param,
|
|
PI_Real64Array,
|
|
|
|
PI_Uint8Param,
|
|
PI_Uint8Array,
|
|
PI_Sint8Param,
|
|
PI_Sint8Array,
|
|
|
|
PI_Uint16Param,
|
|
PI_Uint16Array,
|
|
PI_Sint16Param,
|
|
PI_Sint16Array,
|
|
|
|
PI_Uint32Param,
|
|
PI_Uint32Array,
|
|
PI_Sint32Param,
|
|
PI_Sint32Array,
|
|
|
|
PI_Uint64Param,
|
|
PI_Uint64Array,
|
|
PI_Sint64Param,
|
|
PI_Sint64Array,
|
|
};
|
|
|
|
LPCWSTR pszProps[] =
|
|
{
|
|
L"StringParam",
|
|
L"StringArray",
|
|
|
|
L"Char16Param",
|
|
L"Char16Array",
|
|
|
|
L"DateParam",
|
|
L"DateArray",
|
|
|
|
L"RefParam",
|
|
L"RefArray",
|
|
|
|
L"BoolParam",
|
|
L"BoolArray",
|
|
|
|
L"ObjParam",
|
|
L"ObjArray",
|
|
|
|
L"WbemClassObjParam",
|
|
L"WbemClassObjArray",
|
|
|
|
L"Real32Param",
|
|
L"Real32Array",
|
|
|
|
L"Real64Param",
|
|
L"Real64Array",
|
|
|
|
L"Uint8Param",
|
|
L"Uint8Array",
|
|
L"Sint8Param",
|
|
L"Sint8Array",
|
|
|
|
L"Uint16Param",
|
|
L"Uint16Array",
|
|
L"Sint16Param",
|
|
L"Sint16Array",
|
|
|
|
L"Uint32Param",
|
|
L"Uint32Array",
|
|
L"Sint32Param",
|
|
L"Sint32Array",
|
|
|
|
L"Uint64Param",
|
|
L"Uint64Array",
|
|
L"Sint64Param",
|
|
L"Sint64Array",
|
|
};
|
|
|
|
long pTypes[] =
|
|
{
|
|
CIM_STRING, //L"StringParam",
|
|
CIM_STRING | CIM_FLAG_ARRAY, //L"StringArray",
|
|
|
|
CIM_CHAR16, //L"Char16Param",
|
|
CIM_CHAR16 | CIM_FLAG_ARRAY, //L"Char16Array",
|
|
|
|
CIM_DATETIME, //L"DateParam",
|
|
CIM_DATETIME | CIM_FLAG_ARRAY, //L"DateArray",
|
|
|
|
CIM_REFERENCE, //L"RefParam",
|
|
CIM_REFERENCE | CIM_FLAG_ARRAY, //L"RefArray",
|
|
|
|
CIM_BOOLEAN, //L"BoolParam",
|
|
CIM_BOOLEAN | CIM_FLAG_ARRAY, //L"BoolArray",
|
|
|
|
CIM_OBJECT, //L"ObjParam",
|
|
CIM_OBJECT | CIM_FLAG_ARRAY, //L"ObjArray",
|
|
|
|
CIM_IUNKNOWN, //L"WbemClassObjParam",
|
|
CIM_IUNKNOWN | CIM_FLAG_ARRAY, //L"WbemClassObjArray",
|
|
|
|
CIM_REAL32, //L"Real32Param",
|
|
CIM_REAL32 | CIM_FLAG_ARRAY, //L"Real32Array",
|
|
|
|
CIM_REAL64, //L"Real64Param",
|
|
CIM_REAL64 | CIM_FLAG_ARRAY, //L"Real64Array",
|
|
|
|
CIM_UINT8, //L"Uint8Param",
|
|
CIM_UINT8 | CIM_FLAG_ARRAY, //L"Uint8Array",
|
|
CIM_SINT8, //L"Sint8Param",
|
|
CIM_SINT8 | CIM_FLAG_ARRAY, //L"Sint8Array",
|
|
|
|
CIM_UINT16, //L"Uint16Param",
|
|
CIM_UINT16 | CIM_FLAG_ARRAY, //L"Uint16Array",
|
|
CIM_SINT16, //L"Sint16Param",
|
|
CIM_SINT16 | CIM_FLAG_ARRAY, //L"Sint16Array",
|
|
|
|
CIM_UINT32, //L"Uint32Param",
|
|
CIM_UINT32 | CIM_FLAG_ARRAY, //L"Uint32Array",
|
|
CIM_SINT32, //L"Sint32Param",
|
|
CIM_SINT32 | CIM_FLAG_ARRAY, //L"Sint32Array",
|
|
|
|
CIM_UINT64, //L"Uint64Param",
|
|
CIM_UINT64 | CIM_FLAG_ARRAY, //L"Uint64Array",
|
|
CIM_SINT64, //L"Sint64Param",
|
|
CIM_SINT64 | CIM_FLAG_ARRAY, //L"Sint64Array",
|
|
};
|
|
|
|
#define NUM_PROPS (sizeof(pTypes)/sizeof(pTypes[0]))
|
|
|
|
|
|
BOOL CAllPropsTypeEvent::Init()
|
|
{
|
|
m_strName = "All prop types Event";
|
|
m_strQuery =
|
|
"select * from MSFT_NCETest_AllPropTypesEvent";
|
|
|
|
|
|
InitEmbeddedObjs(g_hConnection);
|
|
|
|
m_hEvent =
|
|
WmiCreateObjectWithProps(
|
|
g_hConnection,
|
|
L"MSFT_NCETest_AllPropTypesEvent",
|
|
0,
|
|
NUM_PROPS,
|
|
pszProps,
|
|
pTypes);
|
|
|
|
SetPropsWithManyCalls();
|
|
|
|
return m_hEvent != NULL;
|
|
}
|
|
|
|
BOOL CAllPropsTypeEvent::SetAndFire(DWORD dwFlags)
|
|
{
|
|
BOOL bRet;
|
|
|
|
InitWbemClassObjs();
|
|
|
|
bRet =
|
|
WmiSetAndCommitObject(
|
|
m_hEvent,
|
|
dwFlags,
|
|
|
|
L"A string.", //L"StringParam",
|
|
szStringArray, NUM_STRINGS, //L"StringArray",
|
|
|
|
100, //L"Char16Param",
|
|
L"Some chars.", COUNTOF(L"Some chars."), //L"Char16Array",
|
|
|
|
L"199903260900**.**********", //L"DateParam",
|
|
szDateArray, NUM_DATES, //L"DateArray",
|
|
|
|
L"Win32_Processor.DeviceID=\"CPU0\"", //L"RefParam",
|
|
szRefArray, NUM_REFS, //L"RefArray",
|
|
|
|
FALSE, //L"BoolParam",
|
|
bBoolArray, COUNTOF(bBoolArray), //L"BoolArray",
|
|
|
|
hEmbeddedObjs[0], //L"ObjParam",
|
|
hEmbeddedObjs, COUNTOF(hEmbeddedObjs), //L"ObjArray",
|
|
|
|
pWbemClassObjs[0], //L"WbemClassObjParam",
|
|
pWbemClassObjs, COUNTOF(pWbemClassObjs), //L"WbemClassObjArray",
|
|
|
|
(float) 42.3, //L"Real32Param",
|
|
fFloatArray, COUNTOF(fFloatArray), //L"Real32Array",
|
|
|
|
(double) 7.8, //L"Real64Param",
|
|
dDoubleArray, COUNTOF(dDoubleArray), //L"Real64Array",
|
|
|
|
13, //L"Uint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Uint8Array",
|
|
|
|
14, //L"Sint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Sint8Array",
|
|
|
|
15, //L"Uint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Uint16Array",
|
|
|
|
16, //L"Sint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Sint16Array",
|
|
|
|
17, //L"Uint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Uint32Array",
|
|
|
|
18, //L"Sint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Sint32Array",
|
|
|
|
(DWORD64) 19, //L"Uint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array), //L"Uint64Array",
|
|
|
|
(DWORD64) 20, //L"Sint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array) //L"Sint64Array",
|
|
);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CAllPropsTypeEvent::SetPropsWithOneCall()
|
|
{
|
|
BOOL bRet;
|
|
|
|
InitWbemClassObjs();
|
|
|
|
bRet =
|
|
WmiSetObjectProps(
|
|
m_hEvent,
|
|
|
|
L"A string.", //L"StringParam",
|
|
szStringArray, NUM_STRINGS, //L"StringArray",
|
|
|
|
100, //L"Char16Param",
|
|
L"Some chars.", COUNTOF(L"Some chars."), //L"Char16Array",
|
|
|
|
L"199903260900**.**********", //L"DateParam",
|
|
szDateArray, NUM_DATES, //L"DateArray",
|
|
|
|
L"Win32_Processor.DeviceID=\"CPU0\"", //L"RefParam",
|
|
szRefArray, NUM_REFS, //L"RefArray",
|
|
|
|
FALSE, //L"BoolParam",
|
|
bBoolArray, COUNTOF(bBoolArray), //L"BoolArray",
|
|
|
|
hEmbeddedObjs[0], //L"ObjParam",
|
|
hEmbeddedObjs, COUNTOF(hEmbeddedObjs), //L"ObjArray",
|
|
|
|
pWbemClassObjs[0], //L"WbemClassObjParam",
|
|
pWbemClassObjs, COUNTOF(pWbemClassObjs), //L"WbemClassObjArray",
|
|
|
|
(float) 42.3, //L"Real32Param",
|
|
fFloatArray, COUNTOF(fFloatArray), //L"Real32Array",
|
|
|
|
(double) 7.8, //L"Real64Param",
|
|
dDoubleArray, COUNTOF(dDoubleArray), //L"Real64Array",
|
|
|
|
13, //L"Uint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Uint8Array",
|
|
|
|
14, //L"Sint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Sint8Array",
|
|
|
|
15, //L"Uint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Uint16Array",
|
|
|
|
16, //L"Sint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Sint16Array",
|
|
|
|
17, //L"Uint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Uint32Array",
|
|
|
|
18, //L"Sint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Sint32Array",
|
|
|
|
(DWORD64) 19, //L"Uint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array), //L"Uint64Array",
|
|
|
|
(DWORD64) 20, //L"Sint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array) //L"Sint64Array",
|
|
);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CAllPropsTypeEvent::ReportEvent()
|
|
{
|
|
BOOL bRet;
|
|
|
|
InitWbemClassObjs();
|
|
|
|
bRet =
|
|
WmiReportEvent(
|
|
g_hConnection,
|
|
|
|
// Class name
|
|
L"MSFT_NCETest_AllPropTypesEvent",
|
|
|
|
// Property info
|
|
L"StringParam!s! StringArray!s[]! Char16Param!w! Char16Array!w[]! "
|
|
L"DateParam!s! DateArray!s[]! RefParam!s! RefArray!s[]! "
|
|
L"BoolParam!b! BoolArray!b[]! ObjParam!o! ObjArray!o[]! "
|
|
L"WbemClassObjParam!O! WbemClassObjArray!O[]! "
|
|
L"Real32Param!f! Real32Array!f[]! Real64Param!g! Real64Array!g[]! "
|
|
L"Uint8Param!c! Uint8Array!c[]! Sint8Param!c! Sint8Array!c[]! "
|
|
L"Uint16Param!w! Uint16Array!w[]! Sint16Param!w! Sint16Array!w[]! "
|
|
L"Uint32Param!u! Uint32Array!u[]! Sint32Param!u! Sint32Array!u[]! "
|
|
L"Uint64Param!I64u! Uint64Array!I64u[]! Sint64Param!I64u! Sint64Array!I64u[]! ",
|
|
|
|
// Data
|
|
L"A string.", //L"StringParam",
|
|
szStringArray, NUM_STRINGS, //L"StringArray",
|
|
|
|
100, //L"Char16Param",
|
|
L"Some chars.", COUNTOF(L"Some chars."), //L"Char16Array",
|
|
|
|
L"199903260900**.**********", //L"DateParam",
|
|
szDateArray, NUM_DATES, //L"DateArray",
|
|
|
|
L"Win32_Processor.DeviceID=\"CPU0\"", //L"RefParam",
|
|
szRefArray, NUM_REFS, //L"RefArray",
|
|
|
|
FALSE, //L"BoolParam",
|
|
bBoolArray, COUNTOF(bBoolArray), //L"BoolArray",
|
|
|
|
hEmbeddedObjs[0], //L"ObjParam",
|
|
hEmbeddedObjs, COUNTOF(hEmbeddedObjs), //L"ObjArray",
|
|
|
|
pWbemClassObjs[0], //L"WbemClassObjParam",
|
|
pWbemClassObjs, COUNTOF(pWbemClassObjs), //L"WbemClassObjArray",
|
|
|
|
(float) 42.3, //L"Real32Param",
|
|
fFloatArray, COUNTOF(fFloatArray), //L"Real32Array",
|
|
|
|
(double) 7.8, //L"Real64Param",
|
|
dDoubleArray, COUNTOF(dDoubleArray), //L"Real64Array",
|
|
|
|
13, //L"Uint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Uint8Array",
|
|
|
|
14, //L"Sint8Param",
|
|
cByteArray, COUNTOF(cByteArray), //L"Sint8Array",
|
|
|
|
15, //L"Uint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Uint16Array",
|
|
|
|
16, //L"Sint16Param",
|
|
wWordArray, COUNTOF(wWordArray), //L"Sint16Array",
|
|
|
|
17, //L"Uint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Uint32Array",
|
|
|
|
18, //L"Sint32Param",
|
|
dwDwordArray, COUNTOF(dwDwordArray), //L"Sint32Array",
|
|
|
|
(DWORD64) 19, //L"Uint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array), //L"Uint64Array",
|
|
|
|
(DWORD64) 20, //L"Sint64Param",
|
|
dwDword64Array, COUNTOF(dwDword64Array) //L"Sint64Array",
|
|
);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
BOOL CAllPropsTypeEvent::SetPropsWithManyCalls()
|
|
{
|
|
BOOL bRet;
|
|
|
|
InitWbemClassObjs();
|
|
|
|
bRet =
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_StringParam,
|
|
L"A very very very very long string." //L"StringParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_StringParam,
|
|
L"A short string." //L"StringParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_StringArray,
|
|
szStringArray, NUM_STRINGS //L"StringArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Char16Param,
|
|
100 //L"Char16Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Char16Array,
|
|
L"Some chars.", COUNTOF(L"Some chars.") //L"Char16Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_DateParam,
|
|
L"199903260900**.**********" //L"DateParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Char16Param,
|
|
100 //L"Char16Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_DateArray,
|
|
szDateArray, NUM_DATES //L"DateArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_RefParam,
|
|
L"Win32_Processor.DeviceID=\"CPU0\"" //L"RefParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_RefArray,
|
|
szRefArray, NUM_REFS //L"RefArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_BoolParam,
|
|
FALSE //L"BoolParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_BoolArray,
|
|
bBoolArray, COUNTOF(bBoolArray) //L"BoolArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_ObjParam,
|
|
hEmbeddedObjs[0] //L"ObjParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_ObjArray,
|
|
hEmbeddedObjs, COUNTOF(hEmbeddedObjs) //L"ObjArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_WbemClassObjParam,
|
|
pWbemClassObjs[0] //L"ObjParam",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_WbemClassObjArray,
|
|
pWbemClassObjs, COUNTOF(pWbemClassObjs) //L"ObjArray",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Real32Param,
|
|
(float) 42.3 //L"Real32Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Real32Array,
|
|
fFloatArray, COUNTOF(fFloatArray) //L"Real32Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Real64Param,
|
|
(double) 7.8 //L"Real64Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Real64Array,
|
|
dDoubleArray, COUNTOF(dDoubleArray) //L"Real64Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint8Param,
|
|
13 //L"Uint8Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint8Array,
|
|
cByteArray, COUNTOF(cByteArray) //L"Uint8Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint8Param,
|
|
14 //L"Sint8Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint8Array,
|
|
cByteArray, COUNTOF(cByteArray) //L"Sint8Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint16Param,
|
|
15 //L"Uint16Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint16Array,
|
|
wWordArray, COUNTOF(wWordArray) //L"Uint16Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint16Param,
|
|
16 //L"Sint16Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint16Array,
|
|
wWordArray, COUNTOF(wWordArray) //L"Sint16Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint32Param,
|
|
17 //L"Uint32Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint32Array,
|
|
dwDwordArray, COUNTOF(dwDwordArray) //L"Uint32Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint32Param,
|
|
18 //L"Sint32Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint32Array,
|
|
dwDwordArray, COUNTOF(dwDwordArray) //L"Sint32Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint64Param,
|
|
(DWORD64) 19 //L"Uint64Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Uint64Array,
|
|
dwDword64Array, COUNTOF(dwDword64Array) //L"Uint64Array",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint64Param,
|
|
(DWORD64) 20 //L"Sint64Param",
|
|
);
|
|
|
|
bRet &=
|
|
WmiSetObjectProp(
|
|
m_hEvent,
|
|
PI_Sint64Array,
|
|
dwDword64Array, COUNTOF(dwDword64Array) //L"Sint64Array",
|
|
);
|
|
|
|
return bRet;
|
|
}
|
|
|
|
|