Rzeczywisty limit czasu operacji we/wy jest 10 razy krótszy niż określona wartość w 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 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 Driver Framework (UMDF) w wersji 2.0 w systemach operacyjnych Windows. Zauważysz, że wartość limitu czasu operacji we/wy jest 10 razy krótsza niż określona wartość.
Jeśli na przykład wywołasz funkcję WdfIoTargetSendWriteSynchronously
w następujący sposób, oczekuje się, że żądanie zapisu spowoduje przekroczenie limitu czasu po upływie 10 milisekund. Jednak limit czasu występuje po 1 milisekundach.
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
Problem występuje, ponieważ obliczanie limitu czasu w UMDF 2.0 jest nieprawidłowe.
Rozwiązanie
Problem został rozwiązany w Windows 10, wersja 1511. Jeśli sterownik używa systemu starszego niż Windows 10, wersja 1511, możesz zwiększyć wartość limitu czasu o współczynnik 10.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla