Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique uniquement à KMDF]
La méthode WdfIoQueueAssignForwardProgressPolicy permet à l’infrastructure de garantir la progression vers l’avant pour une file d’attente d’E/S spécifiée.
Syntaxe
NTSTATUS WdfIoQueueAssignForwardProgressPolicy(
[in] WDFQUEUE Queue,
[in] PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
);
Paramètres
[in] Queue
Handle vers un objet de file d’attente framework.
[in] ForwardProgressPolicy
Pointeur vers une structure WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY allouée par le pilote.
Valeur de retour
WdfIoQueueAssignForwardProgressPolicy retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une de ces valeurs :
| Code de retour | Description |
|---|---|
|
Un paramètre d’entrée n’est pas valide. |
|
La taille de la structure WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY est incorrecte. |
|
La quantité de mémoire disponible est trop faible. |
Cette méthode peut également retourner d’autres valeurs NTSTATUS . En outre, si la fonction de rappel EvtIoAllocateResourcesForReservedRequest du pilote retourne une valeur d’état d’erreur, WdfIoQueueAssignForwardProgressPolicy retourne cette valeur.
Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.
Remarques
La méthodeWdfIoQueueAssignForwardProgressPolicy crée des objets de requête que l’infrastructure réserve pour les situations à mémoire faible et inscrit les fonctions de rappel que l’infrastructure appelle pour gérer les situations à mémoire faible.
Dans KMDF version 1.9, la file d’attente d’E/S que le paramètre file d’attente représente doit être la file d’attente d’E/S par défaut d’un appareil ou une file d’attente pour laquelle votre pilote a appelé WdfDeviceConfigureRequestDispatching. Le pilote peut appeler WdfIoQueueAssignForwardProgressPolicy à tout moment après avoir appelé WdfDeviceConfigureRequestDispatching.
Dans les versions 1.11 et ultérieures de KMDF, la file d’attente d’E/S que représente le paramètre file d’attente peut être n’importe quelle file d’attente qui reçoit une demande directement à partir de l’infrastructure. Par exemple, le pilote peut spécifier une file d’attente vers laquelle il transférer dynamiquement les irps.
Avant WdfIoQueueAssignForwardProgressPolicy retourne, l’infrastructure effectue les opérations suivantes :
- Crée et stocke le nombre d’objets de requête spécifiés par le pilote pour la TotalForwardProgressRequests membre de la structure WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY.
- Si le pilote a précédemment appelé WdfDeviceInitSetRequestAttributes, chaque allocation inclut l’espace de contexte qui WdfDeviceInitSetRequestAttributes spécifié.
- Appelle la fonction de rappel EvtIoAllocateResourcesForReservedRequest du pilote fonction de rappel pour chaque objet de requête créé par l’infrastructure.
L’infrastructure supprime ses objets de requête réservés uniquement lorsqu’il supprime l’objet de file d’attente du framework auquel ils appartiennent. Si votre pilote appelle WdfDeviceInitSetRequestAttributes et spécifie une EvtCleanupCallback ou EvtDestroyCallback fonction de rappel pour ses objets de requête, l’infrastructure appelle ces fonctions de rappel pour ses objets de requête réservés lorsqu’elle supprime les objets.
Pour plus d’informations sur la méthode WdfIoQueueAssignForwardProgressPolicy et sur l’utilisation de la fonctionnalité de progression vers l’avant garantie de l’infrastructure, consultez Garantir la progression des opérations d’E/S.
Exemples
Cet exemple de code configure une file d’attente d’E/S créée précédemment pour recevoir des demandes d’écriture, puis elle active la progression vers l’avant garantie pour la file d’attente.
#define MAX_RESERVED_REQUESTS 10
WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY queueForwardProgressPolicy;
WDFQUEUE writeQueue;
NTSTATUS status = STATUS_SUCCESS;
...
status = WdfDeviceConfigureRequestDispatching(
device,
writeQueue,
WdfRequestTypeWrite
);
if(!NT_SUCCESS(status)) {
return status;
}
WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_DEFAULT_INIT(
&queueForwardProgressPolicy,
MAX_RESERVED_REQUESTS
);
status = WdfIoQueueAssignForwardProgressPolicy(
writeQueue,
&queueForwardProgressPolicy
);
if(!NT_SUCCESS(status)) {
return status;
}
Spécifications
| Besoin | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.9 |
| En-tête | wdfio.h (include Wdf.h) |
| Bibliothèque | Wdf01000.sys (voir Versioning de la bibliothèque Framework.) |
| IRQL | PASSIVE_LEVEL |
| règles de conformité DDI | DriverCreate(kmdf) |
Voir aussi
EvtIoAllocateResourcesForReservedRequest