IDiaDataSource::loadAndValidateDataFromPdb
開啟並驗證程式資料庫 (.pdb) 檔案是否符合提供的簽章資訊,以及準備 .pdb 檔案作為偵錯資料來源。
語法
HRESULT loadAndValidateDataFromPdb (
LPCOLESTR pdbPath,
GUID* pcsig70,
DWORD sig,
DWORD age
);
參數
pdbPath
[in] .pdb 的路徑。
pcsig70
[in]要針對 .pdb 檔案簽章進行驗證的全域唯一標識符 (GUID) 簽章。 只有 Visual C++ 和更新版本中的 .pdb 檔案具有 GUID 簽章。
sig
[in] 要針對 .pdb 檔案簽章進行驗證的 32 位元簽章。
age
[in] 要驗證的存在時間值。 存留期不一定對應至任何已知的時間值,用來判斷 .pdb 檔案是否與對應的.exe檔案同步。
傳回值
如果成功,則會傳回 S_OK
;否則,會傳回錯誤碼。 下表顯示這個方法的可能傳回值。
值 | Description |
---|---|
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 檔案並使用預先擷取進行驗證,請使用 IDiaDataSourceEx::loadAndValidateDataFromPdbEx
方法。
若要在不驗證的情況下載入 .pdb 檔案,請使用 IDiaDataSource::loadDataFromPdb
方法。
若要存取資料載入程式(透過回呼機制),請使用 IDiaDataSource::loadDataForExe
方法。
若要直接從記憶體載入 .pdb 檔案,請使用 IDiaDataSource::loadDataFromIStream
方法。
若要驗證 .pdb 檔案而不載入它,請使用 IDiaDataSourceEx::ValidatePdb
方法。
範例
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
}