1use ctypes::{c_long, c_ulong};
7use shared::minwindef::{BYTE, DWORD};
8use shared::winerror::HRESULT;
9use shared::wtypes::BSTR;
10use um::oaidl::{VARIANT};
11use um::unknwnbase::{IUnknown, IUnknownVtbl};
12use um::wbemcli::{
13 IWbemClassObject, IWbemContext, IWbemHiPerfEnum, IWbemObjectAccess, IWbemObjectSink,
14 IWbemObjectSinkVtbl, IWbemRefresher, IWbemServices
15};
16use um::winnt::{LONG, LPCWSTR, LPWSTR, WCHAR};
17pub type WBEM_VARIANT = VARIANT;
18pub type WBEM_WSTR = LPWSTR;
19pub type WBEM_CWSTR = LPCWSTR;
20ENUM!{enum WBEM_PROVIDER_REQUIREMENTS_TYPE {
21 WBEM_REQUIREMENTS_START_POSTFILTER = 0,
22 WBEM_REQUIREMENTS_STOP_POSTFILTER = 1,
23 WBEM_REQUIREMENTS_RECHECK_SUBSCRIPTIONS = 2,
24}}
25DEFINE_GUID!{IID_IWbemPropertyProvider,
30 0xce61e841, 0x65bc, 0x11d0, 0xb6, 0xbd, 0x00, 0xaa, 0x00, 0x32, 0x40, 0xc7}
31RIDL!{#[uuid(0xce61e841, 0x65bc, 0x11d0, 0xb6, 0xbd, 0x00, 0xaa, 0x00, 0x32, 0x40, 0xc7)]
32interface IWbemPropertyProvider(IWbemPropertyProviderVtbl): IUnknown(IUnknownVtbl) {
33 fn GetProperty(
34 lFlags: c_long,
35 strLocale: BSTR,
36 strClassMapping: BSTR,
37 strInstMapping: BSTR,
38 strPropMapping: BSTR,
39 pvValue: *mut VARIANT,
40 ) -> HRESULT,
41 fn PutProperty(
42 lFlags: c_long,
43 strLocale: BSTR,
44 strClassMapping: BSTR,
45 strInstMapping: BSTR,
46 strPropMapping: BSTR,
47 pvValue: *const VARIANT,
48 ) -> HRESULT,
49}}
50DEFINE_GUID!{IID_IWbemUnboundObjectSink,
52 0xe246107b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
53RIDL!{#[uuid(0xe246107b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)]
54interface IWbemUnboundObjectSink(IWbemUnboundObjectSinkVtbl): IUnknown(IUnknownVtbl) {
55 fn IndicateToConsumer(
56 pLogicalConsumer: *mut IWbemClassObject,
57 lNumObjects: c_long,
58 apObjects: *mut *mut IWbemClassObject,
59 ) -> HRESULT,
60}}
61DEFINE_GUID!{IID_IWbemEventProvider,
63 0xe245105b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
64RIDL!{#[uuid(0xe245105b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)]
65interface IWbemEventProvider(IWbemEventProviderVtbl): IUnknown(IUnknownVtbl) {
66 fn ProvideEvents(
67 pSink: *mut IWbemObjectSink,
68 lFlags: c_long,
69 ) -> HRESULT,
70}}
71DEFINE_GUID!{IID_IWbemEventProviderQuerySink,
73 0x580acaf8, 0xfa1c, 0x11d0, 0xad, 0x72, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
74RIDL!{#[uuid(0x580acaf8, 0xfa1c, 0x11d0, 0xad, 0x72, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)]
75interface IWbemEventProviderQuerySink(IWbemEventProviderQuerySinkVtbl): IUnknown(IUnknownVtbl) {
76 fn NewQuery(
77 dwId: c_ulong,
78 wszQueryLanguage: WBEM_WSTR,
79 wszQuery: WBEM_WSTR,
80 ) -> HRESULT,
81 fn CancelQuery(
82 dwId: c_ulong,
83 ) -> HRESULT,
84}}
85DEFINE_GUID!{IID_IWbemEventProviderSecurity,
87 0x631f7d96, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf}
88RIDL!{#[uuid(0x631f7d96, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf)]
89interface IWbemEventProviderSecurity(IWbemEventProviderSecurityVtbl): IUnknown(IUnknownVtbl) {
90 fn AccessCheck(
91 wszQueryLanguage: WBEM_CWSTR,
92 wszQuery: WBEM_CWSTR,
93 lSidLength: c_long,
94 pSid: *const BYTE,
95 ) -> HRESULT,
96}}
97DEFINE_GUID!{IID_IWbemEventConsumerProvider,
99 0xe246107a, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
100RIDL!{#[uuid(0xe246107a, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)]
101interface IWbemEventConsumerProvider(IWbemEventConsumerProviderVtbl): IUnknown(IUnknownVtbl) {
102 fn FindConsumer(
103 pLogicalConsumer: *mut IWbemClassObject,
104 ppConsumer: *mut *mut IWbemUnboundObjectSink,
105 ) -> HRESULT,
106}}
107DEFINE_GUID!{IID_IWbemProviderInitSink,
109 0x1be41571, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20}
110RIDL!{#[uuid(0x1be41571, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)]
111interface IWbemProviderInitSink(IWbemProviderInitSinkVtbl): IUnknown(IUnknownVtbl) {
112 fn SetStatus(
113 lStatus: LONG,
114 lFlags: LONG,
115 ) -> HRESULT,
116}}
117DEFINE_GUID!{IID_IWbemProviderInit,
119 0x1be41572, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20}
120RIDL!{#[uuid(0x1be41572, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)]
121interface IWbemProviderInit(IWbemProviderInitVtbl): IUnknown(IUnknownVtbl) {
122 fn Initialize(
123 wszUser: LPWSTR,
124 lFlags: LONG,
125 wszNamespace: LPWSTR,
126 wszLocale: LPWSTR,
127 pNamespace: *mut IWbemServices,
128 pCtx: *mut IWbemContext,
129 pInitSink: *mut IWbemProviderInitSink,
130 ) -> HRESULT,
131}}
132DEFINE_GUID!{IID_IWbemHiPerfProvider,
134 0x49353c93, 0x516b, 0x11d1, 0xae, 0xa6, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20}
135RIDL!{#[uuid(0x49353c93, 0x516b, 0x11d1, 0xae, 0xa6, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)]
136interface IWbemHiPerfProvider(IWbemHiPerfProviderVtbl): IUnknown(IUnknownVtbl) {
137 fn QueryInstances(
138 pNamespace: *mut IWbemServices,
139 wszClass: *mut WCHAR,
140 lFlags: c_long,
141 pCtx: *mut IWbemContext,
142 pSink: *mut IWbemObjectSink,
143 ) -> HRESULT,
144 fn CreateRefresher(
145 pNamespace: *mut IWbemServices,
146 lFlags: c_long,
147 ppRefresher: *mut *mut IWbemRefresher,
148 ) -> HRESULT,
149 fn CreateRefreshableObject(
150 pNamespace: *mut IWbemServices,
151 pTemplate: *mut IWbemObjectAccess,
152 pRefresher: *mut IWbemRefresher,
153 lFlags: c_long,
154 pContext: *mut IWbemContext,
155 ppRefreshable: *mut *mut IWbemObjectAccess,
156 plId: *mut c_long,
157 ) -> HRESULT,
158 fn StopRefreshing(
159 pRefresher: *mut IWbemRefresher,
160 lId: c_long,
161 lFlags: c_long,
162 ) -> HRESULT,
163 fn CreateRefreshableEnum(
164 pNamespace: *mut IWbemServices,
165 wszClass: LPCWSTR,
166 pRefresher: *mut IWbemRefresher,
167 lFlags: c_long,
168 pContext: *mut IWbemContext,
169 pHiPerfEnum: *mut IWbemHiPerfEnum,
170 plId: *mut c_long,
171 ) -> HRESULT,
172 fn GetObjects(
173 pNamespace: *mut IWbemServices,
174 lNumObjects: c_long,
175 apObj: *mut *mut IWbemObjectAccess,
176 lFlags: c_long,
177 pContext: *mut IWbemContext,
178 ) -> HRESULT,
179}}
180DEFINE_GUID!{IID_IWbemDecoupledRegistrar,
182 0x1005cbcf, 0xe64f, 0x4646, 0xbc, 0xd3, 0x3a, 0x08, 0x9d, 0x8a, 0x84, 0xb4}
183RIDL!{#[uuid(0x1005cbcf, 0xe64f, 0x4646, 0xbc, 0xd3, 0x3a, 0x08, 0x9d, 0x8a, 0x84, 0xb4)]
184interface IWbemDecoupledRegistrar(IWbemDecoupledRegistrarVtbl): IUnknown(IUnknownVtbl) {
185 fn Register(
186 a_Flags: c_long,
187 a_Context: *mut IWbemContext,
188 a_User: LPCWSTR,
189 a_Locale: LPCWSTR,
190 a_Scope: LPCWSTR,
191 a_Registration: LPCWSTR,
192 pIUnknown: *mut IUnknown,
193 ) -> HRESULT,
194 fn UnRegister() -> HRESULT,
195}}
196DEFINE_GUID!{CLSID_WbemAdministrativeLocator,
197 0xcb8555cc, 0x9128, 0x11d1, 0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
198DEFINE_GUID!{CLSID_WbemAuthenticatedLocator,
201 0xcd184336, 0x9128, 0x11d1, 0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
202DEFINE_GUID!{CLSID_WbemUnauthenticatedLocator,
205 0x443E7B79, 0xDE31, 0x11d2, 0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A}
206DEFINE_GUID!{CLSID_WbemDecoupledRegistrar,
209 0x4cfc7932, 0x0f9d, 0x4bef, 0x9c, 0x32, 0x8e, 0xa2, 0xa6, 0xb5, 0x6f, 0xcb}
210DEFINE_GUID!{CLSID_WbemDecoupledBasicEventProvider,
213 0xf5f75737, 0x2843, 0x4f22, 0x93, 0x3d, 0xc7, 0x6a, 0x97, 0xcd, 0xa6, 0x2f}
214DEFINE_GUID!{IID_IWbemProviderIdentity,
218 0x631f7d97, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf}
219RIDL!{#[uuid(0x631f7d97, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf)]
220interface IWbemProviderIdentity(IWbemProviderIdentityVtbl): IUnknown(IUnknownVtbl) {
221 fn SetRegistrationObject(
222 lFlags: c_long,
223 pProvReg: *mut IWbemClassObject,
224 ) -> HRESULT,
225}}
226ENUM!{enum WBEM_EXTRA_RETURN_CODES {
227 WBEM_S_INITIALIZED = 0,
228 WBEM_S_LIMITED_SERVICE = 0x43001,
229 WBEM_S_INDIRECTLY_UPDATED = WBEM_S_LIMITED_SERVICE + 1,
230 WBEM_S_SUBJECT_TO_SDS = WBEM_S_INDIRECTLY_UPDATED + 1,
231 WBEM_E_RETRY_LATER = 0x80043001,
232 WBEM_E_RESOURCE_CONTENTION = WBEM_E_RETRY_LATER + 1,
233}}
234ENUM!{enum WBEM_PROVIDER_FLAGS {
235 WBEM_FLAG_OWNER_UPDATE = 0x10000,
236}}
237DEFINE_GUID!{IID_IWbemDecoupledBasicEventProvider,
241 0x86336d20, 0xca11, 0x4786, 0x9e, 0xf1, 0xbc, 0x8a, 0x94, 0x6b, 0x42, 0xfc}
242RIDL!{#[uuid(0x86336d20, 0xca11, 0x4786, 0x9e, 0xf1, 0xbc, 0x8a, 0x94, 0x6b, 0x42, 0xfc)]
243interface IWbemDecoupledBasicEventProvider(IWbemDecoupledBasicEventProviderVtbl):
244 IWbemDecoupledRegistrar(IWbemDecoupledRegistrarVtbl) {
245 fn GetSink(
246 a_Flags: c_long,
247 a_Context: *mut IWbemContext,
248 a_Sink: *mut *mut IWbemObjectSink,
249 ) -> HRESULT,
250 fn GetService(
251 a_Flags: c_long,
252 a_Context: *mut IWbemContext,
253 a_Service: *mut *mut IWbemServices,
254 ) -> HRESULT,
255}}
256ENUM!{enum WBEM_BATCH_TYPE {
257 WBEM_FLAG_BATCH_IF_NEEDED = 0,
258 WBEM_FLAG_MUST_BATCH = 0x1,
259 WBEM_FLAG_MUST_NOT_BATCH = 0x2,
260}}
261DEFINE_GUID!{IID_IWbemEventSink,
265 0x3ae0080a, 0x7e3a, 0x4366, 0xbf, 0x89, 0x0f, 0xee, 0xdc, 0x93, 0x16, 0x59}
266RIDL!{#[uuid(0x3ae0080a, 0x7e3a, 0x4366, 0xbf, 0x89, 0x0f, 0xee, 0xdc, 0x93, 0x16, 0x59)]
267interface IWbemEventSink(IWbemEventSinkVtbl): IWbemObjectSink(IWbemObjectSinkVtbl) {
268 fn SetSinkSecurity(
269 lSDLength: c_long,
270 pSD: *mut BYTE,
271 ) -> HRESULT,
272 fn IsActive() -> HRESULT,
273 fn GetRestrictedSink(
274 lNumQueries: c_long,
275 awszQueries: *const LPCWSTR,
276 pCallback: *mut IUnknown,
277 ppSink: *mut *mut IWbemEventSink,
278 ) -> HRESULT,
279 fn SetBatchingParameters(
280 lFlags: LONG,
281 dwMaxBufferSize: DWORD,
282 dwMaxSendLatency: DWORD,
283 ) -> HRESULT,
284}}
285