DkmModule 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
DkmModule 類別代表程式代碼組合 (例如:dll 或 exe) ,也就是或一次載入一或多個進程。 DkmModule 類別是符號 API 的中央物件,而且是 1:1,而符號處理程式會表示載入的內容。 如果程式代碼組合載入三個不同的進程 (或相同的進程,但有三個不同的基位址或三個不同的應用程式域) 但符號處理程式會將這兩者視為相同,則只有一個模組物件。
public ref class DkmModule : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("9fdf7d9f-e5ab-b363-6282-1da170173343")]
public class DkmModule : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("9fdf7d9f-e5ab-b363-6282-1da170173343")>]
type DkmModule = class
inherit DkmDataContainer
Public Class DkmModule
Inherits DkmDataContainer
- 繼承
- 繼承
- 屬性
屬性
CompilerId |
產生本課程模組中所有程式代碼之編譯程式的 LanguageId/VendorId。 如果模組可能包含混合的語言,這是 Guid.Empty/Guid.Empty。 這幾乎一律為 PDB 型模組的 Guid.Empty/Guid.Empty。 動態語言通常用來避免網路來回行程,以探索每個符號的語言。 |
Connection |
[選擇性]對於從遠端載入符號的模組,會使用連接屬性來判斷 Connection 的來源。 否則,這會是 NULL。 |
FilePath |
[選擇性]如果指定,這會包含符號檔的完整路徑,可備份 DkmModule (例如:c:\myproj\bin\Debug\myproj.pdb) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
Flags |
旗標,指出這個 DkmModule 物件的特性。 此 API 是在 Visual Studio 17 Update 2 (DkmApiVersion.VS17Update2) 引進。 |
Id |
用來唯一識別特定 DkmModule 實例的 Guid 配對。 |
IsUnloaded |
如果已針對這個對象引發 'unloaded' 事件,則傳回 true (範例:DkmThread::Unload 會呼叫) 或物件已關閉。 請注意,檢查此狀態時必須小心,而不進行同步處理,傳回的狀態在讀取之後可能無法再精確指示。 (繼承來源 DkmDataContainer) |
Name |
模組的名稱。 |
SymbolsConnection |
[選擇性]如果為非 Null,這會指定處理此 DkmModule 符號的背景工作進程連線。 如果在 IDE 進程中載入符號,或是在遠端調試程式中載入符號,則這會是 null, (DkmModule.Connection 為非 Null) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
方法
Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmDataItem) |
建立新的 DkmModule 物件,代表一或多個載入模組的符號, (模組實例) 。 這些物件是由符號提供者所建立。 建立 DkmModule 物件之後,符號提供者應該呼叫 DkmModuleInstance.SetModule,以將 DkmModuleInstance 和 DkmModule 建立關聯。 這個方法會傳送 ModuleCreate 事件。 |
Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmWorkerProcessConnection, String, DkmDataItem) |
建立新的 DkmModule 物件,代表一或多個載入模組的符號, (模組實例) 。 這些物件是由符號提供者所建立。 建立 DkmModule 物件之後,符號提供者應該呼叫 DkmModuleInstance.SetModule,以將 DkmModuleInstance 和 DkmModule 建立關聯。 這個方法會傳送 ModuleCreate 事件。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。 |
Create(DkmModuleId, String, DkmCompilerId, DkmTransportConnection, DkmWorkerProcessConnection, String, DkmModuleSymbolFlags, DkmDataItem) |
建立新的 DkmModule 物件,代表一或多個載入模組的符號, (模組實例) 。 這些物件是由符號提供者所建立。 建立 DkmModule 物件之後,符號提供者應該呼叫 DkmModuleInstance.SetModule,以將 DkmModuleInstance 和 DkmModule 建立關聯。 這個方法會傳送 ModuleCreate 事件。 此 API 是在 Visual Studio 17 Update 2 (DkmApiVersion.VS17Update2) 引進。 |
EnumSymbolsDocuments() |
列舉與模組相關聯之符號檔案的符號檔。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
EnumSymbolsDocuments(DkmWorkList, DkmCompletionRoutine<DkmEnumSymbolsDocumentsAsyncResult>) |
列舉與模組相關聯之符號檔案的符號檔。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
FindDocuments(DkmSourceFileId) |
從文件查詢中包含的搜尋參數傳回檔案物件。 如果符號檔不包含此文件的參考,則傳回的檔物件將會是 NULL (S_FALSE 原生) 中的傳回碼。 當呼叫端完成檔時,呼叫端必須明確關閉傳回的文件物件。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
FindDocuments(DkmWorkList, DkmSourceFileId, DkmCompletionRoutine<DkmFindDocumentsAsyncResult>) |
從文件查詢中包含的搜尋參數傳回檔案物件。 如果符號檔不包含此文件的參考,則傳回的檔物件將會是 NULL (S_FALSE 原生) 中的傳回碼。 當呼叫端完成檔時,呼叫端必須明確關閉傳回的文件物件。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
FindModule(DkmModuleId) |
尋找 DkmModule 物件。 如果沒有具有指定輸入索引鍵的物件,FindModule 將會失敗。 |
GetAcceleratorTagTableSize(UInt32) |
取得註冊的 C++ AMP 位址。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetCompilerOptions() |
這個方法會傳回指定 GPU 模組的編譯程式旗標。 |
GetDataItem<T>() |
取得已新增至這個容器實例的 『T』 實例。 如果此容器不包含 『T』,此函式會傳回 null。 (繼承來源 DkmDataContainer) |
GetEntryPointSymbols() |
GetEntryPointSymbols 是由斷點管理員用來在啟動可執行檔中尋找進入點符號 (s) 。 針對 Managed 程式代碼,此符號是使用 ISymUnmanagedWriter::SetUserEntryPoint 來定義。 針對原生程式代碼,尋找各種「主要」函式, (main、WinMain 等) 找到此符號。 第三個可以藉由實作自己的符號提供者或實作 IDkmEntryPointQuery 來覆寫進入點。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetExpensiveHashValue(DkmSourceFileId, DkmHashAlgorithmId) |
從提供的 DkmSourceFileId 擷取「昂貴」哈希值。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7) 中引進。 |
GetFirstMethodInFirstDocument() |
傳回第一個檔中的第一個方法。 |
GetFunctionInfo(DkmWorkList, String, DkmCompletionRoutine<DkmGetFunctionInfoAsyncResult>) |
搜尋 具有指定名稱之函式的模組符號。 如果找到 RVA,則會傳回 RVA 和大小。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetFunctionInfo(String) |
搜尋 具有指定名稱之函式的模組符號。 如果找到 RVA,則會傳回 RVA 和大小。 位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。 |
GetFunctionLabels(UInt64) |
取得 RVA 的符號名稱。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3) 引進。 |
GetFunctionRva(UInt64) |
取得包含指定之 RVA 之函式的 RVA。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 3 (DkmApiVersion.VS16Update3) 引進。 |
GetInstructionOffsetForRva(UInt32) |
GetInstructionOffsetForRva 是由元件用來查詢符號提供者,以執行 DPC++ 的指令位移和 RVA 轉譯。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetLinkerFixupRecords() |
擷取模組的連結器修正記錄。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTM) 中引進。 |
GetMethodSymbolStoreData(DkmClrMethodId) |
傳回方法中的範圍。 一律會有至少一個範圍。 |
GetMethodSymbolStoreData(DkmWorkList, DkmClrMethodId, DkmCompletionRoutine<DkmGetMethodSymbolStoreDataAsyncResult>) |
傳回方法中的範圍。 一律會有至少一個範圍。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 |
GetMethodSymbolStoreDataPreRemap(DkmClrMethodId, Int32) |
傳回方法中的範圍。 一律會有至少一個範圍。 |
GetMethodSymbolStoreDataPreRemap(DkmWorkList, DkmClrMethodId, DkmCompletionRoutine<DkmGetMethodSymbolStoreDataPreRemapAsyncResult>) |
傳回方法中的範圍。 一律會有至少一個範圍。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 |
GetModuleInstances() |
DkmModule 是符號處理程式的模組表示法,而且不會繫結至任何進程、連接或運行時間實例。 這個方法會傳回對應至此 DkmModule 的所有 DkmModuleInstances。 當所有模組現在卸除時,DkmModule 可以系結至零個實例。 在此情況下,GetModuleInstances 會傳回空陣列 (S_FALSE 原生) 中的傳回碼。 |
GetModules() |
GetModules 會列舉所有已建立的 DkmModule 物件。 |
GetPointerToHLSLRegister(Int32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, Boolean) |
取得快取器 C++ AMP 位址。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetPublicSymbolByNameCallback(DkmWorkList, String, DkmCompletionRoutine<DkmGetPublicSymbolByNameCallbackAsyncResult>) |
依字串傳回特定名稱S_PUBLIC32的 RVA。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 |
GetPublicSymbolByNameCallback(String) |
依字串傳回特定名稱S_PUBLIC32的 RVA。 |
GetRegisterRelativeSymbolName(DkmWorkList, UInt32, Int32, UInt32, DkmProcessorArchitecture, DkmCompletionRoutine<DkmGetRegisterRelativeSymbolNameAsyncResult>) |
取得快取器相對值的符號名稱。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTM) 中引進。 |
GetRegisterRelativeSymbolName(UInt32, Int32, UInt32, DkmProcessorArchitecture) |
取得快取器相對值的符號名稱。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTM) 中引進。 |
GetScriptDocuments() |
GetScriptDocuments 會列舉這個 DkmModule 物件的 DkmScriptDocument 元素。 |
GetSourceLinkData(DkmModuleInstance) |
如果數據流存在,則傳回模組之來源鏈接數據流數據的內容。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。 |
GetSourceLinkData(DkmWorkList, DkmModuleInstance, DkmCompletionRoutine<DkmGetSourceLinkDataAsyncResult>) |
如果數據流存在,則傳回模組之來源鏈接數據流數據的內容。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。 |
GetSourceLinkInfo(String) |
從所要求檔案路徑的符號檔傳回SourceLink資訊。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 15 RTM (DkmApiVersion.VS15RTM) 中引進。 |
GetSourceServerData(DkmModuleInstance) |
如果數據流存在,則傳回模組之源伺服器數據流數據的內容。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSourceServerData(DkmWorkList, DkmModuleInstance, DkmCompletionRoutine<DkmGetSourceServerDataAsyncResult>) |
如果數據流存在,則傳回模組之源伺服器數據流數據的內容。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSymbolFilePath() |
會傳回 DkmModule 物件的符號檔路徑。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSymbolFilePath(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolFilePathAsyncResult>) |
會傳回 DkmModule 物件的符號檔路徑。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
GetSymbolFileRawBytes() |
GetSymbolFileRawBytes 可用來從遠端擷取符號檔的原始位元組。 目前僅支援動態可攜式 PDB。 這最多會傳回 10 MB。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 14 Update 3 Micro Update (DkmApiVersion.VS14Update3MicroUpdate) 中引進。 |
GetSymbolInterface(Guid) |
GetSymbolInterface 可用來取得符號存放區的原始 COM 介面。 這適用於尋找調試程序呈現的符號抽象概念對於其需求而言太嚴格的呼叫端,或只是因為其元件實作方式而不需要。 位置條件約束:除了 Managed 符號之外,您必須從符號提供者開啟符號檔的相同進程呼叫這個方法。 針對原生 PDB 檔案,這表示必須從 IDE 進程呼叫 API。 針對 Managed 符號,會在遠端連線的兩端提供符號提供者 API 的子集。 |
GetSymbolNameForRVA(DkmWorkList, UInt32, DkmCompletionRoutine<DkmGetSymbolNameForRVAAsyncResult>) |
取得 RVA 的符號名稱。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTM) 中引進。 |
GetSymbolNameForRVA(UInt32, UInt64) |
取得 RVA 的符號名稱。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTM) 中引進。 |
GetTokenSymbolStoreAttribute(DkmWorkList, Int32, Boolean, String, DkmCompletionRoutine<DkmGetTokenSymbolStoreAttributeAsyncResult>) |
根據自訂屬性的名稱取得自定義屬性。 不要與元數據自定義屬性混淆,這些屬性會保留在符號存放區中。 這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。 |
GetTokenSymbolStoreAttribute(Int32, Boolean, String) |
根據自訂屬性的名稱取得自定義屬性。 不要與元數據自定義屬性混淆,這些屬性會保留在符號存放區中。 |
IsValidAcceleratorTag(UInt32, UInt32) |
確認快捷鍵指標標記是否有效。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
OnModuleSymbolsReplaced() |
引發 ModuleSymbolsReplaced 事件。 實作事件接收介面的元件將會收到事件通知。 一旦所有元件都收到通知,控件就會傳回。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
RemoveDataItem<T>() |
從這個容器中移除 『T』 的實例。 通常不需要呼叫這個方法,因為數據容器會在物件關閉時自動清空。 (繼承來源 DkmDataContainer) |
SetDataItem<T>(DkmDataCreationDisposition, T) |
將新專案放在數據容器中。 (繼承來源 DkmDataContainer) |
SetPointerToHLSLRegister(UInt64, Int32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32) |
設定快取器 C++ AMP 位址。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
SymbolsHaveEmbeddedDocuments() |
檢查與模組相關聯的符號是否有內嵌檔。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。 |
TranslateAcceleratorTagByIP(UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32) |
將快捷鍵指標標記轉譯為 HLSL 快取器屬性。 |
TranslateAcceleratorTagByRva(UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32) |
使用相對虛擬位址將快捷鍵指標標記轉譯為 HLSL 快取器屬性。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |
UndecorateName(String, UInt32) |
取消編碼符號名稱。 位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。 |