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、または XXX値の情報、警告、またはエラー STATUS_完了状態です。 詳細については、「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 ステータス ブロックの」を参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Wudfwdm.h を含む) |
関連項目
IoCompleteRequest の