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.
Sürücünüzün KMDF DDI'lerini doğru kullandığını doğrulamak için bu kuralları kullanın.
Bu bölümde
| Konu | Açıklama |
|---|---|
BufAfterReqCompletedIoctl kuralı, EvtIoDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. |
|
BufAfterReqCompletedIntIoctl kuralı, istek tamamlandıktan sonra arabelleğe erişilemeyeceğini belirtir (yalnızca EvtIoInternalDeviceControl geri çağırma işlevinin içinde). Arabellek, WdfRequestRetrieveOutputBuffer, WdfRequestRetrieveUnsafeUserOutputBuffer, WdfRequestRetrieveInputBuffer veya WdfRequestRetrieveUnsafeUserInputBuffer fonksiyonlarından biri çağrılarak alınır. |
|
BufAfterReqCompletedIntIoctlA kuralı, istek tamamlandıktan sonra arabelleğe erişilemeyeceğini doğrular (yalnızca EvtIoInternalDeviceControl geri çağırma içinde). Arabellek, WdfRequestRetrieveInputBuffer veya WdfRequestRetrieveOutputBuffer veya WdfRequestRetrieveUnsafeUserInputBuffer veya WdfRequestRetrieveUnsafeUserOutputBuffer çağrıları yapılarak alındı. |
|
BufAfterReqCompletedIoctlA kuralı, EvtIoDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. |
|
BufAfterReqCompletedRead kuralı, EvtIoRead geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. Olası arabellek erişim yöntemleri olarak kullanılan 14 DDI vardır. |
|
BufAfterReqCompletedReadA kuralı, EvtIoRead geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. Olası arabellek erişim yöntemleri olarak kullanılan 14 DDI vardır. |
|
BufAfterReqCompletedWrite kuralı, EvtIoWrite geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. |
|
BufAfterReqCompletedWriteA kuralı, EvtIoWrite geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan G/Ç isteği arabelleğine erişilemeyeceğini belirtir. |
|
ChildDeviceInitApi kuralı, bir alt cihaz için, sürücü alt cihaz nesnesi için WdfDeviceCreate yöntemini çağırmadan önce çerçeve cihaz nesnesi başlatma yöntemlerinin çağrılması gerektiğini belirtir. |
|
ControDeviceDeleted kuralı, bir PnP sürücüsü bir kontrol cihazı nesnesi oluşturursa, sürücü kaldırılmadan önce temizleme geri çağırma işlevlerinden birinde bu kontrol cihazı nesnesini silmesi gerektiğini belirtir. |
|
ControlDeviceInitAPI kuralı, denetim cihazı için WDFDEVICE_INIT bir yapı ayarlayan WdfControlDeviceInitAllocate ve diğer tüm cihaz nesne başlatma DDI'lerinin, denetim cihazı için WdfDeviceCreate öncesinde çağrılması gerektiğini belirtir. |
|
CtlDeviceFinishInitDeviceAdd kuralı, bir sürücü EvtDriverDeviceAdd geri çağırma işlevinde denetim cihazı nesnesi oluşturursa, cihaz oluşturulduktan sonra ve EvtDriverDeviceAdd geri çağırma işlevinden çıkmadan önce WdfControlFinishInitializing'ı çağırması gerektiğini belirtir. Bu kural PnP olmayan sürücüler için geçerli değildir. |
|
CtlDeviceFinishInitDrEntry kuralı, bir sürücü DriverEntry geri çağırma işlevinde bir denetim cihazı nesnesi oluşturursa, cihaz oluşturulduktan sonra ve EvtDriverDeviceAdd geri çağırma işlevinden çıkmadan önce WdfControlFinishInitializing'ı çağırması gerektiğini belirtir. Bu kural PnP olmayan sürücüler için geçerli değildir. |
|
DeviceCreateFail kuralı, WdfDeviceCreate çağrısı başarısız olduğunda EVT_WDF_DRIVER_DEVICE_ADD hata durumunu döndürdüğünü belirtir. |
|
DeviceInitAllocate kuralı, bir PDO cihazı veya denetim cihazı nesnesi için, sürücü WdfDeviceCreate'ı çağırmadan önce WdfPdoInitAllocate veya WdfControlDeviceInitAllocate çerçeve cihaz nesnesi başlatma yöntemlerinin çağrılması gerektiğini belirtir. |
|
Bir FDO cihazı için, sürücü cihaz nesnesi için WdfDeviceCreate yöntemini çağırmadan önce çerçeve cihaz nesnesi başlatma yöntemleri ve çerçeve FDO başlatma yöntemleri çağrılmalıdır. |
|
DoubleDeviceInitFree kuralı, sürücülerin cihaz başlatma yapısını iki kez boşaltmaması gerektiğini belirtir. |
|
DriverCreate kuralı, Çekirdek Modu Sürücü Çerçevesi (KMDF) kullanan bir sürücünün DriverEntry yordamı içinden bir çerçeve sürücüsü nesnesi oluşturmak için WdfDriverCreate yöntemini çağırması gerektiğini belirtir. |
|
InitFreeDeviceCallback kuralı, sürücü yeni bir çerçeve cihaz nesnesi başlatırken bir hatayla karşılaşırsa ve sürücü WdfControlDeviceInitAllocate çağrısından WDFDEVICE_INIT yapısını aldıysa WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. |
|
InitFreeDeviceCreate kuralı, bir sürücünün WdfDeviceCreate yerine WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. Cihaz nesnesi başlatma yöntemlerinden birinde hata oluşursa ve sürücü WdfControlDeviceInitAllocate çağrısından WDFDEVICE_INIT yapısını aldıysa. |
|
InitFreeDeviceCreateType2 kuralı, WdfDeviceInitFree'yi çağırdıktan sonra bir sürücünün WdfDeviceCreate çağrısı yapmaması gerektiğini belirtir. |
|
InitFreeDeviceCreateType4 kuralı, sürücü WdfDeviceCreate çağırırken bir hatayla karşılaşırsa ve sürücü WdfControlDeviceInitAllocate çağrısından WDFDEVICE_INIT yapısını aldıysa WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. |
|
InitFreeNull kuralı, parametre olarak PWDFDEVICE_INIT alan DDI'lerin WDFDEVICE_INIT yapısına yönelik NULL işaretçisi kullanılarak çağrılaamayacağını belirtir. |
|
MdlAfterReqCompletedIntIoctl kuralı , EvtIoInternalDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra bellek tanımlayıcı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedIntIoctlA kuralı, EvtIoInternalDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra bellek tanımlayıcı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedIoctl kuralı, EvtIoDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra bellek tanımlayıcı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedIoctlA kuralı, EvtIoDeviceControl geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra bellek tanımlayıcı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedRead kuralı, EvtIoRead geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan bellek tanımlayıcısı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedReadA kuralı, EvtIoRead geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan bellek tanımlayıcı listesi (MDL) nesnesine erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedWrite kuralı, EvtIoWrite geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan bellek tanımlayıcısı listesine (MDL) erişilemeyeceğini belirtir. |
|
MdlAfterReqCompletedWriteA kuralı, EvtIoWrite geri çağırma işlevinde G/Ç isteği tamamlandıktan sonra alınan bellek tanımlayıcı listesine (MDL) erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedIntIoctl kuralı, EvtIoInternalDeviceControl geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedIntIoctlA kuralı, EvtIoInternalDeviceControl geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedIoctl kuralı, EvtIoDeviceControl geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedIoctlA kuralı, EvtIoDeviceControl geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedRead kuralı, EvtIoRead geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedReadA kuralı, EvtIoRead geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedWrite kuralı, EvtIoWrite geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
MemAfterReqCompletedWriteA kuralı, EvtIoWrite geri çağırma işlevinde, G/Ç isteği tamamlandıktan sonra çerçeve bellek nesnesine erişilemeyeceğini belirtir. |
|
NullCheck kuralı, sürücü kodunda bir NULL değerin daha sonra sürücüde dereference edilmediğini doğrular. Bu kural, bu koşullardan biri doğruysa bir hata bildirir:
NullCheck kuralı ihlalleriyle, en ilgili kod deyimleri izleme ağacı bölmesinde vurgulanır. Rapor çıkışıyla çalışma hakkında daha fazla bilgi için bkz. Statik Sürücü Doğrulayıcı Raporu ve İzleme Görüntüleyicisi'ni Anlama. |
|
PdoDeviceInitAPI kuralı, sürücü PDO için WdfDeviceCreate'ı çağırmadan önce, fiziksel cihaz nesnesi (PDO) için WDFDEVICE_INIT yapısı ayarlayan WdfPdoInitAllocate ve diğer tüm cihaz nesnesi başlatma DDI'lerinin çağrılması gerektiğini belirtir. |
|
PdoInitFreeDeviceCallback kuralı, sürücü herhangi bir çerçeve cihazı nesnesi başlatma işlevini çağırdığında bir hata oluşursa sürücünün WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. |
|
PdoInitFreeDeviceCreate kuralı, bir sürücünün WdfDeviceCreate yerine WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. Cihaz nesnesi başlatma işlevlerinden birinde hata oluşursa ve sürücü WdfPdoInitAllocate çağrısından WDFDEVICE_INIT yapısını aldıysa. |
|
PdoInitFreeDeviceCreateType2 kuralı, bir sürücünün WdfDeviceInitFree'yi çağırdıktan sonra WdfDeviceCreate çağrısı yapmaması gerektiğini belirtir. |
|
PdoInitFreeDeviceCreateType4 kuralı, sürücü WdfDeviceCreate çağırdığında bir hata oluşursa sürücünün WdfDeviceInitFree çağrısı yapması gerektiğini belirtir. |
|
ControlDeviceInitAllocate kuralı, bir denetim cihazı nesnesi için sürücünün WdfControlDeviceInitAllocate çerçeve cihaz nesnesi başlatma yöntemini çağırarak WdfDeviceCreate'ı çağırması gerektiğini belirtir. |
|
InputBufferAPI kuralı, EvtIoReadgeri çağırma işlevinde arabellek alma için doğru DDI'lerin kullanıldığını belirtir. EvtIoRead geri çağırma işlevinde arabellek okuma için aşağıdaki DDI'lere çağrı yapılamaz. |
DDI kullanım kuralı kümesini seçmek için
Microsoft Visual Studio'da sürücü projenizi (.vcxProj) seçin. Sürücüsü menüsünde tıklayın, Statik Sürücü Doğrulayıcıyı Başlat....
Kurallar sekmesine tıklayın. Kural Kümeleri'nin altında DDIUsage'ı seçin.
Visual Studio geliştirici komut istemi penceresinden varsayılan kural kümesini seçmek için /check seçeneğiyle DDIUsage.sdv belirtin. Örneğin:
msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32Daha fazla bilgi için Sürücülerdeki Hataları Bulmak için Statik Sürücü Doğrulayıcı Kullanma ve Statik Sürücü Doğrulayıcı Komutları (MSBuild)bölümüne bakın.