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

ISecurityInformation2

COM
IIDc3ccfdb4-6f88-11d2-a3ce-00c04fb1782a継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

アクセス制御エディターが、ISecurityInformation インターフェイスでは提供されない情報をクライアントから取得できるようにします。

メソッド 2

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

vtbl 3 BOOL IsDaclCanonical(ACL* pDacl)

IsDaclCanonical メソッドは、指定した DACL 構造体に含まれる ACE が、クライアントが実装する DACL の並び順の定義に従って並んでいるかどうかを判定します。

pDaclACL*in任意 (discretionary) の ACL 構造体 ( InitializeAcl によって初期化されたもの) へのポインター。

戻り値

指定した DACL 構造体に含まれる ACE が、クライアントが実装する DACL の並び順の定義に従って並んでいる場合は TRUE を返します。

ACE が正しく並んでいない場合は FALSE を返します。

解説(Remarks)

このメソッドの戻り値が FALSE の場合、アクセス制御エディターは、DACL の並び順が正しくない旨を示すメッセージ ボックスを表示します。このメソッドが提供されておらず、かつエディターがこの情報を必要とする場合、エディターは Order of ACEs in a DACL で定義された正規の並び順を確認します。

vtbl 4 HRESULT LookupSids(DWORD cSids, PSID* rgpSids, IDataObject** ppdo)

LookupSids メソッドは、指定した SID のリストの各要素に対応する共通名 (common name) を返します。

cSidsDWORDinrgpSids が指す SID 構造体へのポインターの数。
rgpSidsPSID*inSID 構造体へのポインターの配列へのポインター。
ppdoIDataObject**outSID の共通名を格納した、返されるデータ転送オブジェクトへのポインターへのポインター。省略可能ですが、このパラメーターは rgpSids パラメーターに含まれる SID のユーザー プリンシパル名 (UPN) も返します。データ転送オブジェクトは SID_INFO 構造体です。

戻り値

成功した場合は S_OK を返します。

エラーが発生した場合は 0 以外のエラー コードを返します。

解説(Remarks)

アクセス制御エディターに、指定した SID に対応する共通名を判定させる場合、LookupSids の実装は E_NOTIMPL を返すことができます。ただし、アクセス制御エディターが S_OK 以外の戻り値を受け取った場合は、エディターがこの情報を判定します。

クライアントは、次の形式を使用してデータ オブジェクトを通じて共通名を返す必要があります。

#include <windows.h>

// HGLOBAL containing SID_INFO_LIST returned by
// ISecurityInformation2::LookupSids
#define CFSTR_ACLUI_SID_INFO_LIST   TEXT("CFSTR_ACLUI_SID_INFO_LIST")

// Data structures corresponding to CFSTR_ACLUI_SID_INFO_LIST
typedef struct _SID_INFO
{
    PSID    pSid;
    PWSTR   pwzCommonName;
    PWSTR   pwzClass;       // Used for selecting icon, for example,
                            // "User" or "Group"
    PWSTR   pwzUPN;         // Optional pointer to a user principal
                            // name
} SID_INFO, *PSID_INFO;

typedef struct _SID_INFO_LIST
{
    ULONG       cItems;
    SID_INFO    aSidInfo[ANYSIZE_ARRAY];
} SID_INFO_LIST, *PSID_INFO_LIST;
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISecurityInformation2 "{C3CCFDB4-6F88-11D2-A3CE-00C04FB1782A}"
#usecom global ISecurityInformation2 IID_ISecurityInformation2 "{}"
#comfunc global ISecurityInformation2_IsDaclCanonical  3 var
#comfunc global ISecurityInformation2_LookupSids       4 int,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。