Compartir a través de


Regla BufAfterReqCompletedIntIoctlA (kmdf)

La regla BufAfterReqCompletedIntIoctlA comprueba que una vez completada una solicitud, no se puede tener acceso a su búfer (solo dentro de la devolución de llamada EvtIoInternalDeviceControl ). El búfer se recuperó llamando a WdfRequestRetrieveInputBuffer o WdfRequestRetrieveOutputBuffer o WdfRequestRetrieveUnsafeUserInputBuffer o WdfRequestRetrieveUnsafeUserOutputBuffer.

Dentro de la función de devolución de llamada de evento de E/S EvtIoInternalDeviceControl , El búfer de solicitud recuperado llamando a WdfRequestRetrieveInputBuffer o WdfRequestRetrieveOutputBuffer o WdfRequestRetrieveUnsafeUserInputBuffer o WdfRequestRetrieveUnsafeUserOutputBuffer no se puede tener acceso después de que WdfRequestComplete, WdfRequestCompleteWithInformation o WdfRequestCompleteWithPriorityBoost se ha llamado a los métodos en la solicitud. Se consideran las siguientes funciones posibles de acceso al búfer: RtlMoveMemory (con el búfer como parámetro 1 y 2nd), RtlZeroMemory, RtlCompareMemory, ZwReadFile, ZwWriteFile, WDF_MEMORY_DESCRIPTOR_INIT_BUFFER, WdfMemoryCreatePreallocated, WdfMemoryAssignBuffer, WdfMemoryCopyFromBuffer, WdfMemoryCopyToBuffer.

Modelo de controlador: KMDF

Cómo probar

En tiempo de compilación

Ejecute el Comprobador de controladores estáticos y especifique la regla BufAfterReqCompletedIntIoctlA .

Usa los pasos siguientes para ejecutar un análisis de tu código:
  1. Prepara el código (usa declaraciones de tipos de rol).
  2. Ejecuta el comprobador de controlador estático.
  3. Consulta y analiza los resultados.

Para obtener más información, vea Usar comprobador de controladores estáticos para buscar defectos en controladores.

Se aplica a

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile