次の方法で共有


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 つまたは組み合わせを指定できます。

DesiredAccess フラグの 意味
DIRECTORY_QUERY ディレクトリ オブジェクトへのクエリ アクセス
DIRECTORY_TRAVERSE ディレクトリ オブジェクトへの名前参照アクセス
DIRECTORY_CREATE_OBJECT ディレクトリ オブジェクトへの名前作成アクセス
DIRECTORY_CREATE_SUBDIRECTORY ディレクトリ オブジェクトへのサブディレクトリ作成アクセス
DIRECTORY_ALL_ACCESS 上記のすべての権利とSTANDARD_RIGHTS_REQUIRED。
 

これらの要求されたアクセスの種類は、オブジェクトの随意アクセス制御リスト (DACL) と比較して、許可または拒否されるアクセスを決定します。

[in] ObjectAttributes

呼び出し元によって提供されるディレクトリ オブジェクトの指定された属性。 このパラメーターは、InitializeObjectAttributes マクロを呼び出すことによって初期化されます。

戻り値

ZwOpenDirectoryObject は、STATUS_SUCCESSまたは適切なエラー状態を返します。 最も一般的なエラー状態コードは次のとおりです。

リターン コード 形容
STATUS_INSUFFICIENT_RESOURCES
このルーチンに必要な一時バッファーを割り当てませんでした。
STATUS_INVALID_PARAMETER
指定した ObjectAttributes パラメーターが、OBJECT_ATTRIBUTES 構造体への有効なポインターではなく、NULL ポインターであったか、OBJECT_ATTRIBUTES構造体で指定されたフィールドの一部が無効でした。
STATUS_OBJECT_NAME_INVALID
ObjectAttributes パラメーターには、OBJECT_ATTRIBUTES 構造体に ObjectName フィールドが含まれていました。これは、OBJECT_NAME_PATH_SEPARATOR文字の後に空の文字列が見つかったため無効でした。
STATUS_OBJECT_NAME_NOT_FOUND
ObjectAttributes パラメーターには、見つからなかった OBJECT_ATTRIBUTES 構造体に ObjectName フィールドが含まれていました。
STATUS_OBJECT_PATH_NOT_FOUND
ObjectAttributes パラメーターには、オブジェクト パスが見つからない ObjectName フィールドが OBJECT_ATTRIBUTES 構造体に含まれていました。
STATUS_OBJECT_PATH_SYNTAX_BAD
ObjectAttributes パラメーターには、RootDirectory フィールドが含まれていませんでしたが、OBJECT_ATTRIBUTES 構造体の ObjectName フィールドが空の文字列であるか、OBJECT_NAME_PATH_SEPARATOR文字が含まれていませんでした。 これは、オブジェクト パスの構文が正しく示されていません。
 

ZwOpenDirectoryObject ルーチンは、DirectoryHandle パラメーターが無効なポインターである場合に例外をスローします。

備考

ZwOpenDirectoryObject は、既存のディレクトリ オブジェクトを開き、オブジェクトへのハンドルを返します。

ZwOpenDirectoryObject ルーチンは、InitializeObjectAttributes マクロを使用して、開くオブジェクトの OBJECT_ATTRIBUTES 構造体の特定の属性を初期化した後に呼び出されます。

ディレクトリ オブジェクトは、ZwCreateDirectoryObject ルーチンを使用して作成されます。ZwOpenDirectoryObject 呼び出すことによって取得されたハンドルは、最終的に ZwClose呼び出すことによって解放する必要があります。

セキュリティとアクセス制御の詳細については、ドライバー開発者向けの Windows セキュリティ モデルの と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。

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

必要条件

要件 価値
サポートされる最小クライアント Windows XP
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntdef.h、Ntifs.h、Fltkernel.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 を する HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

関連項目

ACCESS_MASK

ACL

InitializeObjectAttributes の

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

ZwClose

ZwCreateDirectoryObject