winapi_ui_automation/um/
wbemprov.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use 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}}
25// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0000_v0_0_c_ifspec;
26// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0000_v0_0_s_ifspec;
27// EXTERN_C const IID LIBID_WbemProviders_v1;
28// EXTERN_C const IID IID_IWbemPropertyProvider;
29DEFINE_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}}
50// EXTERN_C const IID IID_IWbemUnboundObjectSink;
51DEFINE_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}}
61// EXTERN_C const IID IID_IWbemEventProvider;
62DEFINE_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}}
71// EXTERN_C const IID IID_IWbemEventProviderQuerySink;
72DEFINE_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}}
85// EXTERN_C const IID IID_IWbemEventProviderSecurity;
86DEFINE_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}}
97// EXTERN_C const IID IID_IWbemEventConsumerProvider;
98DEFINE_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}}
107// EXTERN_C const IID IID_IWbemProviderInitSink;
108DEFINE_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}}
117// EXTERN_C const IID IID_IWbemProviderInit;
118DEFINE_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}}
132// EXTERN_C const IID IID_IWbemHiPerfProvider;
133DEFINE_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}}
180// EXTERN_C const IID IID_IWbemDecoupledRegistrar;
181DEFINE_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}
198// class DECLSPEC_UUID("cb8555cc-9128-11d1-ad9b-00c04fd8fdff")
199// WbemAdministrativeLocator;
200DEFINE_GUID!{CLSID_WbemAuthenticatedLocator,
201    0xcd184336, 0x9128, 0x11d1, 0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff}
202// class DECLSPEC_UUID("cd184336-9128-11d1-ad9b-00c04fd8fdff")
203// WbemAuthenticatedLocator;
204DEFINE_GUID!{CLSID_WbemUnauthenticatedLocator,
205    0x443E7B79, 0xDE31, 0x11d2, 0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A}
206// class DECLSPEC_UUID("443E7B79-DE31-11d2-B340-00104BCC4B4A")
207// WbemUnauthenticatedLocator;
208DEFINE_GUID!{CLSID_WbemDecoupledRegistrar,
209    0x4cfc7932, 0x0f9d, 0x4bef, 0x9c, 0x32, 0x8e, 0xa2, 0xa6, 0xb5, 0x6f, 0xcb}
210// class DECLSPEC_UUID("4cfc7932-0f9d-4bef-9c32-8ea2a6b56fcb")
211// WbemDecoupledRegistrar;
212DEFINE_GUID!{CLSID_WbemDecoupledBasicEventProvider,
213    0xf5f75737, 0x2843, 0x4f22, 0x93, 0x3d, 0xc7, 0x6a, 0x97, 0xcd, 0xa6, 0x2f}
214// class DECLSPEC_UUID("f5f75737-2843-4f22-933d-c76a97cda62f")
215// WbemDecoupledBasicEventProvider;
216// EXTERN_C const IID IID_IWbemProviderIdentity;
217DEFINE_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}}
237// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0008_v0_0_c_ifspec;
238// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0008_v0_0_s_ifspec;
239// EXTERN_C const IID IID_IWbemDecoupledBasicEventProvider;
240DEFINE_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}}
261// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0013_v0_0_c_ifspec;
262// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0013_v0_0_s_ifspec;
263// EXTERN_C const IID IID_IWbemEventSink;
264DEFINE_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// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0014_v0_0_c_ifspec;
286// extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0014_v0_0_s_ifspec;
287// unsigned c_long __RPC_USER BSTR_UserSize( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in BSTR * );
288// unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
289// unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
290// void __RPC_USER BSTR_UserFree( __RPC__in unsigned c_long *, __RPC__in BSTR * );
291// unsigned c_long __RPC_USER VARIANT_UserSize( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in VARIANT * );
292// unsigned char * __RPC_USER VARIANT_UserMarshal( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * );
293// unsigned char * __RPC_USER VARIANT_UserUnmarshal(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * );
294// void __RPC_USER VARIANT_UserFree( __RPC__in unsigned c_long *, __RPC__in VARIANT * );
295// unsigned c_long __RPC_USER BSTR_UserSize64( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in BSTR * );
296// unsigned char * __RPC_USER BSTR_UserMarshal64( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * );
297// unsigned char * __RPC_USER BSTR_UserUnmarshal64(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * );
298// void __RPC_USER BSTR_UserFree64( __RPC__in unsigned c_long *, __RPC__in BSTR * );
299// unsigned c_long __RPC_USER VARIANT_UserSize64( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in VARIANT * );
300// unsigned char * __RPC_USER VARIANT_UserMarshal64( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * );
301// unsigned char * __RPC_USER VARIANT_UserUnmarshal64(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * );
302// void __RPC_USER VARIANT_UserFree64( __RPC__in unsigned c_long *, __RPC__in VARIANT * );