Leaked source code of windows server 2003
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

//=================================================================
//
// 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