PsReferencePrimaryToken
VOID *__stdcall PsReferencePrimaryToken(_EPROCESS *Process){
_EX_FAST_REF *p_Token;
VOID *v3;
_ETHREAD *CurrentThread;
_EX_PUSH_LOCK *p_ProcessLock;
p_Token = &Process->Token;
v3 = ObFastReferenceObject(&Process->Token);
if( !v3 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
p_ProcessLock = &Process->ProcessLock;
ExAcquirePushLockSharedEx(p_ProcessLock, 0i64);
v3 = ObFastReferenceObjectLocked(p_Token);
if( _InterlockedCompareExchange64(&p_ProcessLock->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(p_ProcessLock);
KeAbPostRelease(p_ProcessLock);
KeLeaveCriticalRegionThread(&CurrentThread->Tcb);
}
return v3;
}Referenced by:
AlpcpCheckConnectionSecurity
AlpcpPortQueryConnectedSidInfo
CmpCreateRegistryProcessToken
EtwQueryProcessTelemetryInfo
EtwTraceAppStateChange
EtwpAcquireTokenAccessInformation
EtwpApplyPackageIdFilter
EtwpBuildProcessEvent
EtwpGetPsmKeyExtendedHeaderItem
EtwpGetSidExtendedHeaderItem
EtwpPsProvProcessEnumCallback
EtwpPsProvTraceProcess
ExpGetProcessInformation
ExpWnfQueryCurrentUserSID
MiCreateSectionCommon
MiFindProcessImageHotPatchRecord
MiInitializeVsmEnclave
NtImpersonateAnonymousToken
NtLoadEnclaveData
NtOpenThreadTokenEx
NtSetInformationProcess
ObSetCurrentProcessDeviceMap
PfSnCheckModernApp
PopEtGetProcessSidAndPackageIdentity
PsCreateMinimalProcess
PsIsProcessAppContainer
PsQueryProcessAttributes
PspDisablePrimaryTokenExchange
PspExitThread
PspGetNoChildProcessRestrictedPolicy
PspGetRedirectionTrustPolicy
PspInitializeProcessSecurity
PspReferenceTokenForNewProcess
PspSetNoChildProcessRestrictedPolicy
PspSetQuotaLimits
PspSetRedirectionTrustPolicy
RtlpQueryLowBoxId
SeAuditProcessCreation
SeAuditProcessExit
SeIsTokenAssignableToProcess
SepCreateClientSecurityEx
SepFilterToken
SepIsChildTokenByPointer
SepIsSiblingTokenByPointer
SepReferenceTokenUsingPseudoHandle