Share via


DkmNativeInstructionAddress Class

Definition

DkmNativeInstructionAddress is used for addresses that resolve to within a native module. This is used regardless as to if there are symbols for the module.

public ref class DkmNativeInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmNativeInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[Windows::Foundation::Metadata::WebHostHidden]
class DkmNativeInstructionAddress : Microsoft::VisualStudio::Debugger::DkmInstructionAddress
[System.Runtime.InteropServices.Guid("a1e2e4ab-463a-e8a1-3e68-1f49e6945d9e")]
public class DkmNativeInstructionAddress : Microsoft.VisualStudio.Debugger.DkmInstructionAddress
[<System.Runtime.InteropServices.Guid("a1e2e4ab-463a-e8a1-3e68-1f49e6945d9e")>]
type DkmNativeInstructionAddress = class
    inherit DkmInstructionAddress
Public Class DkmNativeInstructionAddress
Inherits DkmInstructionAddress
Inheritance
DkmNativeInstructionAddress
Attributes

Properties

CPUInstructionPart

[Optional] CPUInstructionPart provides the address that the CPU will execute. This is always provided for native instructions. It may be provided for CLR or custom addresses depending on how the address object was created.

(Inherited from DkmInstructionAddress)
ModuleInstance

The module containing the InstructionPointer.

Process

DkmProcess represents a target process which is being debugged. The debugger debugs processes, so this is the basic unit of debugging. A DkmProcess can represent a system process or a virtual process such as minidumps.

(Inherited from DkmInstructionAddress)
RuntimeInstance

Represents the native code executing in a target process.

RVA

The RVA of InstructionPointer within Module.

TagValue

DkmInstructionAddress is an abstract base class. This enum indicates which derived class this object is an instance of.

(Inherited from DkmInstructionAddress)

Methods

CompareTo(DkmInstructionAddress)

Compares two instruction addresses and returns a value indicating whether one is less than, equal to, or greater than the other. The addresses must be from the same module.

(Inherited from DkmInstructionAddress)
Create(DkmNativeRuntimeInstance, DkmNativeModuleInstance, UInt32, DkmInstructionAddress+CPUInstruction)

Create a new DkmNativeInstructionAddress object instance.

FindNearestExport(DkmWorkList, DkmCompletionRoutine<DkmFindNearestExportAsyncResult>)

Finds the nearest module export from the specified instruction address. The export could either be a function or data export, though function exports are far more common. Because exports do not have address ranges, the specified address may not actually be associated with the returned export.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

FindNearestExport(Int32)

Finds the nearest module export from the specified instruction address. The export could either be a function or data export, though function exports are far more common. Because exports do not have address ranges, the specified address may not actually be associated with the returned export.

GetCurrentCPUAddress()

Resolves a DkmInstructionAddress to a CPU InstructionAddress. This is the reverse mapping of ResolveCPUInstructionAddress. This API is currently only supported by CLR DkmRuntimeInstance objects.

Location constraint: This API should generally be called on the client, but it can be called on the server for translating CLR addresses (but not native-compiled).

(Inherited from DkmInstructionAddress)
GetCurrentCPUAddress(DkmWorkList, DkmCompletionRoutine<DkmGetCurrentCPUAddressAsyncResult>)

Resolves a DkmInstructionAddress to a CPU InstructionAddress. This is the reverse mapping of ResolveCPUInstructionAddress. This API is currently only supported by CLR DkmRuntimeInstance objects.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

Location constraint: This API should generally be called on the client, but it can be called on the server for translating CLR addresses (but not native-compiled).

(Inherited from DkmInstructionAddress)
GetSteppingCallSites(DkmSteppingRange[])

GetSteppingCallSites is called to get call sites reachable from an instruction.

Location constraint: API must be called from an IDE component (component level > 100,000).

GetSymbol()

Convert a DkmInstructionAddress into a DkmInstructionSymbol. If the DkmInstructionAddress is not in a DkmModule then GetSymbol will return null (S_FALSE in native code).

(Inherited from DkmInstructionAddress)
IsInSameFunction(DkmInstructionAddress)

Compares two instruction addresses and determines if they are within the same function.

Location constraint: API must be called from an IDE component (component level > 100,000).

(Inherited from DkmInstructionAddress)
IsUserCode(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeAsyncResult>)

Determines if a given instruction address is user code or not.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

Location constraint: Note: with Visual Studio 2017 Update 8, the CallDirection of the API was made 'Bidirectional' from 'Normal' and can now be called from any component.

This API was introduced in Visual Studio 12 RTM (DkmApiVersion.VS12RTM).

(Inherited from DkmInstructionAddress)
IsUserCodeExtended(DkmWorkList, DkmCompletionRoutine<DkmIsUserCodeExtendedAsyncResult>)

Determines if a given instruction address is user code or not.

This method will append a new work item to the specified work list, and return once the work item has been appended. The actual processing of the work item is asynchronous. The caller will be notified that the request is complete through the completion routine.

This API was introduced in Visual Studio 15 Update 8 (DkmApiVersion.VS15Update8).

Applies to