DkmModuleInstance Klasa

Definicja

Klasa wystąpienia modułu reprezentuje pakiet kodu (np. dll lub exe), który jest ładowany do określonego procesu w określonej lokalizacji. Obiekty wystąpień modułów są 1:1 z koncepcją środowiska wykonawczego w pakiecie kodu. Na przykład w kodzie natywnym obiekty wystąpień modułów są 1:1 z adresem podstawowym.

Klasy pochodne: DkmClrModuleInstance, DkmClrNcModuleInstance, DkmCustomModuleInstance, DkmNativeModuleInstance, DkmClrNcContainerModuleInstance

public ref class DkmModuleInstance abstract : Microsoft::VisualStudio::Debugger::DkmDataContainer
[System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")]
public abstract class DkmModuleInstance : Microsoft.VisualStudio.Debugger.DkmDataContainer
[<System.Runtime.InteropServices.Guid("74857b6f-618d-66e3-149e-6cebf4c4123e")>]
type DkmModuleInstance = class
    inherit DkmDataContainer
Public MustInherit Class DkmModuleInstance
Inherits DkmDataContainer
Dziedziczenie
Pochodne
Atrybuty

Właściwości

BaseAddress

Obowiązkowe Adres pamięci początkowej, w której załadowano moduł. Ta wartość będzie równa zero, jeśli moduł nie został załadowany w ciągłym bloku pamięci.

Connection

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

Flags

Flagi wskazujące cechy elementu DkmModuleInstance.

FullName

W pełni kwalifikowana nazwa modułu. W przypadku modułów opartych na plikach jest to pełna ścieżka do modułu (np. c:\windows\system32\kernel32.dll.

IsDisabled

Wskazuje, czy to wystąpienie modułu zostało wyłączone. Wyłączone moduły są w znacznym stopniu ignorowane przez debuger. W przypadku modułów macierzystych zakres adresów wyłączonego modułu jest traktowany jak w przypadku jego niezamapowania. W przypadku modułów CLR wszystkie ramki z tych modułów są ukrywane w stosie wywołań.

IsUnloaded

Zwraca wartość PRAWDA, jeśli zgłoszono zdarzenie "zwolnione" dla tego obiektu (przykład: DkmThread:: Unload jest wywoływana) lub jeśli obiekt został zamknięty. Należy zauważyć, że należy zachować ostrożność podczas sprawdzania tego stanu jako, bez synchronizacji, zwrócony stan może nie być już dokładny po odczytaniu.

(Odziedziczone po DkmDataContainer)
LoadContext

Opis ciągu kontekstu, w którym ten moduł został załadowany. przykład: "Win32" lub "CLR v 2.0.50727: domena domyślna".

LoadOrder

Liczba całkowita liczby wystąpień modułów, które zostały załadowane do i łącznie z tym modułem. Każde wystąpienie środowiska uruchomieniowego śledzi swój własny licznik kolejności ładowania.

MemoryLayout

Wyliczenie wskazujące, w jaki sposób moduł jest określony w pamięci.

MinidumpInfoPart

Obowiązkowe "MinidumpInfoPart" służy do przekazywania dodatkowych informacji o modułach w DkmProcess dla minizrzutu.

Module

Obowiązkowe Reprezentacja modułu obsługi symboli (DkmModule) skojarzonego z tym wystąpieniem modułu. Ta wartość jest początkowo wartością null i jest przypisywana, jeśli symbole są skojarzone z tym wystąpieniem modułu.

Name

Krótka reprezentacja nazwy modułu. W przypadku modułów opartych na plikach jest to nazwa i rozszerzenie pliku (np. kernel32.dll).

Process

DkmProcess reprezentuje proces docelowy, który jest debugowany. Debuger debuguje procesy, więc jest podstawową jednostką debugowania. DkmProcess może reprezentować proces systemowy lub proces wirtualny, taki jak minizrzutów.

RuntimeInstance

Klasa DkmRuntimeInstance reprezentuje środowisko wykonawcze, które jest ładowane do DkmProcess i zawiera kod, który ma być debugowany.

Size

Obowiązkowe Liczba bajtów w regionie pamięci modułu. Ta wartość będzie równa zero, jeśli moduł nie został załadowany w ciągłym bloku pamięci.

SymbolFileId

Obowiązkowe Zawiera informacje, które są konieczne do lokalizowania symboli dla tego modułu. W systemie Win32 te informacje są zawarte w IMAGE_DEBUG_DIRECTORY.

TagValue

DkmModuleInstance jest abstrakcyjną klasą bazową. To Wyliczenie wskazuje klasę pochodną, której wystąpienie jest ten obiekt.

TimeDateStamp

Data/godzina skompilowania załadowanego modułu. Ta wartość jest uzyskiwana z IMAGE_NT_HEADERS załadowanego modułu. Jednostką miary jest wartość FILETIME, która jest wartością 64-bitową reprezentującą liczbę interwałów 100-nanosekund od 1 stycznia 1601 (UTC).

UniqueId

Jednoznacznie identyfikuje obiekt DkmModuleInstance.

Version

Obowiązkowe Informacje o wersji pliku.

Metody

ClearTransitionModuleFlag()

Wystąpienia środowiska uruchomieniowego wywołują tę metodę, aby oznaczyć moduł jako moduł graniczny. Podczas wykonywania kroków środowiska uruchomieniowe powinny sprawdzać, czy krok osiągnął moduł graniczny i zacząć rozstrzygać arbitraż, jeśli ma. Należy pamiętać, że niektóre środowiska uruchomieniowe mogą nie być w stanie honorować tego żądania. Dyspozytor będzie przechowywać liczbę FlagAsTransitionModuleów, które zostały wywołane. Tylko wtedy, gdy zgodna liczba wywołań ClearTransitionModuleFlag nie będzie już uznawana za moduł przejścia.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

Decompile()

Dekompiluje kod dla modułu w języku C# i tworzy nowy przenośny plik PDB z osadzonym źródłem. Wszystkie moduły, które współużytkują ten plik symboli, rozpoczną korzystanie z tych zaktualizowanych symboli.

Ograniczenie lokalizacji: Ta metoda może być wywoływana z poziomu środowiska IDE.

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

Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>)

Dekompiluje kod dla modułu w języku C# i tworzy nowy przenośny plik PDB z osadzonym źródłem. Wszystkie moduły, które współużytkują ten plik symboli, rozpoczną korzystanie z tych zaktualizowanych symboli.

Ta metoda spowoduje dołączenie nowego elementu pracy do określonej listy zadań i zwrócenie po dołączeniu elementu pracy. Rzeczywiste przetwarzanie elementu pracy jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony o tym, że żądanie zostało zakończone przez procedurę ukończenia.

Ograniczenie lokalizacji: Ta metoda może być wywoływana z poziomu środowiska IDE.

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

FlagAsTransitionModule()

Wystąpienia środowiska uruchomieniowego wywołują tę metodę, aby oznaczyć moduł jako moduł graniczny. Podczas wykonywania kroków środowiska uruchomieniowe powinny sprawdzać, czy krok osiągnął moduł graniczny i zacząć rozstrzygać arbitraż, jeśli ma. Należy pamiętać, że niektóre środowiska uruchomieniowe mogą nie być w stanie honorować tego żądania. Dyspozytor będzie przechowywać liczbę wystąpień tego wywołania. Tylko wtedy, gdy została wykonana zgodna liczba wywołań ClearTransitionModuleFlag, moduł nie będzie już traktowany jako moduł przejścia.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

GetDataItem<T>()

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

(Odziedziczone po DkmDataContainer)
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean)

Uzyskaj demontaż zakresu adresów w wystąpieniu modułu debugowanego obiektu.

GetGPUDisassemblySize()

Zwraca rozmiar demontażu w wystąpieniu modułu debugowanego obiektu.

GetNextGPUInstructionAddress(UInt64)

Zwraca adres następnej instrukcji względem adresu początkowego.

GetSymbolLoadInformation()

Zwraca ciąg opisujący różne lokalizacje, w których symbole zostały wyszukane, oraz wynik sprawdzenia tej lokalizacji. Te informacje służą do wypełniania pól "informacje o załadowaniu symboli" w oknie moduły.

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

GetSymbolStatusMessage(Boolean)

Uzyskaj zlokalizowany ciąg opisujący bieżący stan symbolu.

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

IsSuppressed()

Ta metoda umożliwia składnikowi określenie, czy zdarzenie ładowania modułu zostało pominięte.

Ten interfejs API został wprowadzony w programie Visual Studio 12 Update 3 (DkmApiVersion. VS12Update3).

IsTransitionModule()

Zwraca wartość PRAWDA, jeśli każde wystąpienie środowiska uruchomieniowego oflagowano ten moduł jako moduł przejścia.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

IsUserCode()

Określa, czy moduł jest uznawany za kod użytkownika.

Ograniczenie lokalizacji: Tę metodę można wywołać ze składnika IDE. Począwszy od Visual Studio 2013 Update 2, możliwe jest również wywoływanie go ze składnika monitora dla kodu zarządzanego. Z poziomu programu Visual Studio 2017 Update 8 CallDirection interfejsu API miało wartość "dwukierunkowe" z "normal" i można ją teraz wywołać z dowolnego składnika, AsyncCaller została ustawiona na "true", a CallerLocationConstraint została ustawiona na "none" z "nomarshaling".

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

IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>)

Określa, czy moduł jest uznawany za kod użytkownika.

Ta metoda spowoduje dołączenie nowego elementu pracy do określonej listy zadań i zwrócenie po dołączeniu elementu pracy. Rzeczywiste przetwarzanie elementu pracy jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony o tym, że żądanie zostało zakończone przez procedurę ukończenia.

Ograniczenie lokalizacji: Tę metodę można wywołać ze składnika IDE. Począwszy od Visual Studio 2013 Update 2, możliwe jest również wywoływanie go ze składnika monitora dla kodu zarządzanego. Z poziomu programu Visual Studio 2017 Update 8 CallDirection interfejsu API miało wartość "dwukierunkowe" z "normal" i można ją teraz wywołać z dowolnego składnika, AsyncCaller została ustawiona na "true", a CallerLocationConstraint została ustawiona na "none" z "nomarshaling".

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

OnBinaryLoaded(String)

Zgłoś zdarzenie BinaryLoaded. Składniki implementujące interfejs ujścia zdarzeń otrzymają powiadomienie o zdarzeniu. Kontrolka zwróci wynik po powiadomieniu wszystkich składników.

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

OnBinaryReloadOpportunity()

Zgłoś zdarzenie BinaryReloadOpportunity. Składniki implementujące interfejs ujścia zdarzeń otrzymają powiadomienie o zdarzeniu. Kontrolka zwróci wynik po powiadomieniu wszystkich składników.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

Ten interfejs API został wprowadzony w programie Visual Studio 12 Update 2 (DkmApiVersion. VS12Update2).

OnModuleModified()

Ta metoda jest wywoływana, gdy moduł zostanie zmieniony ze względu na element EnC lub dynamicznie emitowany kod.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

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

OnSymbolsLoaded(DkmModule, Boolean)

Ta metoda jest wywoływana przez podstawowe monitory debugowania w odpowiedzi na wywołanie IDkmModuleSymbolsLoaded. RaiseSymbolsLoadedEvent. Ta metoda musi być wywoływana z wątku zdarzeń lub z wątku żądania w ramach ponownego ładowania. Podstawowe monitory debugowania powinny przełączać się synchronicznie do wątku zdarzeń, wstrzymywać proces docelowy i wywoływać OnSymbolsLoaded.

Ograniczenie lokalizacji: interfejs API musi zostać wywołany ze składnika monitora (poziom składnika < 100 000).

OnSymbolsUpdated(DkmModule)

Zgłoś zdarzenie ModuleSymbolsUpdated. Składniki implementujące interfejs ujścia zdarzeń otrzymają powiadomienie o zdarzeniu. Kontrolka zwróci wynik po powiadomieniu wszystkich składników.

ReadSymbols()

Ta metoda jest wywoływana przez programy obsługi symboli, aby odczytywać symbole dla DkmModuleInstances, których symbole znajdują się w pamięci debugowanego obiektu.

RemoveDataItem<T>()

Usuń wystąpienie elementu "t" z tego kontenera. Zwykle nie jest konieczne wywoływanie tej metody, ponieważ kontener danych zostanie automatycznie opróżniony, gdy obiekt zostanie zamknięty.

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

Umieść nowy element w kontenerze danych.

(Odziedziczone po DkmDataContainer)
SetDisabled(Boolean)

Aktualizuje stan wyłączony modułu. Tę metodę można wywołać tylko ze zdarzenia ModuleInstanceLoad. Podczas wyłączania modułu często istnieje również pominięcie zdarzenia ładowania modułu.

SetModule(DkmModule, Boolean)

Ta metoda jest wywoływana przez dostawcę symboli w celu skojarzenia DkmModule z DkmModuleInstance i do wyzwalania zdarzenia ModuleSymbolsLoaded. Może być wywoływana tylko raz dla obiektu DkmModuleInstance. Wywołanie tego interfejsu API spowoduje zarówno ustanowienie < - > skojarzenia DkmModule DkmModuleInstance, jak i wystąpienie zdarzenia ModuleSymbolsLoaded.

TryLoadBinary()

Podjęto próbę załadowania pliku binarnego, który wcześniej nie powiódł się przy użyciu zaktualizowanych ścieżek symboli.

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

TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>)

Podjęto próbę załadowania pliku binarnego, który wcześniej nie powiódł się przy użyciu zaktualizowanych ścieżek symboli.

Ta metoda spowoduje dołączenie nowego elementu pracy do określonej listy zadań i zwrócenie po dołączeniu elementu pracy. Rzeczywiste przetwarzanie elementu pracy jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony o tym, że żądanie zostało zakończone przez procedurę ukończenia.

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

TryLoadSymbols()

Wywołuje się, by zainicjować ładowanie symboli dla DkmModuleInstances, których symbole nie zostały znalezione podczas ładowania modułu.

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

TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Wywołuje się, by zainicjować ładowanie symboli dla DkmModuleInstances, których symbole nie zostały znalezione podczas ładowania modułu.

Ta metoda spowoduje dołączenie nowego elementu pracy do określonej listy zadań i zwrócenie po dołączeniu elementu pracy. Rzeczywiste przetwarzanie elementu pracy jest asynchroniczne. Obiekt wywołujący zostanie powiadomiony o tym, że żądanie zostało zakończone przez procedurę ukończenia.

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

Unload()

Oznacz obiekt Unload jako zwolniony i powiadom składniki, które implementują interfejs ujścia zdarzeń. Kontrolka zwróci wynik po powiadomieniu wszystkich składników.

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

Dotyczy