RtlpQueryLowBoxId
UINT64 __stdcall RtlpQueryLowBoxId(){
_ADAPTER_OBJECT *v0;
_TOKEN_TYPE v1;
_ADAPTER_OBJECT *v2;
_ADAPTER_OBJECT *v4;
VOID *TokenInformation;
UINT8 EffectiveOnly;
_TOKEN_TYPE TokenType;
_SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
VOID *v9;
LODWORD(v9) = 0;
TokenType = 0;
ImpersonationLevel = SecurityAnonymous;
EffectiveOnly = 0;
v0 = (_ADAPTER_OBJECT *)PsReferenceEffectiveToken(
(_ETHREAD *)KeGetCurrentThread(),
&TokenType,
&EffectiveOnly,
&ImpersonationLevel,
0i64);
v1 = TokenType;
v2 = v0;
if( TokenType == TokenImpersonation && ImpersonationLevel < SecurityImpersonation )
{
v4 = (_ADAPTER_OBJECT *)PsReferencePrimaryToken(KeGetCurrentThread()->ApcState.Process);
SeQueryInformationToken(v4, TokenIsAppContainer, &v9);
if( (_DWORD)v9 == 1 )
{
if( v2 )
HalPutDmaAdapter(v2);
v2 = v4;
v1 = TokenPrimary;
}
else
{
HalPutDmaAdapter(v4);
v1 = TokenType;
}
}
LODWORD(TokenInformation) = 0;
SeQueryInformationToken(v2, TokenAppContainerNumber, &TokenInformation);
if( v1 == TokenPrimary || v2 )
HalPutDmaAdapter(v2);
return(unsigned int)TokenInformation;
}Referenced by:
RtlpAllocateAtomTableEntry
RtlpLookupLowBox
RtlpLookupOrCreateLowBox