Das tatsächliche E/A-Zeit out ist 10-mal kürzer als der angegebene Wert in User-Mode Driver Framework 2.0

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem das tatsächliche E/A-Timeout 10-mal kürzer als der angegebene Wert in User-Mode Driver Framework 2.0 ist.

Ursprüngliche Produktversion:   Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Enterprise v1507, Windows Driver Kit 8.1, Windows Driver Kit 10
Ursprüngliche KB-Nummer:   4512989

Problembeschreibung

Angenommen, ihr Treiber User-Mode Driver Framework (UMDF) Version 2.0 in Windows-Betriebssystemen verwendet. Sie sehen, dass der Zeitsendwert des E/A-Vorgangs 10 Mal kürzer als der angegebene Wert ist.

Wenn Sie die Funktion z. B. wie folgt aufrufen, wird erwartet, dass die Schreibanforderung nach 10 Millisekunden zu einem Zeit WdfIoTargetSendWriteSynchronously out kommt. Das Zeit out tritt jedoch nach 1 Millisekunde auf.

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

Ursache

Das Problem tritt auf, weil die Berechnung des Zeitproblems in UMDF 2.0 falsch ist.

Lösung

Das Problem wurde in Windows 10, Version 1511, behoben. Wenn Ihr Treiber ein System verwendet, das vor Windows 10, Version 1511, liegt, können Sie den Wert für das Zeitfenster um den Faktor 10 erhöhen.