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 gerekli IRQL'de DDI çağrıları yaptığını doğrulamak için bu kuralları kullanın.
IRQL kurallarına uymayan bir sürücü, işlem sırasında kilitlenme koşullarına veya bilgisayar kilitlenmelerine yol açabilecek ciddi sorunlara neden olabilir.
Bu bölümde
| Konu | Açıklama |
|---|---|
ForwardedAtBadIrql kuralı, IRP ana işlev kodu aşağıdakilerden biri olmadığı sürece sürücünün IRQL<DISPATCH_LEVEL IoCallDriver ve PoCallDriver'ı çağırması gerektiğini belirtir: |
|
ForwardedAtBadIrqlAllocate kuralı, IRP ana işlev kodu aşağıdakilerden biri olmadığı sürece sürücünün IRQL<DISPATCH_LEVEL'de IoCallDriver ve PoCallDriver'ı çağırması gerektiğini belirtir: |
|
ForwardedAtBadIrqlFsdAsync kuralı, IRP ana işlev kodu aşağıdakilerden biri olmadığı sürece sürücünün IRQL<DISPATCH_LEVEL'de IoCallDriver ve PoCallDriver'ı çağırdığını belirtir: |
|
ForwardedAtBadIrqlFsdSync kuralı, IRP ana işlev kodu aşağıdakilerden biri olmadığı sürece sürücünün IRQL<DISPATCH_LEVEL'de IoCallDriver ve PoCallDriver'ı çağırdığını belirtir: |
|
IrqlApcLte kuralı, sürücünün yalnızca IRQL <= APC_LEVEL'de yürütülürken ObGetObjectSecurity ve ObReleaseObjectSecurity'yi çağırdığını belirtir. |
|
IrqlDispatch kuralı, sürücünün yalnızca IRQL = DISPATCH_LEVEL yürütülürken aşağıdaki DDI'leri çağırdığını belirtir. |
|
IrqlExAllocatePool kuralı, sürücünün ExAllocatePoolWithTag ve ExAllocatePoolWithTagPriority'yi yalnızca IRQL<=DISPATCH_LEVEL konumunda yürütürken çağırdığını belirtir. |
|
IrqlExApcLte1 kuralı, sürücünün Yalnızca IRQL <= APC_LEVEL'de ExAcquireFastMutex ve ExTryToAcquireFastMutex'i çağırdığını belirtir. |
|
IrqlExApcLte2 kuralı, sürücünün yalnızca IRQL <= APC_LEVEL'de aşağıdaki yordamları çağırdığını belirtir. |
|
IrqlExApcLte3 kuralı, sürücünün yalnızca IRQL <= APC_LEVEL'de aşağıdaki yönetici destek yordamlarını çağırdığını belirtir. |
|
IrqlExApcLteInline kuralı, DDI'lerin yalnızca uygun IRQL düzeylerinde çağrıldığını belirtir |
|
IrqlExFree1 kuralı, ExFreePool ve ExFreePoolWithTag'ın uygun IRQL'de çağrıldığını belirtir. |
|
IrqlExFree2 kuralı, ExFreePool ve ExFreePoolWithTag'ın uygun IRQL'de çağrıldığını belirtir. |
|
IrqlExFree3 kuralı, ExFreePool ve ExFreePoolWithTag'ın uygun IRQL'de çağrıldığını belirtir. |
|
IrqlExPassive kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de aşağıdaki yönetici destek yordamlarını çağırdığını belirtir: IrqlExPassive kuralı, sürücünün IRQL <= APC_LEVEL'de ExRaiseStatus'ı çağırdığını da belirtir |
|
IrqlIoApcLte kuralı, sürücünün aşağıdaki G/Ç yöneticisi yordamlarını yalnızca IRQL <= APC_LEVEL yürütülürken çağırdığını belirtir: |
|
IrqlIoDispatch kuralı, sürücünün yalnızca IRQL <= DISPATCH_LEVEL yürütülürken aşağıdaki G/Ç Yöneticisi yordamlarını çağırdığını belirtir: IoGetDeviceToVerify, IoSetDeviceToVerify. |
|
IrqlIoPassive1 kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL yürütülürken aşağıdaki yordamları çağırdığını belirtir: |
|
IrqlIoPassive2 kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de aşağıdaki G/Ç Yöneticisi yordamlarını çağırdığını belirtir: |
|
IrqlIoPassive3 kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL yürütülürken aşağıdaki yordamları çağırdığını belirtir: |
|
IrqlIoPassive4 kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL yürütülürken aşağıdaki yordamları çağırdığını belirtir: |
|
IrqlIoPassive5 kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de yürütülürken belirli G/Ç Yöneticisi yordamlarını çağırdığını belirtir. |
|
IrqlIoRtlZwPassive kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de yürütülürken belirli G/Ç Yöneticisi yordamlarını çağırdığını belirtir. |
|
IrqlKeApcLte1 kuralı, sürücünün aşağıdaki çekirdek yordamlarını yalnızca IRQL <= APC_LEVEL yürütülürken çağırdığını belirtir: |
|
IrqlKeApcLte2 kuralı, sürücünün aşağıdaki çekirdek yordamlarını yalnızca IRQL <= APC_LEVEL yürütülürken çağırdığını belirtir: |
|
IrqlKeDispatchLte kuralı, sürücünün aşağıdaki çekirdek yordamlarını yalnızca IRQL <= DISPATCH_LEVEL yürütülürken çağırdığını belirtir: |
|
IrqlKeRaiseLower kuralı, sürücünün IRQL'i yükseltirken ve indirirken aşağıdakileri yaptığını belirtir: Sürücü KeRaiseIrql'i çağırdığında, NewIrql parametresinin değerinden düşük veya buna eşit bir IRQL'de yürütülür.Sürücü KeLowerIrql'i yalnızca KeRaiseIrql veya KeRaiseIrqlToDpcLevel çağrısı yaptıktan sonra çağırır. |
|
IrqlKeRaiseLower2 kuralı, sürücülerin KeRaiseIrql veya KeRaiseIrqlToDpcLevel'a önceki bir çağrıyla tetiklenen özgün IRQL'i geri yüklemek için KeLowerIrql kullandığını belirtir. |
|
IrqlKeReleaseSpinLock kuralı, sürücünün KeReleaseSpinLock'u yalnızca IRQL = DISPATCH_LEVEL yürütülürken çağırdığını belirtir. |
|
IrqlKeSetEvent kuralı, KeSetEvent yordamının yalnızca Waitdeğeri YANLIŞ olarak ayarlandığında IRQL <= DISPATCH_LEVEL ve Beklemetrue olarak ayarlandığında IRQL <= APC_LEVEL olarak çağrıldığını belirtir. |
|
IrqlKeWaitForMutexObject kuralı, Timeout parametresinin değerine göre uygun IRQL'de KeWaitForMutexObject yordamını çağıracak sürücüyü belirtir: |
|
IrqlKeWaitForMultipleObjects kuralı, KeWaitForMultipleObjects yordamının çağıranlarının Timeout parametresine göre uygun IRQL'de çalışması gerektiğini belirtir. |
|
IrqlMmApcLte kuralı, sürücünün yalnızca IRQL <= APC_LEVEL yürütülürken aşağıdaki bellek yöneticisi yordamlarını çağırdığını belirtir: |
|
IrqlMmDispatch kuralı, sürücünün yalnızca IRQL <= DISPATCH_LEVEL yürütülürken MmFreeContiguousMemory çağırdığını belirtir. |
|
IIrqlNtifsApcPassive kuralı, sürücünün kuralda listelenen DDI'leri yalnızca IRQL = PASSIVE_LEVEL veya IRQL <= APC_LEVEL yürütürken çağırdığını belirtir. |
|
IrqlObPassive kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de yürütülürken ObReferenceObjectByHandle'ı çağırdığını belirtir. |
|
IrqlPsPassive kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL'de yürütülürken belirli İşlem Yapısı yordamlarını çağırdığını belirtir. |
|
IrqlReturn kuralı, sürücünün dağıtım yordamlarının çağrıldıkları aynı IRQL'de döndürüldüğünü belirtir. |
|
IrqlRtlPassive kuralı, sürücünün RtlDeleteRegistryValue'yi yalnızca IRQL = PASSIVE_LEVEL'de yürütülürken çağırdığını belirtir. |
|
IrqlZwPassive kuralı, sürücünün yalnızca IRQL = PASSIVE_LEVEL yürütülürken ZwClose çağırdığını belirtir. |
Irql 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 Irql'i seçin.
Visual Studio geliştirici komut istemi penceresinden varsayılan kural kümesini seçmek için /check seçeneğiyle Irql.sdv belirtin. Örneğin:
msbuild /t:sdv /p:Inputs="/check:Irql.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.