共用方式為


IDiaDataSourceEx::loadDataForExeEx

開啟並準備與.exe/.dll檔案相關聯的偵錯數據,並預先擷取選擇性的記錄。

語法

HRESULT loadDataForExeEx (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback,
   BOOL      fPdbPrefetching
);

參數

executable

[in] .exe 或 .dll 檔案的路徑。

searchPath

[in] 搜尋偵錯資料的替代路徑。 多個路徑應該以分號分隔。 路徑可能包含尾端 \

pCallback

[in]IUnknown支援偵錯回呼介面的物件介面,例如IDiaLoadCallbackIDiaLoadCallback2IDiaReadExeAtOffsetCallback、 和/或 IDiaReadExeAtRVACallback 介面。

fPdbPrefetching

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

傳回值

如果成功,則會傳回 S_OK;否則,會傳回錯誤碼。 下表顯示此方法的一些可能錯誤碼。

Description
E_PDB_NOT_FOUND 無法開啟檔案,或檔案的格式無效。
E_PDB_FORMAT 嘗試存取具有已淘汰格式的檔案。
E_PDB_INVALID_SIG 簽章不相符。
E_PDB_INVALID_AGE 存在時間不相符。
E_INVALIDARG 無效的 參數。
E_UNEXPECTED 資料來源已經備妥。

備註

.exe/.dll 檔案的偵錯標頭會指出相關聯的偵錯資料位置。

如果您要從符號伺服器載入偵錯數據, symsrv.dll 必須存在於安裝使用者應用程式或 msdia140.dll 的相同目錄中,或者它必須存在於系統目錄中。

此方法會讀取偵錯標頭,然後搜尋並準備偵錯資料。 搜尋進度可選擇性地透過回呼來回報及控制。 例如, IDiaLoadCallback::NotifyDebugDir 當 方法尋找並處理偵錯目錄時 IDiaDataSourceEx::loadDataForExeEx ,會叫用 。

IDiaReadExeAtOffsetCallback IDiaReadExeAtRVACallback 介面可讓用戶端應用程式在無法透過標準檔案 I/O 直接存取檔案時,提供從可執行檔讀取資料的替代方法。

若要在不驗證的情況下載入 .pdb 檔案,請使用 IDiaDataSourceEx::loadDataFromPdbEx 方法。

若要根據特定準則驗證 .pdb 檔案,請使用 IDiaDataSourceEx::loadAndValidateDataFromPdbEx 方法。

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

若要驗證 .pdb 檔案而不載入它,請使用 IDiaDataSourceEx::ValidatePdb 方法。

範例

class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
    // Report error
}

另請參閱