次の方法で共有


NtOpenFile 関数 (ntifs.h)

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

構文

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenFile(
  [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 値を指定します。 詳細については、NtCreateFileDesiredAccess パラメーター参照してください。

[in] ObjectAttributes

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

[out] IoStatusBlock

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

[in] ShareAccess

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

[in] OpenOptions

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

戻り値

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

備考

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

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

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

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

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

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

必要条件

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

関連項目

ACCESS_MASK

InitializeObjectAttributes

NtCloseする

NtCreateFileする