ZwQuerySecurityObject 関数 (ntifs.h)
ZwQuerySecurityObject ルーチンは、オブジェクトのセキュリティ記述子のコピーを取得します。
構文
NTSYSAPI NTSTATUS ZwQuerySecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[out] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] ULONG Length,
[out] PULONG LengthNeeded
);
パラメーター
[in] Handle
セキュリティ記述子のクエリを実行するオブジェクトのハンドル。 このハンドルには、 SecurityInformation パラメーターの説明に示されているテーブルの [意味] 列に指定されたアクセス権が必要です。
[in] SecurityInformation
次の 1 つ以上の組み合わせとしてクエリを実行する情報を指定するSECURITY_INFORMATION値。
値 | 説明 |
---|---|
OWNER_SECURITY_INFORMATION | オブジェクトの所有者識別子のクエリが実行されています。 READ_CONTROLアクセスが必要です。 |
GROUP_SECURITY_INFORMATION | オブジェクトのプライマリ グループ識別子のクエリが実行されています。 READ_CONTROLアクセスが必要です。 |
SACL_SECURITY_INFORMATION | オブジェクトのシステム ACL (SACL) のクエリが実行されています。 ACCESS_SYSTEM_SECURITYアクセスが必要です。 |
DACL_SECURITY_INFORMATION | オブジェクトの随意アクセス制御リスト (DACL) のクエリが実行されています。 READ_CONTROLアクセスが必要です。 |
[out] SecurityDescriptor
ZwQuerySecurityObject によって指定されたセキュリティ記述子のコピーが格納される呼び出し元によって割り当てられたバッファー。 SECURITY_DESCRIPTOR構造体は自己相対形式で返されます。
[in] Length
SecurityDescriptor が指すバッファーのサイズ (バイト単位)。
[out] LengthNeeded
コピーされたセキュリティ記述子を格納するために必要なバイト数を受け取る呼び出し元によって割り当てられた変数へのポインター。
戻り値
ZwQuerySecurityObject は 、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | ハンドル に必要なアクセス権がありませんでした。 |
STATUS_BUFFER_TOO_SMALL | バッファーがセキュリティ記述子に対して小さすぎます。 どのセキュリティ情報もバッファーにコピーされませんでした。 |
STATUS_INVALID_HANDLE | ハンドル が有効なハンドルではありません。 |
STATUS_OBJECT_TYPE_MISMATCH | ハンドル は、予期される型のハンドルではありません。 |
注釈
セキュリティ記述子は、絶対形式または自己相対形式にすることができます。 自己相対形式では、構造体のすべてのメンバーがメモリ内で連続して配置されます。 絶対形式では、構造体にはメンバーへのポインターのみが含まれます。 詳細については、「絶対および自己相対セキュリティ記述子」を参照してください。
NTFS ファイル システムでは、ファイルのディスクに書き込まれるセキュリティ記述子のサイズに 64K の制限があります。 (FAT ファイル システムでは、ファイルのセキュリティ記述子はサポートされていません)。したがって、64K SecurityDescriptor バッファーは、返される SECURITY_DESCRIPTOR 構造体を保持するのに十分な大きさであることが保証されます。
セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
ミニフィルターでは、 ZwQuerySecurityObject の代わりに FltQuerySecurityObject を呼び出す必要があります。
注意
ZwQuerySecurityObject 関数の呼び出しがユーザー モードで行われる場合は、"ZwQuerySecurityObject" ではなく "NtQuerySecurityObject" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |