ここで msdn ドキュメントを使用しました: http://msdn.microsoft.com/en-us/library/f0fkfy9y(v=vs.100).aspx
そこでは次のように指定されています。
case dliNotePreLoadLibrary :
//If you want to return control to the helper, return 0.
//Otherwise, return your own HMODULE to be used by the 
//instead of having it call LoadLibrary itself
だから私は次のことを試しました:
FARPROC WINAPI delayHook(unsigned dliNotify, PDelayLoadInfo pdli)
{
    switch (dliNotify) {
        case dliStartProcessing :
        case dliNotePreGetProcAddress :
        case dliFailLoadLib :
        case dliFailGetProc :
        case dliNoteEndProcessing : 
          return 0;
          break;
        case dliNotePreLoadLibrary :
            {
                char* dllPath = getDllPath();
                HMODULE lib = LoadLibrary(dllPath);
                return lib;
            }
            break;      
        default :
            return NULL;
    }
    return NULL;
}
HMODULE を返すとエラーが発生します。
'return' : 'HMODULE' から 'FARPROC' に変換できません。
何が問題ですか?私は何か疲れていますか?彼らはあなた自身のHMODULEを返すと言います、そしてそれは私がしたことです...