次の方法で共有


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マイナー コードを設定します。これにより、特定の操作に対するボリュームの管理特権を必要とせずに操作を実行できます。

この関数は、渡されるすべてのバッファーがカーネル モード バッファーであることを前提としています。

必要条件

要件 価値
ヘッダー ntifs.h

関連項目

ZwFsControlFile