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

ISecurityInformation

COM
IID965fc360-16ff-11d0-91cb-00aa00bbb723継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

アクセス制御エディターが CreateSecurityPage 関数および EditSecurity 関数の呼び出し元と通信できるようにします。

メソッド 7

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

vtbl 3 HRESULT GetObjectInformation(SI_OBJECT_INFO* pObjectInfo)

GetObjectInformation メソッドは、アクセス制御エディターがそのページを初期化し、ユーザーが利用できる編集オプションを決定するために使用する情報を要求します。

pObjectInfoSI_OBJECT_INFO*inoutSI_OBJECT_INFO 構造体へのポインター。実装では、この構造体を設定して情報をアクセス制御エディターに返す必要があります。

戻り値

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

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

解説(Remarks)

システムは、 SI_OBJECT_INFO 構造体で返した文字列ポインターを解放しません。

vtbl 4 HRESULT GetSecurity(OBJECT_SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR* ppSecurityDescriptor, BOOL fDefault)

GetSecurity メソッドは、セキュリティ記述子が編集されているセキュリティ保護可能なオブジェクトのセキュリティ記述子を要求します。アクセス制御エディターは、オブジェクトの現在のセキュリティ記述子または既定のセキュリティ記述子を取得するためにこのメソッドを呼び出します。

RequestedInformationOBJECT_SECURITY_INFORMATIONin

要求されるセキュリティ記述子の部分を示す SECURITY_INFORMATION ビットフラグのセット。 このパラメーターには、次の値の組み合わせを指定できます。

意味
OWNER_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの所有者の SID を含める必要があります。
GROUP_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトのプライマリグループの SID を含める必要があります。
DACL_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの DACL を含める必要があります。
SACL_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの SACL を含める必要があります。
ppSecurityDescriptorPSECURITY_DESCRIPTOR*inout

実装でオブジェクトのセキュリティ記述子へのポインターを設定する必要がある変数へのポインター。 セキュリティ記述子には、RequestedInformation パラメーターで要求されたコンポーネントを含める必要があります。

システムは、 LocalFree 関数を呼び出して、返されたポインターを解放します。

fDefaultBOOLin

このパラメーターが TRUE の場合、ppSecurityDescriptor はオブジェクトに対するアプリケーション定義の既定のセキュリティ記述子を返す必要があります。 アクセス制御エディターは、この既定のセキュリティ記述子を使用してプロパティページを再初期化します。

アクセス制御エディターは、ユーザーが Default ボタンをクリックした場合にのみ、このパラメーターを TRUE に設定します。 Default ボタンは、 ISecurityInformation::GetObjectInformation メソッドで SI_RESET フラグを設定した場合にのみ表示されます。 既定のセキュリティ記述子が利用できない場合は、SI_RESET フラグを設定しないでください。

このフラグが FALSE の場合、ppSecurityDescriptor はオブジェクトの現在のセキュリティ記述子を返す必要があります。

戻り値

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

エラーが発生した場合は 0 以外のエラーコードを返します。要求されたセキュリティ情報を読み取るアクセス許可がユーザーにない場合は E_ACCESSDENIED を返します。

vtbl 5 HRESULT SetSecurity(OBJECT_SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor)

SetSecurity メソッドは、ユーザーがセキュリティ保護可能なオブジェクトに適用しようとしているセキュリティ情報を含むセキュリティ記述子を提供します。アクセス制御エディターは、ユーザーが [OK] または [適用] をクリックしたときにこのメソッドを呼び出します。

SecurityInformationOBJECT_SECURITY_INFORMATIONin

設定するセキュリティ記述子の部分を示す SECURITY_INFORMATION ビットフラグのセット。 このパラメーターには、次の値の組み合わせを指定できます。

意味
OWNER_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの所有者の SID が含まれます。
GROUP_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトのプライマリグループの SID が含まれます。
DACL_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの DACL が含まれます。
SACL_SECURITY_INFORMATION
セキュリティ記述子には、オブジェクトの SACL が含まれます。
pSecurityDescriptorPSECURITY_DESCRIPTORin新しいセキュリティ情報を含むセキュリティ記述子へのポインター。セキュリティ記述子が 自己相対形式であると想定しないでください。 絶対形式または自己相対形式のいずれかになります。

戻り値

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

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

解説(Remarks)

オブジェクトの完全なセキュリティ記述子を構築するために、アプリケーションは、SecurityInformation パラメーターで定義された新しいセキュリティ記述子の部分を、オブジェクトの既存のセキュリティ記述子にマージする必要があります。

vtbl 6 HRESULT GetAccessRights(GUID* pguidObjectType, SECURITY_INFO_PAGE_FLAGS dwFlags, SI_ACCESS** ppAccess, DWORD* pcAccesses, DWORD* piDefaultAccess)

GetAccessRights メソッドは、セキュリティ保護可能なオブジェクトに対して制御できるアクセス権に関する情報を要求します。

pguidObjectTypeGUID*inアクセス権が要求されるオブジェクトの種類を識別する GUID 構造体へのポインター。このパラメーターが NULL または GUID_NULL へのポインターの場合は、編集中のオブジェクトのアクセス権を返します。それ以外の場合、GUID は ISecurityInformation::GetInheritTypes メソッドによって返される子オブジェクトの種類を識別します。この GUID は、オブジェクト固有の ACE の InheritedObjectType メンバーに対応します。
dwFlagsSECURITY_INFO_PAGE_FLAGSin

初期化されるプロパティページを示すビットフラグのセット。基本的なセキュリティページが初期化される場合、この値は 0 です。それ以外の場合は、次の値の組み合わせになります。

意味
SI_ADVANCED
Advanced Security プロパティシートが初期化されています。
SI_EDIT_AUDITS
Advanced Security プロパティシートに Audit プロパティページが含まれます。
SI_EDIT_PROPERTIES
Advanced Security プロパティシートでは、オブジェクトのプロパティおよびプロパティセットに適用される ACE の編集が可能になります。
ppAccessSI_ACCESS**inoutSI_ACCESS 構造体の配列へのポインター。この配列には、各アクセス権につき 1 つのエントリを含める必要があります。オブジェクト自体に適用されるアクセス権のほか、オブジェクトのプロパティセットまたはプロパティのみに適用されるオブジェクト固有のアクセス権も指定できます。
pcAccessesDWORD*inoutppAccess 配列内のエントリ数を示す ULONG へのポインター。
piDefaultAccessDWORD*inout既定のアクセス権を含む配列エントリの 0 から始まるインデックスを示す ULONG へのポインター。アクセス制御エディターは、このエントリを新しい ACE の初期アクセス権として使用します。

戻り値

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

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

解説(Remarks)

GetAccessRights メソッドは、プロパティページが初期化されるたびに呼び出されます。

アクセス制御エディターは、ppAccess で返されたポインターを解放しません。

vtbl 7 HRESULT MapGeneric(GUID* pguidObjectType, BYTE* pAceFlags, DWORD* pMask)

MapGeneric メソッドは、アクセスマスク内の汎用アクセス権を、対応する標準アクセス権および固有アクセス権にマップするよう要求します。

pguidObjectTypeGUID*inアクセスマスクが適用されるオブジェクトの種類を識別する GUID 構造体へのポインター。このメンバーが NULL または GUID_NULL へのポインターの場合、アクセスマスクはオブジェクト自体に適用されます。
pAceFlagsBYTE*inoutアクセスマスクがマップされる ACE の ACE_HEADER 構造体の AceFlags メンバーへのポインター。
pMaskDWORD*inoutマップする汎用アクセス権を含むアクセスマスクへのポインター。実装では、汎用アクセス権を、指定されたオブジェクトの種類に対応する標準アクセス権および固有アクセス権にマップする必要があります。

戻り値

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

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

解説(Remarks)

MapGeneric の実装では、 MapGenericMask 関数を呼び出して、アクセスマスク内の汎用アクセス権をマップできます。

vtbl 8 HRESULT GetInheritTypes(SI_INHERIT_TYPE** ppInheritTypes, DWORD* pcInheritTypes)

GetInheritTypes メソッドは、ACE が子オブジェクトによってどのように継承されるかに関する情報を要求します。詳細については、「ACE Inheritance」を参照してください。

ppInheritTypesSI_INHERIT_TYPE**inoutSI_INHERIT_TYPE 構造体の配列へのポインターを設定する必要がある変数へのポインター。この配列には、サポートする継承フラグと子オブジェクトの種類の組み合わせごとに 1 つのエントリを含める必要があります。
pcInheritTypesDWORD*inoutppInheritTypes 配列内のエントリ数を示すために設定する必要がある変数へのポインター。

戻り値

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

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

解説(Remarks)

アクセス制御エディターは、ppInheritTypes で返されたポインターを解放しません。

vtbl 9 HRESULT PropertySheetPageCallback(HWND hwnd, PSPCB_MESSAGE uMsg, SI_PAGE_TYPE uPage)

PropertySheetPageCallback メソッドは、アクセス制御エディターのプロパティページが作成または破棄されることを EditSecurity または CreateSecurityPage の呼び出し元に通知します。

hwndHWNDinuMsgPSPCB_SI_INITDIALOG の場合、hwnd はプロパティページのダイアログボックスへのハンドルです。それ以外の場合、hwndNULL です。
uMsgPSPCB_MESSAGEin

受信するメッセージを識別します。このパラメーターは、次の値のいずれかです。

意味
PSPCB_CREATE
プロパティページが作成されていることを示します。
PSPCB_RELEASE
プロパティページが破棄されていることを示します。
PSPCB_SI_INITDIALOG
プロパティページが初期化されていることを示します。
uPageSI_PAGE_TYPEin作成または破棄されるアクセス制御エディターのプロパティページの種類を示す SI_PAGE_TYPE 列挙型の値。

戻り値

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

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISecurityInformation "{965FC360-16FF-11D0-91CB-00AA00BBB723}"
#usecom global ISecurityInformation IID_ISecurityInformation "{}"
#comfunc global ISecurityInformation_GetObjectInformation       3 var
#comfunc global ISecurityInformation_GetSecurity                4 int,sptr,int
#comfunc global ISecurityInformation_SetSecurity                5 int,sptr
#comfunc global ISecurityInformation_GetAccessRights            6 var,int,var,var,var
#comfunc global ISecurityInformation_MapGeneric                 7 var,var,var
#comfunc global ISecurityInformation_GetInheritTypes            8 var,var
#comfunc global ISecurityInformation_PropertySheetPageCallback  9 sptr,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。