Werkelijke I/O-time-out is tien keer korter dan de opgegeven waarde in User-Mode Driver Framework 2.0

In dit artikel kunt u het probleem oplossen waarbij de werkelijke I/O-time-out tien keer korter is dan de opgegeven waarde in User-Mode Driver Framework 2.0.

Oorspronkelijke productversie:   Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Enterprise v1507, Windows Driver Kit 8.1, Windows Driver Kit 10
Oorspronkelijk KB-getal:   4512989

Symptomen

Stel dat uw stuurprogramma User-Mode UMDF-versie 2.0 gebruikt in Windows besturingssystemen. U ziet dat de time-outwaarde van I/O-bewerking tien keer korter is dan de opgegeven waarde.

Als u de WdfIoTargetSendWriteSynchronously functie bijvoorbeeld als volgt aanroept, wordt er met de schrijfaanvraag verwacht dat er na 10 milliseconden een time-out wordt uitgevoerd. De time-out vindt echter plaats na 1 milliseconde.

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

Oorzaak

Het probleem treedt op omdat de time-outberekening in UMDF 2.0 onjuist is.

Oplossing

Het probleem is opgelost in Windows 10 versie 1511. Als uw stuurprogramma een systeem gebruikt dat eerder is dan Windows 10, versie 1511, kunt u de time-outwaarde met een factor 10 verhogen.