實際 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。