PIMAGEHLP_STATUS_ROUTINE función de devolución de llamada (imagehlp.h)
Función de devolución de llamada definida por la aplicación que se usa con la función BindImageEx . Se llama a la rutina de estado durante el proceso del enlace de imagen.
El tipo PIMAGEHLP_STATUS_ROUTINE define un puntero a esta función de devolución de llamada. StatusRoutine es un marcador de posición para el nombre de función definido por la aplicación.
Sintaxis
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
Estado actual de la operación de enlace. Este parámetro puede ser uno de los valores siguientes.
[in] ImageName
Nombre del archivo que se va a enlazar. Este valor puede ser un nombre de archivo, una ruta de acceso parcial o una ruta de acceso completa.
[in] DllName
Nombre del archivo DLL.
[in] Va
Dirección virtual calculada.
[in] Parameter
Cualquier información de estado adicional. Este valor depende del valor del parámetro Reason . Para obtener más información, vea el fragmento de código en la sección Comentarios siguiente.
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es TRUE.
Si se produce un error en la función, el valor devuelto es FALSE. Para recuperar información de error extendida, llame a GetLastError.
Comentarios
Todas las funciones ImageHlp, como esta, son un único subproceso. Por lo tanto, es probable que las llamadas desde más de un subproceso a esta función producirán un comportamiento inesperado o daños en la memoria. Para evitarlo, debe sincronizar todas las llamadas simultáneas de más de un subproceso a esta función.
En el fragmento de código siguiente se describe cómo usar el valor va cuando el estado es 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 | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | imagehlp.h |