ExpWnfCheckCrossScopeAccess
INT64 __fastcall ExpWnfCheckCrossScopeAccess(_WNF_STATE_NAME_STRUCT StateName){
unsigned __int64 v1;
INT64 result;
PVOID v3;
NTSTATUS v4;
PVOID P;
P = 0i64;
v1 = (*(unsigned __int64 *)&StateName >> 6) & 0xF;
if( (_DWORD)v1 == 3 )
return 0i64;
if( (_DWORD)v1 != 1 || ((*(unsigned __int64 *)&StateName >> 4) & 3) != 0 )
{
LABEL_9:
if( !SeSinglePrivilegeCheck(*(_QWORD *)&SeTcbPrivilege, *((_BYTE *)KeGetCurrentThread() + 562)) )
return 3221225569i64;
return 0i64;
}
result = ExpWnfLookupPermanentName(StateName, (_WNF_STATE_NAME_REGISTRATION **)&P);
if( (int)result < 0 )
return result;
v3 = P;
v4 = ExpWnfCheckCallerAccess(*((PVOID *)P + 2), 0x10ui64);
ExFreePoolWithTag(v3, 0x20666E57u);
if( v4 < 0 )
{
if( v4 != -1073741790 )
return(unsigned int)v4;
goto LABEL_9;
}
return 0i64;
}Referenced by:
ExpNtDeleteWnfStateData
ExpNtUpdateWnfStateData
NtQueryWnfStateData
NtQueryWnfStateNameInformation