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.
Bu bölümde, bilgi sağlayıcıları olarak bilgi tüketicilerine bilgi sağlamak için çekirdek modu sürücülerinin kullanabileceği WDM (Windows 2000 ve üzeri tarafından desteklenir) WMI uzantıları açıklanmaktadır. Sürücüler genellikle bir tüketicinin sürücünün yapılandırmasını ve kaynak kullanımını belirlemek için kullandığı bilgileri sağlar. WDM'nin WMI uzantılarına ek olarak, kullanıcı modu API'leri WMI olay bilgilerinin sağlayıcılarını veya tüketicilerini destekler. Daha fazla bilgi için windows SDK'sına bakın.
Olay izleme günlükçüsü en fazla 32 örneği destekler. Örneklerden biri çekirdeği izlemeye ayrılmıştır. Günlükleme sistemi yüksek olay hızını kayıt etmeyi destekler.
İzleme olayları diğer WMI olaylarıyla aynı şekilde tanımlanır. WMI olayları MOF dosyasında açıklanmıştır. WMI olay açıklamaları hakkında daha fazla bilgi için bkz. WMI Verileri ve Olay Blokları için MOF Sözdizimi.
Çekirdek modu sürücülerinin bilgi günlükleme işlemi, mevcut WMI altyapısına tümleştirilmiştir. İzleme olaylarını günlüğe kaydetmek için bir sürücü aşağıdakileri yapar:
IoWMIRegistrationControl çağırarak WMI sağlayıcısı olarak kaydolun.
Sürücü olayları WMI'ya kaydederken geçirilen WMIREGGUID yapısının Bayraklar üyesinde WMIREG_FLAG_TRACED_GUID ayarlayarak olayları izlenebilir hale getirin.
Sürücü olayları WMI ile kaydederken geçirilen WMIREGGUID yapısının Bayraklar üyesinde WMIREG_FLAG_TRACE_CONTROL_GUID ayarlayarak, izleme olayları kümesinin genel olarak etkinleştirilmesi/devre dışı bırakılması için denetim olayı olarak hangi olayı belirteceğinizi belirtin.
WMI'dan GUID'nin izleme denetimi GUID'sine eşlendiği olayları etkinleştirme isteği aldıktan sonra, sürücü tanıtıcıyı günlükçüye depolamalıdır. Bir olay yazılırken bu değere ihtiyaç duyulacaktır. Bu tanıtıcıyı kullanma hakkında bilgi için 6. adıma bakın. Günlükçü tanıtıcı değeri, etkinleştirme olayları isteğindeki parametrelerin parçası olan WMI arabelleğinin WNODE_HEADER bölümünün HistoricalContext üyesinde bulunur.
İzleme olayının WMI olay tüketicilerine mi gönderileceğine yoksa yalnızca WMI olay günlükçüsüsü için mi hedeflendiğine karar verin. Bu, EVENT_TRACE_HEADER yapısının belleğinin nereden gelmesi gerektiğini belirler. Bu bellek sonunda IoWMIWriteEvent'e geçirilecektir.
Olay yalnızca bir günlük olayıysa, bellek WMI tarafından silinmez. Bu durumda, sürücü yığında bir arabellek geçirmeli veya bu amaç için ayrılmış bir arabelleği yeniden kullanmalıdır. Performans nedenleriyle, sürücü bellek ayırmak veya boşaltmak için gereksiz çağrıları en aza indirmelidir. Bu öneriye uyulmaması, günlük dosyasında yer alan zamanlama bilgilerinin bütünlüğünü tehlikeye atacaktır.
Olay hem kaydediciye hem de WMI olay tüketicilerine gönderilecekse, bellek disk belleği kullanılmayan bir havuzdan ayrılmalıdır. Bu durumda, olay önce kayıt altına alıcıya gönderilir ve ardından olayın bildirimini talep etmiş olan WMI olay tüketicilerine iletilmek üzere WMI'ye iletilir. Olayın belleği, ardından IoWMIWriteEvent davranışına göre WMI tarafından serbest bırakılır.
EVENT_TRACE_HEADER ve varsa sürücü olay verilerinin belleği güvenli hale getirildikten sonra aşağıdaki bilgiler ayarlanmalıdır:
Boyut üyesini sizeof(EVENT_TRACE_HEADER) artı EVENT_TRACE_HEADER sonuna eklenecek herhangi bir ek sürücü olay verisinin boyutuna ayarlayın.
Olayın günlükçüye gönderilmesi için Flags üyesini WNODE_FLAG_TRACED_GUID olarak ayarlayın. Olay WMI olay tüketicilerine de gönderilecekse WNODE_FLAG_LOG_WNODE ayarlayın. WNODE_FLAG_LOG_WNODE ayarlanıyorsa WNODE_FLAG_TRACED_GUID ayarlanmasının gerekli olmadığını unutmayın. Her ikisi de ayarlanırsa, WNODE_FLAG_TRACED_GUID öncelik alır ve bu olay WMI olay tüketicilerine gönderilmez.
Guid veya GuidPtr üyesini ayarlayın. GuidPtr kullanıyorsanız Flags üyesinde WNODE_FLAG_USE_GUID_PTR ayarlayın.
İsteğe bağlı olarak , TimeStamp için bir değer belirtin. Sürücü bir TimeStamp değeri belirtmezse, günlükçü bunu doldurur. Eğer sürücü, günlükçünün zaman damgasını ayarlamasını istemiyorsa, WNODE_FLAG_USE_TIMESTAMP'i Flags üyesinde ayarlamalıdır.
Sürücü için anlamı olan aşağıdaki EVENT_TRACE_HEADER üyelerinden herhangi birini ayarlayın: Class.Type, Class.Level ve Class.Version.
Son olarak EVENT_TRACE_HEADER'ı bir WNODE_HEADER'a dönüştürün ve Wnode'un HistoricalContext değerini yukarıdaki 4. adımda kaydedilen günlüğe alma tanıtıcısına ayarlayın.
EVENT_TRACE_HEADER yapısının işaretçisiyle IoWMIWriteEvent'i çağırın.
Sürücü, bir IRP_MN_DISABLE_EVENTS isteği aracılığıyla olay günlüğünü devre dışı bırakmak için bildirim alana kadar, sürücü denetim GUID'siyle ilişkili izleme olaylarını günlüğe kaydetmeye devam etmelidir.