ZwSetSecurityObject 関数 (ntifs.h)
ZwSetSecurityObject ルーチンは、オブジェクトのセキュリティ状態を設定します。
構文
NTSYSAPI NTSTATUS ZwSetSecurityObject(
[in] HANDLE Handle,
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR SecurityDescriptor
);
パラメーター
[in] Handle
セキュリティ状態が設定されるオブジェクトのハンドル。 このハンドルには、 SecurityInformation パラメーターの説明に示されているテーブルの [意味] 列で指定されたアクセス権が必要です。
[in] SecurityInformation
設定する情報を指定する SECURITY_INFORMATION値。 次の値の 1 つ以上を組み合わせて使用できます。
値 | 説明 |
---|---|
DACL_SECURITY_INFORMATION | オブジェクトの随意アクセス制御リスト (DACL) を設定することを示します。 WRITE_DACアクセスが必要です。 |
GROUP_SECURITY_INFORMATION | オブジェクトのプライマリ グループ識別子を設定することを示します。 WRITE_OWNERアクセスが必要です。 |
OWNER_SECURITY_INFORMATION | オブジェクトの所有者識別子を設定することを示します。 WRITE_OWNERアクセスが必要です。 |
SACL_SECURITY_INFORMATION | オブジェクトのシステム ACL (SACL) を設定することを示します。 ACCESS_SYSTEM_SECURITYアクセスが必要です。 |
[in] SecurityDescriptor
オブジェクトに設定するセキュリティ記述子へのポインター。
戻り値
ZwSetSecurityObject は、STATUS_SUCCESSまたは適切なエラー状態を返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | ハンドル には、必要なアクセス権がありません。 |
STATUS_ACCESS_VIOLATION | SecurityDescriptor は NULL ポインターです。 |
STATUS_INSUFFICIENT_RESOURCES | オブジェクトのセキュリティ記述子をキャプチャできませんでした。 |
STATUS_INVALID_ACL | オブジェクトのセキュリティ記述子に無効な ACL が含まれています。 |
STATUS_INVALID_HANDLE | ハンドル が有効なハンドルではありません。 |
STATUS_INVALID_SECURITY_DESCR | SecurityDescriptor は、有効なセキュリティ記述子を指していません。 |
STATUS_INVALID_SID | オブジェクトのセキュリティ記述子に無効な SID が含まれています。 |
STATUS_OBJECT_TYPE_MISMATCH | ハンドル は、想定される型のハンドルではありません。 |
STATUS_UNKNOWN_REVISION | オブジェクトのセキュリティ記述子のリビジョン レベルが不明であるか、サポートされていません。 |
注釈
セキュリティ記述子は、絶対または自己相対形式にすることができます。 自己相対形式では、構造体のすべてのメンバーがメモリ内に連続して配置されます。 絶対形式では、構造体にはメンバーへのポインターのみが含まれます。 詳細については、Windows SDK ドキュメントの「セキュリティ」セクションの「絶対および Self-Relative セキュリティ記述子」を参照してください。
セキュリティとアクセス制御の詳細については、 ドライバー開発者向けの Windows セキュリティ モデル と、Windows SDK のこれらのトピックに関するドキュメントを参照してください。
ミニフィルターでは、 ZwSetSecurityObject の代わりに FltSetSecurityObject を使用する必要があります。
ZwSetSecurityObject の呼び出し元は、IRQL = PASSIVE_LEVELで実行され、特殊なカーネル APC が有効になっている必要があります。
注意
ZwSetSecurityObject 関数の呼び出しがユーザー モードで行われる場合は、"ZwSetSecurityObject" ではなく "NtSetSecurityObject" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |