Compartilhar via


Ganchos de notificação

Os ganchos de notificação são chamados apenas antes que as seguintes ações sejam executadas na rotina auxiliar:

  • O identificador armazenado para a biblioteca é verificado para ver se ele já foi carregado.

  • LoadLibrary é chamado para tentar a carga da DLL.

  • GetProcAddress é chamado para tentar obter o endereço do procedimento.

  • Retornar para a conversão intermediária atraso de carga de importação.

O gancho de notificação está ativado:

  • Fornecendo uma nova definição do ponteiro __pfnDliNotifyHook2 inicializado para apontar para sua própria função 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 Informativo.

  • ponteiro de função
    Ignore a manipulação de carregamento de atraso padrão.Isso permite que você fornecer seu próprio manipulador de carregamento.

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

  • 0, se ele deseja apenas notificações informativas.

  • HMODULE para a DLL carregada, se a DLL do próprio carregado.

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

  • 0, se ele deseja 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 retornado da função de gancho será ignorado.

Se esse ponteiro é inicializado (diferente de zero), o auxiliar de carregamento de atraso invocará a função em determinados pontos de notificação durante 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 passar 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 atraso de carga.O valor de notificação será um dos valores definidos em Estrutura and constante definições.

Consulte também

Conceitos

tratamento de erro e notificação