VfThunkAddDriverThunks
NTSTATUS __stdcall VfThunkAddDriverThunks(
VOID *ThunkBuffer,
UINT64 ThunkBufferSize,
_KLDR_DATA_TABLE_ENTRY *DataTableEntry){
_LIST_ENTRY *ThunkTable;
_LIST_ENTRY *Blink;
int v6[10];
ThunkTable = (_LIST_ENTRY *)ViThunkCreateThunkTable(ThunkBuffer, ThunkBufferSize, DataTableEntry);
if( !ThunkTable )
return -1073741670;
VfDriverLock();
VfThunksExtended = 1;
_InterlockedOr(v6, 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 0;
}Referenced by:
MmAddVerifierThunks