ExpWnfCheckCrossScopeAccess
NTSTATUS __stdcall ExpWnfCheckCrossScopeAccess(_WNF_STATE_NAME_STRUCT StateName){
unsigned __int64 v1;
NTSTATUS result;
VOID **v3;
int v4;
VOID **StateNameRegistration;
StateNameRegistration = 0i64;
v1 = ((unsigned __int64)StateName._bf_0 >> 6) & 0xF;
if( (_DWORD)v1 == 3 )
return 0;
if( (_DWORD)v1 != 1 || (((unsigned __int64)StateName._bf_0 >> 4) & 3) != 0 )
{
LABEL_9:
if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeTcbPrivilege, KeGetCurrentThread()->PreviousMode) )
return -1073741727;
return 0;
}
result = ExpWnfLookupPermanentName(StateName, &StateNameRegistration);
if( result < 0 )
return result;
v3 = StateNameRegistration;
v4 = ExpWnfCheckCallerAccess(StateNameRegistration[2], 0x10ui64);
ExFreePoolWithTag(v3, 0x20666E57u);
if( v4 < 0 )
{
if( v4 != -1073741790 )
return v4;
goto LABEL_9;
}
return 0;
}Referenced by:
ExpNtDeleteWnfStateData
ExpNtUpdateWnfStateData
NtQueryWnfStateData
NtQueryWnfStateNameInformation