VfThunkAddDriverThunks
INT64 __stdcall VfThunkAddDriverThunks(
PVOID ThunkBuffer,
UINT64 ThunkBufferSize,
_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
INT64 v3;
INT64 v4;
_LIST_ENTRY *ThunkTable;
INT64 v6;
_LIST_ENTRY *Blink;
int v9[10];
ThunkTable = (_LIST_ENTRY *)ViThunkCreateThunkTable(ThunkBuffer, ThunkBufferSize, (INT64)DataTableEntry);
if( !ThunkTable )
return 3221225626i64;
VfDriverLock(v4, v3, v6);
VfThunksExtended = 1;
_InterlockedOr(v9, 0);
Blink = ViVerifierDriverAddedThunkListHead.Blink;
++ViActiveVerifierThunks;
if( ViVerifierDriverAddedThunkListHead.Blink->Flink != &ViVerifierDriverAddedThunkListHead )
__fastfail(3u);
ThunkTable->Flink = &ViVerifierDriverAddedThunkListHead;
ThunkTable->Blink = Blink;
Blink->Flink = ThunkTable;
ViVerifierDriverAddedThunkListHead.Blink = ThunkTable;
ViDriversLoadLockOwner = 0i64;
KeReleaseMutex(&ViDriversLoadLock, 0);
return 0i64;
}Referenced by:
MmAddVerifierThunks