DkmProcess 類別

定義

DkmProcess 代表正在偵錯的目標進程。 調試程式會偵錯進程,因此這是偵錯的基本單位。 DkmProcess 可以代表系統進程或虛擬進程,例如minidumps。

public ref class DkmProcess : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")]
public class DkmProcess : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("a6eaf62b-6db1-4f38-6359-46e9262d7a0a")>]
type DkmProcess = class
    inherit DkmDataContainer
Public Class DkmProcess
Inherits DkmDataContainer
繼承
繼承
屬性

屬性

BaseDebugMonitorId

DkmBaseDebugMonitorId 會識別用來檢查和控制偵錯進程的基底偵錯監視器。 例如,DkmBaseDebugMonitorId.WindowsProcess 用於 Win32 偵錯 API 所偵錯的進程,而 DkmBaseDebugMonitorId.DumpFile 則用於 minidumps。

Connection

這代表監視器與 IDE 之間的連線。 如果監視器在與 IDE 相同的進程中執行,則它可以是本機連線,也可以是遠端連線。 在監視程式中,只有一個連線。

DebugLaunchSettings

從項目系統或其他 LaunchDebugTargets 呼叫端啟動偵錯作業期間提供的設定, (或其他各種開始偵錯 API) 。

EngineSettings

包含整個工作階段的偵錯設定。 每個引擎 Guid 有一個實例 (例如:一個 COMPlusOnlyEng2 實例,一個實例用於 COMPlusNativeEng) 。

IsAppPackage

如果進程屬於 Windows 市集應用程式套件或 Windows Phone 應用程式套件,則為 True。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 中引進。

IsMultiArch

如果進程包含來自多個架構的程序代碼,則為 True。

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引進。

IsNativeDebuggingEnabled

若為 true,調試程式會嘗試偵錯機器碼 - 它會在原生例外狀況時停止、載入符號、在呼叫堆棧上顯示原生框架、系結和叫用斷點,並在中斷狀態時讓原生線程停止。

IsUnloaded

如果已針對這個對象引發 'unloaded' 事件,則傳回 true (範例:DkmThread::Unload 會呼叫) 或物件已關閉。 請注意,檢查此狀態時必須小心,而不進行同步處理,傳回的狀態在讀取之後可能無法再精確指示。

(繼承來源 DkmDataContainer)
LivePart

[選擇性]與執行中進程相關的資訊。 例如,此元件不會針對迷你項目呈現。

Path

進程起始可執行檔的完整路徑。

StartMethod

StartMethod 描述偵錯引擎如何開始偵錯此程式。

SystemInformation

包含此進程執行所在的計算機系統相關信息。 如果此程式是在 WOW 下執行, (64 位作業系統上的 32 位模擬,) 這項資訊將會用於 32 位子系統,而不是 64 位子系統。

UniqueId

可唯一識別此進程物件的 Guid。 這個 Guid 值與在 SDM 層公開的 Guid 相同, (IDebugProcess2::GetProcessId) 和自動化層。

方法

AbortingFuncEvalExecution(DkmFuncEvalFlags)

中止函式評估時,運行時間偵錯監視器會呼叫 AbortingFuncEvalExecution。 AbortingFuncEvalExecution 會更新 DkmProcess 對象的內部狀態,讓停止事件管理員允許兩個停止事件通過:函式評估完整斷點或異步中斷。

AddExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmAddExceptionTriggerAsyncResult>)

新增例外狀況觸發程式,以便在符合例外狀況觸發程式時傳送 ExceptionTriggerHit 事件。

如果已為此 {SourceId、DkmExceptionTrigger} Tuple 定義例外狀況,則會使用新的設定來修改現有的觸發程式。 例如,如果元件定義觸發程式,以在擲回存取違規例外狀況時停止,並在任何 Win32 例外狀況未處理時設定要引發的觸發程式,則會移除存取違規觸發程式。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

AddExceptionTrigger(Guid, DkmExceptionTrigger)

新增例外狀況觸發程式,以便在符合例外狀況觸發程式時傳送 ExceptionTriggerHit 事件。

如果已為此 {SourceId、DkmExceptionTrigger} Tuple 定義例外狀況,則會使用新的設定來修改現有的觸發程式。 例如,如果元件定義觸發程式,以在擲回存取違規例外狀況時停止,並在任何 Win32 例外狀況未處理時設定要引發的觸發程式,則會移除存取違規觸發程式。

AllocateVirtualMemory(UInt64, Int32, Int32, Int32)

保留和/或認可目標進程虛擬位址空間內的記憶體區域。 除非使用 MEM_RESET,否則函式會初始化其配置為零的記憶體。 如需詳細資訊,請參閱 MSDN 中的 VirtualAlloc Win32 API。

AsyncBreak(Boolean)

這個方法會告訴偵錯監視器以異步方式中斷偵錯程序的執行。 AsyncBreakComplete 事件會在作業完成之後傳送。

BeforeStopDebugging()

在目標進程終止或中斷連結之前收到通知的處理程式。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

ClearAllGPUMemoryAccessWarnings()

停用所有作用中的 GPU 記憶體存取警告。

ClearExceptionTriggers(Guid)

拿掉已使用特定 SourceId 設定的所有例外狀況觸發程式。 此方法傳回之後,例外狀況觸發程式將不再引發ExceptionTriggerHit事件。 關閉 DkmProcess 物件時,會自動清除例外狀況觸發程式。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

建立新的進程物件。 這個方法是從事件線程上的基底偵錯監視器呼叫,做為 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 的一部分。

這個方法會傳送 ProcessCreate 事件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引進。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, Boolean, DkmProcess+Live, DkmDataItem)

建立新的進程物件。 這個方法是從事件線程上的基底偵錯監視器呼叫,做為 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 的一部分。

這個方法會傳送 ProcessCreate 事件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

Create(DkmTransportConnection, String, Guid, DkmStartMethod, DkmEngineSettings, DkmDebugLaunchSettings, DkmSystemInformation, Guid, Boolean, DkmProcess+Live, DkmDataItem)

建立新的進程物件。 這個方法是從事件線程上的基底偵錯監視器呼叫,做為 IDkmStartDebuggingOperations.AttachToProcess 或 IDkmStartDebuggingOperations.ResumeDebuggedProcess 的一部分。

這個方法會傳送 ProcessCreate 事件。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

CreateNativeInstructionAddress(UInt64)

解析原生模組的CPU指令,並傳回 DkmNativeInstructionAddress 來表示此 CPU 指令。 如果指令指標不在模組內,則會改為傳回 DkmUnknownInstructionAddress 物件。

Detach()

系統會呼叫這個方法,告知監視器從目標進程中斷連結。 這會觸發在事件線程上傳送的 ProcessExit 事件。

Disassemble(DkmInstructionAddress, UInt32)

反組譯偵錯程式中的位址範圍。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

FindNativeModule(UInt64)

將虛擬位址解析為原生模組。 如果虛擬位址不在模組內,則會在原生) 中傳回 null (S_FALSE 傳回碼。 不會傳回停用的模組。

FindNativeModule(UInt64, Boolean)

將虛擬位址解析為原生模組。 如果虛擬位址不在模組內,則會在原生) 中傳回 null (S_FALSE 傳回碼。

FindProcess(Guid)

尋找 DkmProcess 物件。 如果沒有具有指定輸入索引鍵的物件存在,FindProcess 將會失敗。

FindProcessSnapshot(UInt32)

在此 DkmProcess 中尋找 DkmProcessSnapshot 元素。 如果沒有具有指定輸入索引鍵的專案,FindProcessSnapshot 將會失敗。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 中引進。

FindRuntimeInstance(DkmRuntimeInstanceId)

在此 DkmProcess 中尋找 DkmRuntimeInstance 元素。 如果沒有具有指定輸入索引鍵的專案存在,FindRuntimeInstance 將會失敗。

FindSystemThread(Int32)

在此 DkmProcess 中尋找 DkmThread 元素。 如果沒有具有指定輸入索引鍵的專案,FindSystemThread 將會失敗。 如果找到物件,它一律會包含 'System' 元件。

FreeVirtualMemory(UInt64, Int32, Int32)

釋放和/或取消認可目標進程虛擬位址空間內的記憶體區域。 如需詳細資訊,請參閱 MSDN 中的 VirtualFree Win32 API。

GetComputeKernels()

GetComputeKernels 會列舉這個 DkmProcess 物件的 DkmGPUComputeKernel 元素。

GetDataItem<T>()

取得已新增至這個容器實例的 『T』 實例。 如果此容器不包含 『T』,此函式會傳回 null。

(繼承來源 DkmDataContainer)
GetDumpExePath()

傳回正在偵錯之迷你傾印中主要可執行文件的路徑。

此 API 是在 Visual Studio 12 RTM (DkmApiVersion.VS12RTM) 引进。

GetDumpSaveTime()

傳回儲存迷你傾印的時間。

此 API 是在 Visual Studio 16 Update 10 (DkmApiVersion.VS16Update10) 引進。

GetEndingTimeContext()

取得時間內容,表示追蹤的結束位置。

此 API 是在 Visual Studio 16 RTM (DkmApiVersion.VS16RTMPreview) 中引進。

GetGPUBreakpointBehavior()

取得進程的斷點行為。

GetHandleCount()

取得進程中的作用中句柄數目。

GetInstructionAddress(DkmInstructionAddress, Int32)

傳回相對於起始位址之 kth 指令的位址。 對於常數長度指令集,這是簡單的算術。 對於可變長度指令集,需要反向反組譯碼才能取得此位址。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

GetInstructionAddress(DkmWorkList, DkmInstructionAddress, Int32, DkmCompletionRoutine<DkmGetRelativeInstructionAddressAsyncResult>)

傳回相對於起始位址之 kth 指令的位址。 對於常數長度指令集,這是簡單的算術。 對於可變長度指令集,需要反向反組譯碼才能取得此位址。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

GetInstructionAddress(DkmWorkList, UInt64, DkmCompletionRoutine<DkmGetInstructionAddressAsyncResult>)

將 CPU 指令位址解析為 DkmInstructionAddress。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

位置條件約束:必須從 IDE 元件呼叫 API, (元件層級 > 100,000) 。

GetManagedStowedException()

從傾印取得受控 Stowed 例外狀況。 如果沒有 Managed Stowed 例外狀況,這會傳回S_FALSE。

此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 引進。

GetMemoryReadTime(UInt64, UInt32, DkmMemoryTimeFlags)

呼叫 以找出相對於目前進程時間的時間,從記憶體讀取解析值的時間。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 引進。

GetNativeRuntimeInstance()

提供 DkmRuntimeInstance 的存取權,這是針對進程中的單純程序代碼。 進程只有一個 DkmRuntimeInstance。

GetNativeStowedException()

從傾印取得原生存根例外狀況。 如果沒有原生 Stowed 例外狀況,這會傳回S_FALSE。

此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 引進。

GetPendingBreakpoints()

GetPendingBreakpoints 會列舉這個 DkmProcess 物件的 DkmPendingBreakpoint 元素。

GetProcesses()

GetProcesses 會列舉所有已建立的 DkmProcess 物件。

GetProcessExecuteDirection()

取得值,指出進程是以正向或反向方向執行。 這個方法只會針對時間整合程序實作。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 引進。

GetProcessorArchitecture(UInt64, DkmProcessorArchitecture)

決定指定地址的架構。

此 API 是在 Visual Studio 16 Update 9 (DkmApiVersion.VS16Update9) 中引進。

GetProcessSnapshots()

GetProcessSnapshots 會列舉這個 DkmProcess 物件的 DkmProcessSnapshot 元素。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 引進。

GetRunningTime()

取得自上次呼叫 ResetRunningTime () 以來,偵錯gee 已執行的時鐘週期數目。

GetRuntimeFunctionResolutionRequests()

GetRuntimeFunctionResolutionRequests 會列舉這個 DkmProcess 物件的 DkmRuntimeFunctionResolutionRequest 元素。

GetRuntimeInstances()

GetRuntimeInstances 會列舉這個 DkmProcess 物件的 DkmRuntimeInstance 元素。

GetSerializedProcessInfo()

取得串行化進程的相關信息。

此 API 是在 Visual Studio 17 Update 2 (DkmApiVersion.VS17Update2) 引進。

GetSourceSnapshot()

取得偵錯進程的來源快照集物件。 偵錯的進程必須代表快照集。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 引進。

GetStowedExceptions()

從傾印取得 Stowed 例外狀況。

此 API 是在 Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3) 引進。

GetSystemThreads()

提供進程中作用中系統線程的清單。 (DkmThread::System 不是系統線程的線程是 null) 或已卸除,則不會出現在此集合中。

GetTargetCompositionServices(DkmTargetCompositionScenario, Object)

取得對應案例的 IDebugServiceManager,可用來存取以目標組合為基礎的延伸模組。

位置條件約束:目標組合介面無法在機器之間封送處理,但如果有的話,可以使用。

此 API 是在 Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5) 中引進。

GetThreads()

GetThreads 會列舉這個 DkmProcess 物件的 DkmThread 元素。

InvisibleWriteMemory(UInt64, Byte[])

將記憶體寫入目標進程,但隱藏對 ReadMemory 呼叫的寫入。 此 API 可用來修補目標進程內的指示或數據,以實作調試程式功能。 在數據傳輸發生之前,系統會確認指定大小的基位址和記憶體中的所有數據都可供寫入存取,如果無法存取,函式就會引發E_INVALID_MEMORY_ADDRESS錯誤。

IsLoadComplete()

如果在開始偵錯進程時,所有初始模組載入/線程所建立的運行時間都已傳送,就會傳回 true。 請注意,此定義可能與載入完成的 Win32 偵錯 API 定義不同,因為其他運行時間實例可能需要額外的時間來載入。

此 API 是在 Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2) 引進。

IsStopped()

這個方法可讓元件判斷發送器是否將進程視為已停止。 這個方法不需要從需要停止目標進程的介面方法內呼叫,但在可能從執行模式呼叫的作業期間可能會很有説明。

LocateBinary(String, String, String, UInt32, UInt32)

這個方法會搜尋本機磁碟和任何已設定的符號伺服器,以取得符合參數的二進位檔。 傳回本機磁碟上此檔案的路徑。 如果檔案位於符號伺服器上,則會下載至快取,並傳回本機路徑。

OnAsyncBreakComplete(DkmAsyncBreakStatus, DkmThread)

引發 AsyncBreakComplete 事件。 實作事件接收介面的元件將會收到事件通知。 這個方法會加入事件佇列,而控件會立即返回呼叫端。

OnEntryPoint(DkmThread)

引發 EntryPoint 事件。 實作事件接收介面的元件將會收到事件通知。 這個方法會加入事件佇列,而控件會立即返回呼叫端。

OnHiddenEntryPoint(DkmThread)

引發 HiddenEntryPoint 事件。 實作事件接收介面的元件將會收到事件通知。 這個方法會加入事件佇列,而控件會立即返回呼叫端。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

OnInstructionPatchInserted(UInt64, Byte[])

基底偵錯監視器呼叫的方法,以通知其他元件已修改目標進程的指令記憶體。 目前,這僅用於斷點插入。

位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。

OnInstructionPatchRemoved(UInt64, Byte[])

基底偵錯監視器呼叫的方法,通知其他元件目標進程的指令記憶體已還原至其原始狀態。 目前,這僅用於斷點移除。

位置條件約束:必須從監視元件呼叫 API, (元件層級 < 100,000) 。

OnLoadComplete()

這個方法是由進程的基底偵錯監視器呼叫,以引發LoadComplete事件。 LoadComplete 會在針對進程中的初始模組集建立 DkmModuleInstance 對象之後發出,而且通常也會建立一組初始線程。

使用 DkmLoadCompleteEventDeferral.Add 的運行時間偵錯監視器可能會延後載入完成事件,在此情況下,此方法會立即完成。 否則,這個方法會將 事件傳送至實作事件同步介面的所有元件。 一旦所有元件都收到通知,控件就會傳回。

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

OnProcessSnapshotAdded(DkmProcessSnapshot)

在取得指定進程之進程快照集之後所收到通知的處理程式。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引進。

OnProcessSnapshotRemoved(DkmProcessSnapshot)

從指定的進程中移除進程快照集之後所通知的處理程式。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引進。

OnTraceTimeContextSet(DkmTraceTimeContext, DkmTraceTimeContext, DkmTraceTimeContext, DkmThread)

引發 TraceTimeContextSet 事件。 實作事件接收介面的元件將會收到事件通知。 所有元件都收到通知后,控件就會傳回。

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

此 API 是在 Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2) 引進。

QueryPerformanceCounters(DkmWorkList, DkmCompletionRoutine<DkmPerformanceCountersAsyncResult>)

異步方法,從 IDkmPerformanceMeasurementDispatcherService 從進程運行時間所發出的事件中取得計時數據。 這會以異步方式呼叫,因為取得調試程式額外負荷可能非常昂貴。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

ReadMemory(UInt64, DkmReadMemoryFlags, Byte[])

讀取目標進程的記憶體。

ReadMemory(UInt64, DkmReadMemoryFlags, Void*, Int32)

讀取目標進程的記憶體。

ReadMemoryString(UInt64, DkmReadMemoryFlags, UInt16, Int32)

從目標進程進程的記憶體讀取以 Null 結束的字串。 這可用來讀取 ANSI 或 Unicode (UTF-8、UTF-16 或 UTF-32) 字串。

RemoveDataItem<T>()

從這個容器中移除 『T』 的實例。 通常不需要呼叫這個方法,因為數據容器會在物件關閉時自動清空。

(繼承來源 DkmDataContainer)
RemoveExceptionTrigger(DkmWorkList, Guid, DkmExceptionTrigger, DkmCompletionRoutine<DkmRemoveExceptionTriggerAsyncResult>)

拿掉先前設定的例外狀況觸發程式。 請注意,處理階段會被忽略,而且不需要符合原本提供的值。

這個方法會將新的工作專案附加至指定的工作清單,並在附加工作項目之後傳回 。 工作項目的實際處理是異步的。 呼叫端將會透過完成例程收到要求完成的通知。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

RemoveExceptionTrigger(Guid, DkmExceptionTrigger)

拿掉先前設定的例外狀況觸發程式。 請注意,處理階段會被忽略,而且不需要符合原本提供的值。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

RemoveSnapshotById(UInt32)

拿掉此進程的進程快照集。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 引進。

RemoveSnapshots()

拿掉此進程的進程快照集。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 中引進。

SearchRuntimeFunctionTable(UInt64, UInt64)

方法會盡可能傳回位址IMAGE_RUNTIME_FUNCTION_ENTRY的內容。 若要搜尋靜態專案,呼叫端應該在 DkmNativeModuleInstance 上呼叫對等的方法。

SetCoreDumpParserTargetCompositionServices(Object)

取得核心檔案剖析案例的 IDebugServiceManager,可用來存取以目標組合為基礎的延伸模組。

位置條件約束:目標組合介面無法跨計算機封送處理,但如果可用,則安全使用。

此 API 是在 Visual Studio 16 Update 8 (DkmApiVersion.VS16Update8) 引進。

SetDataItem<T>(DkmDataCreationDisposition, T)

將新專案放在數據容器中。

(繼承來源 DkmDataContainer)
SetDetachUnavailable(Int32)

由元件呼叫,表示進程不允許卸離。

此 API 是在 Visual Studio 14 RTM (DkmApiVersion.VS14RTM) 中引進。

SetGPUMemoryAccessWarning(Int32, Boolean)

啟用/停用特定的 GPU 記憶體存取警告。

SetProcessExecuteDirection(DkmProcessExecuteDirection)

設定進程執行方向。 方向可以是正向或反向。 這個方法只會針對時間同步處理進行實作。

此 API 是在 Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8) 引進。

SetRunningTime(UInt64)

將運行時間計數器設定為指定的值。

StoppingEventProcessingBegin(Boolean)

StoppingEventProcessingBegin 是由事件線程上的基底偵錯監視器呼叫。 它會通知發送器目標進程已停止,而且可能已達到停止事件。 例如,每當從操作系統收到EXCEPTION_DEBUG_EVENT時,Win32 基底偵錯監視器就會呼叫此功能。 此方法會更新 DkmProcess 物件的內部狀態,以便允許傳送停止事件。

StoppingEventProcessingContinue()

StoppingEventProcessingContinue 是由事件線程上的基底偵錯監視器呼叫。 在發出目前批次內的所有停止事件之後,就會呼叫這個方法 (,例如:稱為 DkmRuntimeBreakpoint.OnHit) 。 這個方法會通知已實作停止事件通知介面的元件,並呼叫執行管理員將進程滑到安全點。 基底偵錯監視器必須在任何成功呼叫 StoppingEventProcessingBegin 之後呼叫 StoppingEventProcessingContinue。 發出所有停止事件之後的基底偵錯監視器。

基底偵錯監視器應該會在此方法中時重新進入呼叫。

TakeSnapshot(UInt64, DkmThread)

擷取偵錯的快照集。

位置條件約束:伺服器。

此 API 是在 Visual Studio 15 Update 3 (DkmApiVersion.VS15Update3) 中引進。

TakeSnapshotWithException(UInt64, DkmExceptionInformation)

擷取偵錯的快照集。

位置條件約束:伺服器。

此 API 是在 Visual Studio 15 Update 5 (DkmApiVersion.VS15Update5) 引進。

Terminate(Int32)

系統會呼叫這個方法,告知監視器終止目標進程。 這會觸發在事件線程上傳送的 ProcessExit 事件。

TryLocateBinary(String, String, String, UInt32, UInt32)

呼叫 以起始二進位檔的尋找,其影像可能先前找不到或嘗試載入。 這個方法會搜尋本機磁碟和任何已設定的符號伺服器,以取得符合參數的二進位檔。 傳回本機磁碟上這個檔案的路徑。 如果檔案位於符號伺服器上,則會下載至快取,並傳回本機路徑。

此 API 是在 Visual Studio 11 Update 1 (DkmApiVersion.VS11FeaturePack1) 中引進。

Unload(Int32)

當監視器叫用 DkmProcess::Unload 時,發送器會傳送 ProcessExit。

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

VolatileReadMemory(UInt64, Byte[])

從目標進程讀取記憶體。 這個方法與 『ReadMemory』 不同,因為這個方法可以隨時呼叫 (不只是停止目標) ,調試程式不會嘗試快取此作業的結果。

VolatileReadMemory(UInt64, Void*, Int32)

從目標進程讀取記憶體。 這個方法與 『ReadMemory』 不同,因為這個方法可以隨時呼叫 (不只是停止目標) ,調試程式不會嘗試快取此作業的結果。

VolatileWriteMemory(UInt64, Byte[])

寫入目標進程的記憶體。 這個方法與 『WriteMemory』 不同,因為這個方法可以隨時呼叫 (,而不只是當目標停止) ,而且調試程式不會嘗試快取此作業的結果。 如果無法寫入任何記憶體,就會引發E_INVALID_MEMORY_ADDRESS錯誤。 因為記憶體寫入可能會從執行模式發生,所以此失敗可能會在複製作業已開始之後發生,因此可能會導致目標進程中的記憶體損毀。 基於這個理由,此函式必須小心使用,而且失敗可能嚴重。

WaitForPausingEventProcessingComplete(Int32, Boolean)

您可以從監視元件呼叫這個方法,以等候任何非停止且暫停事件處理,以及目前正在完成的任何 IDkmProcessContinueNotification 處理。 此外,藉由確定目標進程有機會執行,嘗試中止 func-evas 時,這會很有説明。 請注意,此方法不會提供任何保證,因為不會立即停止事件,因此程式代碼不應該假設從此 API 傳回之後,不會發生停止的事件處理。

位置條件約束:必須從監視器元件 (元件層級 < 100,000) 呼叫 API。

此 API 是在 Visual Studio 15 Update 6 (DkmApiVersion.VS15Update6) 中引進。

WriteDump(DkmDumpType, String, DkmThread)

這個方法會將進程的記憶體傾印寫到指定的路徑。

WriteMemory(UInt64, Byte[])

將記憶體寫入目標進程。 在數據傳輸發生之前,系統會確認指定大小的基位址和記憶體中的所有數據都可供寫入存取,如果無法存取,則函式會引發E_INVALID_MEMORY_ADDRESS錯誤。

適用於