Поделиться через


Фактическое время ожидания ввода-вывода составляет 10 раз меньше указанного значения в среда выполнения платформы драйвера режима пользователя 2.0.

Эта статья поможет устранить проблему, в которой фактическое время ожидания ввода-вывода составляет 10 раз меньше указанного значения в среда выполнения платформы драйвера режима пользователя 2.0.

Исходная версия продукта: Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Корпоративная версии 1507, комплект драйверов Windows 8.1, комплект драйверов Windows 10
Исходный номер базы знаний: 4512989

Симптомы

Предположим, что драйвер использует среда выполнения платформы драйвера режима пользователя (UMDF) версии 2.0 в операционных системах Windows. Обратите внимание, что время ожидания операции ввода-вывода составляет 10 раз меньше указанного значения.

Например, если вы вызываете WdfIoTargetSendWriteSynchronously функцию следующим образом, запрос на запись, как ожидается, приведет к возникновению времени ожидания после 10 миллисекунда. Однако время ожидания происходит после 1 миллисекунда.

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);

Причина

Проблема возникает из-за неправильного вычисления времени ожидания в UMDF 2.0.

Решение

Проблема устранена в Windows 10 версии 1511. Если драйвер использует систему, которая раньше, чем Windows 10, версия 1511, можно увеличить время ожидания на 10.