You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
6.6 KiB
290 lines
6.6 KiB
//=================================================================
|
|
|
|
//
|
|
|
|
// WmiApi.h
|
|
|
|
//
|
|
|
|
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
//=================================================================
|
|
|
|
#ifndef _WMIAPI_H_
|
|
#define _WMIAPI_H_
|
|
|
|
/**********************************************************************************************************
|
|
* #includes to Register this class with the CResourceManager.
|
|
**********************************************************************************************************/
|
|
#include "DllWrapperBase.h"
|
|
#include "wmium.h"
|
|
#include "wbemcli.h"
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
* Register this class with the CResourceManager.
|
|
*****************************************************************************/
|
|
extern const GUID g_guidWmiApi;
|
|
extern const TCHAR g_tstrWmi[];
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
* Function pointer typedefs. Add new functions here as required.
|
|
*****************************************************************************/
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_QUERY_ALL_DATA)
|
|
(
|
|
IN WMIHANDLE,
|
|
IN OUT ULONG*,
|
|
OUT PVOID
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_QUERY_SINGLE_INSTANCE)
|
|
(
|
|
IN WMIHANDLE DataBlockHandle,
|
|
IN LPCTSTR InstanceName,
|
|
IN OUT ULONG *BufferSize,
|
|
OUT PVOID Buffer
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_SET_SINGLE_ITEM)
|
|
(
|
|
IN WMIHANDLE DataBlockHandle,
|
|
IN LPCTSTR InstanceName,
|
|
IN ULONG DataItemId,
|
|
IN ULONG Reserved,
|
|
IN ULONG ValueBufferSize,
|
|
IN PVOID ValueBuffer
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_SET_SINGLE_INSTANCE)
|
|
(
|
|
IN WMIHANDLE DataBlockHandle,
|
|
IN LPCTSTR InstanceName,
|
|
IN ULONG Reserved,
|
|
IN ULONG ValueBufferSize,
|
|
IN PVOID ValueBuffer
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_EXECUTE_METHOD)
|
|
(
|
|
IN WMIHANDLE MethodDataBlockHandle,
|
|
IN LPCTSTR MethodInstanceName,
|
|
IN ULONG MethodId,
|
|
IN ULONG InputValueBufferSize,
|
|
IN PVOID InputValueBuffer,
|
|
IN OUT ULONG *OutputBufferSize,
|
|
OUT PVOID OutputBuffer
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_NOTIFICATION_REGRISTRATION)
|
|
(
|
|
IN LPGUID Guid,
|
|
IN BOOLEAN Enable,
|
|
IN PVOID DeliveryInfo,
|
|
IN ULONG_PTR DeliveryContext,
|
|
IN ULONG Flags
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_MOF_ENUMERATE_RESOURCES)
|
|
(
|
|
IN MOFHANDLE MofResourceHandle,
|
|
OUT ULONG *MofResourceCount,
|
|
OUT PMOFRESOURCEINFO *MofResourceInfo
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_FILE_HANDLE_TO_INSTANCE_NAME)
|
|
(
|
|
IN WMIHANDLE DataBlockHandle,
|
|
IN HANDLE FileHandle,
|
|
IN OUT ULONG *NumberCharacters,
|
|
OUT TCHAR *InstanceNames
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_DEV_INST_TO_INSTANCE_NAME)
|
|
(
|
|
OUT TCHAR *InstanceName,
|
|
IN ULONG InstanceNameLength,
|
|
IN TCHAR *DevInst,
|
|
IN ULONG InstanceIndex
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_OPEN_BLOCK)
|
|
(
|
|
IN GUID*,
|
|
IN ULONG,
|
|
OUT WMIHANDLE
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_CLOSE_BLOCK)
|
|
(
|
|
IN WMIHANDLE
|
|
);
|
|
|
|
typedef void (WINAPI* PNF_WMI_FREE_BUFFER)
|
|
(
|
|
IN PVOID Buffer
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_ENUMERATE_GUIDS)
|
|
(
|
|
OUT LPGUID GuidList,
|
|
IN OUT ULONG *GuidCount
|
|
);
|
|
|
|
typedef ULONG (WINAPI* PFN_WMI_QUERY_GUID_INFORMATION)
|
|
(
|
|
IN WMIHANDLE GuidHandle,
|
|
OUT PWMIGUIDINFORMATION GuidInfo
|
|
);
|
|
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
* Wrapper class for Wmi load/unload, for registration with CResourceManager.
|
|
******************************************************************************/
|
|
class CWmiApi : public CDllWrapperBase
|
|
{
|
|
private:
|
|
// Member variables (function pointers) pointing to Wmi functions.
|
|
// Add new functions here as required.
|
|
PFN_WMI_QUERY_ALL_DATA m_pfnWmiQueryAllData;
|
|
PFN_WMI_OPEN_BLOCK m_pfnWmiOpenBlock;
|
|
PFN_WMI_CLOSE_BLOCK m_pfnWmiCloseBlock;
|
|
PFN_WMI_QUERY_SINGLE_INSTANCE m_pfnWmiQuerySingleInstance;
|
|
PFN_WMI_SET_SINGLE_ITEM m_pfnWmiSetSingleItem;
|
|
PFN_WMI_SET_SINGLE_INSTANCE m_pfnWmiSetSingleInstance;
|
|
PFN_WMI_EXECUTE_METHOD m_pfnWmiExecuteMethod;
|
|
PFN_WMI_NOTIFICATION_REGRISTRATION m_pfnWmiNotificationRegistraton;
|
|
PNF_WMI_FREE_BUFFER m_pfnWmiFreeBuffer;
|
|
PFN_WMI_ENUMERATE_GUIDS m_pfnWmiEnumerateGuids;
|
|
PFN_WMI_MOF_ENUMERATE_RESOURCES m_pfnWmiMofEnumerateResources;
|
|
PFN_WMI_FILE_HANDLE_TO_INSTANCE_NAME m_pfnWmiFileHandleToInstanceName;
|
|
PFN_WMI_DEV_INST_TO_INSTANCE_NAME m_pfnWmiDevInstToInstanceName;
|
|
PFN_WMI_QUERY_GUID_INFORMATION m_pfnWmiQueryGuidInformation;
|
|
|
|
|
|
public:
|
|
|
|
// Constructor and destructor:
|
|
CWmiApi(LPCTSTR a_tstrWrappedDllName);
|
|
~CWmiApi();
|
|
|
|
// Initialization function to check function pointers.
|
|
virtual bool Init();
|
|
|
|
// Member functions wrapping Wmi functions.
|
|
// Add new functions here as required:
|
|
ULONG WmiQueryAllData
|
|
(
|
|
IN WMIHANDLE,
|
|
IN OUT ULONG*,
|
|
OUT PVOID
|
|
);
|
|
|
|
ULONG WmiOpenBlock
|
|
(
|
|
IN GUID*,
|
|
IN ULONG,
|
|
OUT WMIHANDLE
|
|
);
|
|
|
|
ULONG WmiCloseBlock
|
|
(
|
|
IN WMIHANDLE
|
|
);
|
|
|
|
ULONG WmiQuerySingleInstance
|
|
(
|
|
IN WMIHANDLE,
|
|
IN LPCTSTR,
|
|
IN OUT ULONG*,
|
|
OUT PVOID
|
|
);
|
|
|
|
ULONG WmiSetSingleItem
|
|
(
|
|
IN WMIHANDLE,
|
|
IN LPCTSTR,
|
|
IN ULONG,
|
|
IN ULONG,
|
|
IN ULONG,
|
|
IN PVOID
|
|
);
|
|
|
|
ULONG WmiSetSingleInstance
|
|
(
|
|
IN WMIHANDLE,
|
|
IN LPCTSTR,
|
|
IN ULONG,
|
|
IN ULONG,
|
|
IN PVOID
|
|
);
|
|
|
|
ULONG WmiExecuteMethod
|
|
(
|
|
IN WMIHANDLE,
|
|
IN LPCTSTR,
|
|
IN ULONG,
|
|
IN ULONG,
|
|
IN PVOID,
|
|
IN OUT ULONG*,
|
|
OUT PVOID
|
|
);
|
|
|
|
ULONG WmiNotificationRegistration
|
|
(
|
|
IN LPGUID,
|
|
IN BOOLEAN,
|
|
IN PVOID,
|
|
IN ULONG_PTR,
|
|
IN ULONG
|
|
);
|
|
|
|
ULONG WmiMofEnumerateResources
|
|
(
|
|
IN MOFHANDLE,
|
|
OUT ULONG*,
|
|
OUT PMOFRESOURCEINFO*
|
|
);
|
|
|
|
ULONG WmiFileHandleToInstanceName
|
|
(
|
|
IN WMIHANDLE,
|
|
IN HANDLE,
|
|
IN OUT ULONG*,
|
|
OUT TCHAR*
|
|
);
|
|
|
|
ULONG WmiDevInstToInstanceName
|
|
(
|
|
OUT TCHAR*,
|
|
IN ULONG,
|
|
IN TCHAR*,
|
|
IN ULONG
|
|
);
|
|
|
|
void WmiFreeBuffer
|
|
(
|
|
IN PVOID
|
|
);
|
|
|
|
ULONG WmiEnumerateGuids
|
|
(
|
|
OUT LPGUID,
|
|
IN OUT ULONG*
|
|
);
|
|
|
|
ULONG WmiQueryGuidInformation
|
|
(
|
|
IN WMIHANDLE,
|
|
OUT PWMIGUIDINFORMATION
|
|
);
|
|
};
|
|
|
|
|
|
|
|
#endif
|