Calculando valores necessários
Duas importantes informações precisam ser calculado pela rotina auxiliar atraso.Para esse fim, existem duas funções embutidas em delayhlp.cpp para calcular a essas informações.
O primeiro calcula o índice da importação atual nas três tabelas diferentes (importar a tabela de endereços (IAT), tabela de endereços de importação acoplado (BIAT) e tabela de endereços de importação não acoplado (UIAT)).
A segunda conta o número de importações em um IAT válido.
// utility function for calculating the index of the current import
// for all the tables (INT, BIAT, UIAT, and IAT).
__inline unsigned
IndexFromPImgThunkData(PCImgThunkData pitdCur, PCImgThunkData pitdBase) {
return pitdCur - pitdBase;
}
// utility function for calculating the count of imports given the base
// of the IAT. NB: this only works on a valid IAT!
__inline unsigned
CountOfImports(PCImgThunkData pitdBase) {
unsigned cRet = 0;
PCImgThunkData pitd = pitdBase;
while (pitd->u1.Function) {
pitd++;
cRet++;
}
return cRet;
}