クライアント コンテキストのクエリ
アプリケーションは 、AuthzGetInformationFromContext 関数を呼び出して、既存のクライアント コンテキストに関する情報を照会できます。
AuthzGetInformationFromContext 関数の InfoClass パラメーターは、関数が照会する情報の種類を指定するAUTHZ_CONTEXT_INFORMATION_CLASS列挙から値を受け取ります。
条件付き式で を参照する場合、セキュリティ属性変数はクライアント コンテキストに存在する必要があります。それ以外の場合、それらを参照する条件式の用語は不明として評価されます。 条件式の詳細については、「 条件付き ACE のセキュリティ記述子定義言語」トピックを 参照してください。
例
次の例では、クライアント コンテキストの初期化から例で作成された クライアント コンテキスト に対してクエリを実行し、そのクライアント コンテキストに関連付けられているグループの SID の一覧を取得します。
BOOL GetGroupsFromContext(AUTHZ_CLIENT_CONTEXT_HANDLE hClientContext)
{
DWORD cbSize = 0;
PTOKEN_GROUPS pTokenGroups=NULL;
LPTSTR StringSid = NULL;
BOOL bResult = FALSE;
int i = 0;
//Call the AuthzGetInformationFromContext function with a NULL output buffer to get the required buffer size.
AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, 0, &cbSize, NULL);
//Allocate the buffer for the TOKEN_GROUPS structure.
pTokenGroups = (PTOKEN_GROUPS)malloc(cbSize);
if (!pTokenGroups)
return FALSE;
//Get the SIDs of groups associated with the client context.
if(!AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, cbSize, &cbSize, pTokenGroups))
{
printf_s("AuthzGetInformationFromContext failed with %d\n", GetLastError);
free(pTokenGroups);
return FALSE;
}
//Enumerate and display the group SIDs.
for (i=pTokenGroups->GroupCount-1; i >= 0; --i)
{
//Convert a SID to a string.
if(!ConvertSidToStringSid(
pTokenGroups->Groups[i].Sid,
&StringSid
))
{
LocalFree(StringSid);
return FALSE;
}
wprintf_s(L"%s \n", StringSid);
}
free(pTokenGroups);
return TRUE;
}
関連トピック