次の方法で共有


ZwFsControlFile 関数 (ntifs.h)

ZwFsControlFile ルーチンは、コントロール コードを指定したファイル システムまたはファイル システム フィルター ドライバーに直接送信し、対応するドライバーが指定したアクションを実行します。

構文

NTSYSAPI NTSTATUS ZwFsControlFile(
  [in]            HANDLE           FileHandle,
  [in, optional]  HANDLE           Event,
  [in, optional]  PIO_APC_ROUTINE  ApcRoutine,
  [in, optional]  PVOID            ApcContext,
  [out]           PIO_STATUS_BLOCK IoStatusBlock,
  [in]            ULONG            FsControlCode,
  [in, optional]  PVOID            InputBuffer,
  [in]            ULONG            InputBufferLength,
  [out, optional] PVOID            OutputBuffer,
  [in]            ULONG            OutputBufferLength
);

パラメーター

[in] FileHandle

ZwCreateFile 返されるハンドル、または指定したアクションを実行するファイルまたはディレクトリを表すファイル オブジェクトの ZwOpenFile を します。 呼び出し元が イベントApcRoutine、APC コンテキスト (ApcContext)、または完了コンテキスト (ApcContext内) を指定する場合は、非同期 I/O 用にファイル オブジェクトを開く必要があります。

[in, optional] Event

呼び出し元によって作成されたイベントのハンドル。 このパラメーターを指定すると、要求された操作が完了し、指定されたイベントが Signaled 状態に設定されるまで、呼び出し元は待機状態になります。 このパラメーターは省略可能であり、NULLできます。 呼び出し元が FileHandle が Signaled 状態に設定されるのを待機する場合は、null する必要があります。

[in, optional] ApcRoutine

要求された操作が完了したときに呼び出される呼び出し元が指定した APC ルーチンのアドレス。 このパラメーターは省略可能であり、NULLできます。 ファイル オブジェクト 関連付けられた I/O 完了オブジェクトがある場合は、NULL にする必要があります。

[in, optional] ApcContext

呼び出し元によって決定されたコンテキスト領域へのポインター。 このパラメーター値は、呼び出し元が APC を提供する場合は APC コンテキストとして使用され、I/O 完了オブジェクトがファイル オブジェクトに関連付けられている場合は完了コンテキストとして使用されます。 操作が完了すると、APC コンテキストが指定されている場合は APC に渡されるか、I/O マネージャーが関連付けられている I/O 完了オブジェクトに投稿する完了メッセージの一部として完了コンテキストが含まれます。

このパラメーターは省略可能であり、NULLできます。 ApcRoutine が NULL であり、ファイル オブジェクトに関連付けられている I/O 完了オブジェクトがない場合は、NULL である必要があります。

[out] IoStatusBlock

最終的な完了状態と操作に関する情報を受け取るIO_STATUS_BLOCK構造体へのポインター。 データを返す呼び出しが成功した場合、OutputBuffer に書き込まれたバイト数は、この構造体の Information メンバーに返されます。

[in] FsControlCode

FSCTL_XXX、実行するファイル システム制御操作を示すコードです。このパラメーターの値は、InputBuffer と OutputBufferの形式と必要な長さ、および必要な次のパラメーター ペアを決定します。 システム定義FSCTL_XXX コードの詳細については、Microsoft Windows SDK ドキュメントの DeviceIoControl のリファレンス エントリの「解説」セクション 参照してください。

[in, optional] InputBuffer

ターゲット ドライバーに渡されるデバイス固有の情報を含む、呼び出し元によって割り当てられた入力バッファーへのポインター。 FsControlCode が入力データを必要としない操作を指定する場合、このポインターは省略可能であり、NULLできます。

[in] InputBufferLength

InputBufferのバッファーのサイズ (バイト単位)。 InputBuffer NULL場合、この値は無視されます。

[out, optional] OutputBuffer

ターゲット ドライバーから情報が返される呼び出し元によって割り当てられた出力バッファーへのポインター。 FsControlCode が出力データを生成しない操作を指定する場合、このポインターは省略可能であり、NULLできます。

[in] OutputBufferLength

OutputBufferのバッファーのサイズ (バイト単位)。 OutputBuffer が NULL場合、この値は無視されます。

戻り値

ZwFsControlFile は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。

備考

ZwFsControlFile は、入力データと出力データの一貫性のあるビューをシステムおよびカーネル モード ドライバーに提供しながら、通信インターフェイスを指定するドライバーに依存するメソッドをアプリケーションと基になるドライバーに提供します。

呼び出し元が非同期 I/O 用にファイルを開いた場合 (XXX FILE_SYNCHRONOUS_ 作成/開くオプションがどちらも設定されていません)、指定されたイベントがある場合は、デバイス制御操作の完了時にシグナル状態に設定されます。 それ以外の場合は、FileHandle で指定 ファイル オブジェクトがシグナル状態に設定されます。 ApcRoutine が指定された場合は、ApcContext を使用して呼び出され、IoStatusBlock ポインターが されます。

現在、カーネル モード ドライバーについては、次の FSCTL コードが記載されています。

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FSCTL_SET_REPARSE_POINT

システム定義FSCTL_XXX コードの詳細については、Microsoft Windows SDK ドキュメントの DeviceIoControl のリファレンス エントリの「解説」セクション 参照してください。

システム定義IOCTL_XXX コード、およびドライバー固有のIOCTL_XXX またはFSCTL_XXX 値の定義の詳細については、Windows SDK ドキュメントの「カーネル モード アーキテクチャ ガイド」 および デバイス入出力制御コード の I/O 制御コード の使用に関する を参照してください。

ミニフィルターでは、ZwFsControlFileではなく、FltFsControlFile 使用する必要があります。

ZwFsControlFile の呼び出し元は、IRQL = PASSIVE_LEVEL で実行され、特殊なカーネル API が有効になっている 必要があります。

メモ ZwFsControlFile 関数の呼び出しがユーザー モードで発生する場合は、"ZwFsControlFile" ではなく"NtFsControlFile" という名前を使用する必要があります。
 
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの **Nt*Xxx*** バージョンと **Zw*Xxx*** バージョンは、入力パラメーターを処理して解釈する方法で動作が異なる場合があります。 ルーチンの **Nt*Xxx*** バージョンと **Zw*Xxx*** バージョン間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用](/windows-hardware/drivers/kernel/using-nt-and-zw-versions-of-the-native-system-services-routines)を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000。
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 を する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

FltFsControlFile の

IRP_MJ_FILE_SYSTEM_CONTROL

IoGetFunctionCodeFromCtlCode の

IoIsOperationSynchronous の

I/O 制御コードを使用した

ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンを使用した

ZwClose

ZwCreateFile

ZwDeviceIoControlFile

ZwOpenFile