IDiaDataSource::loadAndValidateDataFromPdb

打开并验证程序数据库 (.pdb) 文件与所提供的签名信息,并准备 .pdb 文件作为调试数据源。

HRESULT loadAndValidateDataFromPdb ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age
);

参数

  • pdbPath
    [in] .pdb 文件的路径。

  • pcsig70
    [in] 验证的 GUID 签名 .pdb 文件签名。在 Visual C++ 的仅 .pdb 文件和后具有 GUID 签名。

  • sig
    [in] 验证的 32 位签名 .pdb 文件签名。

  • age
    [in] 验证的年龄值。年龄不一定对应于任何已知的值时,它使用定位 .pdb 文件是否不同步的与相应的 .exe 文件。

返回值

如果成功,则返回; S_OK否则,返回错误代码。下表显示可能返回此方法的值。

说明

E_PDB_NOT_FOUND

未能打开文件或文件的格式无效。

E_PDB_FORMAT

尝试访问具有过时的格式的文件。

E_PDB_INVALID_SIG

签名不匹配。

E_PDB_INVALID_AGE

年龄不匹配。

E_INVALIDARG

参数无效。

E_UNEXPECTED

数据源已准备。

备注

.pdb 文件包含签名和年龄值。这些值在匹配 .pdb 文件的 .exe 或 .dll 文件复制。在准备数据源之前,此方法验证名为 .pdb 文件签名和年龄与所提供的值。

若要填充 .pdb 文件,而不验证,请使用 IDiaDataSource::loadDataFromPdb 方法。

对数据加载若要访问进程 (通过回调机制),使用 IDiaDataSource::loadDataForExe 方法。

直接从内存若要填充 .pdb 文件,请使用 IDiaDataSource::loadDataFromIStream 方法。

示例

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->loadAndValidateDataFromPdb( L"yprog.pdb",
                                          &expectedGUIDSignature,
                                          expectedFileSignature,
                                          expectedAge);
if (FAILED(hr))
{
    // Report an error
}

请参见

参考

IDiaDataSource

IDiaDataSource::loadDataForExe

IDiaDataSource::loadDataFromPdb

IDiaDataSource::loadDataFromIStream