O tempo máximo real de E/S é 10 vezes menor do que o valor especificado no User-Mode Driver Framework 2.0

Este artigo ajuda você a resolver o problema no qual o tempo de vida real de E/S é 10 vezes menor do que o valor especificado no User-Mode Driver Framework 2.0.

Versão original do produto:   Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Enterprise v1507, Kit de Driver do Windows 8.1, Kit de Driver do Windows 10
Número original do KB:   4512989

Sintomas

Suponha que seu driver use User-Mode Driver Framework (UMDF) versão 2.0 em sistemas operacionais Windows. Observe que o valor de tempo de tempo da operação de E/S é 10 vezes menor do que o valor especificado.

Por exemplo, se você chamar a função da seguinte forma, espera-se que a solicitação de gravação cause um tempo máximo após WdfIoTargetSendWriteSynchronously 10 milissegundos. No entanto, o tempo de saída ocorre após 1 milissegundo.

WDF_REQUEST_SEND_OPTIONS reqOptions; 
WDF_REQUEST_SEND_OPTIONS_INIT(&reqOptions, WDF_REQUEST_SEND_OPTION_TIMEOUT); // We specify 10 milliseconds as a timeout. WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(&reqOptions, WDF_REL_TIMEOUT_IN_MS(10));
WdfIoTargetSendWriteSynchronously(ioTarget, request, &memDescr, NULL, & reqOptions, &bytesWritten);

Motivo

O problema ocorre porque o cálculo de tempo-out no UMDF 2.0 está incorreto.

Resolução

O problema foi corrigido no Windows 10, versão 1511. Se o driver usar um sistema anterior ao Windows 10, versão 1511, você poderá aumentar o valor do tempo-out em um fator 10.