Compartir a través de


IDiaDataSource::loadDataFromMiscInfo

Abre y prepara los datos de depuración asociados al .exe/.dll archivo.

Sintaxis

HRESULT loadDataFromMiscInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     timeStampExe,
   DWORD     timeStampDbg,
   DWORD     sizeOfExe,
   DWORD     cbMiscInfo,
   BYTE*     pbMiscInfo,
   IUnknown* pCallback
);

Parámetros

executable

[in] Ruta de acceso al .exe archivo o .dll .

searchPath

[in] Rutas de acceso alternativas para buscar datos de depuración. Varias rutas de acceso deben estar delimitadas por punto y coma. Las rutas de acceso pueden contener un final \.

timeStampExe

[in] Marca de tiempo alternativa para la imagen ejecutable.

timeStampDbg

[in] Marca de tiempo alternativa para la información de depuración.

sizeOfExe

[in] Tamaño alternativo de la imagen ejecutable en bytes.

cbMiscInfo

[in] Tamaño en bytes del pbMiscInfo parámetro.

pbMiscInfo

[in] Encabezado de depuración alternativo en IMAGE_DEBUG_MISC formato que proporciona el nombre de archivo con la información de depuración.

pCallback

[in] Interfaz IUnknown de un objeto que admite una interfaz de devolución de llamada de depuración, como IDiaLoadCallback, IDiaLoadCallback2, o IDiaReadExeAtOffsetCallbacklas IDiaReadExeAtRVACallback interfaces .

Valor devuelto

Si la operación se realiza correctamente, devuelve S_OK; de lo contrario, devuelve un código de error. En la tabla siguiente se muestran algunos de los posibles códigos de error para este método.

Value Descripción
E_PDB_NOT_FOUND No se pudo abrir el archivo o el archivo tiene un formato no válido.
E_PDB_FORMAT Se intentó acceder a un archivo con un formato obsoleto.
E_PDB_INVALID_SIG La firma no coincide.
E_PDB_INVALID_AGE La edad no coincide.
E_INVALIDARG El parámetro no es válido.
E_UNEXPECTED El origen de datos ya se ha preparado.

Comentarios

PbMiscInfo reemplaza la información de depuración en la imagen ejecutable y asigna un nombre a la ubicación de datos de depuración asociada. Las marcas de tiempo y el tamaño se usan para buscar coincidencias con la información de depuración.

Si va a cargar datos de depuración desde un servidor de símbolos, symsrv.dll debe estar presente en el mismo directorio donde está instalada la aplicación del usuario o msdia140.dll , o debe estar presente en el directorio del sistema.

Este método busca y prepara los datos de depuración. El progreso de la búsqueda puede, opcionalmente, notificarse y controlarse mediante devoluciones de llamada. Por ejemplo, IDiaLoadCallback::NotifyDebugDir se invoca cuando el IDiaDataSource::loadDataForExe método busca y procesa un directorio de depuración.

Las IDiaReadExeAtOffsetCallback interfaces y IDiaReadExeAtRVACallback permiten a la aplicación cliente proporcionar métodos alternativos para leer datos del archivo ejecutable cuando no se puede acceder al archivo directamente a través de la E/S de archivo estándar.

Para cargar un archivo .pdb sin validación, use el IDiaDataSource::loadDataFromPdb método .

Para validar el archivo .pdb con criterios específicos, use el IDiaDataSource::loadAndValidateDataFromPdb método .

Para cargar un archivo .pdb directamente desde la memoria, use el IDiaDataSource::loadDataFromIStream método .

Para validar un archivo .pdb sin cargarlo, use el método IDiaDataSourceEx::ValidatePdb .

Ejemplo

DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
  ...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

Vea también