VfSuspectDriversAllocateEntry
_VF_SUSPECT_DRIVER_ENTRY *__stdcall VfSuspectDriversAllocateEntry(_UNICODE_STRING *ImageFileName){
unsigned __int16 MaximumLength;
UINT16 v3;
VOID **PoolWithTag;
_VF_SUSPECT_DRIVER_ENTRY *v5;
UINT16 v7;
MaximumLength = ImageFileName->MaximumLength;
v7 = MaximumLength + 2;
if( RtlUShortAdd(MaximumLength, 2u, &v7) == -1073741675 )
v3 = -1;
else
v3 = v7;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v3 + 40i64, 1146316374i64);
v5 = (_VF_SUSPECT_DRIVER_ENTRY *)PoolWithTag;
if( PoolWithTag )
{
*((_DWORD *)PoolWithTag + 4) = 0;
*((_DWORD *)PoolWithTag + 5) = 0;
PoolWithTag[4] = PoolWithTag + 5;
*((_WORD *)PoolWithTag + 12) = ImageFileName->Length;
*((_WORD *)PoolWithTag + 13) = v3;
memset(PoolWithTag + 5, 0i64, v3);
memmove(v5->BaseName.Buffer, ImageFileName->Buffer, ImageFileName->Length);
}
return v5;
}Referenced by:
VfAddVerifierEntry
VfDriverEnableVerifierForAll
VfSuspectDriversLoadCallback
VfSuspectDriversParseRegistryString
VfTriageAddDrivers