DkmModuleInstance 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Module Instance 類別代表程式代碼組合 (例如:dll 或 exe) ,它會載入特定位置的特定進程。 模組實例物件是具有程式代碼組合的執行環境概念的 1:1。 例如,在機器碼中,模組實例物件是具有基位址的 1:1。
衍生類別:DkmClrModuleInstance、DkmClrNcModuleInstance、DkmCustomModuleInstance、DkmNativeModuleInstance、DkmClrNcContainerModuleInstance
public ref class DkmModuleInstance abstract : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")]
public abstract class DkmModuleInstance : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")>]
type DkmModuleInstance = class
inherit DkmDataContainer
Public MustInherit Class DkmModuleInstance
Inherits DkmDataContainer
- 繼承
- 繼承
- 衍生
- 屬性
屬性
BaseAddress |
[選擇性]載入模組之起始記憶體位址。 如果模組未在連續記憶體區塊中載入,這個值將會是零。 |
Connection |
這代表監視器與 IDE 之間的連線。 如果監視器在與 IDE 相同的進程中執行,則它可以是本機連線,也可以是遠端連線。 在監視程式中,只有一個連線。 |
Flags |
指出 DkmModuleInstance 特性的旗標。 |
FullName |
完整模組名稱。 對於檔案型模組,這是模組的完整路徑 (,例如:c:\windows\system32\kernel32.dll。 |
IsDisabled |
指出此模組實例是否已停用。 調試程式會忽略已停用的模組。 針對原生模組,已停用模組的位址範圍會視為未對應。 針對 CLR 模組,這些模組中的任何框架會從呼叫堆疊中隱藏。 |
IsUnloaded |
如果已針對這個對象引發 'unloaded' 事件,則傳回 true (範例:DkmThread::Unload 會呼叫) 或物件已關閉。 請注意,檢查此狀態時必須小心,而不進行同步處理,傳回的狀態在讀取之後可能無法再精確指示。 (繼承來源 DkmDataContainer) |
LoadContext |
載入此模組之內容的字串描述。 例如:'Win32' 或 'CLR v2.0.50727:預設網域'。 |
LoadOrder |
已載入至並包含此模組之模組實例數目的整數計數。 每個運行時間實例都會追蹤自己的載入順序計數。 |
MemoryLayout |
列舉,指出模組在記憶體中的配置方式。 |
MinidumpInfoPart |
[選擇性]'MinidumpInfoPart' 可用來傳達迷你傾印 DkmProcess 中模組的其他資訊。 |
Module |
[選擇性]與這個模組實例相關聯的模組 (DkmModule) 符號處理程式的表示。 這個值一開始為 Null,並在符號與這個模組實例相關聯時指派。 |
Name |
模組名稱的簡短表示法。 如果是以檔案為基礎的模組,這是檔名和擴展名 (例如:kernel32.dll) 。 |
Process |
DkmProcess 代表正在偵錯的目標進程。 調試程式會偵錯進程,因此這是偵錯的基本單元。 DkmProcess 可以代表系統進程或虛擬進程,例如minidumps。 |
RuntimeInstance |
DkmRuntimeInstance 類別代表載入 DkmProcess 並包含要偵錯之程式碼的執行環境。 |
Size |
[選擇性]模組記憶體區域中的位元元組數目。 如果模組未在連續記憶體區塊中載入,這個值將會是零。 |
SymbolFileId |
[選擇性]包含尋找此模組符號所需的資訊。 在 Win32 上,此資訊會包含在IMAGE_DEBUG_DIRECTORY中。 |
TagValue |
DkmModuleInstance 是抽象基類。 這個列舉表示這個對像是實例的衍生類別。 |
TimeDateStamp |
建置載入模組的日期/時間。 此值是從載入模組IMAGE_NT_HEADERS取得。 度量單位是 FILETIME 值,這是 64 位值,代表自 1601 年 1 月 1 日起的 100 奈秒間隔數目 (UTC) 。 |
UniqueId |
唯一識別 DkmModuleInstance 物件。 |
Version |
[選擇性]檔案版本資訊。 |
方法
ClearTransitionModuleFlag() |
運行時間實例會呼叫這個方法,將模組標示為界限模組。 逐步執行時,運行時間應該檢查步驟是否已達到界限模組,並開始執行仲裁。 請注意,某些運行時間可能無法接受此要求。 發送器會保留呼叫 FlagAsTransitionModule 的次數。 只有當對 ClearTransitionModuleFlag 的呼叫數目相符時,模組才會被視為轉換模組。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
Decompile() |
將模組的程式代碼分解為 C#,並使用這個來源內嵌建立新的可攜式 PDB。 共用此符號檔的所有模組都會開始使用這些更新的符號。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>) |
將模組的程式代碼分解為 C#,並使用這個來源內嵌建立新的可攜式 PDB。 共用此符號檔的所有模組都會開始使用這些更新的符號。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>) |
將模組的程式代碼分解為 C#,並使用這個來源內嵌建立新的可攜式 PDB。 共用此符號檔的所有模組都會開始使用這些更新的符號。 實作應該在失敗時傳回S_OK,並透過 『HR』 和 『ErrorMessage』 參數傳回實際的 HRESULT 和任何其他錯誤資訊。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引進。 |
Decompile(String, Int32) |
將模組的程式代碼分解為 C#,並使用這個來源內嵌建立新的可攜式 PDB。 共用此符號檔的所有模組都會開始使用這些更新的符號。 實作應該在失敗時傳回S_OK,並透過 『HR』 和 『ErrorMessage』 參數傳回實際的 HRESULT 和任何其他錯誤資訊。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引進。 |
FlagAsTransitionModule() |
運行時間實例會呼叫這個方法,將模組標示為界限模組。 逐步執行時,運行時間應該檢查步驟是否已達到界限模組,並開始執行仲裁。 請注意,某些運行時間可能無法接受此要求。 發送器會保留呼叫此呼叫次數的計數。 只有在已對 ClearTransitionModuleFlag 進行相符的呼叫數目時,模組才會被視為轉換模組。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetDataItem<T>() |
取得已新增至這個容器實例的 『T』 實例。 如果此容器不包含 『T』,此函式會傳回 null。 (繼承來源 DkmDataContainer) |
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean) |
取得偵錯模組實例中位址範圍的反組譯碼。 |
GetGPUDisassemblySize() |
傳回偵錯模組實例中的反組譯碼大小。 |
GetNextGPUInstructionAddress(UInt64) |
傳回下一個相對於起始位址的指令位址。 |
GetSymbolLoadInformation() |
傳回字串,描述搜尋符號的各種位置,以及檢查該位置的結果。 此資訊可用來填入模組視窗中的「符號載入資訊」。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSymbolSearchResult() |
擷取與此模組實例相關聯的任何符號搜尋結果。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引進。 |
GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>) |
擷取與此模組實例相關聯的任何符號搜尋結果。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3) 中引進。 |
GetSymbolStatusMessage(Boolean) |
取得目前符號狀態的當地語系化字串描述。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>) |
取得目前符號狀態的當地語系化字串描述。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
IsSuppressed() |
這個方法可讓元件判斷是否隱藏模組的模組載入事件。 此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 引進。 |
IsTransitionModule() |
如果有任何運行時間實例將此模組標示為轉換模組,則會傳回 true。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
IsUserCode() |
判斷模組是否被視為使用者程序代碼。 位置條件約束:您可以從 IDE 元件呼叫這個方法。 從 Visual Studio 2013 Update 2 開始,您也可以從 Managed 程式代碼的監視元件呼叫此專案。 從 Visual Studio 2017 Update 8 開始,API 的 CallDirection 是從 'Normal' 進行'雙向',而且現在可以從任何元件呼叫 AsyncCaller,AsyncCaller 已設定為 'true',而 CallerLocationConstraint 已從 'NoMarshalling' 設定為 'None'。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引進。 |
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>) |
判斷模組是否被視為使用者程序代碼。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:您可以從 IDE 元件呼叫這個方法。 從 Visual Studio 2013 Update 2 開始,您也可以從 Managed 程式代碼的監視元件呼叫此專案。 從 Visual Studio 2017 Update 8 開始,API 的 CallDirection 是從 'Normal' 進行'雙向',而且現在可以從任何元件呼叫 AsyncCaller,AsyncCaller 已設定為 'true',而 CallerLocationConstraint 已從 'NoMarshalling' 設定為 'None'。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引進。 |
OnBinaryLoaded(String) |
引發 BinaryLoaded 事件。 實作事件接收介面的元件將會收到事件通知。 一旦所有元件都收到通知,控件就會傳回。 此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引進。 |
OnBinaryReloadOpportunity() |
引發 BinaryReloadOpportunity 事件。 實作事件接收介面的元件將會收到事件通知。 一旦所有元件都收到通知,控件就會傳回。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 此 API 是在 Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) 引進。 |
OnModuleModified() |
當模組因 EnC 或動態發出程式代碼而變更時,會呼叫這個方法。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。 |
OnSymbolsLoaded(DkmModule, Boolean) |
這個方法是由基底偵錯監視器叫用,以回應對IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent 的呼叫。 這個方法必須從事件線程叫用,或從要求線程叫用為重載的一部分。 基底偵錯監視器應該同步切換至事件線程、暫停目標進程,以及叫用 OnSymbolsLoaded。 位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。 |
OnSymbolsUpdated(DkmModule) |
引發 ModuleSymbolsUpdated 事件。 實作事件接收介面的元件將會收到事件通知。 一旦所有元件都收到通知,控件就會傳回。 |
ReadSymbols() |
符號處理程式會叫用這個方法,以讀取符號位於偵錯gee 記憶體中的 DkmModuleInstances 符號。 |
RemoveDataItem<T>() |
從這個容器中移除 『T』 的實例。 通常不需要呼叫這個方法,因為數據容器會在物件關閉時自動清空。 (繼承來源 DkmDataContainer) |
SetDataItem<T>(DkmDataCreationDisposition, T) |
將新專案放在數據容器中。 (繼承來源 DkmDataContainer) |
SetDisabled(Boolean) |
匯報 模組上已停用的狀態。 這個方法只能從ModuleInstanceLoad事件呼叫。 停用模組時,通常也會隱藏模組載入事件。 |
SetModule(DkmModule, Boolean) |
符號提供者會叫用這個方法,以將 DkmModule 與 DkmModuleInstance 產生關聯,並觸發 ModuleSymbolsLoaded 事件。 它只能針對 DkmModuleInstance 物件呼叫一次。 呼叫此 API 會建立 DkmModule-DkmModuleInstance<> 關聯,以及引發 ModuleSymbolsLoaded 事件。 |
TryLoadBinary() |
嘗試載入先前無法使用更新符號路徑載入的二進位檔。 |
TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>) |
嘗試載入先前無法使用更新符號路徑載入的二進位檔。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 |
TryLoadSymbols() |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
TryLoadSymbols(DkmSymbolLoadFlags) |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引進。 |
TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4) 中引進。 |
TryLoadSymbolsCallback() |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 位置條件約束:這可以從用戶端或伺服器呼叫。 伺服器的實作是一種快取,可防止不必要的網路呼叫。 用戶端會直接移至「實際」實作,這也會確保提早重新嘗試傳回。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。 |
TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>) |
呼叫 以起始載入模組時找不到其符號之 DkmModuleInstances 的符號載入。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:這可以從用戶端或伺服器呼叫。 伺服器的實作是一種快取,可防止不必要的網路呼叫。 用戶端會直接移至「實際」實作,這也會確保提早重新嘗試傳回。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。 |
TryLoadSymbolsCallback177(DkmSymbolLoadFlags) |
呼叫 以起始載入本機的符號,以在載入模組時找不到其符號的 DkmModuleInstances。 位置條件約束:這可以從用戶端或伺服器呼叫。 伺服器的實作是一種快取,可防止不必要的網路呼叫。 用戶端會直接移至「實際」實作,這也會確保提早重新嘗試傳回。 此 API 是在 Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7) 中引進。 |
TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>) |
呼叫 以起始載入本機的符號,以在載入模組時找不到其符號的 DkmModuleInstances。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:這可以從用戶端或伺服器呼叫。 伺服器的實作是一種快取,可防止不必要的網路呼叫。 用戶端會直接移至「實際」實作,這也會確保提早重新嘗試傳回。 此 API 是在 Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7) 中引進。 |
Unload() |
將 Unload 物件標示為已卸除,並通知實作事件接收介面的元件。 一旦所有元件都收到通知,控件就會傳回。 這個方法只能由建立 物件的元件呼叫。 |