| #pragma once | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef enum _WMIENABLEDISABLECONTROL { | |
| WmiEventControl, | |
| WmiDataBlockControl | |
| } WMIENABLEDISABLECONTROL, *PWMIENABLEDISABLECONTROL; | |
| typedef enum _SYSCTL_IRP_DISPOSITION { | |
| IrpProcessed, | |
| IrpNotCompleted, | |
| IrpNotWmi, | |
| IrpForward | |
| } SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION; | |
| typedef struct _WMIGUIDREGINFO { | |
| LPCGUID Guid; | |
| ULONG InstanceCount; | |
| ULONG Flags; | |
| } WMIGUIDREGINFO, *PWMIGUIDREGINFO; | |
| typedef NTSTATUS | |
| (NTAPI WMI_QUERY_REGINFO_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PULONG RegFlags, | |
| IN OUT PUNICODE_STRING InstanceName, | |
| OUT PUNICODE_STRING *RegistryPath OPTIONAL, | |
| IN OUT PUNICODE_STRING MofResourceName, | |
| OUT PDEVICE_OBJECT *Pdo OPTIONAL); | |
| typedef WMI_QUERY_REGINFO_CALLBACK *PWMI_QUERY_REGINFO; | |
| typedef NTSTATUS | |
| (NTAPI WMI_FUNCTION_CONTROL_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN ULONG GuidIndex, | |
| IN WMIENABLEDISABLECONTROL Function, | |
| IN BOOLEAN Enable); | |
| typedef WMI_FUNCTION_CONTROL_CALLBACK *PWMI_FUNCTION_CONTROL; | |
| typedef NTSTATUS | |
| (NTAPI WMI_QUERY_DATABLOCK_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN ULONG GuidIndex, | |
| IN ULONG InstanceIndex, | |
| IN ULONG InstanceCount, | |
| OUT PULONG InstanceLengthArray OPTIONAL, | |
| IN ULONG BufferAvail, | |
| OUT PUCHAR Buffer OPTIONAL); | |
| typedef WMI_QUERY_DATABLOCK_CALLBACK *PWMI_QUERY_DATABLOCK; | |
| typedef NTSTATUS | |
| (NTAPI WMI_EXECUTE_METHOD_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN ULONG GuidIndex, | |
| IN ULONG InstanceIndex, | |
| IN ULONG MethodId, | |
| IN ULONG InBufferSize, | |
| IN ULONG OutBufferSize, | |
| IN OUT PUCHAR Buffer); | |
| typedef WMI_EXECUTE_METHOD_CALLBACK *PWMI_EXECUTE_METHOD; | |
| typedef NTSTATUS | |
| (NTAPI WMI_SET_DATABLOCK_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN ULONG GuidIndex, | |
| IN ULONG InstanceIndex, | |
| IN ULONG BufferSize, | |
| IN PUCHAR Buffer); | |
| typedef WMI_SET_DATABLOCK_CALLBACK *PWMI_SET_DATABLOCK; | |
| typedef NTSTATUS | |
| (NTAPI WMI_SET_DATAITEM_CALLBACK) ( | |
| IN OUT PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN ULONG GuidIndex, | |
| IN ULONG InstanceIndex, | |
| IN ULONG DataItemId, | |
| IN ULONG BufferSize, | |
| IN PUCHAR Buffer); | |
| typedef WMI_SET_DATAITEM_CALLBACK *PWMI_SET_DATAITEM; | |
| typedef struct _WMILIB_CONTEXT { | |
| ULONG GuidCount; | |
| PWMIGUIDREGINFO GuidList; | |
| PWMI_QUERY_REGINFO QueryWmiRegInfo; | |
| PWMI_QUERY_DATABLOCK QueryWmiDataBlock; | |
| PWMI_SET_DATABLOCK SetWmiDataBlock; | |
| PWMI_SET_DATAITEM SetWmiDataItem; | |
| PWMI_EXECUTE_METHOD ExecuteWmiMethod; | |
| PWMI_FUNCTION_CONTROL WmiFunctionControl; | |
| } WMILIB_CONTEXT, *PWMILIB_CONTEXT; | |
| #if (NTDDI_VERSION >= NTDDI_WIN2K) | |
| NTSTATUS | |
| NTAPI | |
| WmiCompleteRequest( | |
| IN PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| IN NTSTATUS Status, | |
| IN ULONG BufferUsed, | |
| IN CCHAR PriorityBoost); | |
| NTSTATUS | |
| NTAPI | |
| WmiSystemControl( | |
| IN PWMILIB_CONTEXT WmiLibInfo, | |
| IN PDEVICE_OBJECT DeviceObject, | |
| IN OUT PIRP Irp, | |
| OUT PSYSCTL_IRP_DISPOSITION IrpDisposition); | |
| NTSTATUS | |
| NTAPI | |
| WmiFireEvent( | |
| IN PDEVICE_OBJECT DeviceObject, | |
| IN LPCGUID Guid, | |
| IN ULONG InstanceIndex, | |
| IN ULONG EventDataSize, | |
| IN PVOID EventData); | |
| #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ | |
| #ifdef __cplusplus | |
| } | |
| #endif |