Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir sürücü herhangi bir olayı göndermek için IoWMIWriteEvent'i çağırabilir. Olay tek bir öğeden, tek bir örnekten veya bir veri bloğunun tüm örneklerinden oluşabilir ve dinamik örnek adlarını kullanabilir.
WMI tarafından ayrılan ve kısmen başlatılan sorgu veya değişiklik istekleriyle geçirilen WNODE_XXX yapılarından farklı olarak, sürücünün olay içeren WNODE_XXX yapısının tüm üyelerini ayırması ve başlatması gerekir.
Bir sürücünün, WMI olayları etkinleştirmek üzere bir IRP_MN_ENABLE_EVENTS isteği gönderdikten sonra ancak olayı göndermesi gerekir. Ardından, olayın tetikleyici koşulu oluştuğunda sürücü:
Olay için gereken WNODE_XXX yapısını, mevcutsa değişken veriler için alanı da içerecek şekilde, sayfasız havuzdan bir arabellek ayırır.
Olaya bağlı olarak, sürücü olay için bir WNODE_SINGLE_ITEM, bir WNODE_SINGLE_INSTANCE veya WNODE_ALL_DATA ayırabilir. WNODE_XXX artı değişken verilerinin boyutu, kayıt defteri tarafından tanımlanan 1K sınırını aşmamalıdır.
WnodeHeader.Flags dahil olmak üzere WNODE_XXX yapısının tüm üyelerini başlatır:
WNODE_FLAG_EVENT_ITEM bayrağını, yapının bir olay olduğunu belirtmek için sürücü ayarlar.
Sürücü, WNODE_XXX yapısının türünü belirtmek için aşağıdaki bayraklardan birini ayarlar:
WNODE_FLAG_ALL_DATA (Tüm verileri içeren düğüm bayrağı)
WNODE_FLAG_SINGLE_INSTANCE
WNODE_FLAG_SINGLE_ITEM
Sürücü, bloğun statik veya dinamik örnek adları kullanıp kullanmadığını belirtmek için aşağıdaki bayrakları ayarlar veya temizler:
WNODE_FLAG_STATIC_INSTANCE_NAMES (Statik Örnek Adları Bayrağı)
WNODE_FLAG_PDO_INSTANCE_NAMES
Sürücü, olaya bağlı olarak ek bayraklar ayarlayabilir.
Bir işaretçiyi WNODE_XXX türünden PWNODE_EVENT_ITEM türüne dönüştürür.
İşaretçiyle IoWMIWriteEvent'i çağırır.
IoWMIWriteEvent başarıyla tamamlanırsa WMI, olay için sürücüye ayrılan belleği serbest bırakır.
IoWMIWriteEvent geri döndüğünde, sürücü olayın tetikleme koşulunu izlemeye ve tetikleme koşulu her gerçekleştiğinde olayı göndermeye devam eder, ta ki WMI bu olayı devre dışı bırakmak için IRP_MN_DISABLE_EVENTS isteği gönderene kadar.
Bir olayın boyutu kayıt defteri tarafından tanımlanan en fazla 1K'yı aşıyorsa (önerilmez) sürücü, olayın GUID'sini, boyutunu ve örnek dizinini (statik örnek adları için) veya adını (dinamik örnek adları için) belirten başlatılan bir WNODE_EVENT_REFERENCE ile IoWmiWriteEvent'i çağırmalıdır. WMI, olayı sorgulamak için WNODE_EVENT_REFERENCE bilgileri kullanır.
Bir sürücü, dinamik örnek adlarını kullanmayan ve tek bir örnekten oluşan olaylar göndermek için WmiFireEvent adlı WMI kitaplık rutinini çağırabilir. Sürücünün bir WmiFireEvent çağrısı için bir WNODE_XXX yapısı ayırması ve başlatması gerekmez. WMI, sürücünün olay verilerini bir WNODE_SINGLE_INSTANCE olarak paketler ve veri tüketicilerine iletir. WmiFireEvent ile olay gönderme hakkında daha fazla bilgi için bkz. WmiFireEvent ile Olay Gönderme.