1 | #pragma once
|
---|
2 |
|
---|
3 | #ifdef __cplusplus
|
---|
4 | extern "C" {
|
---|
5 | #endif
|
---|
6 |
|
---|
7 | typedef enum _WMIENABLEDISABLECONTROL {
|
---|
8 | WmiEventControl,
|
---|
9 | WmiDataBlockControl
|
---|
10 | } WMIENABLEDISABLECONTROL, *PWMIENABLEDISABLECONTROL;
|
---|
11 |
|
---|
12 | typedef enum _SYSCTL_IRP_DISPOSITION {
|
---|
13 | IrpProcessed,
|
---|
14 | IrpNotCompleted,
|
---|
15 | IrpNotWmi,
|
---|
16 | IrpForward
|
---|
17 | } SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION;
|
---|
18 |
|
---|
19 | typedef struct _WMIGUIDREGINFO {
|
---|
20 | LPCGUID Guid;
|
---|
21 | ULONG InstanceCount;
|
---|
22 | ULONG Flags;
|
---|
23 | } WMIGUIDREGINFO, *PWMIGUIDREGINFO;
|
---|
24 |
|
---|
25 | typedef NTSTATUS
|
---|
26 | (NTAPI WMI_QUERY_REGINFO_CALLBACK) (
|
---|
27 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
28 | IN OUT PULONG RegFlags,
|
---|
29 | IN OUT PUNICODE_STRING InstanceName,
|
---|
30 | OUT PUNICODE_STRING *RegistryPath OPTIONAL,
|
---|
31 | IN OUT PUNICODE_STRING MofResourceName,
|
---|
32 | OUT PDEVICE_OBJECT *Pdo OPTIONAL);
|
---|
33 | typedef WMI_QUERY_REGINFO_CALLBACK *PWMI_QUERY_REGINFO;
|
---|
34 |
|
---|
35 | typedef NTSTATUS
|
---|
36 | (NTAPI WMI_FUNCTION_CONTROL_CALLBACK) (
|
---|
37 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
38 | IN OUT PIRP Irp,
|
---|
39 | IN ULONG GuidIndex,
|
---|
40 | IN WMIENABLEDISABLECONTROL Function,
|
---|
41 | IN BOOLEAN Enable);
|
---|
42 | typedef WMI_FUNCTION_CONTROL_CALLBACK *PWMI_FUNCTION_CONTROL;
|
---|
43 |
|
---|
44 | typedef NTSTATUS
|
---|
45 | (NTAPI WMI_QUERY_DATABLOCK_CALLBACK) (
|
---|
46 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
47 | IN OUT PIRP Irp,
|
---|
48 | IN ULONG GuidIndex,
|
---|
49 | IN ULONG InstanceIndex,
|
---|
50 | IN ULONG InstanceCount,
|
---|
51 | OUT PULONG InstanceLengthArray OPTIONAL,
|
---|
52 | IN ULONG BufferAvail,
|
---|
53 | OUT PUCHAR Buffer OPTIONAL);
|
---|
54 | typedef WMI_QUERY_DATABLOCK_CALLBACK *PWMI_QUERY_DATABLOCK;
|
---|
55 |
|
---|
56 | typedef NTSTATUS
|
---|
57 | (NTAPI WMI_EXECUTE_METHOD_CALLBACK) (
|
---|
58 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
59 | IN OUT PIRP Irp,
|
---|
60 | IN ULONG GuidIndex,
|
---|
61 | IN ULONG InstanceIndex,
|
---|
62 | IN ULONG MethodId,
|
---|
63 | IN ULONG InBufferSize,
|
---|
64 | IN ULONG OutBufferSize,
|
---|
65 | IN OUT PUCHAR Buffer);
|
---|
66 | typedef WMI_EXECUTE_METHOD_CALLBACK *PWMI_EXECUTE_METHOD;
|
---|
67 |
|
---|
68 | typedef NTSTATUS
|
---|
69 | (NTAPI WMI_SET_DATABLOCK_CALLBACK) (
|
---|
70 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
71 | IN OUT PIRP Irp,
|
---|
72 | IN ULONG GuidIndex,
|
---|
73 | IN ULONG InstanceIndex,
|
---|
74 | IN ULONG BufferSize,
|
---|
75 | IN PUCHAR Buffer);
|
---|
76 | typedef WMI_SET_DATABLOCK_CALLBACK *PWMI_SET_DATABLOCK;
|
---|
77 |
|
---|
78 | typedef NTSTATUS
|
---|
79 | (NTAPI WMI_SET_DATAITEM_CALLBACK) (
|
---|
80 | IN OUT PDEVICE_OBJECT DeviceObject,
|
---|
81 | IN OUT PIRP Irp,
|
---|
82 | IN ULONG GuidIndex,
|
---|
83 | IN ULONG InstanceIndex,
|
---|
84 | IN ULONG DataItemId,
|
---|
85 | IN ULONG BufferSize,
|
---|
86 | IN PUCHAR Buffer);
|
---|
87 | typedef WMI_SET_DATAITEM_CALLBACK *PWMI_SET_DATAITEM;
|
---|
88 |
|
---|
89 | typedef struct _WMILIB_CONTEXT {
|
---|
90 | ULONG GuidCount;
|
---|
91 | PWMIGUIDREGINFO GuidList;
|
---|
92 | PWMI_QUERY_REGINFO QueryWmiRegInfo;
|
---|
93 | PWMI_QUERY_DATABLOCK QueryWmiDataBlock;
|
---|
94 | PWMI_SET_DATABLOCK SetWmiDataBlock;
|
---|
95 | PWMI_SET_DATAITEM SetWmiDataItem;
|
---|
96 | PWMI_EXECUTE_METHOD ExecuteWmiMethod;
|
---|
97 | PWMI_FUNCTION_CONTROL WmiFunctionControl;
|
---|
98 | } WMILIB_CONTEXT, *PWMILIB_CONTEXT;
|
---|
99 |
|
---|
100 | #if (NTDDI_VERSION >= NTDDI_WIN2K)
|
---|
101 |
|
---|
102 | NTSTATUS
|
---|
103 | NTAPI
|
---|
104 | WmiCompleteRequest(
|
---|
105 | IN PDEVICE_OBJECT DeviceObject,
|
---|
106 | IN OUT PIRP Irp,
|
---|
107 | IN NTSTATUS Status,
|
---|
108 | IN ULONG BufferUsed,
|
---|
109 | IN CCHAR PriorityBoost);
|
---|
110 |
|
---|
111 | NTSTATUS
|
---|
112 | NTAPI
|
---|
113 | WmiSystemControl(
|
---|
114 | IN PWMILIB_CONTEXT WmiLibInfo,
|
---|
115 | IN PDEVICE_OBJECT DeviceObject,
|
---|
116 | IN OUT PIRP Irp,
|
---|
117 | OUT PSYSCTL_IRP_DISPOSITION IrpDisposition);
|
---|
118 |
|
---|
119 | NTSTATUS
|
---|
120 | NTAPI
|
---|
121 | WmiFireEvent(
|
---|
122 | IN PDEVICE_OBJECT DeviceObject,
|
---|
123 | IN LPCGUID Guid,
|
---|
124 | IN ULONG InstanceIndex,
|
---|
125 | IN ULONG EventDataSize,
|
---|
126 | IN PVOID EventData);
|
---|
127 |
|
---|
128 | #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
---|
129 |
|
---|
130 | #ifdef __cplusplus
|
---|
131 | }
|
---|
132 | #endif
|
---|