Share via


DkmModuleInstance 類別

定義

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
繼承
繼承
DkmModuleInstance
衍生
屬性

屬性

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 物件標示為已卸除,並通知實作事件接收介面的元件。 一旦所有元件都收到通知,控件就會傳回。

這個方法只能由建立 物件的元件呼叫。

適用於