Sdílet prostřednictvím


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

  1. 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.

     

  2. Vytvořte poskytovatele, který vrací instance přidružení CIM_ElementConformsToProfile. Jedná se o dvoustupňový proces.

    1. 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).

    2. 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.

  3. 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;
    };
    
  4. 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.

  5. 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.

CIM_ElementKterýOdpovídáProfilu

CIM_RegisteredProfile

Psaní zprostředkovatele instance

Registrace Poskytovatele Instance