IDiaDataSource::loadAndValidateDataFromPdb
會開啟,並驗證程式資料庫 (.pdb) 檔案符合簽章提供的資訊,並準備.pdb 檔做為偵錯資料來源。
HRESULT loadAndValidateDataFromPdb (
LPCOLESTR pdbPath,
GUID* pcsig70,
DWORD sig,
DWORD age
);
參數
pdbPath
[in].pdb 檔的路徑。pcsig70
[in]GUID 簽章以供驗證的.pdb 檔案簽章。 只有.pdb 檔案的Visual C++ ,稍後有 GUID 簽章。sig
[in]32 位元簽章以供驗證的.pdb 檔案簽章。age
[in]若要確認有效期的值。 年齡不一定對應到任何已知的時間值,它用來判斷這是否為與相對應的.exe 檔案不同步的.pdb 檔。
傳回值
如果成功的話,會傳回S_OK。 否則,會傳回錯誤碼。 下表顯示可能的傳回值,這個方法。
值 |
描述 |
---|---|
E_PDB_NOT_FOUND |
無法開啟檔案,或檔案格式無效。 |
E_PDB_FORMAT |
嘗試存取的檔案格式太舊。 |
E_PDB_INVALID_SIG |
簽章不符。 |
E_PDB_INVALID_AGE |
時代不符。 |
E_INVALIDARG |
不正確的參數。 |
E_UNEXPECTED |
已完成資料來源。 |
備註
.Pdb 檔案包含簽章] 和 [年齡] 值。 這些值會複寫中的.exe 或.dll 檔案符合.pdb 檔。 準備資料來源,這個方法會驗證已命名的.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::loadDataForExe