Win32 API 日本語リファレンス
ホームSecurity.Authorization.UI › IEffectivePermission

IEffectivePermission

COM
IID3853dc76-9f35-407c-88a1-d19344365fbc継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

オブジェクトに対するセキュリティプリンシパルの実効アクセス許可を判定する手段を提供します。

メソッド 1

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetEffectivePermission(GUID* pguidObjectType, PSID pUserSid, LPWSTR pszServerName, PSECURITY_DESCRIPTOR pSD, OBJECT_TYPE_LIST** ppObjectTypeList, DWORD* pcObjectTypeListLength, DWORD** ppGrantedAccessList, DWORD* pcGrantedAccessListLength)

オブジェクトの種類に対する実効アクセス許可を返します。

pguidObjectTypeGUID*inアクセス許可の照会対象となるオブジェクトの種類の GUID
pUserSidPSIDin実効アクセス許可の判定対象となるセキュリティプリンシパルを表す SID 構造体へのポインター。
pszServerNameLPWSTRinサーバー名を表す、null 終端のワイド文字列へのポインター。
pSDPSECURITY_DESCRIPTORinオブジェクトの セキュリティ記述子 を表す SECURITY_DESCRIPTOR 構造体へのポインター。このセキュリティ記述子はアクセスチェックの実行に使用されます。
ppObjectTypeListOBJECT_TYPE_LIST**inout

オブジェクトのオブジェクトツリーにおけるオブジェクトの種類の配列を表す OBJECT_TYPE_LIST 構造体へのポインターへのポインター。オブジェクトがプロパティアクセスをサポートしない場合は、次の方法で OBJECT_TYPE_LIST の値を指定します。

#include <windows.h>

OBJECT_TYPE_LIST g_DefaultOTL[] = {
 {0, 0, (LPGUID)&GUID_NULL},
};

pcObjectTypeListLengthDWORD*inoutppObjectTypeList が指すオブジェクトの種類の数を受け取る ULONG へのポインター。
ppGrantedAccessListDWORD**inout許可されたアクセスマスクの配列を受け取る ACCESS_MASK へのポインターへのポインター。このパラメーターに割り当てられたメモリの解放には、オペレーティングシステムが LocalFree を使用します。
pcGrantedAccessListLengthDWORD*inoutppGrantedAccessList パラメーターが指す、許可されたアクセスマスクの数を受け取る ULONG 変数へのポインター。

戻り値

関数が成功した場合、戻り値は S_OK です。

関数が失敗した場合、戻り値はエラーを示す HRESULT です。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IEffectivePermission "{3853DC76-9F35-407C-88A1-D19344365FBC}"
#usecom global IEffectivePermission IID_IEffectivePermission "{}"
#comfunc global IEffectivePermission_GetEffectivePermission  3 var,sptr,wstr,sptr,var,var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。