Share via


DkmVirtualThread Třída

Definice

DkmVirtualThread představuje vlákno, které v ladicím procesu fyzicky neexistuje.

Toto rozhraní API bylo představeno v sadě 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
Dědičnost
Dědičnost
DkmVirtualThread
Atributy

Vlastnosti

Connection

To představuje připojení mezi monitorováním a integrovaným vývojovém prostředím. Může se jednat buď o místní připojení, pokud monitor běží ve stejném procesu jako integrované vývojové prostředí, nebo se může jednat o vzdálené připojení. V procesu monitorování existuje pouze jedno připojení.

(Zděděno od DkmThread)
IsMainThread

Hodnota True, pokud se jedná o hlavní vlákno tohoto procesu. Hlavní vlákno je první vlákno, které se má spustit.

(Zděděno od DkmThread)
IsUnloaded

Vrátí hodnotu true, pokud byla pro tento objekt vyvolána událost unloaded (příklad: DkmThread::Unload je volána) nebo pokud byl objekt uzavřen. Mějte na paměti, že při kontrole tohoto stavu je potřeba střídmět, protože bez synchronizace nemusí být vrácený stav po přečtení přesný.

(Zděděno od DkmDataContainer)
NativeStartAddress

Pokud je k dispozici, jedná se o počáteční adresu Win32 tohoto vlákna (hodnota předaná rozhraní CreateThread API). Hodnota nebude vždy k dispozici, například obecně není k dispozici ve scénářích, kde bylo vlákno spuštěno po připojení ladicího programu, nebo v minidumps.

(Zděděno od DkmThread)
Process

DkmProcess představuje cílový proces, který se ladí. Ladicí program ladí procesy, takže se jedná o základní jednotku ladění. DkmProcess může představovat systémový proces nebo virtuální proces, například minidumps.

(Zděděno od DkmThread)
SystemInformation

Obsahuje informace o systému počítače, ve kterém je spuštěné toto vlákno. Pokud toto vlákno běží pod wow (32bitová emulace v 64bitovém operačním systému), budou tyto informace pro 32bitový subsystém, nikoli pro 64bitový subsystém.

(Zděděno od DkmThread)
SystemPart

[Volitelné] Popisuje vlastnosti vlákna, které jsou relevantní pro úplné vlákno Win32. V současné době je tato hodnota povinná a všechna vlákna budou mít blok System. V budoucnu může být tato hodnota NULL, pokud DkmThread představuje něco jiného než úplné vlákno Win32.

(Zděděno od DkmThread)
TebAddress

Adresa v rámci cílového procesu, kde je uložený blok prostředí podprocesu Win32. Další informace najdete v dokumentaci ke struktuře TEB na webu MSDN.

(Zděděno od DkmThread)
UniqueId

Identifikátor GUID, který jednoznačně identifikuje tento objekt vlákna.

(Zděděno od DkmThread)

Metody

BeginFuncEvalExecution(DkmFuncEvalFlags)

Tato metoda se používá k obnovení cílového procesu, aby mohlo dojít k vyhodnocení funkce. Tato funkce je volána monitorováním ladění modulu runtime poté, co nastavil vyhodnocení funkce, aby se spustil cílový proces. Monitorování modulu runtime nejprve aktualizuje kontext vlákna, aktualizuje veškerou potřebnou paměť v cílovém procesu a nastaví jakoukoli detekci dokončení vyhodnocení funkce.

Volající této metody MUSÍ vždy volat EndFuncEvalExecution před návratem z operace, která aktivovala vyhodnocení funkce. Chování není definováno, pokud se volajícímu nepodaří.

Tato metoda je implementována v základním monitorování ladění tak, že nejprve aktualizuje cílový proces tak, aby byl v režimu vyhodnocení funkce (DkmThread.OnBeginFuncEvalExecution), poté pozastaví a/nebo obnovit vlákna podle příznaků vyhodnocení funkce a nakonec pokračuje v cílovém procesu.

Tato metoda může být volána z libovolného vlákna, ale OnBeginFuncEvalExecution musí být volána z zastavování vlákna podprocesu, takže základní monitorování ladění může být nutné provést jako přepínač vlákna jako součást implementace této metody. Základní monitorování ladění by se nemělo vrátit z BeginFuncEvalExecution, dokud se neobnoví cíl.

(Zděděno od DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution lze volat, abyste zjistili, jestli aktuální stav procesu umožňuje vyhodnocení funkcí. Vrátí hodnotu false, například pokud základní DM má název StoppingEventProcessingBegin, ale ne StoppingEventProcessingContinue.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

(Zděděno od DkmThread)
Create(DkmProcess, DkmThread+System, DkmDataItem)

Create novou instanci objektu DkmVirtualThread.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

Toto rozhraní API bylo představeno v sadě Visual Studio 16 Update 2 (DkmApiVersion.VS16Update2).

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

Převeďte pole DkmUnwoundRegisters na instanci DkmFrameRegisters obsahující seřazené DkmReadOnlyCollection DkmUnwoundRegisters.

(Zděděno od DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

Vytvoří objekt DkmFrameRegisters ze zadaného pole bajtů obsahující strukturu Kontextu Win32.

(Zděděno od DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution je volána monitorováním ladění modulu runtime ve vlákně události k ukončení režimu vyhodnocení funkce. EndFuncEvalExecution aktualizuje interní stav objektu DkmProcess, aby indikoval, že vyhodnocení funkce skončilo. Tím se také odešle událost FuncEvalEnded a proces se označí jako zastavený.

Tuto metodu lze volat (1) při zpracování "přijatého" zastavování oznámení události nebo (2) při zpracování nepřestavné události, jako je ukončení vlákna, nebo (3), zatímco cíl je stále zastaven, například pokud se nepodařilo nastavit vyhodnocení funkce.

(Zděděno od DkmThread)
GetContext(Int32, Byte[])

Získejte aktuální kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
GetContext(Int32, Void*, Int32)

Získejte aktuální kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

GetCurrentFrameInfo slouží k získání základu rámce a návratové adresy pro aktuální kontext vlákna. To bere v úvahu vynechání ukazatele rámce a pokud je aktuální ukazatel instrukce v prologu, epilogu atd. POZNÁMKA: V některých případech to bude špatně, pokud rámeček obsahuje vynechání ukazatele rámce a nejsou načteny žádné symboly.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
GetCurrentFuncEvalMode()

GetCurrentFuncEvalMode můžou komponenty volat jako součást zpracování událostí, aby se zjistilo, jestli je povolené vyhodnocení funkce. Tuto funkci lze volat pouze jako součást zpracování událostí.

(Zděděno od DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

Poskytuje umístění vlákna, jak je vidět v okně vláken, nebo vlákna rozevíracího seznamu na panelu nástrojů umístění ladění.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

(Zděděno od DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

Vrátí DkmFrameRegisters objekt obsahující aktuální hodnoty registru vlákna.

(Zděděno od DkmThread)
GetDataItem<T>()

Získá instanci T, která byla přidána do této instance kontejneru. Pokud tento kontejner neobsahuje T, vrátí tato funkce hodnotu null.

(Zděděno od DkmDataContainer)
GetDebuggerSuspensionCount()

Vrátí celkový počet pozastavení způsobených ladicím programem (tj. volání DkmThread::Suspend bez volání DkmThread::Resume). Tím se vyloučí všechna pozastavení mimo ladicí program.

(Zděděno od DkmThread)
GetExtendedRegisters()

Získá rozšířené registry z kontextu vlákna.

(Zděděno od DkmThread)
GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

Získání vlastností spravovaného vlákna

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetManagedThreadProperties(Int32)

Získání vlastností spravovaného vlákna

(Zděděno od DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

Získá informace o stavu vlákna uložené v Minidump.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Zděděno od DkmThread)
GetStackAddressRange()

Načte limit zásobníku nebo základ zásobníku daného vlákna. Všimněte si, že je možné, aby se tato hodnota v průběhu času měnila, například v případě vláken.

(Zděděno od DkmThread)
GetSteppers()

GetSteppers vytvoří výčet prvků DkmStepper tohoto objektu DkmThread.

(Zděděno od DkmThread)
GetSuspensionCount(Boolean)

Vrátí aktuální počet pozastavení tohoto vlákna.

(Zděděno od DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

Vrátí aktuální počet pozastavení tohoto vlákna.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetThreadCurrentWinRtErrorInfo()

GetThreadCurrentWinRtErrorInfo slouží k získání adresy aktuálního objektu IErrorInfo pro toto vlákno.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Zděděno od DkmThread)
GetTlsValue(Int32)

Načte hodnotu v slotu místního úložiště vláken (TLS) vlákna ladění pro zadaný index TLS. Každé vlákno procesu má vlastní slot pro každý index TLS.

(Zděděno od DkmThread)
GetTopStackFrame()

Vrátí horní rámec zásobníku volání pro vlákno. Tato hodnota se obvykle ukládá do mezipaměti po prvním procházení zásobníku a při pokračování se vymaže. Toto je možné volat pouze nad poskytovatelem zásobníku v klientském procesu. Chcete-li získat horní rámec v procesu serveru, zavolejte GetTopStackWalkFrame.

Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000).

(Zděděno od DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

Vrátí horní rámec zásobníku pro vlákno. Tento rámec může pocházet z instance modulu runtime nebo z odvíječe monitoru. Tuto možnost lze volat pouze z procesu serveru. Pokud chcete získat horní rámec v procesu klienta, použijte GetTopStackFrame.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
GetVolatileFlags()

Získejte nestálé příznaky o vlákně. Například vrátit, pokud vlákno je vlákno naplánované v uživatelském režimu.

(Zděděno od DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

Získejte nestálé příznaky o vlákně. Například vrátit, pokud vlákno je vlákno naplánované v uživatelském režimu.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

Získá dynamické vlastnosti vlákna.

Tato metoda připojí novou pracovní položku k zadanému pracovnímu seznamu a vrátí se po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající obdrží oznámení o dokončení žádosti prostřednictvím rutiny dokončení.

(Zděděno od DkmThread)
GetVolatileProperties(Int32, UInt64)

Získá dynamické vlastnosti vlákna.

(Zděděno od DkmThread)
IsStoppingEventQueued(Boolean)

Určuje, jestli má dané vlákno ve frontě událost zastavení. Tyto informace používá správce provádění k rozhodnutí, zda vlákno může být vysunutí.

(Zděděno od DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

OnBeginFuncEvalExecution je volána základní ladicí monitor ve vlákně události. Tato metoda je volána jako součást implementace IDkmBaseFuncEvalService.BeginFuncEvalExecution, která je volána k obnovení procesu vyhodnocení funkce. OnBeginFuncEvalExecution aktualizuje interní stav objektu DkmProcess, aby indikuje, že probíhá vyhodnocení funkce. Tím se také odešle událost FuncEvalStarting a označí se proces jako spuštěný, takže nebudou povoleny žádné operace, které vyžadují zastavený proces.

(Zděděno od DkmThread)
OnContinueExecution()

OnContinueExecution je volána základním monitorováním ladění ve vlákně události. Tato metoda je volána jako součást implementace IDkmContinueExecution.ContinueExecution, což je to, co používá integrované vývojové prostředí k pokračování v cílovém procesu. Tuto metodu používá dispečer buď k odeslání zastavovací události, které nebylo možné zpracovat dříve, nebo k aktualizaci interního stavu objektu DkmProcess, aby bylo možné označit, že cílový proces je nyní spuštěn. Před označením procesu jako spuštěného odešle dispečer událost Continue.

Základní monitorování ladění by mělo být očekáváno, že bude opakovaně volána, dokud je v této metodě.

(Zděděno od DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

Vyvolání EmbeddedBreakpointHit události Součásti, které implementují rozhraní jímky událostí, obdrží oznámení o události. Tato metoda zařadí událost do fronty a ovládací prvek se okamžitě vrátí volajícímu.

(Zděděno od DkmThread)
OnInterceptExceptionCompleted(UInt64)

Vytvořte InterceptExceptionCompleted událost. Součásti, které implementují rozhraní jímky událostí, obdrží oznámení o události. Tato metoda zařadí událost do fronty a ovládací prvek se okamžitě vrátí volajícímu.

(Zděděno od DkmThread)
OnThreadNameChange()

ThreadNameChange je odeslán dispečer, když DkmThread::NameChange je vyvolána monitorováním.

Toto rozhraní API bylo zavedeno v sadě Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

(Zděděno od DkmThread)
RaiseExecutionControlException(UInt32)

Rozhraní API, které může být volána z implementace IDkmSingleStepCompleteReceived nebo IDkmRuntimeBreakpointReceived, aby se při obnovení provádění základního dm aktivovala EXCEPTION_BREAKPOINT nebo EXCEPTION_SINGLE_STEP výjimka v cílovém procesu. Za normálních okolností je zarážka nebo výjimka v jednom kroku implicitně potlačena. To umožňuje, aby EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP zpracovávaly obslužné rutiny výjimek v rámci cílového procesu. Toto rozhraní API selže, pokud vlákno není aktuálně u události dokončení kroku nebo zarážky.

Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000).

(Zděděno od DkmThread)
RemoveDataItem<T>()

Odeberte z tohoto kontejneru instanci T. Obvykle není nutné volat tuto metodu, protože kontejner dat se při zavření objektu automaticky vyprázdní.

(Zděděno od DkmDataContainer)
Resume(Boolean)

Pokračovat v tomto vlákně.

(Zděděno od DkmThread)
SetContext(Byte[])

Aktualizujte kontext (hodnoty registru) vlákna.

(Zděděno od DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

Do kontejneru dat umístěte novou položku.

(Zděděno od DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

Nastaví hodnotu rozšířeného registru v kontextu vlákna.

(Zděděno od DkmThread)
SetTlsValue(Int32, UInt64)

Uloží hodnotu v slotu místního úložiště vláken (TLS) ladicího vlákna pro zadaný index TLS. Každé vlákno procesu má vlastní slot pro každý index TLS.

(Zděděno od DkmThread)
Suspend(Boolean)

Pozastavit toto vlákno.

(Zděděno od DkmThread)
Unload(Int32)

ThreadExit je odeslán dispečer, když DkmThread::Unload je vyvolána monitorem.

Tuto metodu může volat pouze komponenta, která objekt vytvořila.

(Zděděno od DkmThread)

Platí pro