FsRtlKernelFsControlFile 関数 (ntifs.h)
FsRtlKernelFsControlFile 関数は、明示的なFSCTL_XXX IRP をビルドし、スタックに送信し、同期的に完了するまで待機し、結果を返します。 この関数を使用すると、呼び出し元は、ハンドルではなく FileObject によってこのアクションを完了できます。
構文
NTSTATUS FsRtlKernelFsControlFile(
[in] PFILE_OBJECT FileObject,
[in] ULONG FsControlCode,
[in] PVOID InputBuffer,
[in] ULONG InputBufferLength,
[out] PVOID OutputBuffer,
[out] ULONG OutputBufferLength,
[out] PULONG RetOutputBufferSize
);
パラメーター
[in] FileObject
操作を送信する FILE_OBJECT へのポインター。
[in] FsControlCode
実行するファイル システム制御操作を示すコードをFSCTL_XXXします。このパラメーターの値は、 InputBuffer と OutputBuffer の形式と必要な長さ、および次のパラメーター ペアのうちどれが必要かを決定します。 システム定義のFSCTL_XXX コードの詳細については、Microsoft Windows SDKドキュメントの DeviceIoControl のリファレンス エントリの「解説」セクションを参照してください。
[in] InputBuffer
ターゲット ドライバーに渡されるデバイス固有の情報を含む、呼び出し元によって割り当てられた入力バッファーへのポインター。 FsControlCode で入力データを必要としない操作が指定されている場合、このポインターは省略可能であり、NULL にすることができます。 このバッファーは戻り時に変更される可能性があり、呼び出し元はこれに適応する必要があることに注意してください。 これは、このバッファーを使用して出力データを保持する可能性があるためです。
[in] InputBufferLength
InputBuffer の長さ (バイト単位)。
[out] OutputBuffer
ターゲット ドライバーから情報が返される、呼び出し元によって割り当てられた出力バッファーへのポインター。 FsControlCode で出力データを生成しない操作が指定されている場合、このポインターは省略可能であり、NULL にすることができます。
[out] OutputBufferLength
OutputBuffer の長さ (バイト単位)。
[out] RetOutputBufferSize
出力バッファーに実際に書き込まれた (返される) バイト数を受け取ります。
戻り値
FsRtlKernelFsControlFile は 、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。
値 | 意味 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | プール割り当てエラーが発生しました。 |
STATUS_INVALID_PARAMETER | 無効なパラメーターが指定されました (無効な FileObject など)。 |
注釈
FsRtlKernelFsControlFile は、IRP_MN_KERNEL_CALLマイナー コードを設定します。これにより、特定の操作に対するボリュームの管理特権を必要とせずに操作を実行できます。
この関数は、渡されるすべてのバッファーがカーネル モード バッファーであることを前提としています。
要件
要件 | 値 |
---|---|
Header | ntifs.h |