ExpWnfValidatePubSubPreconditions
NTSTATUS __stdcall ExpWnfValidatePubSubPreconditions(
UINT64 DesiredAccess,
_WNF_STATE_NAME_REGISTRATION *StateNameRegistration,
UINT64 Length,
_WNF_TYPE_ID *CapturedTypeId,
UINT64 BypassAccessChecks){
unsigned int v6;
int v8;
const _WNF_TYPE_ID *TypeId;
__int64 v11;
v6 = Length;
if( (_DWORD)BypassAccessChecks
|| (v8 = ExpWnfCheckCallerAccess(StateNameRegistration->SecurityDescriptor, (unsigned int)DesiredAccess), v8 >= 0) )
{
TypeId = StateNameRegistration->TypeId;
if( !TypeId )
return StateNameRegistration->MaxStateSize < v6 ? 0xC000000D : 0;
if( !CapturedTypeId )
return -1073741811;
v11 = *(_QWORD *)&TypeId->TypeId[0].Data1 - *(_QWORD *)&CapturedTypeId->TypeId[0].Data1;
if( *(_QWORD *)&TypeId->TypeId[0].Data1 == *(_QWORD *)&CapturedTypeId->TypeId[0].Data1 )
v11 = *(_QWORD *)TypeId->TypeId[0].Data4 - *(_QWORD *)CapturedTypeId->TypeId[0].Data4;
if( v11 )
return -1073741811;
else
return StateNameRegistration->MaxStateSize < v6 ? 0xC000000D : 0;
}
return v8;
}Referenced by:
ExpNtUpdateWnfStateData
NtQueryWnfStateData