Partilhar via


Regra BufAfterReqCompletedIntIoctlA (kmdf)

A regra BufAfterReqCompletedIntIoctlA verifica se, após a conclusão de uma solicitação, seu buffer não pode ser acessado (somente no retorno de chamada EvtIoInternalDeviceControl ). O buffer foi recuperado chamando WdfRequestRetrieveInputBuffer ou WdfRequestRetrieveOutputBuffer ou WdfRequestRetrieveUnsafeUserInputBuffer ou WdfRequestRetrieveUnsafeUserOutputBuffer.

Dentro da função de retorno de chamada de evento de fila de EvtIoInternalDeviceControl , o buffer de solicitação recuperado chamando WdfRequestRetrieveInputBuffer ou WdfRequestRetrieveOutputBuffer ou WdfRequestRetrieveUnsafeUserInputBuffer ou WdfRequestRetrieveUnsafeUserOutputBuffer não pode ser acessado após o WdfRequestComplete, WdfRequestCompleteWithInformation ou WdfRequestCompleteWithPriorityBoost métodos foram chamados na solicitação. As seguintes funções de acesso ao buffer possíveis são consideradas: RtlMoveMemory (com o buffer como um 1º e 2º parâmetro), RtlZeroMemory, RtlCompareMemory, ZwReadFile, ZwWriteFile, WDF_MEMORY_DESCRIPTOR_INIT_BUFFER, WdfMemoryCreatePreallocated, WdfMemoryAssignBuffer, WdfMemoryCopyFromBuffer, WdfMemoryCopyToBuffer.

Modelo de driver: KMDF

Como testar

Em tempo de compilação

Execute o Verificador de Driver Estático e especifique a regra BufAfterReqCompletedIntIoctlA .

Use as seguintes etapas para executar uma análise do código:
  1. Prepare seu código (use declarações de tipo de função).
  2. Execute o Verificador de Driver Estático.
  3. Exiba e analise os resultados.

Para obter mais informações, consulte Usando o verificador de driver estático para localizar defeitos em drivers.

Aplica-se a

WDF_MEMORY_DESCRIPTOR_INIT_BUFFERWdfMemoryAssignBufferWdfMemoryCopyFromBufferWdfMemoryCopyToBufferWdfMemoryCreatePreallocatedWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestRetrieveInputBufferWdfRequestRetrieveOutputBufferWdfRequestRetrieveUnsafeUserInputBufferWdfRequestRetrieveUnsafeUserOutputBufferRtlCompareMemoryRtlMoveMemoryRtlZeroMemoryZwReadFile