IDiaDataSourceEx::loadDataForExeEx
Abre y prepara los datos de depuración asociados con el archivo .exe/.dll, con captura previa de registros opcional.
Sintaxis
HRESULT loadDataForExeEx (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback,
BOOL fPdbPrefetching
);
Parámetros
executable
[in] Ruta de acceso al archivo .exe o .dll.
searchPath
[in] Ruta de acceso alternativa 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 \
.
pCallback
[in] Interfaz IUnknown
de un objeto que admite una interfaz de devolución de llamada de depuración, como IDiaLoadCallback
, IDiaLoadCallback2
, o IDiaReadExeAtOffsetCallback
las IDiaReadExeAtRVACallback
interfaces .
fPdbPrefetching
[in] Si se establece TRUE
en , 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::loadDataForExe
. 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 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
El encabezado de depuración del archivo .exe o .dll asigna el nombre de la ubicación de datos de depuración asociada.
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 lee el encabezado de depuración y, después, 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 IDiaDataSourceEx::loadDataForExeEx
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 IDiaDataSourceEx::loadDataFromPdbEx
método .
Para validar el archivo .pdb con criterios específicos, use el IDiaDataSourceEx::loadAndValidateDataFromPdbEx
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
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
// Report error
}