// Standard MOF for provider registration [abstract] class __Provider : __SystemClass { [key] string Name; }; class __Win32Provider : __Provider { [not_null: DisableOverride ToInstance ToSubClass] string CLSID; string ClientLoadableCLSID; string DefaultMachineName; [SUBTYPE("interval"): ToInstance ToSubClass] datetime UnloadTimeout; boolean InitializeAsAdminFirst; // Only valid in LocalSystem & In-Proc cases [Values{"None", "ClientImpersonation" }: ToSubClass] sint32 ImpersonationLevel = 0; // Informational, tells whether the provider actually // attempts to impersonate the client [Values{"CLSID", "Namespace", "COM Object"}: ToSubClass] sint32 InitializationReentrancy = 0; boolean PerUserInitialization = FALSE; boolean PerLocaleInitialization = FALSE; boolean Pure = TRUE; // We want to deprecate impure providers // Extensions ////////////////////////////////////////// // 0 means using global settings for all providers unless overridden [Values {"WmiCore", // Hosted within CIMOM "SharedLocalSysHost", // In shared local system process "SharedNetSvcHost", // In shared Network Service process "SharedPerUserHost", // In shared per-user process "DedicatedLocalSysHost", // In dedicated local system host "DedicatedNetSvcHost", // In dedicated network service host "DedicatedPerUserHost", // In dedicated per-user host "SelfHost", // Separate COM EXE "Decoupled" // } ] string PossibleHostingModels; string CurrentHostingModel; [configurable] sint32 MaxConcurrentQueries = 0; [configurable] sint32 MaxConcurrentPendingCalls = 0; [configurable] sint32 MaxConcurrentDeliveredThreads = 0; boolean Enabled = true; boolean ClientLoadable = false; // Always load in client boolean SupportsExplicitShutdown = false; boolean ExtendedStatusSupport = false; boolean SupportsThrottling = false; boolean SupportsQuotas = false; interval NormalInitTime = null; interval TimeBeforeErrorOnRequests = null; uint8 ProviderSecurityDescriptor[]; }; [abstract] class __ProviderRegistration : __SystemClass { __Provider ref provider; }; [abstract] class __ObjectProviderRegistration : __ProviderRegistration { boolean SupportsPut = FALSE; boolean SupportsGet = FALSE; boolean SupportsDelete = FALSE; boolean SupportsEnumeration = FALSE; // Extensions: Added SQL to the following ValueMap [ValueMap{"WQL:UnarySelect", "WQL:References", "WQL:Associators", "WQL:V1ProviderDefined", "SQL"}: ToSubClass] string QuerySupportLevels[]; [Values{"Pull", "Push", "PushVerify"}: ToSubClass] sint32 InteractionType = 0; // Extensions /////////////////////////////////////////////// [description("add ")] boolean SupportsDeepOperations = false; // If true, for inst or class providers, // separate subclass calls won't be made. uint32 QueryLanguageFeatures[]; // LFn features from Query Spec boolean BatchingSupport = false; // Reserved for future use boolean SupportsWmiTransactions = false; }; class __InstanceProviderRegistration : __ObjectProviderRegistration { [key] __Provider ref provider; boolean PerPropertyOperations = false; }; class __ClassProviderRegistration : __ObjectProviderRegistration { [key] __Provider ref provider; string ResultSetQueries[]; // Use LIKE operator in query to specify schema prefix string ReferencedSetQueries[]; string UnsupportedQueries[]; // Extensions interval NormalRefreshInterval; // NULL=forever boolean ResyncOnNsOpen; boolean PerUserSchema; boolean V1AccessModel = false; boolean SupportsDirectedCreate; boolean ForceResync(); }; class __PropertyProviderRegistration : __ProviderRegistration { [key] __Provider ref provider; boolean SupportsPut = FALSE; boolean SupportsGet = FALSE; }; class MSFT_DecoupledProvider : __Win32Provider { [Description ( "Decoupled provider CLSID, do not change." ) ,Override("Clsid")] String Clsid = "{c3e36a42-97d0-4b21-ac18-d2e4ea8afa9f}" ; [Description ( "CLSID of the actual de-coupled provider." ) , not_null: DisableOverride ToInstance ToSubClass] String Decoupled_CLSID; } ; ///////////// EVENTS ////////////////////////////////////////////// [singleton] class MSFT_WmiProviderSubsystemEvent : __SelfInstrumentEvent { string ProviderName; string Namespace; uint32 HostProcessId; uint32 RelevantThreadId; [Values {"WmiCore", // Hosted within CIMOM "SharedLocalSysHost", // In shared local system process "SharedNetSvcHost", // In shared Network Service process "SharedPerUserHost", // In shared per-user process "DedicatedLocalSysHost", // In dedicated local system host "DedicatedNetSvcHost", // In dedicated network service host "DedicatedPerUserHost", // In dedicated per-user host "ClientOnly", // Client in-proc only "SelfHost", // Separate COM EXE "Decoupled" // } ] string HostingModel; // NULL when not applicable uint8 HostProcesSid[]; // Timestamp properties already have the time }; class MSFT_WmiProviderLoadFailure : MSFT_WmiProviderSubsystemEvent { uint32 COMHRESULT; }; class MSFT_WmiProvSS_ProviderShutdownFailure : MSFT_WmiProviderSubsystemEvent { // Only if provider implements IWbemShutdown uint32 HRESULTFROMPROV; }; class MSFT_WmiProviderFault : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiProviderTimeoutFailure : MSFT_WmiProviderSubsystemEvent { datetime Timeout; // Provider is not responding within the specified timeout }; class MSFT_WmiProviderQuotaViolation : MSFT_WmiProviderSubsystemEvent { // Not sure what this means in shared hosts; presumably // we issue events for all providers that were there BOOL bThreadQuotaExceeded; BOOL bMemoryQuotaExceeded; BOOL bInSharedProcess; BOOL bInDedicatedProcess; }; class MSFT_WmiProviderLoad : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiProviderShutdown : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiProviderInitialization : MSFT_WmiProviderSubsystemEvent { uint8 InitializationSid[]; }; class MSFT_WmiProviderInitializationFailure : MSFT_WmiProviderSubsystemEvent { uint8 InitializationSid[]; uint32 ResultCode; object ErrorObject; }; [description("")] class MSFT_WmiProviderCall { string Provider; string Namespace; uint32 API; string Parameter; }; class MSFT_WmiProviderBusy : MSFT_WmiProviderSubsystemEvent { // Provider was too busy to service request (returned WBEM_E_SERVER_BUSY from calls) }; class WMICORE_BUSY { }; class MSFT_WmiProviderAbnormalTermination : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiForcedProviderStop : MSFT_WmiProviderSubsystemEvent { // Issued when prov ss methods are invoked. }; class MSFT_WmiForcedProviderStart : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiForcedProviderUnload : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiForcedProviderLoad : MSFT_WmiProviderSubsystemEvent { // MSFT_WmiProviderLoad event also issued with pertinent data }; class MSFT_WmiProviderHostLaunched : MSFT_WmiProviderSubsystemEvent { }; class MSFT_WmiProviderHostTerminated : MSFT_WmiProviderSubsystemEvent { // A provider host was terminated }; class MSFT_WmiDecoupledProviderBind : MSFT_WmiProviderSubsystemEvent { // Decoupled provider was located and bound }; class MSFT_WmiDecoupledProviderBindFailure : MSFT_WmiProviderSubsystemEvent { // Decoupled provider was not running when needed }; class MSFT_WmiDecoupledProviderUnbind : MSFT_WmiProviderSubsystemEvent { }; ///////////// SELF-INSTRUMENTATION ////////////////////////////////////////////// [singleton] class __ProviderHostProcessQuotas : __SystemQuota { uint32 MaxMemoryPerHostProcess; uint32 MaxMemoryForAllHostProcesses; uint32 MaxMemoryForNetSvcProcess; uint32 MaxMemoryForLocalSysProcess; uint32 MaxMemoryForPerUserProcess; uint32 MaxThreadsPerHostProcess; uint32 MaxThreadsForAllHostProcesses; uint32 MaxThreadsForNetSvcProcess; uint32 MaxThreadsForLocalSysProcess; uint32 MaxThreadsForPerUserProcess; }; [singleton: DisableOverride ToInstance ToSubClass] class __ObjectProviderCacheControl : __CacheControl { [SUBTYPE("interval"): ToInstance ToSubClass] datetime ClearAfter; }; [singleton] class __ProviderSubsystemControl : __SystemClass { bool SuspendProvider([in] string ProviderName); bool ResumeProvider([in] string ProviderName); bool LoadProvider([in] string ProviderName); bool UnloadProvider([in] string ProviderName); }; class MSFT_ObjectProviderStatus { [key] __Provider ref Provider BOOL bActive; // Active connection BOOL bStandby; // No outstanding pointers uint32 CallsInProgress; uint32 HostProcessId; }; class MSFT_ProviderConnection { MSFT_ObjectProviderStatus ref Owner; [values {"Instance", "Property", "Event", "Consumer", "Class"}] string ActiveProviderTypes[]; }; class MSFT_ProviderSubsystemHostStatus { [key] uint32 ProcessId; [Values {"WmiCore", // Hosted within CIMOM "SharedLocalSysHost", // In shared local system process "SharedNetSvcHost", // In shared Network Service process "SharedPerUserHost", // In shared per-user process "DedicatedLocalSysHost", // In dedicated local system host "DedicatedNetSvcHost", // In dedicated network service host "DedicatedPerUserHost", // In dedicated per-user host "ClientOnly", // Client in-proc only "SelfHost", // Separate COM EXE "Decoupled" // } ] string HostingModel; // NULL when not applicable __Provider ref LoadedProviders[]; uint32 HostSid[]; };