Sdílet prostřednictvím


DkmILPushLocalVariablePseudoAddress Class

Definition

Pushes a pseudo address on the stack representing the IL local variable and a byte offset within that variable. When popped from the stack as an address, instructions that would ordinarily read or write memory in the debuggee process will instead read or write bytes at the IL local variable and offset specified in the pseudo-address. It is permissible to push a pseudo-address onto the stack corresponding to a local variable that does not exist or has fewer bytes than the specified offset. However, when the times to actually read or write data at a pseudo-address, the backing local variable must exist and must have enough data to encompass the entire read or write operation. (Reads may be truncated at the end of the buffer if AllowPartialRead is specified). A pseudo-address may be used as the operand of an arithmetic operation in the following cases: - adding an integer a pseudo-address. (The integer will be added to the offset) - subtracting an integer from a pseudo-address. (The integer will be subtracted from the offset). - subtracting two pseudo-addresses from each other, backed by the same local variable. (The result is the difference in offsets).

  • comparing a pseudo address with NULL. (Any pseudo-address is considered greater than NULL. An operand is considered to be NULL if all bytes are zero.) - comparing two pseudo-addresses for equality. - comparing two pseudo-addresses for inequality, when backed by the same variable. (The offsets will be compared). Pseudo-addresses may also be used with DkmILDuplicateTop or saved in local variables via DkmILLoad and DkmILSave. It is illegal to read or write data at a pseudo-address, however, if the backing local variable contains another pseudo-address. Pseudo-addresses may be returned as an IL result via the DkmILReturnTop instruction. The resulting DkmILEvaluationResult can be identified as a pseudo-address via the IsPseudoAddress property. The result bytes of a pseudo-address will be set to either the contents of the backing local variable, from the specified offset until the end of the variable, or empty if the backing local variable does not exist, is another pseudo-address, or does not store enough bytes to contain data at the given offset. Pseudo-addresses may also be passed in as a parameter to a DkmCompiledILInspectionQuery by setting IsByRef to true on the DkmILParameterValue. It is illegal to use a pseudo-address in any IL instruction, except as described above. An attempt to use a pseudo-address in any other manner will result in an IL exception of type DkmILFailureReason::InvalidPseudoAddressOperation. For example, you cannot multiply or divide with pseudo-addresses or store them anywhere in the debuggee process.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

public ref class DkmILPushLocalVariablePseudoAddress : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[Windows::Foundation::Metadata::WebHostHidden]
public ref class DkmILPushLocalVariablePseudoAddress : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[Windows::Foundation::Metadata::WebHostHidden]
class DkmILPushLocalVariablePseudoAddress : Microsoft::VisualStudio::Debugger::Evaluation::IL::DkmILInstruction
[System.Runtime.InteropServices.Guid("56f239a7-cc68-aa1a-8b1a-ee0cb4ff9834")]
public class DkmILPushLocalVariablePseudoAddress : Microsoft.VisualStudio.Debugger.Evaluation.IL.DkmILInstruction
[<System.Runtime.InteropServices.Guid("56f239a7-cc68-aa1a-8b1a-ee0cb4ff9834")>]
type DkmILPushLocalVariablePseudoAddress = class
    inherit DkmILInstruction
Public Class DkmILPushLocalVariablePseudoAddress
Inherits DkmILInstruction
Inheritance
DkmILPushLocalVariablePseudoAddress
Attributes

Properties

ByteOffset

The offset, within the backing local variable, that this pseudo-address refers to.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

Index

The index of the IL variable this pseudo-address should be backed by.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

TagValue

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

(Inherited from DkmILInstruction)
UniqueId

Uniquely identifies the DkmILInstruction object. Used as a hash-table key to allow for quickly matching up DkmIL instructions with their matching values.

(Inherited from DkmILInstruction)

Methods

Create(Int32, Int32)

Create a new DkmILPushLocalVariablePseudoAddress object instance.

This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM).

Applies to