DkmModuleInstance Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Třída instance modulu představuje sadu kódu (např. dll nebo exe), která je načtena do určitého procesu v určitém umístění. Objekty instance modulu jsou 1:1 s představou spouštěcího prostředí o sadě kódu. Například v nativním kódu jsou objekty instance modulu 1:1 se základní adresou.
Odvozené třídy: 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
- Dědičnost
- Dědičnost
- Odvozené
- Atributy
Vlastnosti
BaseAddress |
[Volitelné] Počáteční adresa paměti, do které se modul načetl. Pokud modul nenačetl souvislý blok paměti, bude tato hodnota nulová. |
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í. |
Flags |
Příznaky označující vlastnosti DkmModuleInstance. |
FullName |
Plně kvalifikovaný název modulu. U modulů založených na souborech se jedná o úplnou cestu k modulu (např. c:\windows\system32\kernel32.dll. |
IsDisabled |
Označuje, jestli je tato instance modulu zakázaná. Zakázané moduly ladicí program do značné míry ignoruje. U nativních modulů se rozsah adres zakázaného modulu považuje za nemapovaný. U modulů CLR jsou všechny rámce z těchto modulů skryté ve zásobníku volání. |
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) |
LoadContext |
Řetězcový popis kontextu, ve kterém byl tento modul načten. Příklad: Win32 nebo CLR v2.0.50727: Výchozí doména. |
LoadOrder |
Celočíselný počet instancí modulu, které byly načteny do a včetně tohoto modulu. Každá instance modulu runtime sleduje svůj vlastní počet pořadí načítání. |
MemoryLayout |
Výčet, který označuje, jak je modul rozložen v paměti. |
MinidumpInfoPart |
[Volitelné] MinidumpInfoPart se používá ke sdělení dalších informací o modulech v DkmProcess pro minidump. |
Module |
[Volitelné] Reprezentace modulu (DkmModule) obslužné rutiny symbolu, který je přidružen k této instanci modulu. Tato hodnota má zpočátku hodnotu null a přiřadí se, pokud a kdy jsou k této instanci modulu přidruženy symboly. |
Name |
Stručné znázornění názvu modulu U modulů založených na souborech se jedná o název a příponu souboru (např. kernel32.dll). |
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. |
RuntimeInstance |
Třída DkmRuntimeInstance představuje spouštěcí prostředí, které je načteno do DkmProcess a které obsahuje kód, který se má ladit. |
Size |
[Volitelné] Počet bajtů v oblasti paměti modulu. Pokud modul nenačetl souvislý blok paměti, bude tato hodnota nulová. |
SymbolFileId |
[Volitelné] Obsahuje informace potřebné k vyhledání symbolů pro tento modul. Ve Win32 jsou tyto informace obsaženy v IMAGE_DEBUG_DIRECTORY. |
TagValue |
DkmModuleInstance je abstraktní základní třída. Tento výčet označuje, které odvozené třídy je tento objekt instancí. |
TimeDateStamp |
Datum a čas sestavení načteného modulu. Tato hodnota se získá z IMAGE_NT_HEADERS načteného modulu. Měrná jednotka je hodnota FILETIME, což je 64bitová hodnota představující počet intervalů 100 nanosekund od 1. ledna 1601 (UTC). |
UniqueId |
Jedinečně identifikuje objekt DkmModuleInstance. |
Version |
[Volitelné] Informace o verzi souboru. |
Metody
ClearTransitionModuleFlag() |
Instance modulu runtime volají tuto metodu k označení modulu jako hraničního modulu. Při krokování by moduly runtime měly zkontrolovat, jestli krok nenarazil na modul hranice, a pokud ano, zahájit krokování arbitráže. Upozorňujeme, že některé moduly runtime nemusí být schopny tento požadavek dodržet. Dispečer si zachovají počet volání příznaku FlagAsTransitionModule. Pouze v případě, že odpovídající počet volání ClearTransitionModuleFlag bude modul již považován za přechodový modul. Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000). |
Decompile() |
Dekompilace kódu modulu do jazyka C# a vytvoření nového přenosného souboru PDB s vloženým zdrojem. Všechny moduly, které sdílejí tento soubor symbolů, začnou používat tyto aktualizované symboly. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). Toto rozhraní API bylo představeno v sadě Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5). |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>) |
Dekompilace kódu modulu do jazyka C# a vytvoření nového přenosného souboru PDB s vloženým zdrojem. Všechny moduly, které sdílejí tento soubor symbolů, začnou používat tyto aktualizované symboly. 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). Toto rozhraní API bylo představeno v sadě Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5). |
Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>) |
Dekompilace kódu modulu do jazyka C# a vytvoření nového přenosného souboru PDB s vloženým zdrojem. Všechny moduly, které sdílejí tento soubor symbolů, začnou používat tyto aktualizované symboly. Implementace by měly vrátit S_OK o selhání a skutečné hodnoty HRESULT a jakékoli další informace o chybách prostřednictvím parametrů HR a ErrorMessage. 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). Toto rozhraní API bylo představeno v sadě Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3). |
Decompile(String, Int32) |
Dekompilace kódu modulu do jazyka C# a vytvoření nového přenosného souboru PDB s vloženým zdrojem. Všechny moduly, které sdílejí tento soubor symbolů, začnou používat tyto aktualizované symboly. Implementace by měly vrátit S_OK o selhání a skutečné hodnoty HRESULT a jakékoli další informace o chybách prostřednictvím parametrů HR a ErrorMessage. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). Toto rozhraní API bylo představeno v sadě Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3). |
FlagAsTransitionModule() |
Instance modulu runtime volají tuto metodu k označení modulu jako hraničního modulu. Při krokování by moduly runtime měly zkontrolovat, jestli krok nenarazil na modul hranice, a pokud ano, zahájit krokování arbitráže. Upozorňujeme, že některé moduly runtime nemusí být schopny tento požadavek dodržet. Dispečer bude uchovávat počet volání. Pouze v případě, že byl proveden odpovídající počet volání ClearTransitionModuleFlag, modul již nebude považován za přechodový modul. Omezení umístění: Rozhraní API se musí volat z komponenty Monitor (úroveň < komponenty 100 000). |
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) |
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean) |
Získejte demontáž rozsahu adres v instanci modulu ladění. |
GetGPUDisassemblySize() |
Vrátí velikost zpětného překladu v instanci modulu ladění. |
GetNextGPUInstructionAddress(UInt64) |
Vrátí adresu další instrukce vzhledem k počáteční adrese. |
GetSymbolLoadInformation() |
Vrátí řetězec popisující různá umístění, ve kterých se symboly hledaly, a výsledek kontroly tohoto umístění. Tyto informace slouží k naplnění informací o načtení symbolů v okně modulů. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). |
GetSymbolSearchResult() |
Načte všechny výsledky hledání symbolů přidružené k této instanci modulu. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). Toto rozhraní API bylo představeno v sadě Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3). |
GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>) |
Načte všechny výsledky hledání symbolů přidružené k této instanci modulu. 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). Toto rozhraní API bylo představeno v sadě Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3). |
GetSymbolStatusMessage(Boolean) |
Získejte lokalizovaný řetězec popis aktuálního stavu symbolu. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). |
GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>) |
Získejte lokalizovaný řetězec popis aktuálního stavu symbolu. 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). |
IsSuppressed() |
Tato metoda umožňuje komponentě určit, jestli byla událost načtení modulu pro modul potlačena. Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3). |
IsTransitionModule() |
Vrátí hodnotu true, pokud některá instance modulu runtime označila tento modul jako přechodový modul. Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000). |
IsUserCode() |
Určuje, jestli je modul považován za uživatelský kód. Omezení umístění: Tuto metodu lze volat z komponenty IDE. Od Visual Studio 2013 Update 2 je také možné tuto funkci volat z komponenty monitorování spravovaného kódu. V sadě Visual Studio 2017 Update 8 se calldirection rozhraní API vytvořilo obousměrně z normálního a teď se dá volat z libovolné komponenty, AsyncCaller byl nastaven na true a CallerLocationConstraint byl nastaven na hodnotu None z NoMarshalling. Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>) |
Určuje, jestli je modul považován za uživatelský kód. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. Omezení umístění: Tuto metodu lze volat z komponenty IDE. Od Visual Studio 2013 Update 2 je také možné tuto funkci volat z komponenty monitorování spravovaného kódu. V sadě Visual Studio 2017 Update 8 se calldirection rozhraní API vytvořilo obousměrně z normálního a teď se dá volat z libovolné komponenty, AsyncCaller byl nastaven na true a CallerLocationConstraint byl nastaven na hodnotu None z NoMarshalling. Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
OnBinaryLoaded(String) |
Vytvořte událost BinaryLoaded. Komponenty, které implementují rozhraní jímky událostí, obdrží oznámení o události. Ovládací prvek se vrátí, jakmile budou všechny komponenty upozorněny. Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 RTM (DkmApiVersion.VS12RTM). |
OnBinaryReloadOpportunity() |
Vytvořte BinaryReloadOpportunity událost. Komponenty, které implementují rozhraní jímky událostí, obdrží oznámení o události. Ovládací prvek se vrátí, jakmile budou všechny komponenty upozorněny. Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000). Toto rozhraní API bylo zavedeno v sadě Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2). |
OnModuleModified() |
Tato metoda se volá, když se modul změní kvůli EnC nebo dynamicky generovanému kódu. Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000). Toto rozhraní API bylo zavedeno v sadě Visual Studio 14 RTM (DkmApiVersion.VS14RTM). |
OnSymbolsLoaded(DkmModule, Boolean) |
Tato metoda je vyvolána monitorováním základního ladění v reakci na volání IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent. Tato metoda musí být vyvolána z vlákna události nebo z vlákna požadavku jako součást opětovného načtení. Monitorování základního ladění by se měla synchronně přepnout na vlákno události, pozastavit cílový proces a vyvolat OnSymbolsLoaded. Omezení umístění: Rozhraní API se musí volat z komponenty monitoru (úroveň < komponenty 100 000). |
OnSymbolsUpdated(DkmModule) |
Vytvořte událost ModuleSymbolsUpdated. Komponenty, které implementují rozhraní jímky událostí, obdrží oznámení o události. Ovládací prvek se vrátí, jakmile budou všechny komponenty upozorněny. |
ReadSymbols() |
Tato metoda je vyvolána obslužnými rutinami symbolů pro čtení symbolů pro DkmModuleInstances, jejichž symboly se nacházejí v paměti ladicího modulu. |
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) |
SetDataItem<T>(DkmDataCreationDisposition, T) |
Do kontejneru dat umístěte novou položku. (Zděděno od DkmDataContainer) |
SetDisabled(Boolean) |
Aktualizace stav zakázaného modulu. Tato metoda může být volána pouze z ModuleInstanceLoad události. Při zakázání modulu je také běžné potlačit událost načtení modulu. |
SetModule(DkmModule, Boolean) |
Tato metoda je vyvolána zprostředkovatel symbolu pro přidružení DkmModule k DkmModuleInstance a k aktivaci ModuleSymbolsLoaded událost. Může být volána pouze jednou pro objekt DkmModuleInstance. Voláním tohoto rozhraní API vytvoříte přidružení DkmModule-DkmModuleInstance<> a také způsobí vyvolání události ModuleSymbolsLoaded. |
TryLoadBinary() |
Pokuste se načíst binární soubor, který se dříve nepodařilo načíst pomocí aktualizovaných cest symbolů. |
TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>) |
Pokuste se načíst binární soubor, který se dříve nepodařilo načíst pomocí aktualizovaných cest symbolů. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. |
TryLoadSymbols() |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). |
TryLoadSymbols(DkmSymbolLoadFlags) |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4). |
TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). |
TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>) |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. Omezení umístění: Rozhraní API se musí volat z komponenty IDE (úroveň > komponenty 100 000). Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4). |
TryLoadSymbolsCallback() |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Omezení umístění: Tuto možnost lze volat z klienta nebo serveru. Serverová implementace je mezipaměť, která zabraňuje zbytečným síťovým voláním. Klient přejde přímo do "skutečné" implementace, která také zajistí, že se reattempts vrátí brzy. Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 RTM (DkmApiVersion.VS17RTM). |
TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>) |
Volá se k zahájení načítání symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. Omezení umístění: Tuto možnost lze volat z klienta nebo serveru. Serverová implementace je mezipaměť, která zabraňuje zbytečným síťovým voláním. Klient přejde přímo do "skutečné" implementace, která také zajistí, že se reattempts vrátí brzy. Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 RTM (DkmApiVersion.VS17RTM). |
TryLoadSymbolsCallback177(DkmSymbolLoadFlags) |
Volá se k zahájení načítání místně přítomných symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Omezení umístění: Tuto možnost lze volat z klienta nebo serveru. Serverová implementace je mezipaměť, která zabraňuje zbytečným síťovým voláním. Klient přejde přímo do "skutečné" implementace, která také zajistí, že se reattempts vrátí brzy. Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7). |
TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>) |
Volá se k zahájení načítání místně přítomných symbolů pro instance DkmModuleInstances, jejichž symboly nebyly nalezeny při načtení modulu. Tato metoda přidá novou pracovní položku do zadaného pracovního seznamu a vrátí po připojení pracovní položky. Skutečné zpracování pracovní položky je asynchronní. Volající bude upozorněn, že žádost je dokončena prostřednictvím rutiny dokončení. Omezení umístění: Tuto možnost lze volat z klienta nebo serveru. Serverová implementace je mezipaměť, která zabraňuje zbytečným síťovým voláním. Klient přejde přímo do "skutečné" implementace, která také zajistí, že se reattempts vrátí brzy. Toto rozhraní API bylo zavedeno v sadě Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7). |
Unload() |
Označte objekt Unload jako unloaded a upozorněte komponenty, které implementují rozhraní jímky událostí. Ovládací prvek se vrátí, jakmile budou všechny komponenty upozorněny. Tuto metodu může volat pouze komponenta, která objekt vytvořila. |