IDiaDataSource::loadDataFromMiscInfo
開啟並準備與 .exe
/.dll
檔案相關聯的偵錯數據。
語法
HRESULT loadDataFromMiscInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD timeStampExe,
DWORD timeStampDbg,
DWORD sizeOfExe,
DWORD cbMiscInfo,
BYTE* pbMiscInfo,
IUnknown* pCallback
);
參數
executable
[in] .exe
或 .dll
檔案的路徑。
searchPath
[in]搜尋偵錯數據的替代路徑。 多個路徑應該以分號分隔。 路徑可能包含尾端 \
。
timeStampExe
[in]可執行檔映像的替代時間戳。
timeStampDbg
[in]偵錯資訊的替代時間戳。
sizeOfExe
[in]以位元組為單位的可執行映像替代大小。
cbMiscInfo
[in]參數位節 pbMiscInfo
的大小。
pbMiscInfo
[in]格式的 IMAGE_DEBUG_MISC
替代偵錯標頭,提供檔名與偵錯資訊。
pCallback
[in]IUnknown
支援偵錯回呼介面的物件介面,例如IDiaLoadCallback
、 IDiaLoadCallback2
IDiaReadExeAtOffsetCallback
、 和/或 IDiaReadExeAtRVACallback
介面。
傳回值
如果成功,則會傳回 S_OK
;否則,會傳回錯誤碼。 下表顯示此方法的一些可能錯誤碼。
值 | Description |
---|---|
E_PDB_NOT_FOUND |
無法開啟檔案,或檔案的格式無效。 |
E_PDB_FORMAT |
嘗試存取具有已淘汰格式的檔案。 |
E_PDB_INVALID_SIG |
簽章不相符。 |
E_PDB_INVALID_AGE |
存在時間不相符。 |
E_INVALIDARG |
無效的 參數。 |
E_UNEXPECTED |
資料來源已經備妥。 |
備註
pbMiscInfo 會取代可執行檔案映像中的偵錯資訊,並將相關聯的偵錯數據位置命名為 。 時間戳和大小可用來比對偵錯資訊。
如果您要從符號伺服器載入偵錯數據, symsrv.dll 必須存在於安裝使用者應用程式或 msdia140.dll 的相同目錄中,或者它必須存在於系統目錄中。
此方法會搜尋並準備偵錯數據。 搜尋進度可選擇性地透過回呼來回報及控制。 例如, IDiaLoadCallback::NotifyDebugDir
當 方法尋找並處理偵錯目錄時 IDiaDataSource::loadDataForExe
,會叫用 。
和 IDiaReadExeAtOffsetCallback
IDiaReadExeAtRVACallback
介面可讓用戶端應用程式在無法透過標準檔案 I/O 直接存取檔案時,提供從可執行檔讀取資料的替代方法。
若要在不驗證的情況下載入 .pdb 檔案,請使用 IDiaDataSource::loadDataFromPdb
方法。
若要根據特定準則驗證 .pdb 檔案,請使用 IDiaDataSource::loadAndValidateDataFromPdb
方法。
若要直接從記憶體載入 .pdb 檔案,請使用 IDiaDataSource::loadDataFromIStream
方法。
若要驗證 .pdb 檔案而不載入它,請使用 IDiaDataSourceEx::ValidatePdb 方法。
範例
DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
// Report error
}