DkmModuleInstance Classe

Definizione

La classe Module Instance rappresenta un bundle di codice (ad esempio dll o exe) caricato in un determinato processo in una determinata posizione. Gli oggetti Istanza del modulo sono 1:1 con la nozione dell'ambiente di esecuzione di un bundle di codice. Ad esempio, nel codice nativo, gli oggetti Istanza del modulo sono 1:1 con indirizzo di base.

Classi derivate: 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
Ereditarietà
Ereditarietà
DkmModuleInstance
Derivato
Attributi

Proprietà

BaseAddress

[Facoltativo] Indirizzo di memoria iniziale in cui è stato caricato il modulo. Questo valore sarà zero se il modulo non è stato caricato in un blocco contiguo di memoria.

Connection

Rappresenta una connessione tra il monitoraggio e l'IDE. Può trattarsi di una connessione locale se il monitoraggio è in esecuzione nello stesso processo dell'IDE oppure può essere una connessione remota. Nel processo di monitoraggio è presente una sola connessione.

Flags

Flag che indicano tratti di una DkmModuleInstance.

FullName

Nome completo del modulo. Per i moduli basati su file, si tratta del percorso completo del modulo (ad esempio, c:\windows\system32\kernel32.dll.

IsDisabled

Indica se questa istanza del modulo è stata disabilitata. I moduli disabilitati vengono in gran parte ignorati dal debugger. Per i moduli nativi, l'intervallo di indirizzi del modulo disabilitato viene considerato come se non venga eseguito il mapping. Per i moduli CLR, tutti i frame di questi moduli sono nascosti dallo stack di chiamate.

IsUnloaded

Restituisce true se per questo oggetto è stato generato un evento 'unloaded', ad esempio DkmThread::Unload, o se l'oggetto è stato chiuso. Si noti che è necessario prestare attenzione quando si controlla questo stato come, senza sincronizzazione, lo stato restituito potrebbe non essere più accurato dopo la lettura.

(Ereditato da DkmDataContainer)
LoadContext

Descrizione stringa del contesto in cui è stato caricato questo modulo. ad esempio: 'Win32' o 'CLR v2.0.50727: Dominio predefinito'.

LoadOrder

Numero intero del numero di istanze del modulo caricate fino a e incluso questo modulo. Ogni istanza di runtime tiene traccia del proprio numero di ordini di carico.

MemoryLayout

Enumerazione che indica come viene disposto un modulo in memoria.

MinidumpInfoPart

[Facoltativo] 'MinidumpInfoPart' viene usato per trasmettere informazioni aggiuntive sui moduli in un DkmProcess per un minidump.

Module

[Facoltativo] Rappresentazione del gestore dei simboli di un modulo (DkmModule) associato a questa istanza del modulo. Questo valore è inizialmente Null e viene assegnato se e quando i simboli sono associati a questa istanza del modulo.

Name

Rappresentazione breve del nome del modulo. Per i moduli basati su file, si tratta del nome del file e dell'estensione (ad esempio: kernel32.dll).

Process

DkmProcess rappresenta un processo di destinazione in fase di debug. Il debugger esegue il debug dei processi, quindi questa è l'unità di base del debug. Un DkmProcess può rappresentare un processo di sistema o un processo virtuale, ad esempio minidump.

RuntimeInstance

La classe DkmRuntimeInstance rappresenta un ambiente di esecuzione caricato in un DkmProcess e che contiene il codice da eseguire per il debug.

Size

[Facoltativo] Numero di byte nell'area di memoria del modulo. Questo valore sarà zero se il modulo non è stato caricato in un blocco contiguo di memoria.

SymbolFileId

[Facoltativo] Contiene informazioni necessarie per individuare i simboli per questo modulo. In Win32 queste informazioni sono contenute all'interno dell'IMAGE_DEBUG_DIRECTORY.

TagValue

DkmModuleInstance è una classe base astratta. Questa enumerazione indica la classe derivata di questo oggetto è un'istanza di .

TimeDateStamp

Data/Ora di compilazione del modulo caricato. Questo valore viene ottenuto dal IMAGE_NT_HEADERS del modulo caricato. L'unità di misura è un valore FILETIME, che è un valore a 64 bit che rappresenta il numero di intervalli da 100 nanosecondi dal 1° gennaio 1601 (UTC).

UniqueId

Identifica in modo univoco l'oggetto DkmModuleInstance.

Version

[Facoltativo] Informazioni sulla versione file.

Metodi

ClearTransitionModuleFlag()

Le istanze di runtime chiamano questo metodo per contrassegnare un modulo come modulo limite. Quando si esegue l'istruzione, i runtime devono verificare se il passaggio ha raggiunto un modulo limite e avviare l'arbitraggio delle istruzioni, se disponibili. Si noti che alcuni runtime potrebbero non essere in grado di rispettare questa richiesta. Il dispatcher manterrà un conteggio del numero di volte in cui è stato chiamato FlagAsTransitionModule. Solo quando un numero corrispondente di chiamate a ClearTransitionModuleFlag non verrà più considerato un modulo di transizione.

Vincolo location: l'API deve essere chiamata da un componente Monitor (livello < componente 100.000).

Decompile()

Decompila il codice per un modulo in C# e crea un nuovo PDB portabile con questa origine incorporata. Tutti i moduli che condividono questo file di simboli inizieranno a usare questi simboli aggiornati.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult>)

Decompila il codice per un modulo in C# e crea un nuovo PDB portabile con questa origine incorporata. Tutti i moduli che condividono questo file di simboli inizieranno a usare questi simboli aggiornati.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta accodato l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 16 Update 5 (DkmApiVersion.VS16Update5).

Decompile(DkmWorkList, DkmCompletionRoutine<DkmDecompileAsyncResult173>)

Decompila il codice per un modulo in C# e crea un nuovo PDB portabile con questa origine incorporata. Tutti i moduli che condividono questo file di simboli inizieranno a usare questi simboli aggiornati. Le implementazioni devono restituire S_OK in caso di errore e restituire il valore HRESULT effettivo ed eventuali informazioni aggiuntive sugli errori tramite i parametri 'HR' e 'ErrorMessage'.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta accodato l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3).

Decompile(String, Int32)

Decompila il codice per un modulo in C# e crea un nuovo PDB portabile con questa origine incorporata. Tutti i moduli che condividono questo file di simboli inizieranno a usare questi simboli aggiornati. Le implementazioni devono restituire S_OK in caso di errore e restituire il valore HRESULT effettivo ed eventuali informazioni aggiuntive sugli errori tramite i parametri 'HR' e 'ErrorMessage'.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3).

FlagAsTransitionModule()

Le istanze di runtime chiamano questo metodo per contrassegnare un modulo come modulo limite. Quando si esegue l'istruzione, i runtime devono verificare se il passaggio ha raggiunto un modulo limite e avviare l'arbitraggio delle istruzioni, se disponibili. Si noti che alcuni runtime potrebbero non essere in grado di rispettare questa richiesta. Il dispatcher manterrà un conteggio del numero di chiamate. Solo quando è stato effettuato un numero corrispondente di chiamate a ClearTransitionModuleFlag, il modulo non verrà più considerato un modulo di transizione.

Vincolo location: l'API deve essere chiamata da un componente Monitor (livello < componente 100.000).

GetDataItem<T>()

Ottiene l'istanza di 'T' aggiunta a questa istanza del contenitore. Se questo contenitore non contiene un 'T', questa funzione restituirà Null.

(Ereditato da DkmDataContainer)
GetGPUDisassembly(UInt64, UInt32, Boolean, Boolean)

Ottenere il disassembly dell'intervallo di indirizzi nell'istanza del modulo di debug.

GetGPUDisassemblySize()

Restituisce le dimensioni del disassembly nell'istanza del modulo di debug.

GetNextGPUInstructionAddress(UInt64)

Restituisce l'indirizzo dell'istruzione successiva rispetto a un indirizzo iniziale.

GetSymbolLoadInformation()

Restituisce una stringa che descrive le varie posizioni in cui sono stati cercati i simboli e il risultato del controllo della posizione. Queste informazioni vengono usate per popolare le informazioni di caricamento dei simboli nella finestra dei moduli.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

GetSymbolSearchResult()

Recupera tutti i risultati della ricerca di simboli associati a questa istanza del modulo.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3).

GetSymbolSearchResult(DkmWorkList, DkmCompletionRoutine<DkmGetSymbolSearchResultAsyncResult>)

Recupera tutti i risultati della ricerca di simboli associati a questa istanza del modulo.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta accodato l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo location: l'API deve essere chiamata da un componente IDE (livello > componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 3 (DkmApiVersion.VS17Update3).

GetSymbolStatusMessage(Boolean)

Ottenere una descrizione della stringa localizzata dello stato del simbolo corrente.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

GetSymbolStatusMessage(DkmWorkList, Boolean, DkmCompletionRoutine<DkmGetSymbolStatusMessageAsyncResult>)

Ottenere una descrizione localizzata di una stringa dello stato del simbolo corrente.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta accodato l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

IsSuppressed()

Questo metodo consente a un componente di determinare se l'evento di caricamento del modulo per un modulo è stato eliminato.

Questa API è stata introdotta in Visual Studio 12 Update 3 (DkmApiVersion.VS12Update3).

IsTransitionModule()

Restituisce true se un'istanza di runtime ha contrassegnato questo modulo come modulo di transizione.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

IsUserCode()

Determina se un modulo è considerato codice utente.

Vincolo location: questo metodo può essere chiamato da un componente IDE. A partire da Visual Studio 2013 Update 2, è anche possibile chiamare questa operazione da un componente di monitoraggio per il codice gestito. Da Visual Studio 2017 Update 8, la CallDirection dell'API è stata creata "Bidirezionale" da "Normal" e ora può essere chiamata da qualsiasi componente, AsyncCaller è stata impostata su 'true' e callerLocationConstraint è stato impostato su 'None' da 'NoMarshalling'.

Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmModuleInstanceIsUserCodeAsyncResult>)

Determina se un modulo è considerato codice utente.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo location: questo metodo può essere chiamato da un componente IDE. A partire da Visual Studio 2013 Update 2, è anche possibile chiamare questa operazione da un componente di monitoraggio per il codice gestito. Da Visual Studio 2017 Update 8, la CallDirection dell'API è stata creata "Bidirezionale" da "Normal" e ora può essere chiamata da qualsiasi componente, AsyncCaller è stata impostata su 'true' e callerLocationConstraint è stato impostato su 'None' da 'NoMarshalling'.

Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

OnBinaryLoaded(String)

Generare un evento BinaryLoaded. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Il controllo restituirà una volta che tutti i componenti sono stati notificati.

Questa API è stata introdotta in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

OnBinaryReloadOpportunity()

Generare un evento BinaryReloadOpportunity. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Il controllo restituirà una volta che tutti i componenti sono stati notificati.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

Questa API è stata introdotta in Visual Studio 12 Update 2 (DkmApiVersion.VS12Update2).

OnModuleModified()

Questo metodo viene chiamato quando un modulo viene modificato a causa di Codice EnC o generato dinamicamente.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

Questa API è stata introdotta in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

OnSymbolsLoaded(DkmModule, Boolean)

Questo metodo viene richiamato dai monitoraggi di debug di base in risposta a una chiamata a IDkmModuleSymbolsLoaded.RaiseSymbolsLoadedEvent. Questo metodo deve essere richiamato dal thread evento o dal thread di richiesta come parte di un ricaricamento. I monitoraggi di debug di base devono passare in modo sincrono al thread dell'evento, sospendere il processo di destinazione e richiamare OnSymbolsLoaded.

Vincolo percorso: l'API deve essere chiamata da un componente Monitor (livello < di componente 100.000).

OnSymbolsUpdated(DkmModule)

Generare un evento ModuleSymbolsUpdated. I componenti che implementano l'interfaccia del sink di eventi riceveranno la notifica dell'evento. Il controllo restituirà una volta che tutti i componenti sono stati notificati.

ReadSymbols()

Questo metodo viene richiamato dai gestori di simboli per leggere i simboli per DkmModuleInstances i cui simboli si trovano nella memoria del debug.

RemoveDataItem<T>()

Rimuovere l'istanza di 'T' da questo contenitore. In genere non è necessario chiamare questo metodo come contenitore di dati verrà svuotato automaticamente quando l'oggetto viene chiuso.

(Ereditato da DkmDataContainer)
SetDataItem<T>(DkmDataCreationDisposition, T)

Inserire un nuovo elemento nel contenitore di dati.

(Ereditato da DkmDataContainer)
SetDisabled(Boolean)

Aggiornamenti lo stato disabilitato in un modulo. Questo metodo può essere chiamato solo da un evento ModuleInstanceLoad. Quando si disabilita un modulo, è comune eliminare anche l'evento di caricamento del modulo.

SetModule(DkmModule, Boolean)

Questo metodo viene richiamato da un provider di simboli per associare un DkmModule a un DkmModuleInstance e per attivare un evento ModuleSymbolsLoaded. Può essere chiamato una sola volta per un oggetto DkmModuleInstance. La chiamata a questa API stabilirà sia l'associazione DkmModule-DkmModuleInstance<>, sia per generare un evento ModuleSymbolsLoaded.

TryLoadBinary()

Provare a caricare un file binario che in precedenza non è riuscito a caricare usando i percorsi dei simboli aggiornati.

TryLoadBinary(DkmWorkList, DkmCompletionRoutine<DkmTryLoadBinaryAsyncResult>)

Provare a caricare un file binario che in precedenza non è riuscito a caricare usando i percorsi dei simboli aggiornati.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

TryLoadSymbols()

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

TryLoadSymbols(DkmSymbolLoadFlags)

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4).

TryLoadSymbols(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

TryLoadSymbols(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsAsyncResult>)

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: l'API deve essere chiamata da un componente IDE (livello > di componente 100.000).

Questa API è stata introdotta in Visual Studio 17 Update 4 (DkmApiVersion.VS17Update4).

TryLoadSymbolsCallback()

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Vincolo percorso: può essere chiamato dal client o dal server. L'implementazione del server di questa è una cache per evitare chiamate di rete non necessarie. Il client passa direttamente all'implementazione "reale" che garantisce anche che reattempts restituisce in anticipo.

Questa API è stata introdotta in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

TryLoadSymbolsCallback(DkmWorkList, DkmCompletionRoutine<DkmTryLoadSymbolsCallbackAsyncResult>)

Chiamato per avviare il caricamento di simboli per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: può essere chiamato dal client o dal server. L'implementazione del server di questa è una cache per evitare chiamate di rete non necessarie. Il client passa direttamente all'implementazione "reale" che garantisce anche che reattempts restituisce in anticipo.

Questa API è stata introdotta in Visual Studio 17 RTM (DkmApiVersion.VS17RTM).

TryLoadSymbolsCallback177(DkmSymbolLoadFlags)

Chiamato per avviare il caricamento di simboli presenti localmente per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Vincolo percorso: può essere chiamato dal client o dal server. L'implementazione del server di questa è una cache per evitare chiamate di rete non necessarie. Il client passa direttamente all'implementazione "reale" che garantisce anche che reattempts restituisce in anticipo.

Questa API è stata introdotta in Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7).

TryLoadSymbolsCallback177(DkmWorkList, DkmSymbolLoadFlags, DkmCompletionRoutine<DkmTryLoadSymbolsCallback177AsyncResult>)

Chiamato per avviare il caricamento di simboli presenti localmente per DkmModuleInstances i cui simboli non sono stati trovati quando il modulo è stato caricato.

Questo metodo aggiungerà un nuovo elemento di lavoro all'elenco di lavoro specificato e restituirà una volta aggiunto l'elemento di lavoro. L'elaborazione effettiva dell'elemento di lavoro è asincrona. Il chiamante riceverà una notifica che la richiesta viene completata tramite la routine di completamento.

Vincolo percorso: può essere chiamato dal client o dal server. L'implementazione del server di questa è una cache per evitare chiamate di rete non necessarie. Il client passa direttamente all'implementazione "reale" che garantisce anche che reattempts restituisce in anticipo.

Questa API è stata introdotta in Visual Studio 17 Update 7 (DkmApiVersion.VS17Update7).

Unload()

Contrassegnare l'oggetto Unload come componenti non caricati e notificati che implementano l'interfaccia sink eventi. Il controllo restituirà una volta che tutti i componenti sono stati notificati.

Questo metodo può essere chiamato solo dal componente che ha creato l'oggetto.

Si applica a