RtlpQueryLowBoxId

INT64 __fastcall RtlpQueryLowBoxId(){
  struct _DMA_ADAPTER *v0; 
  _TOKEN_TYPE v1; 
  struct _DMA_ADAPTER *v2; 
  struct _DMA_ADAPTER *v4; 
  PVOID TokenInformation; 
  UINT8 EffectiveOnly; 
  _TOKEN_TYPE TokenType; 
  _SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  PVOID v9; 
  LODWORD(v9) = 0;
  TokenType = 0;
  ImpersonationLevel = SecurityAnonymous;
  EffectiveOnly = 0;
  v0 = (struct _DMA_ADAPTER *)PsReferenceEffectiveToken(
                                (_ETHREAD *)KeGetCurrentThread(),
                                &TokenType,
                                &EffectiveOnly,
                                &ImpersonationLevel,
                                0i64);
  v1 = TokenType;
  v2 = v0;
  if( TokenType == TokenImpersonation && ImpersonationLevel < SecurityImpersonation )
  {
    v4 = (struct _DMA_ADAPTER *)PsReferencePrimaryToken(*((PEPROCESS *)KeGetCurrentThread() + 23));
    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