実際の I/O タイムアウトは、User-Mode Driver Framework 2.0 で指定された値よりも 10 倍短くなります
この記事は、実際の I/O タイムアウトが、driver Framework 2.0 で指定された値より 10 倍短くなる問題 User-Mode 解決するのに役立ちます。
元の製品バージョン: Windows 8.1、Windows Server 2012 R2、Windows 10、Windows 10 IoT Enterprise v1507、Windows Driver Kit 8.1、Windows Driver Kit 10
元の KB 番号: 4512989
現象
ドライバーが Windows オペレーティング システムで User-Mode Driver Framework (UMDF) バージョン 2.0 を使用しているとします。 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 のタイムアウト計算が正しくないために発生します。
解決方法
この問題は、バージョン 1511 Windows 10で修正されています。 ドライバーで、バージョン 1511 Windows 10より前のシステムを使用している場合は、タイムアウト値を 10 倍に増やすことができます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示