共用方式為


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

開啟並確認程序資料庫 (.pdb) 檔案符合所提供的簽章資訊,並將 .pdb 檔案準備為偵錯數據源,並預先擷取選擇性記錄。

語法

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

參數

pdbPath

[in] .pdb 的路徑。

pcsig70

[in]要針對 .pdb 檔案簽章進行驗證的全域唯一標識符 (GUID) 簽章。 只有 Visual C++ 和更新版本中的 .pdb 檔案具有 GUID 簽章。

sig

[in] 要針對 .pdb 檔案簽章進行驗證的 32 位元簽章。

age

[in] 要驗證的存在時間值。 存留期不一定對應至任何已知的時間值,用來判斷 .pdb 檔案是否與對應的.exe檔案同步。

fPdbPrefetching

[in]如果設定為 TRUE,則相鄰的偵錯記錄會預先擷取到記憶體中,可能會以較少、較大的作業取代許多較小的檔案 I/O 作業,因而改善後續存取這些記錄的整體輸送量,代價是記憶體使用量可能會增加。 如果設定為 FALSE,則此行為會與 IDiaDataSource::loadAndValidateDataFromPdb相同。 如果設定為其他值,則行為未指定。

傳回值

如果成功,則會傳回 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::loadDataFromPdbEx 方法。

若要存取資料載入程式(透過回呼機制),請使用 IDiaDataSourceEx::loadDataForExeEx 方法。

若要直接從記憶體載入 .pdb 檔案,請使用 IDiaDataSourceEx::loadDataFromIStreamEx 方法。

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

另請參閱