BufAfterReqCompletedIntIoctlA-Regel (kmdf)

Die BufAfterReqCompletedIntIoctlA-Regel überprüft, ob nach Abschluss einer Anforderung nicht auf den Puffer zugegriffen werden kann (nur innerhalb des EvtIoInternalDeviceControl-Rückrufs ). Der Puffer wurde durch Aufrufen von WdfRequestRetrieveInputBuffer oder WdfRequestRetrieveOutputBuffer oder WdfRequestRetrieveUnsafeUserInputBuffer oder WdfRequestRetrieveUnsafeUserOutputBuffer abgerufen.

Innerhalb der E/A-Ereignisrückruffunktion "EvtIoInternalDeviceControl " Der Durch Aufrufen von WdfRequestRetrieveInputBuffer oder WdfRequestRetrieveOutputBuffer oder WdfRequestRetrieveUnsafeUserInputBuffer oder WdfRequestRetrieveUnsafeUserOutputBuffer abgerufene Anforderungspuffer kann nach WdfRequestComplete, WdfRequestCompleteWithInformation oder WdfRequestCompleteWithPriorityBoost nicht zugegriffen werden. -Methoden wurden für die Anforderung aufgerufen. Die folgenden möglichen Pufferzugriffsfunktionen werden berücksichtigt: RtlMoveMemory (mit dem Puffer als 1. und 2. Parameter), RtlZeroMemory, RtlCompareMemory, ZwReadFile, ZwWriteFile, WDF_MEMORY_DESCRIPTOR_INIT_BUFFER, WdfMemoryCreatePreallocated, WdfMemoryAssignBuffer, WdfMemoryCopyFromBuffer, WdfMemoryCopyToBuffer.

Treibermodell: KMDF

So führen Sie einen Test durch

Beim Kompilieren:

Führen Sie Static Driver Verifier aus, und geben Sie die Regel BufAfterReqCompletedIntIoctlA an.

Gehen Sie folgendermaßen vor, um Ihren Code zu analysieren:
  1. Bereiten Sie den Code vor (verwenden Sie Rollentypdeklarationen).
  2. Führen Sie Static Driver Verifier aus.
  3. Überprüfen und analysieren Sie die Ergebnisse.

Weitere Informationen finden Sie unter Verwenden der statischen Treiberüberprüfung, um Fehler in Treibern zu finden.

Gilt für:

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile