共用方式為


DkmVirtualThread 類別

定義

DkmVirtualThread 代表未實際存在於偵錯進程中的線程。

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

public ref class DkmVirtualThread : Microsoft::VisualStudio::Debugger::DkmThread
[System.Runtime.InteropServices.Guid("bec7987a-48f1-dd04-3001-8c296365a14f")]
public class DkmVirtualThread : Microsoft.VisualStudio.Debugger.DkmThread
[<System.Runtime.InteropServices.Guid("bec7987a-48f1-dd04-3001-8c296365a14f")>]
type DkmVirtualThread = class
    inherit DkmThread
Public Class DkmVirtualThread
Inherits DkmThread
繼承
繼承
DkmVirtualThread
屬性

屬性

Connection

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

(繼承來源 DkmThread)
IsMainThread

如果這是這個進程的主要線程,則為 True。 主線程是要啟動的第一個線程。

(繼承來源 DkmThread)
IsUnloaded

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

(繼承來源 DkmDataContainer)
NativeStartAddress

如果有的話,這是此線程的 Win32 開始位址, (傳遞至 CreateThread API) 的值。 例如,在附加調試程序之後啟動線程的案例中,通常無法使用此值,或是在迷你記憶體取中提供。

(繼承來源 DkmThread)
Process

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

(繼承來源 DkmThread)
SystemInformation

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

(繼承來源 DkmThread)
SystemPart

[選擇性]描述與完整 Win32 線程相關的線程特性。 目前,這個值是必要的,而且所有線程都會有 「系統」區塊。 未來,如果 DkmThread 代表完整 Win32 線程以外的專案,這個值可能是 NULL。

(繼承來源 DkmThread)
TebAddress

目標進程內的位址,其中儲存 Win32 線程環境區塊。 如需詳細資訊,請參閱 MSDN 中 TEB 結構的檔。

(繼承來源 DkmThread)
UniqueId

可唯一識別此線程物件的 Guid。

(繼承來源 DkmThread)

方法

BeginFuncEvalExecution(DkmFuncEvalFlags)

這個方法可用來繼續目標進程,以便進行函式評估。 在運行時間偵錯監視器設定函式評估,以便執行目標進程之後,就會呼叫此函式。 運行時間監視器會先更新線程內容、更新目標進程中的任何必要記憶體,以及設定函式評估已完成的任何偵測。

此方法的呼叫端必須一律呼叫 EndFuncEvalExecution,再從觸發函式評估的作業傳回。 如果呼叫端無法這麼做,則行為未定義。

此方法會在基底偵錯監視器中實作,方法是先將目標進程更新為在函式評估模式中, (DkmThread.OnBeginFuncEvalExecution) ,然後暫停和/或繼續線程,如函式評估旗標所指定,最後繼續目標進程。

此方法可以從任何線程呼叫,不過 OnBeginFuncEvalExecution 必須從停止事件線程呼叫,因此基底偵錯監視器可能需要在實作此方法時執行線程參數。 在目標繼續之後,基底偵錯監視器不應該從 BeginFuncEvalExecution 傳回。

(繼承來源 DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution 可以呼叫,以了解進程的目前狀態是否允許函式評估。 例如,如果基底 DM 已呼叫 StoppingEventProcessingBegin,但不會讓 StoppingEventProcessingContinue 傳回 false。

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

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

(繼承來源 DkmThread)
Create(DkmProcess, DkmThread+System, DkmDataItem)

Create 新的 DkmVirtualThread 物件實例。

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

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

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

將 DkmUnwoundRegisters 的陣列轉換成 DkmFrameRegisters 的實例,其中包含 DkmUnwoundRegisters 的已排序 DkmReadOnlyCollection。

(繼承來源 DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

從包含 Win32 CONTEXT 結構的提供的位元組陣列建立 DkmFrameRegisters 物件。

(繼承來源 DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution 是由事件線程上的運行時間偵錯監視器呼叫,以結束函式評估模式。 EndFuncEvalExecution 會更新 DkmProcess 對象的內部狀態,以指出函式評估已結束。 這也會傳送 FuncEvalEnded 事件,並將進程標示為已停止。

在處理「已接收」停止事件通知時,可能會呼叫這個方法 (1) ,或在處理線程結束、-或- (3) 等非停止事件時, (2) ,例如,如果函式評估設定失敗。

(繼承來源 DkmThread)
GetContext(Int32, Byte[])

取得線程) 的目前內容 (緩存器值。

(繼承來源 DkmThread)
GetContext(Int32, Void*, Int32)

取得線程) 的目前內容 (緩存器值。

(繼承來源 DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

GetCurrentFrameInfo 可用來取得線程目前內容的框架基底和傳回位址。 這會將框架指標省略納入考慮,如果目前的指令指標位於初構、結尾等...注意:在某些情況下,如果框架有框架指標省略,而且沒有載入符號,就會發生錯誤。

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

(繼承來源 DkmThread)
GetCurrentFuncEvalMode()

GetCurrentFuncEvalMode 可由元件呼叫為事件處理的一部分,以判斷是否啟用函式評估。 此函式只能呼叫作為事件處理的一部分。

(繼承來源 DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

提供線程的位置,如線程視窗中可見,或偵錯位置工具列中的線程下拉式清單。

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

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

(繼承來源 DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

會傳回包含線程目前緩存器值的 DkmFrameRegisters 物件。

(繼承來源 DkmThread)
GetDataItem<T>()

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

(繼承來源 DkmDataContainer)
GetDebuggerSuspensionCount()

傳回調試程式 (所造成的暫停總數,也就是呼叫 DkmThread::Suspend 而不呼叫 DkmThread::Resume) 。 這會排除調試程式外部的任何暫停。

(繼承來源 DkmThread)
GetExtendedRegisters()

從線程內容取得擴充緩存器。

(繼承來源 DkmThread)
GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

取得受控線程的屬性。

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

(繼承來源 DkmThread)
GetManagedThreadProperties(Int32)

取得受控線程的屬性。

(繼承來源 DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

取得儲存在Minidump中的線程狀態資訊。

此 API 是在 Visual Studio 17 RTM (DkmApiVersion.VS17RTM) 中引進。

(繼承來源 DkmThread)
GetStackAddressRange()

擷取指定線程的堆疊限制/堆棧基底。 請注意,此值可能會隨著時間變更,例如,在光纖的情況下。

(繼承來源 DkmThread)
GetSteppers()

GetSteppers 會列舉這個 DkmThread 物件的 DkmStepper 元素。

(繼承來源 DkmThread)
GetSuspensionCount(Boolean)

傳回此線程目前的暫停計數。

(繼承來源 DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

傳回此線程目前的暫停計數。

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

(繼承來源 DkmThread)
GetThreadCurrentWinRtErrorInfo()

GetThreadCurrentWinRtErrorInfo 可用來取得此線程目前 IErrorInfo 物件的位址。

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

(繼承來源 DkmThread)
GetTlsValue(Int32)

針對指定的 TLS 索引,擷取偵錯線程的線程本機記憶體 (TLS) 位置中的值。 處理序的每個執行緒都有自己專用於每個 TLS 索引的位置。

(繼承來源 DkmThread)
GetTopStackFrame()

傳回線程的上層呼叫堆疊框架。 此值通常會在第一個堆疊逐步解說之後快取,並在繼續時清除。 這隻能在客戶端進程中的堆疊提供者上方呼叫。 若要在伺服器進程中取得頂端框架,請呼叫 GetTopStackWalkFrame。

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

(繼承來源 DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

傳回線程的上層堆疊框架。 此框架可能來自運行時間實例或監視器回溯器。 這隻能從伺服器進程呼叫。 若要在用戶端程式中取得頂端框架,請使用 GetTopStackFrame。

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

(繼承來源 DkmThread)
GetVolatileFlags()

取得有關線程的變動性旗標。 例如,如果線程是使用者模式排程線程,則傳回 。

(繼承來源 DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

取得有關線程的變動性旗標。 例如,如果線程是使用者模式排程線程,則傳回 。

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

(繼承來源 DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

取得線程的動態屬性。

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

(繼承來源 DkmThread)
GetVolatileProperties(Int32, UInt64)

取得線程的動態屬性。

(繼承來源 DkmThread)
IsStoppingEventQueued(Boolean)

指出指定的線程在佇列中是否有停止事件。 執行管理員會使用這項資訊來決定線程是否可能遭到名單。

(繼承來源 DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

OnBeginFuncEvalExecution 是由事件線程上的基底偵錯監視器所呼叫。 這個方法會呼叫為實作 IDkmBaseFuncEvalService.BeginFuncEvalExecution 的一部分,這是為了繼續函式評估的程式所呼叫。 OnBeginFuncEvalExecution 會更新 DkmProcess 對象的內部狀態,以指出函式評估正在進行中。 這也會傳送 FuncEvalStarting 事件,並將進程標示為執行中,因此不允許任何需要已停止進程的作業。

(繼承來源 DkmThread)
OnContinueExecution()

OnContinueExecution 是由事件線程上的基底偵錯監視器所呼叫。 這個方法會在實作 IDkmContinueExecution.ContinueExecution 中呼叫,這是 IDE 用來繼續目標程式的一部分。 發送器會使用此方法來分派先前無法處理的停止事件,或更新 DkmProcess 物件的內部狀態,以指出目標進程目前正在執行。 將進程標示為執行之前,發送器會傳送Continue事件。

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

(繼承來源 DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

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

(繼承來源 DkmThread)
OnInterceptExceptionCompleted(UInt64)

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

(繼承來源 DkmThread)
OnThreadNameChange()

當監視器叫用 DkmThread::NameChange 時,發送器會傳送 ThreadNameChange。

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

(繼承來源 DkmThread)
RaiseExecutionControlException(UInt32)

可從 IDkmSingleStepCompleteReceived 或 IDkmRuntimeBreakpointReceived 實作呼叫的 API,強制基底 DM 在目標進程中引發執行時EXCEPTION_BREAKPOINT或EXCEPTION_SINGLE_STEP例外狀況。 一般而言,會隱含隱藏斷點或單一步驟例外狀況。 這可讓目標進程內的例外狀況處理程式處理EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP。 如果線程目前不在步驟完成或斷點事件中,此 API 將會失敗。

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

(繼承來源 DkmThread)
RemoveDataItem<T>()

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

(繼承來源 DkmDataContainer)
Resume(Boolean)

繼續此線程。

(繼承來源 DkmThread)
SetContext(Byte[])

更新線程) 的內容 (緩存器值。

(繼承來源 DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

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

(繼承來源 DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

在線程的內容中設定擴充緩存器的值。

(繼承來源 DkmThread)
SetTlsValue(Int32, UInt64)

將值儲存在偵錯線程的線程本機記憶體中, (指定 TLS 索引的 TLS) 位置。 處理序的每個執行緒都有自己專用於每個 TLS 索引的位置。

(繼承來源 DkmThread)
Suspend(Boolean)

暫停此線程。

(繼承來源 DkmThread)
Unload(Int32)

當監視器叫用 DkmThread::Unload 時,發送器會傳送 ThreadExit。

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

(繼承來源 DkmThread)

適用於