IO_STATUS_BLOCK構造体 (wdm.h)

ドライバーは、IRP の IoCompleteRequest を呼び出す前に、I/O 要求の最終的な状態を示す IRP の I/O 状態ブロックを設定します。

構文

typedef struct _IO_STATUS_BLOCK {
  union {
    NTSTATUS Status;
    PVOID    Pointer;
  };
  ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;

メンバー

Status

これは完了状態で、要求された操作が正常に完了した場合にSTATUS_SUCCESSされるか、情報、警告、またはエラー STATUS_XXX 値です。 詳細については、 NTSTATUS 値の使用を参照してください。

Pointer

予約済み。 内部使用専用です。

Information

これは、要求に依存する値に設定されます。 たとえば、転送要求が正常に完了すると、転送されたバイト数に設定されます。 転送要求が別のSTATUS_XXX で完了した場合、このメンバーは 0 に設定されます。

注釈

ドライバーのディスパッチ ルーチンがエラー状態の値を持つ IRP を完了しない限り、チェーン内の最下位レベルのドライバーは、頻繁に I/O 操作の元の要求者に返される値に IRP の I/O 状態ブロックを設定します。

上位レベルのドライバーの IoCompletion ルーチンは、通常、下位ドライバーによって完了した IRP の I/O 状態ブロックを確認します。 設計上、IRP の I/O 状態ブロックは、基になるデバイス ドライバーからすべての上位レベルのドライバーの IoCompletion ルーチンに返される唯一の情報です。

オペレーティング システムは、呼び出し元から提供される出力バッファーにIO_STATUS_BLOCK値を書き込むサポート ルーチンを実装します。 たとえば、 ZwOpenFile または NtOpenFile を参照してください。 これらのルーチンは、 IO_STATUS_BLOCK 構造体の状態コードと一致しない可能性がある状態コードを返します。 これらのルーチンのいずれかがSTATUS_PENDINGを返す場合、呼び出し元は I/O 操作が完了するのを待ってから、 IO_STATUS_BLOCK 構造体の状態コードを確認して、操作の最終的な状態を確認する必要があります。 ルーチンがSTATUS_PENDING以外の状態コードを返す場合、呼び出し元は、 IO_STATUS_BLOCK 構造体の状態コードではなく、この状態コードに依存する必要があります。

詳細については、「 I/O ステータス ブロック」を参照してください。

要件

   
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h を含む)

こちらもご覧ください

IO_STACK_LOCATION

IRP

IoCompleteRequest

IoSetCompletionRoutine