次の方法で共有


ZwOpenFile 関数 (wdm.h)

ZwOpenFile ルーチンは、既存のファイル、ディレクトリ、デバイス、またはボリュームを開きます。

構文

NTSYSAPI NTSTATUS ZwOpenFile(
  [out] PHANDLE            FileHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [out] PIO_STATUS_BLOCK   IoStatusBlock,
  [in]  ULONG              ShareAccess,
  [in]  ULONG              OpenOptions
);

パラメーター

[out] FileHandle

ファイルへのハンドルを受け取る HANDLE 変数へのポインター。

[in] DesiredAccess

オブジェクトへの要求されたアクセスを決定する ACCESS_MASK 値を指定します。 詳細については、ZwCreateFileDesiredAccess パラメーターを参照してください。

[in] ObjectAttributes

オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 InitializeObjectAttributes を使用して、この構造体を初期化します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。

[out] IoStatusBlock

最終的 な完了 状態と要求された操作に関する情報を受け取るIO_STATUS_BLOCK構造体へのポインター。

[in] ShareAccess

ファイルの共有アクセスの種類を指定します。 詳細については、ZwCreateFileShareAccess パラメーターを参照してください。

[in] OpenOptions

ファイルを開くときに適用するオプションを指定します。 詳細については、ZwCreateFileCreateOptions パラメーターを参照してください。

戻り値

ZwOpenFile は 、STATUS_SUCCESSまたは適切な NTSTATUS エラー コードを返します。 後者の場合、呼び出し元は IoStatusBlock パラメーターを確認することで、エラーの原因に関する詳細情報を見つけることができます。

注釈

ZwOpenFile は、呼び出し元がファイルのデータ、またはファイル オブジェクトの状態と属性を操作するために使用できるハンドルを提供します。 ZwOpenFile には、 ZwCreateFile によって提供される機能のサブセットが用意されています。 詳細については、「 ドライバーでのファイルの使用」を参照してください。

FileHandle が指すハンドルが使用されなくなったら、ドライバーは ZwClose を呼び出して閉じる必要があります。

呼び出し元がシステム スレッド コンテキストで実行されていない場合は、作成するハンドルがプライベート ハンドルであることを確認する必要があります。 それ以外の場合は、ドライバーが実行されているコンテキスト内のプロセスによってハンドルにアクセスできます。 詳細については、「 オブジェクト ハンドル」を参照してください。

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

この関数の呼び出しがユーザー モードで発生する場合は、"ZwOpenFile" ではなく"NtOpenFile" という名前を使用する必要があります。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL (「解説」セクションを参照)
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

ACCESS_MASK

InitializeObjectAttributes

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwCreateFile