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.
Başka bir sürücü tarafından tanımlanan bir geri çağırma nesnesini kullanmak için, bir sürücü nesneyi açar, ardından aşağıdaki şekilde gösterildiği gibi geri çağırma tetiklendiğinde çağrılacak bir yordam kaydeder. Bildirim isteyen sürücünün geri çağırma nesnesinin adını bilmesi ve geri çağırma yordamına geçirilen bağımsız değişkenlerin semantiğini anlaması gerekir.
Nesneyi açabilmesi için önce sürücünün initializeobjectAttributes çağrısı yaparak nesnenin adını belirten bir öznitelik bloğu oluşturması gerekir. Öznitelik bloğuna bir işaretçi aldıktan sonra, ExCreateCallback fonksiyonunu çağırarak öznitelik işaretçisini, geri çağırma için bir tanıtıcının alınacağı konumu ve Create parametresi için mevcut bir geri çağırma nesnesi gerektirdiğini belirten FALSE değerini iletir.
Sürücü daha sonra geri çağırma yordamını kaydetmek için döndürülen tanıtıcıyla ExRegisterCallback'i çağırabilir.
Geri çağırma işlevi aşağıdaki prototipe sahiptir:
typedef VOID (*PCALLBACK_FUNCTION ) (
IN PVOID CallbackContext,
IN PVOID Argument1,
IN PVOID Argument2
);
CallbackContext parametresi, her çağrıldığında geri çağırma yordamına geçirilecek bağlam işaretçisidir. Genellikle, bu parametre, yordamın DISPATCH_LEVEL seviyesinde çağrılabileceği durumlarda çağıranın sayfalandırılmayan havuzdan ayırması gereken bağlam veri bloğuna bir işaretçidir. İki bağımsız değişken, geri çağırmayı oluşturan bileşen tarafından tanımlanır. Bağımsız değişkenler genellikle geri çağrıyı tetikleyen koşullar hakkında bilgi sağlar.
Geri çağrı oluşturucusu bildirimi tetiklediğinde, sistem kayıtlı rutini çağırır ve bağlam ile iki bağımsız değişkene bir işaretçi geçirir. Bağımsız değişkenlere ait değerler, geri çağırma fonksiyonunu oluşturan bileşen tarafından sağlanır. Geri çağırma rutini, her zaman IRQL <= DISPATCH_LEVEL olan bir IRQL'de, oluşturma sürücüsü tarafından tetiklenen bildirimde çağrılır.
Bir sürücü, geri çağırma işlemi sırasında geçerli koşullar için gereken görevleri gerçekleştirebilir.
Sürücü artık bildirim gerektirmediğinde, yordamını kayıtlı geri çağırmalar listesinden kaldırmak ve geri çağırma nesnesine başvurusunu kaldırmak için ExUnregisterCallback çağrısı yapmalıdır.