Compartilhar via


Ganchos de notificação

Os ganchos de notificação são chamados apenas antes que as 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 para 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 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 ele carregado da própria DLL.

Se a notificação é dliNotePreGetProcAddress, a função de gancho pode retornar:

  • 0, se desejar apenas notificações informativas.

  • Endereço da função importada, se a função de gancho obtém o próprio endereço.

Se a notificação é dliNoteEndProcessing, o valor de retorno da função de gancho será 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 em 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 auxiliar atraso de carga.O valor de notificação será um dos valores definidos no estrutura and Constant Definitions.

Consulte também

Conceitos

Notificação e tratamento de erros