IDiaDataSourceEx::loadDataForExeEx

Opens and prepares the debug data associated with the .exe/.dll file, with optional record prefetching.

Syntax

HRESULT loadDataForExeEx (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback,
   BOOL      fPdbPrefetching
);

Parameters

executable

[in] Path to the .exe or .dll file.

searchPath

[in] Alternate path to search for debug data. Multiple paths should be semicolon delimited. Paths may contain a trailing \.

pCallback

[in] An IUnknown interface for an object that supports a debug callback interface, such as the IDiaLoadCallback, IDiaLoadCallback2, the IDiaReadExeAtOffsetCallback, and/or the IDiaReadExeAtRVACallback interfaces.

fPdbPrefetching

[in] If set to TRUE, adjacent debug records are prefetched into memory, potentially replacing many smaller file I/O operations with fewer, larger operations, and thus improving overall throughput as those records are subsequently accessed, at the expense of potentially increased memory usage. If set to FALSE, this behaves identically to IDiaDataSource::loadDataForExe. If set to some other value, behavior is unspecified.

Return Value

If successful, returns S_OK; otherwise, returns an error code. The following table shows some of the possible error codes for this method.

Value Description
E_PDB_NOT_FOUND Failed to open the file, or the file has an invalid format.
E_PDB_FORMAT Attempted to access a file with an obsolete format.
E_PDB_INVALID_SIG Signature does not match.
E_PDB_INVALID_AGE Age does not match.
E_INVALIDARG Invalid parameter.
E_UNEXPECTED Data source has already been prepared.

Remarks

The debug header of the .exe/.dll file names the associated debug data location.

If you are loading debug data from a symbol server, symsrv.dll must be present in the same directory where either the user's application or msdia140.dll is installed, or it must be present in the system directory.

This method reads the debug header and then searches for and prepares the debug data. The progress of the search may, optionally, be reported and controlled through callbacks. For example, the IDiaLoadCallback::NotifyDebugDir is invoked when the IDiaDataSourceEx::loadDataForExeEx method finds and processes a debug directory.

The IDiaReadExeAtOffsetCallback and IDiaReadExeAtRVACallback interfaces allow the client application to provide alternative methods for reading data from the executable file when the file cannot be accessed directly through standard file I/O.

To load a .pdb file without validation, use the IDiaDataSourceEx::loadDataFromPdbEx method.

To validate the .pdb file against specific criteria, use the IDiaDataSourceEx::loadAndValidateDataFromPdbEx method.

To load a .pdb file directly from memory, use the IDiaDataSourceEx::loadDataFromIStreamEx method.

To validate a .pdb file without loading it, use the IDiaDataSourceEx::ValidatePdb method.

Example

class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
    // Report error
}

See also