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