建議使用 Visual Studio 2017

IDiaDataSource::loadAndValidateDataFromPdb

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

會開啟,並驗證程式資料庫 (.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
IDiaDataSource::loadDataForExe
IDiaDataSource::loadDataFromPdb
IDiaDataSource::loadDataFromIStream

顯示: