ObGetObjectSecurity 関数 (wdm.h)

ObGetObjectSecurity ルーチンは、特定のオブジェクトのセキュリティ記述子を取得します。

構文

NTSTATUS ObGetObjectSecurity(
  [in]  PVOID                Object,
  [out] PSECURITY_DESCRIPTOR *SecurityDescriptor,
  [out] PBOOLEAN             MemoryAllocated
);

パラメーター

[in] Object

オブジェクトへのポインター。

[out] SecurityDescriptor

呼び出し元が指定した変数へのポインター。このルーチンは、指定されたオブジェクトの SECURITY_DESCRIPTOR を含むバッファーのアドレスに設定します。 指定されたオブジェクトにセキュリティ記述子がない場合、この変数は ObGetObjectSecurity からの戻り時に NULL に設定されます。

[out] MemoryAllocated

セキュリティ記述子を格納するバッファーを割り当てた場合に、このルーチンが TRUE に設定する呼び出し元が指定した変数へのポインター。

戻り値

ObGetObjectSecurity は、要求された情報を返すのに十分なメモリを割り当てられなかった場合に、STATUS_SUCCESSまたはエラー状態 (STATUS_INSUFFICIENT_RESOURCES など) を返します。

注釈

ObGetObjectSecurity を正常に呼び出すと、*SecurityDescriptor でバッファー内の自己相対セキュリティ記述子が返されるか、指定されたオブジェクトにセキュリティ記述子がない場合は 、*SecurityDescriptorNULL が返されます。 たとえば、イベント オブジェクトなどの名前のないオブジェクトには、セキュリティ記述子がありません。

ObGetObjectSecurity がSTATUS_SUCCESSを返す場合、呼び出し元は MemoryAllocated で返された値を保存する必要があります。 このような呼び出し元は、ObReleaseObjectSecurity への逆呼び出しで MemoryAllocated を渡す必要があります。これにより、セキュリティ記述子の参照カウントが元の値に復元され、ObGetObjectSecurity によって割り当てられたバッファー (存在する場合) が解放されます。

ObGetObjectSecurity は、APC が有効になっている IRQL レベル = PASSIVE_LEVELでのみ呼び出す必要があります。そうしないと、デッドロックやクラッシュが発生する可能性があります。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlApcLte(wdm)

こちらもご覧ください

ObReferenceObjectByHandle

ObReleaseObjectSecurity

SECURITY_DESCRIPTOR