Rzeczywisty przekróć czasu we/wy jest 10 razy krótszy niż określona wartość w programie User-Mode Driver Framework 2.0

Ten artykuł ułatwia rozwiązanie problemu, w którym rzeczywisty limit czasu we/wy jest 10 razy krótszy niż określona wartość w programie User-Mode Driver Framework 2.0.

Oryginalna wersja produktu:   Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Enterprise v1507, Windows Driver Kit 8.1, Windows Driver Kit 10
Oryginalny numer KB:   4512989

Symptomy

Załóżmy, że sterownik używa User-Mode UMDF w wersji 2.0 w Windows systemach operacyjnych. Zwróć uwagę, że wartość przecnia czasu operacji We/Wy jest 10 razy mniejsza niż określona wartość.

Jeśli na przykład WdfIoTargetSendWriteSynchronously funkcja jest wywołana w następujący sposób, zgodnie z żądaniem zapisu po 10 milisekundach może wystąpić przeo rok. Jednak po upływie 1 milisekundy nastąpi przeoczek.

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

Przyczyna

Ten problem występuje, ponieważ obliczenie przekierowywu czasu w wartości 2,0 UMDF jest niepoprawne.

Rozwiązanie

Ten problem został rozwiązany w Windows 10 wersji 1511. Jeśli sterownik korzysta z systemu starszego niż Windows 10 w wersji 1511, możesz zwiększyć wartość przekierowania o 10.