Udostępnij za pośrednictwem


DkmGPUComputeThread Klasa

Definicja

DkmGPUComputeThread reprezentuje wątek obliczeniowy uruchomiony w procesie docelowym procesora GPU.

public ref class DkmGPUComputeThread : Microsoft::VisualStudio::Debugger::DkmThread
[System.Runtime.InteropServices.Guid("40cbb26d-05f5-dc30-49f9-797b17f2ab9e")]
public class DkmGPUComputeThread : Microsoft.VisualStudio.Debugger.DkmThread
[<System.Runtime.InteropServices.Guid("40cbb26d-05f5-dc30-49f9-797b17f2ab9e")>]
type DkmGPUComputeThread = class
    inherit DkmThread
Public Class DkmGPUComputeThread
Inherits DkmThread
Dziedziczenie
Dziedziczenie
DkmGPUComputeThread
Atrybuty

Właściwości

ComputeKernel

DkmGPUComputeKernel reprezentuje jądro obliczeniowe procesora GPU uruchomione w procesie docelowym.

Connection

Reprezentuje to połączenie między monitorem a środowiskiem IDE. Może to być połączenie lokalne, jeśli monitor jest uruchomiony w tym samym procesie co środowisko IDE, lub może być połączeniem zdalnym. W procesie monitorowania istnieje tylko jedno połączenie.

(Odziedziczone po DkmThread)
GlobalThreadIndex

Unikatowy dla indeksu wątku obliczeniowego jądra.

IsMainThread

Prawda, jeśli jest to główny wątek tego procesu. Główny wątek to pierwszy wątek do uruchomienia.

(Odziedziczone po DkmThread)
IsUnloaded

Zwraca wartość true, jeśli dla tego obiektu zostało zgłoszone zdarzenie "zwolniony" (na przykład: DkmThread::Unload jest wywoływane) lub jeśli obiekt został zamknięty. Należy pamiętać, że podczas sprawdzania tego stanu należy zachować ostrożność, ponieważ bez synchronizacji zwrócony stan może nie być już dokładny po odczytaniu instrukcji.

(Odziedziczone po DkmDataContainer)
NativeStartAddress

Jeśli jest dostępna, jest to adres początkowy win32 tego wątku (wartość przekazana do interfejsu API CreateThread). Wartość nie zawsze będzie dostępna, na przykład jest ogólnie niedostępna w scenariuszach, w których wątek został uruchomiony po dołączeniu debugera lub w minidumps.

(Odziedziczone po DkmThread)
NativeThread

[Opcjonalnie] Wątek macierzysty, w którym zgłaszany jest wyjątek, aby powiadomić debugera o dostępności zdarzenia debugowania procesora GPU.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Process

DkmProcess reprezentuje proces docelowy, który jest debugowany. Debuger debuguje procesy, więc jest to podstawowa jednostka debugowania. Proces DkmProcess może reprezentować proces systemowy lub proces wirtualny, taki jak minidumps.

(Odziedziczone po DkmThread)
SystemInformation

Zawiera informacje o systemie komputerowym, w którym działa ten wątek. Jeśli ten wątek działa w obszarze WOW (emulacja 32-bitowa w 64-bitowym systemie operacyjnym), te informacje będą przeznaczone dla podsystemu 32-bitowego, a nie podsystemu 64-bitowego.

(Odziedziczone po DkmThread)
SystemPart

[Opcjonalnie] Opisuje cechy wątku, które są istotne dla pełnego wątku Win32. Obecnie ta wartość jest wymagana, a wszystkie wątki będą miały blok "System". W przyszłości ta wartość może mieć wartość NULL, jeśli element DkmThread reprezentuje coś innego niż pełny wątek Win32.

(Odziedziczone po DkmThread)
TebAddress

Adres w procesie docelowym, w którym jest przechowywany blok środowiska wątku Win32. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą struktury TEB w witrynie MSDN.

(Odziedziczone po DkmThread)
UniqueId

Identyfikator GUID, który jednoznacznie identyfikuje ten obiekt wątku.

(Odziedziczone po DkmThread)

Metody

BeginFuncEvalExecution(DkmFuncEvalFlags)

Ta metoda służy do wznawiania procesu docelowego, aby można było przeprowadzić ocenę funkcji. Ta funkcja jest wywoływana przez monitor debugowania środowiska uruchomieniowego po skonfigurowaniu oceny funkcji w celu uruchomienia procesu docelowego. Monitor środowiska uruchomieniowego najpierw zaktualizuje kontekst wątku, zaktualizuje dowolną niezbędną pamięć w procesie docelowym i skonfiguruje wszelkie wykrycia, że ocena funkcji została ukończona.

Wywołania tej metody MUSZĄ zawsze wywołać metodę EndFuncEvalExecution przed powrotem z operacji, która wyzwoliła ocenę funkcji. Zachowanie jest niezdefiniowane, jeśli obiekt wywołujący nie zrobi tego.

Ta metoda jest implementowana w monitorze debugowania podstawowego, najpierw aktualizując proces docelowy w trybie oceny funkcji (DkmThread.OnBeginFuncEvalExecution), a następnie wstrzymując i/lub wznawiając wątki określone przez flagi oceny funkcji, a na koniec kontynuując proces docelowy.

Ta metoda może być wywoływana z dowolnego wątku, jednak należy wywołać metodę OnBeginFuncEvalExecution z wątku zdarzeń zatrzymania, więc podstawowy monitor debugowania może wymagać wykonania jako przełącznik wątku w ramach implementacji tej metody. Monitor debugowania podstawowego nie powinien być zwracany z elementu BeginFuncEvalExecution do momentu wznowienia elementu docelowego.

(Odziedziczone po DkmThread)
CanBeginFuncEvalExecution(DkmFuncEvalFlags)

CanBeginFuncEvalExecution można wywołać, aby zrozumieć, czy bieżący stan procesu umożliwia ocenę funkcji. Spowoduje to zwrócenie wartości false, na przykład jeśli podstawowa dm ma nazwę StoppingEventProcessingBegin, ale nie zatrzymajEventProcessingContinue.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

(Odziedziczone po DkmThread)
Create(DkmProcess, UInt64, Boolean, Int64, DkmGPUComputeKernel, DkmThread, DkmThread+System, DkmDataItem)

Twórca nowe wystąpienie obiektu DkmGPUComputeThread.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

Create(DkmProcess, UInt64, Boolean, Int64, DkmGPUComputeKernel, DkmThread+System, DkmDataItem)

Twórca nowe wystąpienie obiektu DkmGPUComputeThread.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

CreateFrameRegisters(DkmUnwoundRegister[], UInt32)

Przekonwertuj tablicę DkmUnwoundRegisters na wystąpienie elementów DkmFrameRegisters zawierających posortowane DkmReadOnlyCollection dkmUnwoundRegisters.

(Odziedziczone po DkmThread)
CreateRegistersObject(Byte[], DkmUnwoundRegister[], DkmUnwoundRegister[])

Tworzy obiekt DkmFrameRegisters z dostarczonej tablicy bajtów zawierającej strukturę Kontekstu Win32.

(Odziedziczone po DkmThread)
EndFuncEvalExecution(DkmFuncEvalFlags)

EndFuncEvalExecution jest wywoływany przez monitor debugowania środowiska uruchomieniowego w wątku zdarzeń, aby zamknąć tryb oceny funkcji. EndFuncEvalExecution zaktualizuje stan wewnętrzny obiektu DkmProcess, aby wskazać, że ocena funkcji została zakończona. Spowoduje to również wysłanie zdarzenia FuncEvalEnded i oznacza proces jako zatrzymany.

Ta metoda może być wywoływana (1) podczas przetwarzania "odebranego" powiadomienia o zdarzeniach zatrzymania -lub- (2) podczas przetwarzania zdarzenia nie zatrzymanego, takiego jak wyjście wątku, -lub- (3), podczas gdy obiekt docelowy jest nadal zatrzymany, na przykład jeśli konfiguracja oceny funkcji nie powiodła się.

(Odziedziczone po DkmThread)
GetContext(Int32, Byte[])

Uzyskaj bieżący kontekst (zarejestruj wartości) wątku.

(Odziedziczone po DkmThread)
GetContext(Int32, Void*, Int32)

Uzyskaj bieżący kontekst (zarejestruj wartości) wątku.

(Odziedziczone po DkmThread)
GetCurrentFrameInfo(UInt64, UInt64, UInt64)

Polecenie GetCurrentFrameInfo służy do uzyskiwania podstawy ramki i zwracania adresu dla bieżącego kontekstu wątku. Uwzględnia to pominięcie wskaźnika ramki, a jeśli bieżący wskaźnik instrukcji znajduje się w prologu, epilogu itp. UWAGA: W niektórych przypadkach będzie to nieprawidłowe, jeśli ramka ma pominięcie wskaźnika ramki i nie ma załadowanych symboli.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmThread)
GetCurrentFuncEvalMode()

Funkcja GetCurrentFuncEvalMode może być wywoływana przez składniki w ramach przetwarzania zdarzeń w celu określenia, czy funkcja ewaluacyjna jest włączona. Ta funkcja może być wywoływana tylko w ramach przetwarzania zdarzeń.

(Odziedziczone po DkmThread)
GetCurrentLocation(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentLocationAsyncResult>)

Udostępnia lokalizację wątku, jak widać w oknie wątków lub na liście rozwijanej wątków na pasku narzędzi lokalizacji debugowania.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

(Odziedziczone po DkmThread)
GetCurrentRegisters(DkmUnwoundRegister[])

Zwraca obiekt DkmFrameRegisters zawierający bieżące wartości rejestru wątku.

(Odziedziczone po DkmThread)
GetDataItem<T>()

Pobiera wystąpienie elementu "T", które zostało dodane do tego wystąpienia kontenera. Jeśli ten kontener nie zawiera ciągu "T", ta funkcja zwróci wartość null.

(Odziedziczone po DkmDataContainer)
GetDebuggerSuspensionCount()

Zwróć całkowitą liczbę zawieszenia spowodowanych przez debuger (tj. wywołania do DkmThread::Suspend bez wywołania DkmThread::Resume). Wyklucza to wszelkie zawieszenia zewnętrzne z debugerem.

(Odziedziczone po DkmThread)
GetExtendedRegisters()

Pobiera rozszerzone rejestry z kontekstu wątku.

(Odziedziczone po DkmThread)
GetGroupId(Int32[], Int32)

Pobierz wymiar bloku wątku.

GetManagedThreadProperties(DkmWorkList, DkmCompletionRoutine<DkmGetManagedThreadPropertiesAsyncResult>)

Pobierz właściwości zarządzanego wątku.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

(Odziedziczone po DkmThread)
GetManagedThreadProperties(Int32)

Pobierz właściwości zarządzanego wątku.

(Odziedziczone po DkmThread)
GetMinidumpThreadInfo(DkmMinidumpThreadInfo)

Uzyskuje informacje o stanie wątku przechowywane w minidump.

Ten interfejs API został wprowadzony w programie Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

(Odziedziczone po DkmThread)
GetRegisterDescriptions()

Uzyskaj listę wszystkich opisów rejestru z wątku obliczeniowego procesora GPU.

GetStackAddressRange()

Pobiera limit stosu/bazę stosu danego wątku. Należy pamiętać, że jego wartość może ulec zmianie w czasie, na przykład w przypadku włókien.

(Odziedziczone po DkmThread)
GetSteppers()

GetSteppers wylicza elementy DkmStepper tego obiektu DkmThread.

(Odziedziczone po DkmThread)
GetSuspensionCount(Boolean)

Zwróć bieżącą liczbę zawieszenia tego wątku.

(Odziedziczone po DkmThread)
GetSuspensionCount(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSuspensionCountAsyncResult>)

Zwróć bieżącą liczbę zawieszenia tego wątku.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

(Odziedziczone po DkmThread)
GetThisGroupDimension(Int32[], Int32)

Pobierz wymiar bloku wątku.

GetThisThreadDimension(Int32[], Int32)

Pobierz wymiar bloku wątku.

GetThreadCurrentWinRtErrorInfo()

Polecenie GetThreadCurrentWinRtErrorInfo służy do pobierania adresu bieżącego obiektu IErrorInfo dla tego wątku.

Ten interfejs API został wprowadzony w programie Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Odziedziczone po DkmThread)
GetThreadId(Int32[], Int32)

Pobierz wymiar bloku wątku.

GetTlsValue(Int32)

Pobiera wartość w miejscu magazynu lokalnego wątku debuggee (TLS) dla określonego indeksu TLS. Każdy wątek procesu ma własne miejsce dla każdego indeksu TLS.

(Odziedziczone po DkmThread)
GetTopStackFrame()

Zwraca górną ramkę stosu wywołań dla wątku. Ta wartość jest zwykle buforowana po pierwszym przejściu stosu i wyczyszczonej po kontynuowaniu. Jest to możliwe tylko do wywołania powyżej dostawcy stosu w procesie klienta. Aby uzyskać górną ramkę w procesie serwera, wywołaj metodę GetTopStackWalkFrame.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika IDE (poziom > składnika 100 000).

(Odziedziczone po DkmThread)
GetTopStackWalkFrame(DkmRuntimeInstance)

Zwróć ramkę stosu górnego dla wątku. Ta ramka może pochodzić z wystąpienia środowiska uruchomieniowego lub odwijać monitor. Można to wywołać tylko z procesu serwera. Aby uzyskać górną ramkę w procesie klienta, użyj polecenia GetTopStackFrame.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmThread)
GetVolatileFlags()

Pobierz flagi nietrwałe dotyczące wątku. Na przykład należy zwrócić, jeśli wątek jest wątkiem zaplanowanym przez użytkownika.

(Odziedziczone po DkmThread)
GetVolatileFlags(DkmWorkList, DkmCompletionRoutine<DkmGetVolatileFlagsAsyncResult>)

Pobierz flagi nietrwałe dotyczące wątku. Na przykład należy zwrócić, jeśli wątek jest wątkiem zaplanowanym przez użytkownika.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

(Odziedziczone po DkmThread)
GetVolatileProperties(DkmWorkList, DkmCompletionRoutine<DkmGetVolatilePropertiesAsyncResult>)

Pobieranie właściwości dynamicznych wątku.

Ta metoda dołączy nowy element roboczy do określonej listy roboczej i powróci po dołączeniu elementu roboczego. Rzeczywiste przetwarzanie elementu roboczego jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony, że żądanie zostało ukończone przez procedurę ukończenia.

(Odziedziczone po DkmThread)
GetVolatileProperties(Int32, UInt64)

Pobieranie właściwości dynamicznych wątku.

(Odziedziczone po DkmThread)
IsStoppingEventQueued(Boolean)

Wskazuje, czy dany wątek ma zdarzenie zatrzymania w kolejce. Te informacje są używane przez menedżera wykonywania, aby zdecydować, czy wątek może zostać poślizgnięty.

(Odziedziczone po DkmThread)
OnBeginFuncEvalExecution(DkmFuncEvalFlags)

Funkcja OnBeginFuncEvalExecution jest wywoływana przez podstawowy monitor debugowania w wątku zdarzenia. Ta metoda jest wywoływana w ramach implementacji IDkmBaseFuncEvalService.BeginFuncEvalExecution, która jest wywoływana w celu wznowienia procesu oceny funkcji. OnBeginFuncEvalExecution zaktualizuje stan wewnętrzny obiektu DkmProcess, aby wskazać, że ocena funkcji jest w toku. Spowoduje to również wysłanie zdarzenia FuncEvalStarting i oznaczy proces jako uruchomiony, dzięki czemu żadne operacje, które wymagają zatrzymanego procesu, będą dozwolone.

(Odziedziczone po DkmThread)
OnContinueExecution()

OnContinueExecution jest wywoływany przez podstawowy monitor debugowania w wątku zdarzenia. Ta metoda jest wywoływana jako część implementacji IDkmContinueExecution.ContinueExecution, która jest używana przez środowisko IDE do kontynuowania procesu docelowego. Ta metoda jest używana przez dyspozytor do wysyłania zdarzeń zatrzymania, które nie mogły zostać przetworzone wcześniej, lub zaktualizowania wewnętrznego stanu obiektu DkmProcess w celu wskazania, że proces docelowy jest uruchomiony. Przed oznaczeniem procesu jako uruchomionego dyspozytor wyśle zdarzenie Kontynuuj.

Podstawowy monitor debugowania powinien oczekiwać ponownego wywołania, gdy jest on w tej metodzie.

(Odziedziczone po DkmThread)
OnEmbeddedBreakpointHit(DkmInstructionAddress, Boolean)

Zgłoś zdarzenie EmbeddedBreakpointHit. Składniki, które implementują interfejs ujścia zdarzeń, otrzymają powiadomienie o zdarzeniu. Ta metoda spowoduje w kolejce zdarzenie, a kontrolka natychmiast powróci do elementu wywołującego.

(Odziedziczone po DkmThread)
OnInterceptExceptionCompleted(UInt64)

Zgłoś zdarzenie InterceptExceptionCompleted. Składniki, które implementują interfejs ujścia zdarzeń, otrzymają powiadomienie o zdarzeniu. Ta metoda spowoduje w kolejce zdarzenie, a kontrolka natychmiast powróci do elementu wywołującego.

(Odziedziczone po DkmThread)
OnThreadNameChange()

ThreadNameChange jest wysyłany przez dyspozytora, gdy DkmThread::NameChange jest wywoływany przez monitor.

Ten interfejs API został wprowadzony w programie Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

(Odziedziczone po DkmThread)
RaiseExecutionControlException(UInt32)

Interfejs API, który może być wywoływany z elementu IDkmSingleStepCompleteReceived lub IDkmRuntimeBreakpointReceived implementacji, aby wymusić uruchomienie podstawowego dm w celu uruchomienia EXCEPTION_BREAKPOINT lub EXCEPTION_SINGLE_STEP wyjątku w procesie docelowym po wznowieniu wykonywania. Zwykle wyjątek punktu przerwania lub pojedynczego kroku jest niejawnie pomijany. Umożliwia to obsługę EXCEPTION_BREAKPOINT/EXCEPTION_SINGLE_STEP przez programy obsługi wyjątków w procesie docelowym. Ten interfejs API zakończy się niepowodzeniem, jeśli wątek nie znajduje się obecnie w kroku ukończenia lub zdarzenia punktu przerwania.

Ograniczenie lokalizacji: interfejs API musi być wywoływany ze składnika Monitor (poziom < składnika 100 000).

(Odziedziczone po DkmThread)
ReadMemory(UInt64, UInt64, DkmReadMemoryFlags, Byte[])

Odczytaj pamięć docelowego procesu procesora GPU. Metoda jest w klasie DkmGPUComputeThread, ponieważ może odczytywać lokalną pamięć wątku, grupować pamięć współdzieloną lub pamięć globalną.

ReadMemory(UInt64, UInt64, DkmReadMemoryFlags, Void*, Int32)

Odczytaj pamięć docelowego procesu procesora GPU. Metoda jest w klasie DkmGPUComputeThread, ponieważ może odczytywać lokalną pamięć wątku, grupować pamięć współdzieloną lub pamięć globalną.

RemoveDataItem<T>()

Usuń wystąpienie "T" z tego kontenera. Zwykle nie trzeba wywoływać tej metody, ponieważ kontener danych zostanie automatycznie opróżniony po zamknięciu obiektu.

(Odziedziczone po DkmDataContainer)
Resume(Boolean)

Wznów ten wątek.

(Odziedziczone po DkmThread)
SetContext(Byte[])

Zaktualizuj kontekst (zarejestruj wartości) wątku.

(Odziedziczone po DkmThread)
SetDataItem<T>(DkmDataCreationDisposition, T)

Umieść nowy element w kontenerze danych.

(Odziedziczone po DkmDataContainer)
SetExtendedRegisterValue(Int32, ReadOnlyCollection<Byte>)

Ustawia wartość rozszerzonego rejestru w kontekście wątku.

(Odziedziczone po DkmThread)
SetRegisterValue(DkmGPURegisterDescription, ReadOnlyCollection<Byte>)

Ustaw wartość rejestru w wątku obliczeniowym procesora GPU.

SetTlsValue(Int32, UInt64)

Przechowuje wartość w miejscu magazynu lokalnego wątku debuggee (TLS) dla określonego indeksu TLS. Każdy wątek procesu ma własne miejsce dla każdego indeksu TLS.

(Odziedziczone po DkmThread)
Suspend(Boolean)

Wstrzymaj ten wątek.

(Odziedziczone po DkmThread)
Unload(Int32)

Element ThreadExit jest wysyłany przez dyspozytora, gdy element DkmThread::Unload jest wywoływany przez monitor.

Ta metoda może być wywoływana tylko przez składnik, który utworzył obiekt.

(Odziedziczone po DkmThread)
UpdateBufferTag(UInt32)

Sprawdza, czy tag buforu został przekazany do wykonania tego jądra.

ValidateAddress(UInt64)

Zweryfikuj określony adres pamięci procesora GPU.

WriteMemory(UInt64, UInt64, Byte[])

Zapisuje pamięć w docelowym procesie procesora GPU. Metoda jest w DkmGPUComputeThread, ponieważ może zapisywać lokalną pamięć wątku, grupować pamięć współdzieloną lub pamięć globalną.

Dotyczy