Partilhar via


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.

Consulte também

Conceitos

Notificação e o tratamento de erros