Interrogation d’un contexte client
Les applications peuvent appeler la fonction AuthzGetInformationFromContext pour interroger des informations sur un contexte client existant.
Le paramètre InfoClass de la fonction AuthzGetInformationFromContext prend une valeur de l’énumération AUTHZ_CONTEXT_INFORMATION_CLASS qui spécifie le type d’informations que la fonction interroge.
Les variables d’attribut de sécurité doivent être présentes dans le contexte client si elles sont mentionnées dans une expression conditionnelle ; sinon, le terme d’expression conditionnelle qui les référence sera évalué comme inconnu. Pour plus d’informations sur les expressions conditionnelles, consultez la rubrique Security Descriptor Definition Language for Conditional ACEs .
Exemple
L’exemple suivant interroge le contexte client créé dans l’exemple d’Initialisation d’un contexte client pour récupérer la liste des SID de groupes associés à ce contexte client.
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;
}
Rubriques connexes