클라이언트 컨텍스트 쿼리
애플리케이션은 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;
}
관련 항목