Ganchos de notificação
Os ganchos de notificação são chamados antes das seguintes ações são executadas na rotina auxiliar:
O identificador armazenado na biblioteca é verificado para ver se ele já foi carregado.
LoadLibrary é chamado para tentar o carregamento da DLL.
GetProcAddress é chamado para tentar obter o endereço do procedimento.
Retornar para a conversão de carga de importação de atraso.
O gancho de notificação estiver habilitado:
Fornecendo uma nova definição do ponteiro __pfnDliNotifyHook2 que é inicializado para apontar para a sua própria função que recebe as notificações.
- ou -
Definindo o ponteiro __pfnDliNotifyHook2 a sua função de gancho antes de todas as chamadas para a DLL que o programa é atrasar o carregamento.
Se a notificação é dliStartProcessing, a função de gancho pode retornar:
NULL
O auxiliar padrão manipula o carregamento da DLL. Isso é útil a ser chamado apenas para fins informativos.ponteiro de função
Ignore o tratamento de carregamento de atraso do padrão. Isso permite que você fornecer seu próprio manipulador de carga.
Se a notificação é dliNotePreLoadLibrary, a função de gancho pode retornar:
0, se desejar apenas notificações informativas.
O HMODULE para a DLL carregada, se a própria DLL carregado.
Se a notificação é dliNotePreGetProcAddress, a função de gancho pode retornar:
0, se desejar apenas notificações informativas.
Endereço da função importado, se a função de gancho obtém o próprio endereço.
Se a notificação é dliNoteEndProcessing, valor de retorno da função de gancho é ignorado.
Se esse ponteiro é inicializado (diferente de zero), o auxiliar de carregamento de atraso irá chamar a função em determinados pontos de notificação em toda a sua execução. O ponteiro de função tem a seguinte definição:
// The "notify hook" gets called for every call to the
// delay load helper. This allows a user to hook every call and
// skip the delay load helper entirely.
//
// dliNotify == {
// dliStartProcessing |
// dliNotePreLoadLibrary |
// dliNotePreGetProc |
// dliNoteEndProcessing}
// on this call.
//
ExternC
PfnDliHook __pfnDliNotifyHook2;
// This is the failure hook, dliNotify = {dliFailLoadLib|dliFailGetProc}
ExternC
PfnDliHook __pfnDliFailureHook2;
As notificações de passam um DelayLoadInfo estrutura para a função de gancho juntamente com o valor de notificação. Esses dados são idênticos aos usados pela rotina de auxiliar de carregamento de atraso. O valor de notificação será um dos valores definidos no estrutura and Constant Definitions.