Partager via


Le délai d’expiration d’E/S réel est de 10 fois plus court que la valeur spécifiée dans l’infrastructure du pilote en mode utilisateur 2.0

Cet article vous aide à résoudre le problème dans lequel le délai d’expiration d’E/S réel est de 10 fois plus court que la valeur spécifiée dans l’infrastructure du pilote en mode utilisateur 2.0.

Version du produit d’origine : Windows 8.1, Windows Server 2012 R2, Windows 10, Windows 10 IoT Entreprise v1507, Windows Driver Kit 8.1, Windows Driver Kit 10
Numéro de base de connaissances d’origine : 4512989

Symptômes

Supposons que votre pilote utilise UMDF (User-Mode Driver Framework) version 2.0 dans les systèmes d’exploitation Windows. Vous remarquez que la valeur de délai d’expiration de l’opération d’E/S est de 10 fois plus courte que la valeur spécifiée.

Par exemple, si vous appelez la WdfIoTargetSendWriteSynchronously fonction comme suit, la demande d’écriture est censée entraîner un délai d’attente après 10 millisecondes. Toutefois, le délai d’attente se produit après 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);

Cause

Le problème se produit car le calcul du délai d’attente dans UMDF 2.0 est incorrect.

Résolution

Le problème est résolu dans Windows 10 version 1511. Si votre pilote utilise un système antérieur à Windows 10, version 1511, vous pouvez augmenter la valeur de délai d’attente d’un facteur de 10.