SepReferenceTokenByHandle
NTSTATUS __stdcall SepReferenceTokenByHandle(
VOID *TokenHandle,
UINT64 DesiredAccess,
CHAR PreviousMode,
_TOKEN **Token,
UINT8 *UseNewTrust,
VOID **TrustLevelSid){
UINT8 *v7;
VOID **v9;
NTSTATUS v10;
NTSTATUS result;
v7 = UseNewTrust;
v9 = TrustLevelSid;
*UseNewTrust = 0;
*v9 = 0i64;
if( (unsigned __int64)TokenHandle + 6 > 2 )
{
UseNewTrust = 0i64;
v10 = ObReferenceObjectByHandle(
TokenHandle,
DesiredAccess,
(_OBJECT_TYPE *)SeTokenObjectType,
PreviousMode,
(VOID **)&UseNewTrust,
0i64);
*Token = (_TOKEN *)UseNewTrust;
return v10;
}
if( (DesiredAccess & 0xFFFFFFE7) != 0 )
return -1073741790;
result = SepReferenceTokenUsingPseudoHandle(TokenHandle, (PVOID *)Token, v7, v9);
v10 = result;
if( result >= 0 )
return v10;
return result;
}Referenced by:
NtQueryInformationToken
NtQuerySecurityAttributesToken
SeAccessCheckByTypeWithAdminlessChecks
SeSetSessionIdTokenWithLinked