AccessCheckByTypeResultList

セキュリティ記述子が、アクセストークンによって識別されるクライアントに対して指定された一連のアクセス権を許可するかどうかを判定する。(AccessCheckByTypeResultList)

AccessCheckByTypeResultList pSecurityDescriptor, PrincipalSelfSid, ClientToken, DesiredAccess, ObjectTypeList, ObjectTypeListLength, GenericMapping, PrivilegeSet, PrivilegeSetLength, GrantedAccessList, AccessStatusList

pSecurityDescriptor : [int] アクセスチェック対象の SECURITY_DESCRIPTOR 構造体へのポインタ。
PrincipalSelfSid : [int] SID へのポインタ。セキュリティ記述子がプリンシパルを表すオブジェクト(ユーザーオブジェクトなど)に関連付けられている場合、PrincipalSelfSid パラメータにはそのオブジェクトの SID を指定する。アクセス評価時には、この SID は周知 SID PRINCIPAL_SELF (S-1-5-10) を含む任意の ACE 内の SID を論理的に置き換える。周知 SID の詳細は「Well-known SIDs」を参照のこと。
ClientToken : [intptr] アクセスを試みるクライアントを表す偽装トークンへのハンドル。このハンドルは対象のトークンに対する TOKEN_QUERY アクセス権を持っている必要がある。そうでない場合、関数は ERROR_ACCESS_DENIED で失敗する。
DesiredAccess : [int] チェックするアクセス権を指定するアクセスマスク。このマスクは MapGenericMask 関数によって汎用アクセス権を含まないようにマッピング済みでなければならない。
ObjectTypeList : [var] アクセスをチェックするオブジェクト型の階層を識別する OBJECT_TYPE_LIST 構造体の配列へのポインタ。配列の各要素には、オブジェクト型を識別する GUID と、オブジェクト型階層におけるレベルを示す値を指定する。配列内に同じ GUID を持つ要素が 2 つ存在してはならない。
ObjectTypeListLength : [int] ObjectTypeList 配列の要素数。これは GrantedAccessList および AccessStatusList パラメータが指す配列の要素数でもある。
GenericMapping : [var] アクセスチェック対象のオブジェクトに関連付けられた GENERIC_MAPPING 構造体へのポインタ。
PrivilegeSet : [var] アクセス検証の実行に使用された特権を受け取る PRIVILEGE_SET 構造体へのポインタ。特権が一切使用されなかった場合、関数は PrivilegeCount メンバを 0 に設定する。
PrivilegeSetLength : [var] PrivilegeSet パラメータが指すバッファのサイズ(バイト単位)。
GrantedAccessList : [var] アクセスマスクの配列へのポインタ。関数は、オブジェクト型リストの対応する要素に対して許可されたアクセス権を示すように各アクセスマスクを設定する。関数が失敗した場合、アクセスマスクは設定されない。
AccessStatusList : [var] オブジェクト型リストの各要素に対応するステータスコードの配列へのポインタ。関数は、アクセスチェックの成功を示す場合に要素を 0 に、特定のエラーを示す場合に 0 以外の値に設定する。関数が失敗した場合、配列の要素は一切設定されない。

(プラグイン / モジュール : advapi32.dll)

解説

セキュリティ記述子が、アクセストークンによって識別されるクライアントに対して指定された一連のアクセス権を許可するかどうかを判定する。(AccessCheckByTypeResultList)

[戻り値]
関数が成功した場合、戻り値は 0 以外となる。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには
GetLastError を呼び出す。

[備考]
詳細は「How AccessCheck Works」概説を参照のこと。AccessCheckByTypeResultList
関数は、指定されたセキュリティ記述子と指定されたアクセストークンを比較し、オブジェクト型リストの各要素について、アクセスが許可されたか拒否されたかを
AccessStatusList パラメータで返す。ObjectTypeList
配列は必ずしも定義済みオブジェクト全体を表すものではなく、アクセスをチェックしたいオブジェクトのサブセットを表す。たとえば、プロパティセット内の
2 つのプロパティへのアクセスをチェックするには、レベル 0 にオブジェクト自体、レベル 1 にプロパティセット、レベル 2 に 2
つのプロパティという 4 要素のオブジェクト型リストを指定する。AccessCheckByTypeResultList
関数は、オブジェクト自体に適用される ACE と、ObjectTypeList 配列に列挙されたオブジェクト型に対するオブジェクト固有の
ACE を評価する。配列に列挙されていないオブジェクト型に対するオブジェクト固有の ACE
は無視される。したがって、AccessStatusList パラメータの要素 0 で返される結果は、オブジェクト全体ではなく
ObjectTypeList パラメータで定義されたオブジェクトのサブセットに対して許可されたアクセスを示す。ACE
の階層がオブジェクトおよびそのサブオブジェクトへのアクセスをどのように制御するかの詳細は「ACEs to Control Access
to an Object's Properties」を参照のこと。セキュリティ記述子の任意アクセス制御リスト(DACL)が NULL
の場合、関数はオブジェクト型リストのすべての要素に対して要求されたアクセスを許可する。セキュリティ記述子が所有者 SID とグループ
SID を含まない場合、AccessCheckByTypeResultList は
ERROR_INVALID_SECURITY_DESCR で失敗する。

情報

プラグイン / モジュールadvapi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の advapi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_advapi32_gen2.hs