ZwOpenDirectoryObject 関数 (ntifs.h)
ZwOpenDirectoryObject ルーチンは、既存のディレクトリ オブジェクトを開きます。
構文
NTSYSAPI NTSTATUS ZwOpenDirectoryObject(
[out] PHANDLE DirectoryHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes
);
パラメーター
[out] DirectoryHandle
新しく開いたディレクトリ オブジェクトのハンドル。
[in] DesiredAccess
このディレクトリ オブジェクトに対して要求されるアクセスの種類を指定するACCESS_MASK構造体。 呼び出し元は、次の 1 つまたは 1 つの組み合わせを指定できます。
DesiredAccess フラグ | 意味 |
---|---|
DIRECTORY_QUERY | ディレクトリ オブジェクトへのクエリ アクセス |
DIRECTORY_TRAVERSE | ディレクトリ オブジェクトへの名前参照アクセス |
DIRECTORY_CREATE_OBJECT | ディレクトリ オブジェクトへの名前作成アクセス |
DIRECTORY_CREATE_SUBDIRECTORY | ディレクトリ オブジェクトへのサブディレクトリ作成アクセス |
DIRECTORY_ALL_ACCESS | 上記のすべての権限とSTANDARD_RIGHTS_REQUIRED。 |
これらの要求されたアクセスの種類は、オブジェクトの随意アクセス制御リスト (DACL) と比較して、許可または拒否されるアクセスを決定します。
[in] ObjectAttributes
呼び出し元によって提供されるディレクトリ オブジェクトに指定された属性。 このパラメーターは、 InitializeObjectAttributes マクロを呼び出すことによって初期化されます。
戻り値
ZwOpenDirectoryObject は 、STATUS_SUCCESSまたは適切なエラー状態を返します。 最も一般的なエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
|
このルーチンに必要な一時バッファーを割り当てませんでした。 |
|
指定された ObjectAttributes パラメーターが NULL ポインターであり、 OBJECT_ATTRIBUTES 構造体への有効なポインターではないか、OBJECT_ATTRIBUTES構造体で指定されたフィールドの一部が無効でした。 |
|
ObjectAttributes パラメーターには、OBJECT_NAME_PATH_SEPARATOR文字の後に空の文字列が見つかったため、無効だった ObjectName フィールドがOBJECT_ATTRIBUTES構造体に含まれていました。 |
|
ObjectAttributes パラメーターには、見つからなかった objectName フィールドがOBJECT_ATTRIBUTES構造体に含まれていました。 |
|
ObjectAttributes パラメーターには、見つからなかったオブジェクト パスを持つOBJECT_ATTRIBUTES構造体に ObjectName フィールドが含まれていました。 |
|
ObjectAttributes パラメーターに RootDirectory フィールドが含まれていませんでしたが、OBJECT_ATTRIBUTES構造体の ObjectName フィールドが空の文字列であるか、OBJECT_NAME_PATH_SEPARATOR文字が含まれていませんでした。 これは、オブジェクト パスの正しくない構文を示します。 |
DirectoryHandle パラメーターが無効なポインターである場合、ZwOpenDirectoryObject ルーチンは例外をスローします。
注釈
ZwOpenDirectoryObject は、既存のディレクトリ オブジェクトを開き、オブジェクトへのハンドルを返します。
ZwOpenDirectoryObject ルーチンは、InitializeObjectAttributes マクロを使用して、開くオブジェクトのOBJECT_ATTRIBUTES構造体の特定の属性を初期化した後に呼び出されます。
ディレクトリ オブジェクトは、ZwCreateDirectoryObject ルーチンを使用して作成されます。 ZwOpenDirectoryObject を呼び出して取得したハンドルは、最終的に ZwClose を呼び出して解放する必要があります。
セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntdef.h、Ntifs.h、Fltkernel.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |