Sınıf Sağlayıcısı Kaydetme
WMI sınıf sağlayıcısı oluşturmak için __ClassProviderRegistrationörneğini kullanarak sağlayıcınızı temsil eden __Win32Provider örneğini kaydetmeniz gerekir. COM nesnesi olarak, sağlayıcınızın işletim sistemine ve WMI'ye kaydolması gerekir. Aşağıdaki yordamda, Sağlayıcı kaydetmebölümünde açıklandığı gibi kayıt işlemini zaten uyguladığınız varsayılır. Sağlayıcınız çoğu veriyi WMI deposunda depoluyorsa ve bu veriler yalnızca WMI başlatılması sırasında güncelleniyorsa, sınıfınızı itme sınıfı sağlayıcısı olarak kaydedin. Sağladığınız veriler sık sık değişiyorsa ve WMI'dan gelen her istekte kodunuz tarafından dinamik olarak alınıyorsa, sağlayıcınızı pull sınıfı sağlayıcısı olarak kaydedin.
Aşağıdaki yordamda, anında iletme sınıfı sağlayıcısının nasıl kaydedildiği açıklanmaktadır.
Anında iletme sınıfı sağlayıcısı kaydetmek için
__ClassProviderRegistration örneğinin InteractionType özelliğini 1 olarak ayarlayın.
__ClassProviderRegistration örneği oluşturmak kayıt işleminin bir parçasıdır.
Aşağıdaki yordamda bir çekme sınıfı sağlayıcısının nasıl kaydedildiği açıklanmaktadır.
Bir çekme sınıfı sağlayıcısını kaydetmek için
Sağlayıcıyı açıklayan __Win32Provider sınıfının bir örneğini oluşturun.
sağlayıcının özellik kümesini açıklayan __ClassProviderRegistration sınıfının bir örneğini oluşturun.
__ClassProviderRegistration örneğinde:
Sağlayıcının bir gönderme veya çekme sağlayıcısı olup olmadığını belirtmek için InteractionType özelliğini ayarlayın.
sınıfını hem Dinamik hem de Sağlayıcı niteleyicileriyle etiketleyin.
Dinamik niteleyicisi, WMI'nin sınıf örneklerini almak için bir sağlayıcı kullanması gerektiğini bildirir. Sağlayıcı niteleyicisi WMI'nin kullanması gereken sağlayıcının adını belirtir.
ResultSetQueries, ReferencedSetQueriesve UnsupportedQueries özelliklerini tanımlayın.
Bu sorgu özellikleri, desteklenen sınıf hakkında ayrıntılı bilgileri açıklar.
Bir sınıfın desteklenen çeşitli yöntemlerini açıklamaya ek olarak, __ClassProviderRegistration sınıfı bir dizi sorguyu açıklayan üç özelliğe de sahiptir. Birlikte kullanıldığında, bu üç özellik sınıf sağlayıcısı tarafından sağlanan sınıf aralığının tamamını açıklar. Her sorgu özelliği, desteklenen sınıf türlerini belirtmek için "şema sorgusu" olarak adlandırılan bir WQL SELECT deyimi içerir. Şema sorguları meta_class adlı özel bir sınıf adı belirtir. Aşağıdaki tabloda sorgu özellikleri listelenir.
Mülk | Açıklama |
---|---|
ResultSetQueries | Sağlayıcının sağladığı sonuç kümesi hakkında bilgi içerir. WMI, bir uygulamadan gelen sorguyu karşılamak için sağlayıcının çağrılıp çağrılmayacağını belirlemek için bu bilgileri kullanır. Bu özellik, sağlayıcının sağlayabildiği tüm sınıfların kümesini veya kullanılabilir sınıfların üst kümesini açıklar, ancak hiçbir zaman bir alt kümeyi açıklamaz. WMI, bir sağlayıcının bu özellikte en az bir sorgu belirtmesini gerektirir. Aşağıdaki örnek, bir sağlayıcının Win32_LogicalDisk sınıfına başvuran bir ilişkilendirme sınıfı sunduğunda, ResultSetQueries nasıl ayarlanacağını göstermektedir. SELECT * FROM meta_class WHERE __Class = "Win32_LogicalDisk" Aşağıdaki örnek, bir sağlayıcı diğer bilinmeyen sınıflara başvuran sınıflar sağladığında genel sorgunun nasıl belirtileceğini gösterir. SELECT * FROM meta_class Aşağıdaki örnek, bir sağlayıcı yalnızca bir sınıfın alt sınıflarını sağladığında, ancak üst sınıfını sağlamadığında ResultSetQueries nasıl ayarlanacağını göstermektedir. SELECT * FROM meta_class WHERE __Dynasty = "MyClass" Aşağıdaki örnekte özel __this özelliğinin nasıl kullanılacağı ve sağlayıcı tüm sınıf ve alt sınıfları sağladığında ResultSetQueries nasıl ayarlanacağı gösterilmektedir. SELECT * FROM meta_class WHERE __this ISA "MyClass" |
ReferencedSetQueries | İlişkilendirmelerin ve başvuruların istendiği şema sorgularında sağlayıcının atlanıp atlanmayacağını belirler. İlişkilendirme sınıflarını sağlayabilen sağlayıcılar, ReferencedSetQueries özelliğine en az bir sorgu içermelidir. |
Desteklenmeyen Sorgular | Bir sınıf sağlayıcısının sağlamadığı sonuç kümesi hakkında bilgi içerir. WMI, ResultSetQueriestarafından ima edilen sınıf kümesinden çıkarmak için bu özelliği kullanır. Örneğin, bir sınıf sağlayıcısı MyClass'tan türetilen tüm sınıflar için destek ResultSetQueries'de belirtebilir ve belirli bir türetilmiş sınıf için destek eksikliği UnsupportedQueries içinde belirtebilir. Bir sağlayıcının sorgu işleme özellikleri hakkında ne kadar fazla bilgi kaydedebilirse o kadar hızlı çalışır. UnsupportedQueries özelliğine bir veya daha fazla sorgu girmek, spesifik olmanın bir yoludur ve özellikle sağlayıcının sağlamadığı bir sınıfa dayandığında önemlidir. Desteklenmeyen Sorgular özelliğindeki bir sorguda listelenen bir sınıf için istek yapıldığında, WMI sınıfın kendisini sağlayabilir veya sağlamak için alternatif bir sağlayıcı çağırabilir. |
WMI OR yan tümcesini desteklemediğinden, her sınıf için ayrı bir sorgu oluşturmanız gerekir.
Bir sınıf sağlayıcısı MyClass1, MyClass2 ve MyClass3 sağladığında aşağıdaki sorgular ResultSetQueries belirtilir.
SELECT * FROM meta_class WHERE __Class = "MyClass1"
SELECT * FROM meta_class WHERE __Class = "MyClass2"
SELECT * FROM meta_class WHERE __Class = "MyClass3"
bir __Win32Provider ve __ClassProviderRegistrationörneği oluşturarak sağlayıcıyı yalnızca yöneticiler kaydedebilir veya silebilir.