IO_STATUS_BLOCK structure (wdm.h)

Un pilote définit le bloc d’E/S d’un IRP status pour indiquer la status finale d’une demande 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 la status d’achèvement, soit STATUS_SUCCESS si l’opération demandée s’est terminée correctement, soit une valeur d’information, d’avertissement ou d’erreur STATUS_XXX. Pour plus d’informations, consultez Utilisation des valeurs NTSTATUS.

Pointer

Réservé. À usage interne uniquement.

Information

Cette valeur est définie sur une valeur dépendante de la requête. Par exemple, en cas de réussite d’une demande de transfert, ce paramètre est défini sur le nombre d’octets transférés. Si une demande de transfert est effectuée avec un autre STATUS_XXX, ce membre est défini sur zéro.

Remarques

Sauf si la routine de répartition d’un pilote termine une IRP avec une erreur status valeur, le pilote de niveau le plus bas de la chaîne définit fréquemment le bloc d’E/S de l’IRP status sur les valeurs qui seront retournées au demandeur d’origine de l’opération d’E/S.

Les routines IoCompletion des pilotes de niveau supérieur case activée généralement le bloc de status d’E/S dans les I/S effectuées par les pilotes inférieurs. Par conception, le bloc d’E/S status dans un IRP est la seule information transmise du pilote de périphérique sous-jacent à toutes les routines IoCompletion des pilotes de niveau supérieur.

Le système d’exploitation implémente des routines de prise en charge 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 status qui peuvent ne pas correspondre aux codes status 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 case activée le code status dans la structure IO_STATUS_BLOCK pour déterminer la status finale de l’opération. Si la routine retourne un code status autre que STATUS_PENDING, l’appelant doit s’appuyer sur ce code status au lieu du code status dans la structure IO_STATUS_BLOCK.

Pour plus d’informations, consultez Blocs d’état d’E/S.

Configuration requise

Condition requise Valeur
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h, Wudfwdm.h)

Voir aussi

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine