次の方法で共有


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します。このパラメーターの値は、 InputBufferOutputBuffer の形式と必要な長さ、および次のパラメーター ペアのうちどれが必要かを決定します。 システム定義の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

こちらもご覧ください

ZwFsControlFile