| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| use ctypes::{c_long, c_ulong}; |
| use shared::minwindef::{BYTE, DWORD}; |
| use shared::winerror::HRESULT; |
| use shared::wtypes::BSTR; |
| use um::oaidl::{VARIANT}; |
| use um::unknwnbase::{IUnknown, IUnknownVtbl}; |
| use um::wbemcli::{ |
| IWbemClassObject, IWbemContext, IWbemHiPerfEnum, IWbemObjectAccess, IWbemObjectSink, |
| IWbemObjectSinkVtbl, IWbemRefresher, IWbemServices |
| }; |
| use um::winnt::{LONG, LPCWSTR, LPWSTR, WCHAR}; |
| pub type WBEM_VARIANT = VARIANT; |
| pub type WBEM_WSTR = LPWSTR; |
| pub type WBEM_CWSTR = LPCWSTR; |
| ENUM!{enum WBEM_PROVIDER_REQUIREMENTS_TYPE { |
| WBEM_REQUIREMENTS_START_POSTFILTER = 0, |
| WBEM_REQUIREMENTS_STOP_POSTFILTER = 1, |
| WBEM_REQUIREMENTS_RECHECK_SUBSCRIPTIONS = 2, |
| }} |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0000_v0_0_c_ifspec; |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0000_v0_0_s_ifspec; |
| // EXTERN_C const IID LIBID_WbemProviders_v1; |
| // EXTERN_C const IID IID_IWbemPropertyProvider; |
| DEFINE_GUID!{IID_IWbemPropertyProvider, |
| 0xce61e841, 0x65bc, 0x11d0, 0xb6, 0xbd, 0x00, 0xaa, 0x00, 0x32, 0x40, 0xc7} |
| RIDL!{#[uuid(0xce61e841, 0x65bc, 0x11d0, 0xb6, 0xbd, 0x00, 0xaa, 0x00, 0x32, 0x40, 0xc7)] |
| interface IWbemPropertyProvider(IWbemPropertyProviderVtbl): IUnknown(IUnknownVtbl) { |
| fn GetProperty( |
| lFlags: c_long, |
| strLocale: BSTR, |
| strClassMapping: BSTR, |
| strInstMapping: BSTR, |
| strPropMapping: BSTR, |
| pvValue: *mut VARIANT, |
| ) -> HRESULT, |
| fn PutProperty( |
| lFlags: c_long, |
| strLocale: BSTR, |
| strClassMapping: BSTR, |
| strInstMapping: BSTR, |
| strPropMapping: BSTR, |
| pvValue: *const VARIANT, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemUnboundObjectSink; |
| DEFINE_GUID!{IID_IWbemUnboundObjectSink, |
| 0xe246107b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| RIDL!{#[uuid(0xe246107b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)] |
| interface IWbemUnboundObjectSink(IWbemUnboundObjectSinkVtbl): IUnknown(IUnknownVtbl) { |
| fn IndicateToConsumer( |
| pLogicalConsumer: *mut IWbemClassObject, |
| lNumObjects: c_long, |
| apObjects: *mut *mut IWbemClassObject, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemEventProvider; |
| DEFINE_GUID!{IID_IWbemEventProvider, |
| 0xe245105b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| RIDL!{#[uuid(0xe245105b, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)] |
| interface IWbemEventProvider(IWbemEventProviderVtbl): IUnknown(IUnknownVtbl) { |
| fn ProvideEvents( |
| pSink: *mut IWbemObjectSink, |
| lFlags: c_long, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemEventProviderQuerySink; |
| DEFINE_GUID!{IID_IWbemEventProviderQuerySink, |
| 0x580acaf8, 0xfa1c, 0x11d0, 0xad, 0x72, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| RIDL!{#[uuid(0x580acaf8, 0xfa1c, 0x11d0, 0xad, 0x72, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)] |
| interface IWbemEventProviderQuerySink(IWbemEventProviderQuerySinkVtbl): IUnknown(IUnknownVtbl) { |
| fn NewQuery( |
| dwId: c_ulong, |
| wszQueryLanguage: WBEM_WSTR, |
| wszQuery: WBEM_WSTR, |
| ) -> HRESULT, |
| fn CancelQuery( |
| dwId: c_ulong, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemEventProviderSecurity; |
| DEFINE_GUID!{IID_IWbemEventProviderSecurity, |
| 0x631f7d96, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf} |
| RIDL!{#[uuid(0x631f7d96, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf)] |
| interface IWbemEventProviderSecurity(IWbemEventProviderSecurityVtbl): IUnknown(IUnknownVtbl) { |
| fn AccessCheck( |
| wszQueryLanguage: WBEM_CWSTR, |
| wszQuery: WBEM_CWSTR, |
| lSidLength: c_long, |
| pSid: *const BYTE, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemEventConsumerProvider; |
| DEFINE_GUID!{IID_IWbemEventConsumerProvider, |
| 0xe246107a, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| RIDL!{#[uuid(0xe246107a, 0xb06e, 0x11d0, 0xad, 0x61, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff)] |
| interface IWbemEventConsumerProvider(IWbemEventConsumerProviderVtbl): IUnknown(IUnknownVtbl) { |
| fn FindConsumer( |
| pLogicalConsumer: *mut IWbemClassObject, |
| ppConsumer: *mut *mut IWbemUnboundObjectSink, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemProviderInitSink; |
| DEFINE_GUID!{IID_IWbemProviderInitSink, |
| 0x1be41571, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20} |
| RIDL!{#[uuid(0x1be41571, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)] |
| interface IWbemProviderInitSink(IWbemProviderInitSinkVtbl): IUnknown(IUnknownVtbl) { |
| fn SetStatus( |
| lStatus: LONG, |
| lFlags: LONG, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemProviderInit; |
| DEFINE_GUID!{IID_IWbemProviderInit, |
| 0x1be41572, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20} |
| RIDL!{#[uuid(0x1be41572, 0x91dd, 0x11d1, 0xae, 0xb2, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)] |
| interface IWbemProviderInit(IWbemProviderInitVtbl): IUnknown(IUnknownVtbl) { |
| fn Initialize( |
| wszUser: LPWSTR, |
| lFlags: LONG, |
| wszNamespace: LPWSTR, |
| wszLocale: LPWSTR, |
| pNamespace: *mut IWbemServices, |
| pCtx: *mut IWbemContext, |
| pInitSink: *mut IWbemProviderInitSink, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemHiPerfProvider; |
| DEFINE_GUID!{IID_IWbemHiPerfProvider, |
| 0x49353c93, 0x516b, 0x11d1, 0xae, 0xa6, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20} |
| RIDL!{#[uuid(0x49353c93, 0x516b, 0x11d1, 0xae, 0xa6, 0x00, 0xc0, 0x4f, 0xb6, 0x88, 0x20)] |
| interface IWbemHiPerfProvider(IWbemHiPerfProviderVtbl): IUnknown(IUnknownVtbl) { |
| fn QueryInstances( |
| pNamespace: *mut IWbemServices, |
| wszClass: *mut WCHAR, |
| lFlags: c_long, |
| pCtx: *mut IWbemContext, |
| pSink: *mut IWbemObjectSink, |
| ) -> HRESULT, |
| fn CreateRefresher( |
| pNamespace: *mut IWbemServices, |
| lFlags: c_long, |
| ppRefresher: *mut *mut IWbemRefresher, |
| ) -> HRESULT, |
| fn CreateRefreshableObject( |
| pNamespace: *mut IWbemServices, |
| pTemplate: *mut IWbemObjectAccess, |
| pRefresher: *mut IWbemRefresher, |
| lFlags: c_long, |
| pContext: *mut IWbemContext, |
| ppRefreshable: *mut *mut IWbemObjectAccess, |
| plId: *mut c_long, |
| ) -> HRESULT, |
| fn StopRefreshing( |
| pRefresher: *mut IWbemRefresher, |
| lId: c_long, |
| lFlags: c_long, |
| ) -> HRESULT, |
| fn CreateRefreshableEnum( |
| pNamespace: *mut IWbemServices, |
| wszClass: LPCWSTR, |
| pRefresher: *mut IWbemRefresher, |
| lFlags: c_long, |
| pContext: *mut IWbemContext, |
| pHiPerfEnum: *mut IWbemHiPerfEnum, |
| plId: *mut c_long, |
| ) -> HRESULT, |
| fn GetObjects( |
| pNamespace: *mut IWbemServices, |
| lNumObjects: c_long, |
| apObj: *mut *mut IWbemObjectAccess, |
| lFlags: c_long, |
| pContext: *mut IWbemContext, |
| ) -> HRESULT, |
| }} |
| // EXTERN_C const IID IID_IWbemDecoupledRegistrar; |
| DEFINE_GUID!{IID_IWbemDecoupledRegistrar, |
| 0x1005cbcf, 0xe64f, 0x4646, 0xbc, 0xd3, 0x3a, 0x08, 0x9d, 0x8a, 0x84, 0xb4} |
| RIDL!{#[uuid(0x1005cbcf, 0xe64f, 0x4646, 0xbc, 0xd3, 0x3a, 0x08, 0x9d, 0x8a, 0x84, 0xb4)] |
| interface IWbemDecoupledRegistrar(IWbemDecoupledRegistrarVtbl): IUnknown(IUnknownVtbl) { |
| fn Register( |
| a_Flags: c_long, |
| a_Context: *mut IWbemContext, |
| a_User: LPCWSTR, |
| a_Locale: LPCWSTR, |
| a_Scope: LPCWSTR, |
| a_Registration: LPCWSTR, |
| pIUnknown: *mut IUnknown, |
| ) -> HRESULT, |
| fn UnRegister() -> HRESULT, |
| }} |
| DEFINE_GUID!{CLSID_WbemAdministrativeLocator, |
| 0xcb8555cc, 0x9128, 0x11d1, 0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| // class DECLSPEC_UUID("cb8555cc-9128-11d1-ad9b-00c04fd8fdff") |
| // WbemAdministrativeLocator; |
| DEFINE_GUID!{CLSID_WbemAuthenticatedLocator, |
| 0xcd184336, 0x9128, 0x11d1, 0xad, 0x9b, 0x00, 0xc0, 0x4f, 0xd8, 0xfd, 0xff} |
| // class DECLSPEC_UUID("cd184336-9128-11d1-ad9b-00c04fd8fdff") |
| // WbemAuthenticatedLocator; |
| DEFINE_GUID!{CLSID_WbemUnauthenticatedLocator, |
| 0x443E7B79, 0xDE31, 0x11d2, 0xB3, 0x40, 0x00, 0x10, 0x4B, 0xCC, 0x4B, 0x4A} |
| // class DECLSPEC_UUID("443E7B79-DE31-11d2-B340-00104BCC4B4A") |
| // WbemUnauthenticatedLocator; |
| DEFINE_GUID!{CLSID_WbemDecoupledRegistrar, |
| 0x4cfc7932, 0x0f9d, 0x4bef, 0x9c, 0x32, 0x8e, 0xa2, 0xa6, 0xb5, 0x6f, 0xcb} |
| // class DECLSPEC_UUID("4cfc7932-0f9d-4bef-9c32-8ea2a6b56fcb") |
| // WbemDecoupledRegistrar; |
| DEFINE_GUID!{CLSID_WbemDecoupledBasicEventProvider, |
| 0xf5f75737, 0x2843, 0x4f22, 0x93, 0x3d, 0xc7, 0x6a, 0x97, 0xcd, 0xa6, 0x2f} |
| // class DECLSPEC_UUID("f5f75737-2843-4f22-933d-c76a97cda62f") |
| // WbemDecoupledBasicEventProvider; |
| // EXTERN_C const IID IID_IWbemProviderIdentity; |
| DEFINE_GUID!{IID_IWbemProviderIdentity, |
| 0x631f7d97, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf} |
| RIDL!{#[uuid(0x631f7d97, 0xd993, 0x11d2, 0xb3, 0x39, 0x00, 0x10, 0x5a, 0x1f, 0x4a, 0xaf)] |
| interface IWbemProviderIdentity(IWbemProviderIdentityVtbl): IUnknown(IUnknownVtbl) { |
| fn SetRegistrationObject( |
| lFlags: c_long, |
| pProvReg: *mut IWbemClassObject, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum WBEM_EXTRA_RETURN_CODES { |
| WBEM_S_INITIALIZED = 0, |
| WBEM_S_LIMITED_SERVICE = 0x43001, |
| WBEM_S_INDIRECTLY_UPDATED = WBEM_S_LIMITED_SERVICE + 1, |
| WBEM_S_SUBJECT_TO_SDS = WBEM_S_INDIRECTLY_UPDATED + 1, |
| WBEM_E_RETRY_LATER = 0x80043001, |
| WBEM_E_RESOURCE_CONTENTION = WBEM_E_RETRY_LATER + 1, |
| }} |
| ENUM!{enum WBEM_PROVIDER_FLAGS { |
| WBEM_FLAG_OWNER_UPDATE = 0x10000, |
| }} |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0008_v0_0_c_ifspec; |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0008_v0_0_s_ifspec; |
| // EXTERN_C const IID IID_IWbemDecoupledBasicEventProvider; |
| DEFINE_GUID!{IID_IWbemDecoupledBasicEventProvider, |
| 0x86336d20, 0xca11, 0x4786, 0x9e, 0xf1, 0xbc, 0x8a, 0x94, 0x6b, 0x42, 0xfc} |
| RIDL!{#[uuid(0x86336d20, 0xca11, 0x4786, 0x9e, 0xf1, 0xbc, 0x8a, 0x94, 0x6b, 0x42, 0xfc)] |
| interface IWbemDecoupledBasicEventProvider(IWbemDecoupledBasicEventProviderVtbl): |
| IWbemDecoupledRegistrar(IWbemDecoupledRegistrarVtbl) { |
| fn GetSink( |
| a_Flags: c_long, |
| a_Context: *mut IWbemContext, |
| a_Sink: *mut *mut IWbemObjectSink, |
| ) -> HRESULT, |
| fn GetService( |
| a_Flags: c_long, |
| a_Context: *mut IWbemContext, |
| a_Service: *mut *mut IWbemServices, |
| ) -> HRESULT, |
| }} |
| ENUM!{enum WBEM_BATCH_TYPE { |
| WBEM_FLAG_BATCH_IF_NEEDED = 0, |
| WBEM_FLAG_MUST_BATCH = 0x1, |
| WBEM_FLAG_MUST_NOT_BATCH = 0x2, |
| }} |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0013_v0_0_c_ifspec; |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0013_v0_0_s_ifspec; |
| // EXTERN_C const IID IID_IWbemEventSink; |
| DEFINE_GUID!{IID_IWbemEventSink, |
| 0x3ae0080a, 0x7e3a, 0x4366, 0xbf, 0x89, 0x0f, 0xee, 0xdc, 0x93, 0x16, 0x59} |
| RIDL!{#[uuid(0x3ae0080a, 0x7e3a, 0x4366, 0xbf, 0x89, 0x0f, 0xee, 0xdc, 0x93, 0x16, 0x59)] |
| interface IWbemEventSink(IWbemEventSinkVtbl): IWbemObjectSink(IWbemObjectSinkVtbl) { |
| fn SetSinkSecurity( |
| lSDLength: c_long, |
| pSD: *mut BYTE, |
| ) -> HRESULT, |
| fn IsActive() -> HRESULT, |
| fn GetRestrictedSink( |
| lNumQueries: c_long, |
| awszQueries: *const LPCWSTR, |
| pCallback: *mut IUnknown, |
| ppSink: *mut *mut IWbemEventSink, |
| ) -> HRESULT, |
| fn SetBatchingParameters( |
| lFlags: LONG, |
| dwMaxBufferSize: DWORD, |
| dwMaxSendLatency: DWORD, |
| ) -> HRESULT, |
| }} |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0014_v0_0_c_ifspec; |
| // extern RPC_IF_HANDLE __MIDL_itf_wbemprov_0000_0014_v0_0_s_ifspec; |
| // unsigned c_long __RPC_USER BSTR_UserSize( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in BSTR * ); |
| // unsigned char * __RPC_USER BSTR_UserMarshal( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * ); |
| // unsigned char * __RPC_USER BSTR_UserUnmarshal(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * ); |
| // void __RPC_USER BSTR_UserFree( __RPC__in unsigned c_long *, __RPC__in BSTR * ); |
| // unsigned c_long __RPC_USER VARIANT_UserSize( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in VARIANT * ); |
| // unsigned char * __RPC_USER VARIANT_UserMarshal( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * ); |
| // unsigned char * __RPC_USER VARIANT_UserUnmarshal(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * ); |
| // void __RPC_USER VARIANT_UserFree( __RPC__in unsigned c_long *, __RPC__in VARIANT * ); |
| // unsigned c_long __RPC_USER BSTR_UserSize64( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in BSTR * ); |
| // unsigned char * __RPC_USER BSTR_UserMarshal64( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * ); |
| // unsigned char * __RPC_USER BSTR_UserUnmarshal64(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * ); |
| // void __RPC_USER BSTR_UserFree64( __RPC__in unsigned c_long *, __RPC__in BSTR * ); |
| // unsigned c_long __RPC_USER VARIANT_UserSize64( __RPC__in unsigned c_long *, unsigned c_long, __RPC__in VARIANT * ); |
| // unsigned char * __RPC_USER VARIANT_UserMarshal64( __RPC__in unsigned c_long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in VARIANT * ); |
| // unsigned char * __RPC_USER VARIANT_UserUnmarshal64(__RPC__in unsigned c_long *, __RPC__in_xcount(0) unsigned char *, __RPC__out VARIANT * ); |
| // void __RPC_USER VARIANT_UserFree64( __RPC__in unsigned c_long *, __RPC__in VARIANT * ); |