Win32 API 日本語リファレンス
ホームSystem.ClrHosting › IHostSecurityManager

IHostSecurityManager

COM
IID75ad2468-a349-4d02-a764-76a68aee0c4f継承元IUnknown自前メソッド開始 vtbl3

メソッド 6

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

vtbl 3 HRESULT ImpersonateLoggedOnUser(HANDLE hToken)
hTokenHANDLEin偽装(impersonate)するログオン済みユーザーを表すアクセストークンのハンドルである。
vtbl 4 HRESULT RevertToSelf()
vtbl 5 HRESULT OpenThreadToken(DWORD dwDesiredAccess, BOOL bOpenAsSelf, HANDLE* phThreadToken)
dwDesiredAccessDWORDinアクセストークンに対して要求するアクセス権を指定する。
bOpenAsSelfBOOLinアクセスチェックをスレッドの呼び出し元コンテキストではなくプロセス自身のコンテキストで行うかどうかを指定する。
phThreadTokenHANDLE*out開かれたスレッドトークンのハンドルを受け取るポインタである。
vtbl 6 HRESULT SetThreadToken(HANDLE hToken)
hTokenHANDLEin現在のスレッドに設定する偽装トークンのハンドルである。NULL を指定すると偽装を解除する。
vtbl 7 HRESULT GetSecurityContext(EContextType eContextType, IHostSecurityContext** ppSecurityContext)
eContextTypeEContextTypein取得するセキュリティコンテキストの種類を表す EContextType 値を指定する。
ppSecurityContextIHostSecurityContext**out取得したセキュリティコンテキストを表す IHostSecurityContext インターフェイスへのポインタを受け取る。
vtbl 8 HRESULT SetSecurityContext(EContextType eContextType, IHostSecurityContext* pSecurityContext)
eContextTypeEContextTypein設定するセキュリティコンテキストの種類を表す EContextType 値を指定する。
pSecurityContextIHostSecurityContext*in設定するセキュリティコンテキストを表す IHostSecurityContext インターフェイスへのポインタである。

HSP用 COM定義

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

#define global IID_IHostSecurityManager "{75AD2468-A349-4D02-A764-76A68AEE0C4F}"
#usecom global IHostSecurityManager IID_IHostSecurityManager "{}"
#comfunc global IHostSecurityManager_ImpersonateLoggedOnUser  3 sptr
#comfunc global IHostSecurityManager_RevertToSelf             4
#comfunc global IHostSecurityManager_OpenThreadToken          5 int,int,sptr
#comfunc global IHostSecurityManager_SetThreadToken           6 sptr
#comfunc global IHostSecurityManager_GetSecurityContext       7 int,sptr
#comfunc global IHostSecurityManager_SetSecurityContext       8 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。