Compartir a través de


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

Abre y comprueba que el archivo de base de datos de programa (.pdb) coincide con la información de firma proporcionada y prepara el archivo .pdb como origen de datos de depuración, con captura previa de registros opcional.

Sintaxis

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

Parámetros

pdbPath

[in] La ruta de acceso al archivo .pdb.

pcsig70

[in] Firma de identificador único global (GUID) que se va a comprobar con la firma del archivo .pdb. Solo los archivos .pdb de Visual C++, y de las versiones posteriores, tienen firmas GUID.

sig

[in] La firma de 32 bits que se va a comprobar con la firma del archivo .pdb.

age

[in] Valor de antigüedad que se va a comprobar. La antigüedad no corresponde necesariamente a ningún valor de hora conocido, se usa para determinar si un archivo .pdb no está sincronizado con un archivo .exe correspondiente.

fPdbPrefetching

[in] Si se establece TRUEen , los registros de depuración adyacentes se capturan previamente en la memoria, lo que podría reemplazar muchas operaciones de E/S de archivos más pequeñas con menos operaciones más grandes y, por lo tanto, mejorar el rendimiento general a medida que se accede a esos registros posteriormente, a costa de aumentar potencialmente el uso de memoria. Si se establece en FALSE, se comporta de forma idéntica a IDiaDataSource::loadAndValidateDataFromPdb. Si se establece en algún otro valor, el comportamiento no se especifica.

Valor devuelto

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

Valor 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

Un archivo .pdb contiene los valores de firma y de antigüedad. Estos valores se replican en los archivos .exe o .dll que coinciden con el archivo .pdb. Antes de preparar el origen de datos, este método comprueba que la firma y la antigüedad del archivo .pdb con nombre coinciden con los valores especificados.

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

Para obtener acceso al proceso de carga de datos (mediante un mecanismo de devolución de llamada), use el IDiaDataSourceEx::loadDataForExeEx método .

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

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

Ejemplo

IDiaDataSource* pSource;  // Previously created data source.
DEFINE_GUID(expectedGUIDSignature,0x1234,0x5678,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08);
DWORD expectedFileSignature = 0x12345678;
DWORD expectedAge           = 128;

HRESULT hr;
hr = pSource->loadAndValidateDataFromPdbEx( L"yprog.pdb",
                                            &expectedGUIDSignature,
                                            expectedFileSignature,
                                            expectedAge,
                                            TRUE);
if (FAILED(hr))
{
    // Report an error
}

Consulte también