Fonction WdfRequestAllocateTimer (wdfrequest.h)
[S’applique à KMDF et UMDF]
La méthode WdfRequestAllocateTimer alloue un minuteur pour une demande d’E/S spécifiée.
Syntaxe
NTSTATUS WdfRequestAllocateTimer(
[in] WDFREQUEST Request
);
Paramètres
[in] Request
Handle d’un objet de requête d’infrastructure.
Valeur retournée
WdfRequestAllocateTimer retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
Un paramètre d’entrée n’est pas valide. |
|
Impossible d’allouer un minuteur. |
Cette méthode peut également retourner d’autres valeurs NTSTATUS.
Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.
Remarques
Si votre pilote spécifie une valeur de délai d’attente lors de l’appel de WdfRequestSend, il doit appeler WdfRequestAllocateTimer avant d’appeler WdfRequestSend. Cela garantit que l’appel à WdfRequestSend n’échouera pas s’il n’y a pas de ressources système suffisantes pour allouer un minuteur.
Si un minuteur est déjà alloué pour la requête spécifiée, WdfRequestAllocateTimer retourne STATUS_SUCCESS.
Exemples
L’exemple de code suivant initialise une structure WDF_REQUEST_SEND_OPTIONS , alloue un objet minuteur pour la demande d’E/S, puis appelle WdfRequestSend.
NTSTATUS status;
WDF_REQUEST_SEND_OPTIONS options;
BOOLEAN requestSend;
WDF_REQUEST_SEND_OPTIONS_INIT(
&options,
WDF_REQUEST_SEND_OPTION_TIMEOUT
);
WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(
&options,
WDF_ABS_TIMEOUT_IN_SEC(TIME_OUT_VALUE)
);
status = WdfRequestAllocateTimer(
request
);
if (!NT_SUCCESS(status)){
return status;
...
requestSend = WdfRequestSend(
request,
ioTarget,
&options
);
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfrequest.h (include Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Règles de conformité DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |