Megosztás a következőn keresztül:


Osztályszolgáltató regisztrálása

WMI-osztályszolgáltató létrehozásához regisztrálnia kell a szolgáltatót képviselő __Win32Provider példányt egy __ClassProviderRegistrationpéldány segítségével. COM-objektumként a szolgáltatónak regisztrálnia kell az operációs rendszerrel és a WMI-vel. Az alábbi eljárás abból indul ki, hogy már megvalósította a regisztráció folyamatát a Szolgáltató regisztrálásaszerint. Ha a szolgáltató a legtöbb adatot a WMI-adattárban tárolja, és az adatok csak WMI-inicializáláskor frissülnek, akkor regisztrálja az osztályt leküldéses osztályszolgáltatóként. Ha az ön által biztosított adatok gyakran változnak, és a kódja minden WMI-kéréskor dinamikusan lekéri azokat, regisztrálja szolgáltatóját lekérési osztályszolgáltatóként.

Az alábbi eljárás bemutatja, hogyan regisztrálhat leküldéses osztályszolgáltatót.

Egy push osztály szolgáltató regisztrálása

Az alábbi eljárás leírja, hogyan lehet regisztrálni egy lekérési osztályszolgáltatót.

Lehívási osztályszolgáltató regisztrálása

  1. Hozza létre a szolgáltatót leíró __Win32Provider osztály egy példányát.

  2. Hozzon létre egy példányt a __ClassProviderRegistration osztályból, amely leírja a szolgáltató funkciókészletét.

    A __ClassProviderRegistration példányon belül:

    1. Állítsa be a InteractionType tulajdonságot, hogy jelezze, hogy a szolgáltató leküldéses vagy lekéréses szolgáltató-e.

    2. Címkézze fel az osztályt a Dinamikus és Szolgáltató minősítőkkel.

      A dinamikus minősítő azt jelzi, hogy a WMI-nek szolgáltatót kell használnia az osztálypéldányok lekéréséhez. A Szolgáltató minősítő megadja annak a szolgáltatónak a nevét, amelyet a WMI-nek használnia kell.

    3. Adja meg a ResultSetQueries, ReferencedSetQueriesés Nem támogatottQueries tulajdonságokat.

      Ezek a lekérdezési tulajdonságok a támogatott osztály részletes adatait ismertetik.

Az osztály különböző támogatott módszereinek leírása mellett a __ClassProviderRegistration osztály három olyan tulajdonsággal is rendelkezik, amelyek lekérdezések sorozatát írják le. Együttes használat esetén ez a három tulajdonság az osztályszolgáltató által biztosított osztályok teljes tartományát ismerteti. Minden lekérdezéstulajdonság tartalmaz egy WQL SELECT utasítást, úgynevezett "sémalekérdezés"-et a támogatott osztályok típusának megadásához. A séma-lekérdezések egy meta_class nevű speciális osztálynevet adnak meg. Az alábbi táblázat a lekérdezés tulajdonságait sorolja fel.

Ingatlan Leírás
ResultSetQueries A szolgáltató által biztosított eredményhalmazra vonatkozó információkat tartalmaz. A WMI az információk alapján határozza meg, hogy a szolgáltatót meghívja-e egy alkalmazásból származó lekérdezés teljesítéséhez. Ez a tulajdonság az összes olyan osztály készletét írja le, amelyet a szolgáltató adhat meg, vagy a rendelkezésre álló osztályok szuperhalmazát, de soha nem alhalmazt. A WMI megköveteli, hogy a szolgáltató legalább egy lekérdezést adjon meg ebben a tulajdonságban.
Az alábbi példa bemutatja, hogyan állítható be ResultSetQueries, ha egy szolgáltató egy társításosztályt biztosít, amely a Win32_LogicalDisk osztályra hivatkozik.
SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk"
Az alábbi példa bemutatja, hogyan adhat meg általános lekérdezést, ha egy szolgáltató más ismeretlen osztályokra hivatkozó osztályokat biztosít.
SELECT * FROM meta_class
Az alábbi példa bemutatja, hogyan állíthat be ResultSetQueries, ha egy szolgáltató csak alosztályokat biztosít, egy adott osztály szülőosztályát azonban nem.
SELECT * FROM meta_class WHERE __Dynasty = "MyClass"
Az alábbi példa bemutatja, hogyan használhatja a speciális __this tulajdonságot, és hogyan állíthat be ResultSetQueries, amikor egy szolgáltató az összes osztályt és alosztályt biztosítja.
SELECT * FROM meta_class WHERE __this ISA "MyClass"
ReferáltHalmazLekérdezések Meghatározza, hogy megkerülje-e a szolgáltatót séma-lekérdezésekben, ahol társítások és hivatkozások kérnek. A társítási osztályokat ellátó szolgáltatóknak legalább egy lekérdezést tartalmazniuk kell a ReferencedSetQueries tulajdonságban.
Nem támogatott lekérdezések Az osztályszolgáltató által nem megadott eredménykészlettel kapcsolatos információkat tartalmazza. A WMI ezzel a tulajdonsággal kivonja a ResultSetQueriesáltal jelzett osztályok halmazából. Az osztályszolgáltató megadhat például ResultSetQueries a MyClassból származó összes osztály támogatását, és Nem támogatottQueries egy adott származtatott osztály támogatásának hiányát.
Minél több információt regisztrálhat egy szolgáltató a lekérdezésfeldolgozási képességeiről, annál gyorsabban fut. Egy vagy több lekérdezés megadása a Nem támogatott lekérdezések tulajdonságban az egyik módszer a konkrétságra, és különösen fontos, ha egy szolgáltató olyan osztályra támaszkodik, amelyet nem biztosít. Ha a Nem támogatott Lekérdezések tulajdonságban egy lekérdezésben szereplő osztályra vonatkozó kérést küld, a WMI megadhatja magát az osztályt, vagy meghívhat egy másik szolgáltatót a szolgáltatás nyújtásához.

Mivel a WMI nem támogatja az OR záradékot, minden osztályhoz külön lekérdezést kell létrehoznia.

Az alábbi lekérdezések ResultSetQueries vannak megadva, amikor egy osztályszolgáltató a MyClass1, a MyClass2 és a MyClass3 osztályt látja el.

SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"

Csak rendszergazdák regisztrálhatnak vagy törölhetnek szolgáltatót egy __Win32Provider és __ClassProviderRegistrationpéldányának létrehozásával.