structure IO_STATUS_BLOCK (wdm.h)
Un pilote définit le bloc d’état d’E/S d’un IRP pour indiquer l’état final d’une requête d’E/S avant d’appeler IoCompleteRequest pour l’IRP.
Syntaxe
typedef struct _IO_STATUS_BLOCK {
union {
NTSTATUS Status;
PVOID Pointer;
};
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
Membres
Status
Il s’agit de l’état d’achèvement, STATUS_SUCCESS si l’opération demandée a été effectuée correctement ou si une valeur d’information, d’avertissement ou d’erreur STATUS_XXX. Pour plus d’informations, consultez Utilisation des valeurs NTSTATUS.
Pointer
Réservé. Pour une utilisation interne uniquement.
Information
Cette valeur est définie sur une valeur dépendante de la requête. Par exemple, lors de la réussite d’une demande de transfert, il est défini sur le nombre d’octets transférés. Si une demande de transfert est effectuée avec une autre STATUS_XXX, ce membre est défini sur zéro.
Remarques
Sauf si la routine de répartition d’un pilote termine un IRP avec une valeur d’état d’erreur, le pilote de niveau le plus bas de la chaîne définit fréquemment le bloc d’état d’E/S de l’IRP sur les valeurs qui seront retournées au demandeur d’origine de l’opération d’E/S.
Les IoCompletion routines de pilotes de niveau supérieur vérifient généralement le bloc d’état d’E/S dans les IRPs terminés par des pilotes inférieurs. Par conception, le bloc d’état d’E/S d’un IRP est la seule information transmise du pilote de périphérique sous-jacent à toutes les routines IoCompletion de pilotes de niveau supérieur.
Le système d’exploitation implémente prend en charge les routines qui écrivent des valeurs IO_STATUS_BLOCK dans des mémoires tampons de sortie fournies par l’appelant. Par exemple, consultez ZwOpenFile ou NtOpenFile . Ces routines retournent des codes d’état qui peuvent ne pas correspondre aux codes d’état dans les structures IO_STATUS_BLOCK. Si l’une de ces routines retourne STATUS_PENDING, l’appelant doit attendre la fin de l’opération d’E/S, puis vérifier le code d’état dans la structure IO_STATUS_BLOCK pour déterminer l’état final de l’opération. Si la routine retourne un code d’état autre que STATUS_PENDING, l’appelant doit s’appuyer sur ce code d’état au lieu du code d’état dans la structure IO_STATUS_BLOCK.
Pour plus d’informations, consultez blocs d’état d’E/S.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h) |