ZwDeviceIoControlFile 関数 (ntifs.h)
ZwDeviceIoControlFile ルーチンは、コントロール コードを指定されたデバイス ドライバーに直接送信し、対応するドライバーが指定した操作を実行します。
構文
NTSYSAPI NTSTATUS ZwDeviceIoControlFile(
[in] HANDLE FileHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG IoControlCode,
[in, optional] PVOID InputBuffer,
[in] ULONG InputBufferLength,
[out, optional] PVOID OutputBuffer,
[in] ULONG OutputBufferLength
);
パラメーター
[in] FileHandle
ZwCreateFile または ZwOpenFile によって返されるハンドルは、コントロール情報を指定する必要があるデバイスを表すファイル オブジェクトの ZwOpenFile、または情報を返す必要があります。 呼び出し元が イベント、ApcRoutine、APC コンテキスト (ApcContext)、または完了コンテキスト (ApcContext内) を指定する場合は、非同期 I/O 用にファイル オブジェクトを開く必要があります。 基になる大容量記憶装置に対する I/O の場合、ストレージ デバイス (BLOB) への直接アクセス用にファイル オブジェクトが開かれている必要があります。
[in, optional] Event
呼び出し元によって作成されたイベントのハンドル。 このパラメーターを指定すると、要求された操作が完了し、指定されたイベントが Signaled 状態に設定されるまで、呼び出し元は待機状態になります。 このパラメーターは省略可能であり、NULL
[in, optional] ApcRoutine
要求された操作が完了したときに呼び出される、呼び出し元が指定した省略可能な APC ルーチンのアドレス。 このパラメーターは NULL
[in, optional] ApcContext
呼び出し元によって決定されたコンテキスト領域へのポインター。 このパラメーター値は、呼び出し元が APC を提供する場合は APC コンテキストとして使用され、I/O 完了オブジェクトがファイル オブジェクトに関連付けられている場合は完了コンテキストとして使用されます。 操作が完了すると、APC コンテキストが指定されている場合は APC に渡されるか、I/O マネージャーが関連付けられている I/O 完了オブジェクトに投稿する完了メッセージの一部として完了コンテキストが含まれます。
このパラメーターは省略可能であり、NULL
[out] IoStatusBlock
最終的な完了状態と操作に関する情報を受け取る変数へのポインター。 データを返す呼び出しが成功した場合、OutputBuffer に書き込まれたバイト数が Information メンバーに返されます。
[in] IoControlCode
IOCTL_XXX、基になるデバイス ドライバーによって実行されるデバイス I/O 制御操作を示すコードです。 このパラメーターの値によって、
[in, optional] InputBuffer
ターゲット デバイスに渡されるデバイス固有の情報を含む、呼び出し元によって割り当てられた入力バッファーへのポインター。 IoControlCode
[in] InputBufferLength
InputBufferのバッファーのサイズ (バイト単位)。 InputBuffer
[out, optional] OutputBuffer
ターゲット デバイスから情報が返される呼び出し元によって割り当てられた出力バッファーへのポインター。 IoControlCode
[in] OutputBufferLength
OutputBufferのバッファーのサイズ (バイト単位)。
戻り値
ZwDeviceIoControlFile は、基になるドライバーが要求された操作を正常に実行した場合にSTATUS_SUCCESSを返します。 それ以外の場合、戻り値は、基になるドライバーから伝達されるエラー状態コードである可能性があります。 考えられるエラー状態コードは次のとおりです。
備考
ZwDeviceIoControlFile は、入力データと出力データの一貫性のあるビューをシステムおよびカーネル モード ドライバーに提供しながら、アプリケーションと基になるドライバーに、通信インターフェイスを指定するデバイスに依存する方法を提供します。
システム定義IOCTL_
呼び出し元が非同期 I/O 用にファイルを開いた場合 (XXX FILE_SYNCHRONOUS_ 作成/開くオプションがどちらも設定されていません)、指定されたイベントがある場合は、デバイス制御操作の完了時にシグナル状態に設定されます。 それ以外の場合は、FileHandle で指定
ミニフィルターでは、ZwDeviceIoControlFileではなく、FltDeviceIoControlFile
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000。 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h、Ntddk.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 を |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
関連項目
FltDeviceIoControlFile の
IoBuildDeviceIoControlRequest の
IoBuildSynchronousFsdRequest の
IoCallDriver の