Vytvoření poskytovatele asociací pro interoperabilitu
Poskytovatel přidružení poskytuje mechanismus pro registraci profilů a jejich přidružení k profilům implementovaným v různých oborech názvů.
Poskytovatelé přidružení se používají k zveřejnění standardních profilů, jako je profil napájení. Toho se dosahuje zápisem zprostředkovatele asociace v kořenovém/interop oboru názvů, který zpřístupňuje instance asociace implementací třídy odvozené z CIM_RegisteredProfile. Aby bylo možné podporovat procházení mezi obory názvů, musí být zprostředkovatel zaregistrovaný jak v kořenovém/interop oboru názvů, tak v kořenovém/<implementovaném> oboru názvů.
Rozhraní Windows Management Instrumentation (WMI) načte poskytovatele přidružení při každém spuštění dotazu přidružení v oboru názvů root/interop.
Implementace poskytovatele asociace pro interoperabilitu
Odvozujte třídu z CIM_RegisteredProfile a vytvořte statickou instanci této odvozené třídy v oboru názvů root\interop. Minimálně musí být následující vlastnosti šířené s platnými hodnotami:
I když Id instance jedinečně definuje instanci CIM_RegisteredProfile, musí RegisteredName, RegisteredOrganizationa RegisteredVersion jednoznačně identifikovat registrovaný profil v rámci organizace. Další informace o jednotlivých vlastnostech naleznete v části CIM_RegisteredProfile.
Následující příklad kódu popisuje syntaxi pro odvození třídy ProcessProfile z CIM_RegisteredProfile a naplnění statické instance.
class ProcessProfile : CIM_RegisteredProfile { }; instance of ProcessProfile as $PP { InstanceID = "Process"; RegisteredName = "Process"; RegisteredOrganization = "1"; // Set to "Other" OtherRegisteredOrganization = "Microsoft"; RegisteredVersion = "1.0"; };
Poznámka
U klientů systému Windows musí být vlastnost RegisteredOrganization nastavena na hodnotu 1 a vlastnost OtherRegisteredOrganization nastavena na hodnotu Microsoft.
Vytvořte poskytovatele, který vrací instance přidružení CIM_ElementConformsToProfile. Jedná se o dvoustupňový proces.
Vytvořte třídu odvozenou z CIM_ElementConformsToProfile jak v oboru názvů mezioperačního, tak implementačního. Vzhledem k tomu, že stejný profil můžou implementovat různí dodavatelé, měl by být název třídy jedinečný. Doporučená konvence vytváření názvů je „<Organization>_<ProductName>_<ClassName>_<Version>“. Vlastnost ConformantStandard nebo ManagedElement musí určit kvalifikátor MSFT_TargetNamespace, který obsahuje obor názvů, do kterého tato třída patří.
Následující příklad kódu popisuje syntaxi pro odvození Microsoft_Process_ElementConformsToProfile_v1 třídy z CIM_ElementConformsToProfile v kořenovém\interop oboru názvů. V tomto příkladu Win32_Process spravovaný prvek odkazuje na kořenový\cimv2 obor názvů pomocí kvalifikátoru MSFT_TargetNamespace.
#pragma namespace("\\\\.\\root\\interop") [Provider("ProcessAssociation"),Dynamic] Class Microsoft_Process_ElementConformsToProfile_v1: CIM_ElementConformsToProfile { CIM_RegisteredProfile ref ConformantStandard = $PP; [MSFT_TargetNamespace("root\\cimv2")]Win32_process ref ManagedElement = null; };
Následující příklad kódu popisuje syntaxi pro odvození Microsoft_Process_ElementConformsToProfile_v1 třídy z CIM_ElementConformsToProfile v kořenovém\cimv2 oboru názvů. V tomto příkladu CIM_RegisteredProfile odpovídající standard odkazuje na obor názvů root\interop pomocí kvalifikátoru MSFT_TargetNamespace.
#pragma namespace("\\\\.\\root\\cimv2") [Provider("ProcessAssociation"),Dynamic] Class Microsoft_Process_ElementConformsToProfile_v1: CIM_ElementConformsToProfile { [MSFT_TargetNamespace("root\\interop")] CIM_RegisteredProfile ref ConformantStandard = $PP; Win32_process ref ManagedElement = null; };
Pokud kvalifikátor MSFT_TargetNamespace není zadán pro vlastnost, která odkazuje na implementovaný obor názvů, filtr ResultClass pro příkaz "Associators of" nebude fungovat. Pokud například není zadán kvalifikátor MSFT_TargetNamespace, následující příkazový řádek Windows PowerShellu nevrátí objekt: get-wmiobject -query "asociátory {ProcessProfile.InstanceID='Process'} kde resultclass='Win32_Process'.
Kvalifikátor MSFT_TargetNamespace nemůže na vzdáleném počítači odkazovat na jmenný prostor. Například následující obor názvů není podporován: MSFT_TargetNamespace(\\\\<RemoteMachine>\\root\\interop).
Napište zprostředkovatele, který vrací instance vytvořené odvozené třídy. Další informace naleznete v tématu Zápis zprostředkovatele instance. Když přistupujete k instancím mezi obory názvů, možná budete muset získat přístup k úrovním zabezpečení klienta. Další informace naleznete v tématu předstírání klienta.
Zprostředkovatel přidružení by měl implementovat IWbemServices.CreateInstanceEnumAsync i IWbemServices.GetObjectAsync metody. Implementace metody IWbemServices.ExecQueryAsync je volitelná. Vzhledem k tomu, že k tomuto poskytovateli je možné přistupovat jak z kořenového\interop, tak z kořenového\<implementovaných> oborů názvů, neměla by existovat explicitní závislost na oboru názvů uvnitř poskytovatele.
Zaregistrujte zprostředkovatele přidružení v kořenovém adresáři\interopu i v kořenovém adresáři\<implementovaných> obory názvů. Další informace naleznete v tématu registrace zprostředkovatele instance.
Následující příklad kódu popisuje syntaxi pro registraci zprostředkovatele přidružení v oboru názvů root\interop.
#pragma namespace("\\\\.\\root\\interop") instance of __Win32Provider as $P { Name = "ProcessAssociation" ; ClsId = "{DA13393B-A2D5-4BAC-9BD2-30B092E9EBB8}"; } ; instance of __InstanceProviderRegistration { Provider = $P; SupportsPut = false; SupportsGet = TRUE; SupportsDelete = false; SupportsEnumeration = TRUE; };
Následující příklad kódu popisuje syntaxi pro registraci zprostředkovatele přidružení v oboru názvů root\cimv2.
#pragma namespace("\\\\.\\root\\cimv2") instance of __Win32Provider as $R { Name = "ProcessAssociation" ; ClsId = "{DA13393B-A2D5-4BAC-9BD2-30B092E9EBB8}"; } ; instance of __InstanceProviderRegistration { Provider = $R; SupportsPut = false; SupportsGet = TRUE; SupportsDelete = false; SupportsEnumeration = TRUE; };
Umístěte schéma CIM_ElementConformsToProfile do implementovaného oboru názvů. Pro klienty Systému Windows se jedná o soubor interop.mof umístěný ve složce %systemroot%\system32\wbem.
Implementujte rozhraní IWbemProviderInit pro vašeho poskytovatele.
Rozhraní WMI používá IWbemProviderInit k načtení a inicializaci zprostředkovatele. Metoda IWbemProviderInit.Initialize by měla být implementována způsobem, který umožňuje volat pro dva různé obory názvů. Další informace naleznete v tématu Inicializace poskytovatele.
Související témata