ViThunkCreateThunkTable
_DRIVER_SPECIFIED_VERIFIER_THUNKS *__stdcall ViThunkCreateThunkTable(
VOID *ThunkBuffer,
UINT64 ThunkBufferSize,
_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
__int64 v4;
unsigned int v6;
_DRIVER_SPECIFIED_VERIFIER_THUNKS *result;
_DRIVER_SPECIFIED_VERIFIER_THUNKS *v8;
v4 = (unsigned int)ThunkBufferSize >> 4;
v6 = (unsigned int)ThunkBufferSize >> 4;
result = (_DRIVER_SPECIFIED_VERIFIER_THUNKS *)ExAllocatePoolWithTag(1ui64, 16 * (v4 + 2), 1951821133i64);
v8 = result;
if( result )
{
memmove(result + 8, ThunkBuffer, 16 * v6);
result = v8;
*((_QWORD *)v8 + 2) = DataTableEntry;
v8[6] = v4;
}
return result;
}Referenced by:
VfThunkAddDriverThunks
VfThunkAddSpecialDriverThunks