ViThunkFindAllSpecialTables
_DRIVER_SPECIFIED_SPECIAL_VERIFIER_THUNKS **__stdcall ViThunkFindAllSpecialTables(
UINT64 *ImportThunk,
UINT64 ImportSize){
unsigned int v2;
_LIST_ENTRY **NextSpecialTable;
VOID **PoolWithTag;
_DRIVER_SPECIFIED_SPECIAL_VERIFIER_THUNKS **v6;
__int64 v7;
v2 = ImportSize;
NextSpecialTable = (_LIST_ENTRY **)ViThunkFindNextSpecialTable(ImportThunk, ImportSize, 0i64);
if( !NextSpecialTable )
return 0i64;
PoolWithTag = ExAllocatePoolWithTag(1ui64, 8i64 * (unsigned int)(ViVerifierSpecialThunkTables + 1), 1951821133i64);
v6 = (_DRIVER_SPECIFIED_SPECIAL_VERIFIER_THUNKS **)PoolWithTag;
if( !PoolWithTag )
return 0i64;
memset(PoolWithTag, 0i64, 8 * (ViVerifierSpecialThunkTables + 1));
v7 = 0i64;
do
{
v6[v7] = (_DRIVER_SPECIFIED_SPECIAL_VERIFIER_THUNKS *)NextSpecialTable;
v7 = (unsigned int)(v7 + 1);
NextSpecialTable = (_LIST_ENTRY **)ViThunkFindNextSpecialTable(ImportThunk, v2, *NextSpecialTable);
}
while( NextSpecialTable );
return v6;
}Referenced by:
VfThunkApplyDriverAddedThunks
ViThunkReplaceAllThunkedImports