次の方法で共有


必要な値の計算

遅延読み込みヘルパー ルーチンでは、2 つの重要な情報を計算する必要があります。 これらの情報を計算するために、delayhlp.cpp には次の 2 つのインライン関数が用意されています。

  • 1 番目の関数は、現在のインポートのインデックスを計算して、インポート アドレス テーブル (IAT: Import Address Table)、バインドされたインポート アドレス テーブル (BIAT: Bound Import Address Table)、および非バインド インポート アドレス テーブル (UIAT: Unbound Import Address Table) の 3 つの異なるテーブルに格納します。

  • 2 番目の関数は、有効な IAT 内のインポート数をカウントします。

// 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;
    }

参照

参照

ヘルパー関数について