CmpGetVirtualizationID
NTSTATUS __stdcall CmpGetVirtualizationID(UNICODE_STRING *SidString){
__int64 v1;
__int64 v2;
VOID *v4;
int v5;
UINT64 v6;
wchar_t *PoolWithTag;
UNICODE_STRING *v8;
int a2;
struct _UNICODE_STRING UnicodeString;
char Sid[80];
a2 = 0;
v2 = v1;
UnicodeString = 0i64;
memset((INT64)Sid, 0i64);
v4 = (VOID *)CmpEffectiveTokenForSubject((INT64 *)v2, &a2);
if( a2 == 2 && *(int *)(v2 + 8) < 2 )
v4 = *(VOID **)(v2 + 16);
SeQueryUserSidToken(v4, Sid, 0x44ui64, 0i64);
v5 = RtlConvertSidToUnicodeString(&UnicodeString, Sid, 1u);
if( v5 >= 0 )
{
v6 = (unsigned __int16)(UnicodeString.Length + 20);
SidString->MaximumLength = v6;
PoolWithTag = (wchar_t *)ExAllocatePoolWithTag(PagedPool, v6, 0x65564D43ui64);
SidString->Buffer = PoolWithTag;
if( PoolWithTag )
{
RtlCopyUnicodeString(SidString, &UnicodeString, v8);
RtlAppendUnicodeToString(SidString, (PWCHAR)L"_Classes");
}
else
{
v5 = -1073741670;
}
}
RtlFreeAnsiString(&UnicodeString);
return v5;
}Referenced by:
CmRealKCBToVirtualPath
CmpGetVirtualStoreRoot