實際 I/O 超時比 User-Mode 驅動程式架構2.0 中的指定值短10倍

本文可協助您解決實際 I/O 超時的實際值為10倍于 User-Mode Driver Framework 2.0 中的指定值。

原始產品版本:  Windows 8.1,Windows Server 2012 R2,Windows 10,Windows 10 IoT 企業版 v1507,Windows 驅動程式套件8.1,Windows driver 工具組10
原始 KB 編號:   4512989

徵狀

假設您的驅動程式使用 User-Mode driver Framework (UMDF) 版本2.0 中 Windows 作業系統。 您會發現 I/O 作業的超時值比指定的值短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。