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 値を指定します。 詳細については、NtCreateFileの DesiredAccess パラメーター参照してください。
[in] ObjectAttributes
オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 InitializeObjectAttributes使用して、この構造体を初期化します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、InitializeObjectAttributes 呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。
[out] IoStatusBlock
最終的な完了状態と要求された操作に関する情報を受け取る IO_STATUS_BLOCK 構造体へのポインター。
[in] ShareAccess
ファイルの共有アクセスの種類を指定します。 詳細については、NtCreateFileの ShareAccess パラメーター参照してください。
[in] OpenOptions
ファイルを開くときに適用するオプションを指定します。 詳細については、NtCreateFileの CreateOptions パラメーター参照してください。
戻り値
NtOpenFile は、STATUS_SUCCESSまたは適切な NTSTATUS エラー コードを返します。 後者の場合、呼び出し元は IoStatusBlock パラメーター チェックすることで、エラーの原因に関する詳細情報を見つけることができます。
備考
NtOpenFile は、呼び出し元がファイルのデータ、またはファイル オブジェクトの状態と属性を操作するために使用できるハンドルを提供します。 NtOpenFile は、NtCreateFileによって提供される機能のサブセットを提供します。 詳細については、「ドライバー でファイルを使用する」を参照してください。
FileHandle が指すハンドルが使用されなくなったら、ドライバーは NtClose呼び出して閉じる必要があります。
呼び出し元がシステム スレッド コンテキストで実行されていない場合は、作成するハンドルがプライベート ハンドルであることを確認する必要があります。 それ以外の場合は、ドライバーが実行されているコンテキスト内のプロセスによってハンドルにアクセスできます。 詳細については、「オブジェクト ハンドル」を参照してください。
NtOpenFile の呼び出し元は、IRQL = PASSIVE_LEVEL で実行され、特殊なカーネル API が有効になっている 必要があります。
この関数の呼び出しがユーザー モードで発生する場合は、"ZwOpenFile" の代わりに"NtOpenFile" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ntifs.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 を する | HwStorPortProhibitedDIs、PowerIrpDDis |
関連項目
InitializeObjectAttributesの
NtCloseをする
NtCreateFileをする