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
Állítsa a __ClassProviderRegistration példány InteractionType tulajdonságát 1 értékre.
Az __ClassProviderRegistration példányának létrehozása a regisztrációs folyamat része.
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
Hozza létre a szolgáltatót leíró __Win32Provider osztály egy példányát.
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:
Állítsa be a InteractionType tulajdonságot, hogy jelezze, hogy a szolgáltató leküldéses vagy lekéréses szolgáltató-e.
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.
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.