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.
SDV'nin KMDF sürücünüzü doğrulamasını sağlamak için geri çağırma işlevi rol türünü kullanarak her geri çağırma işlevini bildirmeniz gerekir. Geri çağırma işlevi rol türleri çeşitli WDF üst bilgi dosyalarında tanımlanır ve sürücünüzü Wdf.h üst bilgi dosyasıyla oluşturduğunuzda eklenir. Aşağıdaki tabloda işlev rolü türleri ve ilişkili oldukları olay geri çağırma işlevleri gösterilmektedir.
Geri çağırma işlevi tanımlarından önce sürücünün geri çağırma işlevlerini bildirmeniz gerekir. Aşağıdaki örnek , EvtDriverDeviceAdd geri çağırma işlevinin işlev rol türü bildirimini gösterir. Bu örnekte geri çağırma işlevi EvtDriverDeviceAdd olarak adlandırılır.
#include <NTDDK.h>
#include <wdf.h>
EVT_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd
Geri çağırma işlevinin bir işlev prototip bildirimi varsa işlev prototipini işlev rolü türü bildirimiyle değiştirmeniz gerekir. İşlev rolü türü bildirimleri hakkında daha fazla bilgi için bkz. İşlev Rolü Türü Bildirimlerini Kullanma.
Aşağıdaki tabloda geri çağırma işlevi türleri ve ilişkili oldukları olay geri çağırma işlevleri gösterilmektedir.
| İşlev rolü türü | Olay geri çağırma işlevi |
|---|---|
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP |
|
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY |
|
EVT_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE |
|
EVT_WDF_CHILD_LIST_CREATE_DEVICE |
|
EVT_WDF_CHILD_LIST_DEVICE_REENUMERATED |
|
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP |
|
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE |
|
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY |
|
EVT_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE |
|
EVT_WDF_CHILD_LIST_SCAN_FOR_CHILDREN |
EvtChildListScanForChildren (Çocuklar İçin EvtChildList Tarama) |
EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 |
|
EVT_WDF_DEVICE_ARM_WAKE_FROM_SX |
|
EVT_WDF_DEVICE_CONTEXT_CLEANUP |
|
EVT_WDF_DEVICE_CONTEXT_DESTROY |
|
EVT_WDF_DEVICE_D0_ENTRY |
#B0 #A1 EvtDeviceD0Entry #A2 #C3 |
EVT_WDF_CİHAZ_D0_GİRİŞİ_İÇİN_KESMELER_ETKİN |
|
EVT_WDF_DEVICE_D0_EXIT |
EvtDeviceD0Exit |
EVT_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED |
|
EVT_WDF_DEVICE_DISABLE_WAKE_AT_BUS |
|
EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 |
|
EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX |
|
EVT_WDF_DEVICE_EJECT |
|
EVT_WDF_DEVICE_ENABLE_WAKE_AT_BUS |
|
EVT_WDF_DEVICE_FILE_CREATE |
|
EVT_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS |
|
EVT_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION |
|
EVT_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION |
|
EVT_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION |
|
EVT_WDF_DEVICE_PREPARE_HARDWARE |
#B0 #A1 EvtCihazDonanımHazırla #A2 #C3 |
EVT_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST |
|
EVT_WDF_DEVICE_QUERY_REMOVE |
|
EVT_WDF_DEVICE_QUERY_STOP |
|
EVT_WDF_CİHAZ_İLİŞKİSİ_SORGUSU |
#B0 #A1 EvtDeviceRelationsQuery #A2 #C3 |
EVT_WDF_DEVICE_RELEASE_HARDWARE |
EvtDeviceReleaseHardware |
EVT_WDF_DEVICE_REMOVE_ADDED_RESOURCES |
|
EVT_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY |
|
EVT_WDF_DEVICE_RESOURCES_QUERY |
|
EVT_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP |
|
EVT_WDF_DEVICE_SELF_MANAGED_IO_FLUSH (Kendi Kendini Yöneten IO Temizleme) |
|
EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT |
|
EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART |
|
EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND |
|
EVT_WDF_DEVICE_SET_LOCK (Cihaz Kilidini Ayarla Olayı) |
|
EVT_WDF_DEVICE_SHUTDOWN_NOTIFICATION |
|
EVT_WDF_DEVICE_SURPRISE_REMOVAL |
|
EVT_WDF_DEVICE_USAGE_NOTIFICATION |
#B0 #A1 EvtDeviceUsageNotification #A2 #C3 |
EVT_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED |
|
EVT_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED |
|
EVT_WDF_DMA_ENABLER_DISABLE |
|
EVT_WDF_DMA_ENABLER_ENABLE |
|
EVT_WDF_DMA_ENABLER_FILL |
|
EVT_WDF_DMA_ENABLER_FLUSH |
|
EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START |
|
EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP |
|
EVT_WDF_DPC |
|
EVT_WDF_SÜRÜCÜ_CİHAZ_EKLE |
|
EVT_WDF_DRIVER_UNLOAD |
|
EVT_WDF_FILE_CLEANUP |
|
EVT_WDF_FILE_CLOSE (Dosya kapatma olayı) |
|
EVT_WDF_FILE_CONTEXT_CLEANUP_CALLBACK |
|
EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK |
|
EVT_WDF_INTERRUPT_DISABLE |
|
EVT_WDF_INTERRUPT_DPC |
|
EVT_WDF_INTERRUPT_ENABLE |
|
EVT_WDF_INTERRUPT_ISR |
|
EVT_WDF_INTERRUPT_SYNCHRONIZE |
|
EVT_WDF_IO_IN_CALLER_CONTEXT |
|
EVT_WDF_IO_QUEUE_CONTEXT_CLEANUP_CALLBACK |
|
EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
|
EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE |
|
EVT_WDF_IO_QUEUE_IO_DEFAULT |
|
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL |
|
EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL |
|
EVT_WDF_IO_QUEUE_IO_READ |
|
EVT_WDF_IO_QUEUE_IO_RESUME |
|
EVT_WDF_IO_QUEUE_IO_STOP |
|
EVT_WDF_IO_QUEUE_IO_WRITE |
|
EVT_WDF_IO_QUEUE_STATE |
|
EVT_WDF_IO_TARGET_QUERY_REMOVE |
|
EVT_WDF_IO_TARGET_REMOVE_CANCELED |
|
EVT_WDF_IO_TARGET_REMOVE_COMPLETE |
|
EVT_WDF_OBJECT_CONTEXT_CLEANUP |
|
EVT_WDF_OBJECT_CONTEXT_DESTROY |
|
EVT_WDF_PROGRAM_DMA |
|
EVT_WDF_REQUEST_CANCEL |
|
EVT_WDF_REQUEST_COMPLETION_ROUTINE |
|
EVT_WDF_TIMER |
|
EVT_WDF_TRACE_CALLBACK |
|
EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD |
|
EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE |
|
EVT_WDF_WMI_INSTANCE_SET_INSTANCE |
|
EVT_WDF_WMI_INSTANCE_SET_ITEM |
|
EVT_WDF_WMI_PROVIDER_FUNCTION_CONTROL |
|
EVT_WDF_WORKITEM |
|
EVT_WDFDEVICE_WDM_IRP_PREPROCESS |
Birden çok geri çağırma işlevine izin veren işlev rolü türleri
Bunlarla ilişkilendirilmiş birden çok olay geri çağırma işlevine sahip olabilecek bazı işlev rolü türleri vardır. Örneğin, bir sürücünün birden çok EvtTimerFunc veya EvtDpcFunc geri çağırma işlevi olabilir. Aşağıdaki tabloda, SDV'nin her işlev rolü türü için desteklediği en fazla geri çağırma sayısı gösterilmektedir. Bir sürücünün tabloda listelenen maksimum geri çağırma işlevi sayısından fazlasına sahip olması hatalı olmasa da, SDV kullanılırken doğrulama sürecini karmaşıklaştırır. Ek geri çağırma işlevlerine uyum sağlamak için Sdv-map.h dosyasında yapmanız gerekebilecek değişiklikler hakkında bilgi için bkz. İşlev rolü türü için yinelenen giriş noktaları.
| İşlev rolü türü | En fazla geri çağırma fonksiyonu sayısı |
|---|---|
EVT_WDF_DPC |
7 |
EVT_WDF_INTERRUPT_SYNCHRONIZE |
11 |
EVT_WDF_TIMER |
6 |
EVT_WDF_WMI_INSTANCE_EXECUTE_METHOD |
5 |
EVT_WDF_WMI_INSTANCE_QUERY_INSTANCE |
5 |
EVT_WDF_WMI_INSTANCE_SET_INSTANCE |
5 |
EVT_WDF_WMI_INSTANCE_SET_ITEM |
5 |
İşlev rolü türleri ve G/Ç kuyrukları
Sürücüye G/Ç isteklerini teslim etmek için KMDF çerçevesini kullanan İstek İşleyicileri ve geri çağırma işlevlerini bildirirken (sıralı veya paralel gönderim için) aşağıdaki işlev rol türlerini kullanın. Varsayılan kuyruktan gelen istekleri diğer kuyruklara (el ile gönderme) ileten işlevler için bu işlev rolü türlerini kullanmayın. SDV, bir kuyruktan diğerine gelen istekleri izlemesine olanak tanıyan bir bellek modelini desteklemez.
G/Ç kuyrukları hakkında daha fazla bilgi için bkz. G/Ç Kuyrukları Oluşturma.
| El ile gönderme için yapılandırılmış G/Ç kuyruğu için kullanılan işlev rolü türleri |
|---|
EVT_WDF_IO_QUEUE_CONTEXT_CLEANUP_CALLBACK |
EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
EVT_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE |
EVT_WDF_IO_QUEUE_IO_DEFAULT |
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL |
EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL |
EVT_WDF_IO_QUEUE_IO_READ |
EVT_WDF_IO_QUEUE_IO_RESUME |
EVT_WDF_IO_QUEUE_IO_STOP |
EVT_WDF_IO_QUEUE_IO_WRITE |
EVT_WDF_IO_QUEUE_STATE |
EvtCleanupCallback ve EvtDestroyCallback işlevleri için işlev rolü türleri
EvtCleanupCallback ve EvtDestroyCallback işlevini nesneye özgü işlev rolü türleriyle bildirmeniz gerekir. SDV, sürücünün geri çağırma işlevini düzgün kullanıp kullanmadığını belirlemek için nesneye özgü rol türlerini gerektirir. Hangi işlev türünün kullanılacağını belirlemek için aşağıdaki tabloları kullanın.
| Nesne türü | EvtCleanupCallback için işlev rol türü |
|---|---|
Cihaz nesnesi |
EVT_WDF_DEVICE_CONTEXT_CLEANUP |
G/Ç kuyruk nesnesi |
EVT_WDF_IO_QUEUE_CONTEXT_CLEANUP_CALLBACK |
Dosya nesnesi |
EVT_WDF_FILE_CONTEXT_CLEANUP_CALLBACK |
Diğer tüm nesneler |
EVT_WDF_OBJECT_CONTEXT_CLEANUP |
| Nesne türü | EvDestroyCallback için işlev rolü türü |
|---|---|
Cihaz nesnesi |
EVT_WDF_DEVICE_CONTEXT_DESTROY |
G/Ç kuyruk nesnesi |
EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK |
Dosya nesnesi |
EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK |
Diğer tüm nesneler |
EVT_WDF_OBJECT_CONTEXT_DESTROY |