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.
Çoğu işlev rolü türü için SDV, sürücünün her giriş noktası için en fazla bir geri çağırma işlevi olduğunu varsayar. Ancak, bunlarla ilişkilendirilmiş birden çok olay geri çağırma işlevine sahip olabilecek bazı işlev rolü türleri vardır. Örneğin, bir KMDF sürücüsünün birden çok EvtTimerFunc veya EvtDpcFunc geri çağırma işlevi (EVT_WDF_TIMER ve EVT_WDF_DPC rol türü ek açıklamalarını kullanan) olabilir. Bu durumda SDV, Sdv-map.h içindeki işlev türüne bir tamsayı ekler. Örneğin, sürücünüzde iki DPC geri çağırma işlevi varsa, SDV bunları fun_WDF_DPC_1 ve fun_WDF_DPC_2 ile eşler.
Bir sürücü rol türü için geri çağırma işlevi sayısı üst sınırını aşarsa, SDV aşağıdaki iletiyi görüntüler.
Static Driver Verifier found more than one entry point for '[role type]'
Bir işlev rolü türünün SDV'nin desteklediğinden daha fazla giriş noktası varsa, sürücüde mutlaka bir sorun yoktur. Ancak doğru doğrulama sonuçlarını elde etmek için Sdv.-map.h dosyasını düzenleyerek yinelenen girişleri kaldırmanız gerekir.
Örneğin, aşağıdaki Sdv-map.h dosyasında, EVT_WDF_REQUEST_COMPLETION_ROUTINE rol türü kullanılarak açıklama eklenen iki CompletionRoutine işlevi olduğu gösterilmektedir. Sdv-map.h dosyasında, SDV hem EvtRequestReadCompletionRoutine hem de EvtRequestWriteCompletionRoutine'i fun_WDF_REQUEST_COMPLETION_ROUTINE olarak tanımlar.
//Approved=false
#define fun_WDF_DRIVER_DEVICE_ADD OsrFxEvtDeviceAdd
#define fun_WDF_IO_QUEUE_IO_READ OsrFxEvtIoRead
#define fun_WDF_IO_QUEUE_IO_STOP OsrFxEvtIoStop
#define fun_WDF_DEVICE_D0_EXIT OsrFxEvtDeviceD0Exit
#define fun_WDF_REQUEST_COMPLETION_ROUTINE EvtRequestReadCompletionRoutine
#define fun_WDF_REQUEST_COMPLETION_ROUTINE EvtRequestWriteCompletionRoutine
#define fun_WDF_OBJECT_CONTEXT_CLEANUP OsrFxEvtDriverContextCleanup
#define fun_WDF_DEVICE_D0_ENTRY OsrFxEvtDeviceD0Entry
#define fun_WDF_DEVICE_PREPARE_HARDWARE OsrFxEvtDevicePrepareHardware
#define fun_WDF_IO_QUEUE_IO_WRITE OsrFxEvtIoWrite
#define fun_WDF_IO_QUEUE_IO_DEVICE_CONTROL OsrFxEvtIoDeviceControl
Yinelemeyi kaldırmak için ikinci tamamlama yordamına açıklama ekleyin ( #define içindeki #d iki açıklama sınırlayıcısı (// ile değiştirin). Ardından Approved=true değerini ayarlayın ve bir doğrulama çalıştırın.
#define fun_WDF_REQUEST_COMPLETION_ROUTINE EvtRequestReadCompletionRoutine
//efine fun_WDF_REQUEST_COMPLETION_ROUTINE EvtRequestWriteCompletionRoutine
Doğrulamanın sonuçlarını tek tamamlama yordamıyla görüntüledikten sonra, Sdv-map.h dosyasını yeniden düzenleyin, ancak bu kez doğrulanmış olan tamamlama yordamını açıklama satırı yapıp doğrulanmamış tamamlama yordamından açıklamayı kaldırın (değerini #d ile değiştirin//). Ardından SDV'yi yeniden çalıştırın.
Birden çok giriş noktası destekleyen işlev rolü türleri
Bazı işlev rolü türleri birden çok girdiyi destekler. Girdi sayısı desteklenen üst sınırı aştığında, SDV bunları yinelenen girdiler olarak da bildirir. Sdv-map.h dosyasındaki geri çağırma yordamları için #define deyimlerini seçmeli olarak açıklama satırı yaparak ve ayrı doğrulamalar yaparak bu ek girdileri yinelenen girişleri işlediğiniz gibi değerlendirebilirsiniz. Örneğin, sürücünüzde sekiz DPC geri çağırma işlevi varsa (EVT_WDF_DPC rol türünü kullanan), aşağıdakileri yapabilirsiniz:
Sdv-map.h dosyasını düzenleyin ve fun_WDF_DPC_8 aracılığıyla fun_WDF_DPC_5 için define deyimlerini açıklama satırına ekleyin.
Sürücüde SDV'yi çalıştırın.
Ardından fun_WDF_DPC_8 aracılığıyla fun_WDF_DPC_5 tanımlamak ve fun_WDF_DPC_4 aracılığıyla fun_WDF_DPC_1 için define deyimlerini açıklama satırı yapmak için Sdv-map.h dosyasını yeniden düzenleyin.
Sürücüde SDV'yi çalıştırın.
Birden fazla geri çağırma işlevine sahip olabilecek işlev rolü türlerinin listesi için bkz. Statik Sürücü Doğrulayıcı KMDF Ek Açıklamaları . Listede, SDV'nin bu rol türleri için desteklediği en fazla geri çağırma işlevi sayısı gösterilir.