Compartilhar via


PIMAGEHLP_STATUS_ROUTINE função de retorno de chamada (imagehlp.h)

Uma função de retorno de chamada definida pelo aplicativo usada com a função BindImageEx . A rotina de status é chamada durante o processo de associação de imagem.

O tipo PIMAGEHLP_STATUS_ROUTINE define um ponteiro para essa função de retorno de chamada. StatusRoutine é um espaço reservado para o nome da função definida pelo aplicativo.

Sintaxe

PIMAGEHLP_STATUS_ROUTINE PimagehlpStatusRoutine;

BOOL PimagehlpStatusRoutine(
  [in] IMAGEHLP_STATUS_REASON Reason,
  [in] PCSTR ImageName,
  [in] PCSTR DllName,
  [in] ULONG_PTR Va,
  [in] ULONG_PTR Parameter
)
{...}

Parâmetros

[in] Reason

O status atual da operação de associação. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
BindOutOfMemory
0
Sem memória. O valor De parâmetro é o número de bytes na tentativa de alocação.
BindRvaToVaFailed
1
O endereço virtual relativo é inválido para a imagem. O valor de Parâmetro não é usado.
BindNoRoomInImage
2
Não há espaço na imagem para a nova tabela de importação de formato. O valor de Parâmetro não é usado.
BindImportModuleFailed
3
Falha na importação do módulo. O valor de Parâmetro não é usado.
BindImportProcedureFailed
4
Falha na importação do procedimento. O valor De parâmetro é o nome da função.
BindImportModule
5
A importação do módulo está sendo iniciada. O valor de Parâmetro não é usado.
BindImportProcedure
6
A importação de procedimento está começando. O valor De parâmetro é o nome da função.
BindForwarder
7
O valor De parâmetro é o nome da função encaminhada.
BindForwarderNOT
8
O valor De parâmetro é o nome da função não encaminhada.
BindImageModified
9
Imagem modificada. O valor de Parâmetro não é usado.
BindExpandFileHeaders
10
Cabeçalhos de arquivo expandidos. O valor de Parâmetro é o número de bytes
BindImageComplete
11
A associação foi concluída. Para obter mais informações sobre o valor parâmetro , consulte a seção Comentários a seguir.
BindMismatchedSymbols
12
A soma de verificação não correspondeu. O valor De parâmetro é o nome do arquivo de símbolo.
BindSymbolsNotUpdated
13
O arquivo de símbolo não foi atualizado. O valor parameter é o nome do arquivo de símbolo não atualizado.

[in] ImageName

O nome do arquivo a ser associado. Esse valor pode ser um nome de arquivo, um caminho parcial ou um caminho completo.

[in] DllName

O nome da DLL.

[in] Va

O endereço virtual computado.

[in] Parameter

Qualquer informação de status adicional. Esse valor depende do valor do parâmetro Reason . Para obter mais informações, consulte o fragmento de código na seção Comentários a seguir.

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para recuperar informações de erro estendidas, chame GetLastError.

Comentários

Todas as funções ImageHlp, como esta, são threaded único. Portanto, chamadas de mais de um thread para essa função provavelmente resultarão em comportamento inesperado ou corrupção de memória. Para evitar isso, você deve sincronizar todas as chamadas simultâneas de mais de um thread para essa função.

O fragmento de código a seguir descreve como usar o valor Va quando o status é BindImageComplete.

case BindImageComplete:
    if (fVerbose) {
        fprintf(stderr, "BIND: Details of binding %s\n", ImageName );
        NewImports = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)Va;
        NewImport = NewImports;
        while (NewImport->OffsetModuleName) {
            fprintf( stderr, "    Import from %s [%x]",
                     (LPSTR)NewImports + NewImport->OffsetModuleName,
                     NewImport->TimeDateStamp
                   );
            if (NewImport->NumberOfModuleForwarderRefs != 0) {
                fprintf( stderr, " with %u forwarders", NewImport-> 
                         NumberOfModuleForwarderRefs );
            }
            fprintf( stderr, "\n" );
            NewForwarder = (PIMAGE_BOUND_FORWARDER_REF)(NewImport+1);
            for (i=0; i<NewImport->NumberOfModuleForwarderRefs; i++) 
            {
                fprintf( stderr, "        Forward to %s [%x]\n",
                   (LPSTR)NewImports + NewForwarder->OffsetModuleName,
                   NewForwarder->TimeDateStamp);
                NewForwarder += 1;
            }
            NewImport = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)NewForwarder;
        }
    }
    break;

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho imagehlp.h

Confira também

BindImageEx

Funções ImageHlp