Package com.sun.jna

Klasse Pointer

java.lang.Object
com.sun.jna.Pointer
Bekannte direkte Unterklassen:
Function, Memory

public class Pointer extends Object
An abstraction for a native pointer data type. A Pointer instance represents, on the Java side, a native pointer. The native pointer could be any type of native pointer. Methods such as write, read, getXXX, and setXXX, provide means to access memory underlying the native pointer.

While a constructor exists to create a Pointer from an integer value, it's not generally a good idea to be creating pointers that way.

Autor:
Sheng Liang, originator, Todd Fast, suitability modifications, Timothy Wall, robust library loading
Siehe auch:
  • Feldübersicht

    Felder
    Modifizierer und Typ
    Feld
    Beschreibung
    static final Pointer
    Convenience constant, same as null.
    protected long
    Pointer value of the real native pointer.
  • Konstruktorübersicht

    Konstruktoren
    Konstruktor
    Beschreibung
    Derived class must assign peer pointer value.
    Pointer(long peer)
    Create from native pointer.
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    void
    clear(long size)
    Zero memory for the given number of bytes.
    static final Pointer
    createConstant(int peer)
    Convenience constant, equivalent to (void*)CONSTANT.
    static final Pointer
    createConstant(long peer)
    Convenience constant, equivalent to (void*)CONSTANT.
    dump(long offset, int size)
    Dump memory for debugging purposes.
    boolean
     
    byte
    getByte(long offset)
    Indirect the native pointer as a pointer to byte.
    byte[]
    getByteArray(long offset, int arraySize)
    Read a native array of bytes of size arraySize from the given offset from this Pointer.
    getByteBuffer(long offset, long length)
    Get a ByteBuffer mapped to the memory pointed to by the pointer, ensuring the buffer uses native byte order.
    char
    getChar(long offset)
    Indirect the native pointer as a pointer to wchar_t.
    char[]
    getCharArray(long offset, int arraySize)
    Read a native array of wchar_t of size arraySize from the given offset from this Pointer.
    double
    getDouble(long offset)
    Indirect the native pointer as a pointer to double.
    double[]
    getDoubleArray(long offset, int arraySize)
    Read a native array of double of size arraySize from the given offset from this Pointer.
    float
    getFloat(long offset)
    Indirect the native pointer as a pointer to float.
    float[]
    getFloatArray(long offset, int arraySize)
    Read a native array of float of size arraySize from the given offset from this Pointer.
    int
    getInt(long offset)
    Indirect the native pointer as a pointer to int.
    int[]
    getIntArray(long offset, int arraySize)
    Read a native array of int32 of size arraySize from the given offset from this Pointer.
    long
    getLong(long offset)
    Indirect the native pointer as a pointer to long.
    long[]
    getLongArray(long offset, int arraySize)
    Read a native array of int64 of size arraySize from the given offset from this Pointer.
    getNativeLong(long offset)
    Indirect the native pointer as a pointer to long.
    getPointer(long offset)
    Indirect the native pointer as a pointer to pointer.
    getPointerArray(long offset)
    Returns an array of Pointer.
    getPointerArray(long offset, int arraySize)
    Returns an array of Pointer of the requested size.
    short
    getShort(long offset)
    Indirect the native pointer as a pointer to short.
    short[]
    getShortArray(long offset, int arraySize)
    Read a native array of int16 of size arraySize from the given offset from this Pointer.
    getString(long offset)
    Copy native memory to a Java String.
    getString(long offset, String encoding)
    Copy native memory to a Java String using the requested encoding.
    getStringArray(long offset)
    Returns an array of String based on a native array of char *.
    getStringArray(long offset, int length)
    Returns an array of String based on a native array of char *, using the given array length.
    getStringArray(long offset, int length, String encoding)
    Returns an array of String based on a native array of char* or wchar_t* based on the wide parameter, using the given array length.
    getStringArray(long offset, String encoding)
    Returns an array of String based on a native array of char *, using the requested encoding.
    (Package privat) Object
    getValue(long offset, Class<?> type, Object currentValue)
     
    getWideString(long offset)
    Read a wide (const wchar_t *) string from memory.
    getWideStringArray(long offset)
     
    getWideStringArray(long offset, int length)
     
    int
     
    long
    indexOf(long offset, byte value)
    Returns the offset of the given value in memory from the given offset, or -1 if the value is not found.
    static long
    Read the native peer value.
    static void
    nativeValue(Pointer p, long value)
    Set the native peer value.
    void
    read(long offset, byte[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, char[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, double[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, float[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, int[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, long[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, short[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    read(long offset, Pointer[] buf, int index, int length)
    Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
    void
    setByte(long offset, byte value)
    Set value at location being pointed to.
    void
    setChar(long offset, char value)
    Set value at location being pointed to.
    void
    setDouble(long offset, double value)
    Set value at location being pointed to.
    void
    setFloat(long offset, float value)
    Set value at location being pointed to.
    void
    setInt(long offset, int value)
    Set value at location being pointed to.
    void
    setLong(long offset, long value)
    Set value at location being pointed to.
    void
    setMemory(long offset, long length, byte value)
    Write value to the requested bank of memory.
    void
    setNativeLong(long offset, NativeLong value)
    Set value at location being pointed to.
    void
    setPointer(long offset, Pointer value)
    Set value at location being pointed to.
    void
    setShort(long offset, short value)
    Set value at location being pointed to.
    void
    setString(long offset, WString value)
    Copy string value to the location being pointed to as a wide string (wchar_t*).
    void
    setString(long offset, String value)
    Copy bytes out of string value to the location being pointed to, using the encoding indicated by Native.getDefaultStringEncoding().
    void
    setString(long offset, String value, String encoding)
    Copy string value to the location being pointed to, using the requested encoding.
    (Package privat) void
    setValue(long offset, Object value, Class<?> type)
     
    void
    setWideString(long offset, String value)
    Copy string value to the location being pointed to as a wide string (wchar_t*).
    share(long offset)
    Provide a view of this memory using the given offset to calculate a new base address.
    share(long offset, long sz)
    Provide a view of this memory using the given offset to calculate a new base address, bounds-limiting the memory with the given size.
     
    void
    write(long offset, byte[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, char[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, double[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, float[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, int[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, long[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long offset, short[] buf, int index, int length)
    Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
    void
    write(long bOff, Pointer[] buf, int index, int length)
    Write the given array of Pointer to native memory.

    Von Klasse geerbte Methoden java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Felddetails

    • NULL

      public static final Pointer NULL
      Convenience constant, same as null.
    • peer

      protected long peer
      Pointer value of the real native pointer. Use long to be 64-bit safe.
  • Konstruktordetails

    • Pointer

      Pointer()
      Derived class must assign peer pointer value.
    • Pointer

      public Pointer(long peer)
      Create from native pointer. Don't use this unless you know what you're doing.
  • Methodendetails

    • createConstant

      public static final Pointer createConstant(long peer)
      Convenience constant, equivalent to (void*)CONSTANT.
    • createConstant

      public static final Pointer createConstant(int peer)
      Convenience constant, equivalent to (void*)CONSTANT. This version will avoid setting any of the high bits on 64-bit systems.
    • share

      public Pointer share(long offset)
      Provide a view of this memory using the given offset to calculate a new base address.
    • share

      public Pointer share(long offset, long sz)
      Provide a view of this memory using the given offset to calculate a new base address, bounds-limiting the memory with the given size.
    • clear

      public void clear(long size)
      Zero memory for the given number of bytes.
    • equals

      public boolean equals(Object o)
      Setzt außer Kraft:
      equals in Klasse Object
    • hashCode

      public int hashCode()
      Setzt außer Kraft:
      hashCode in Klasse Object
    • indexOf

      public long indexOf(long offset, byte value)
      Returns the offset of the given value in memory from the given offset, or -1 if the value is not found.
    • read

      public void read(long offset, byte[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - byte array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, short[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - short array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, char[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - char array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, int[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - int array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, long[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - long array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, float[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - float array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, double[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - double array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • read

      public void read(long offset, Pointer[] buf, int index, int length)
      Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.
      Parameter:
      offset - byte offset from pointer from which data is copied
      buf - Pointer array into which data is copied
      index - array index to which data is copied
      length - number of elements from native pointer that must be copied
    • write

      public void write(long offset, byte[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - byte array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, short[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - short array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, char[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - char array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, int[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - int array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, long[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - long array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, float[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - float array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long offset, double[] buf, int index, int length)
      Indirect the native pointer, copying into memory pointed to by native pointer, from the specified array.
      Parameter:
      offset - byte offset from pointer into which data is copied
      buf - double array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • write

      public void write(long bOff, Pointer[] buf, int index, int length)
      Write the given array of Pointer to native memory.
      Parameter:
      bOff - byte offset from pointer into which data is copied
      buf - Pointer array from which to copy
      index - array index from which to start copying
      length - number of elements from buf that must be copied
    • getValue

      Object getValue(long offset, Class<?> type, Object currentValue)
    • getByte

      public byte getByte(long offset)
      Indirect the native pointer as a pointer to byte. This is equivalent to the expression *((jbyte *)((char *)Pointer + offset)).
      Parameter:
      offset - offset from pointer to perform the indirection
      Gibt zurück:
      the byte value being pointed to
    • getChar

      public char getChar(long offset)
      Indirect the native pointer as a pointer to wchar_t. This is equivalent to the expression *((wchar_t*)((char *)Pointer + offset)).
      Parameter:
      offset - offset from pointer to perform the indirection
      Gibt zurück:
      the wchar_t value being pointed to
    • getShort

      public short getShort(long offset)
      Indirect the native pointer as a pointer to short. This is equivalent to the expression *((jshort *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the short value being pointed to
    • getInt

      public int getInt(long offset)
      Indirect the native pointer as a pointer to int. This is equivalent to the expression *((jint *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the int value being pointed to
    • getLong

      public long getLong(long offset)
      Indirect the native pointer as a pointer to long. This is equivalent to the expression *((jlong *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the long value being pointed to
    • getNativeLong

      public NativeLong getNativeLong(long offset)
      Indirect the native pointer as a pointer to long. This is equivalent to the expression *((long *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the long value being pointed to
    • getFloat

      public float getFloat(long offset)
      Indirect the native pointer as a pointer to float. This is equivalent to the expression *((jfloat *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the float value being pointed to
    • getDouble

      public double getDouble(long offset)
      Indirect the native pointer as a pointer to double. This is equivalent to the expression *((jdouble *)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      the double value being pointed to
    • getPointer

      public Pointer getPointer(long offset)
      Indirect the native pointer as a pointer to pointer. This is equivalent to the expression *((void **)((char *)Pointer + offset)).
      Parameter:
      offset - byte offset from pointer to perform the indirection
      Gibt zurück:
      a Pointer equivalent of the pointer value being pointed to, or null if the pointer value is NULL;
    • getByteBuffer

      public ByteBuffer getByteBuffer(long offset, long length)
      Get a ByteBuffer mapped to the memory pointed to by the pointer, ensuring the buffer uses native byte order.
      Parameter:
      offset - byte offset from pointer to start the buffer
      length - Length of ByteBuffer
      Gibt zurück:
      a direct ByteBuffer that accesses the memory being pointed to,
    • getWideString

      public String getWideString(long offset)
      Read a wide (const wchar_t *) string from memory.
    • getString

      public String getString(long offset)
      Copy native memory to a Java String. The encoding used is obtained form Native.getDefaultStringEncoding().
      Parameter:
      offset - byte offset from pointer to start reading bytes
      Gibt zurück:
      the String value being pointed to
    • getString

      public String getString(long offset, String encoding)
      Copy native memory to a Java String using the requested encoding.
      Parameter:
      offset - byte offset from pointer to obtain the native string
      encoding - the desired encoding
      Gibt zurück:
      the String value being pointed to
    • getByteArray

      public byte[] getByteArray(long offset, int arraySize)
      Read a native array of bytes of size arraySize from the given offset from this Pointer.
    • getCharArray

      public char[] getCharArray(long offset, int arraySize)
      Read a native array of wchar_t of size arraySize from the given offset from this Pointer.
    • getShortArray

      public short[] getShortArray(long offset, int arraySize)
      Read a native array of int16 of size arraySize from the given offset from this Pointer.
    • getIntArray

      public int[] getIntArray(long offset, int arraySize)
      Read a native array of int32 of size arraySize from the given offset from this Pointer.
    • getLongArray

      public long[] getLongArray(long offset, int arraySize)
      Read a native array of int64 of size arraySize from the given offset from this Pointer.
    • getFloatArray

      public float[] getFloatArray(long offset, int arraySize)
      Read a native array of float of size arraySize from the given offset from this Pointer.
    • getDoubleArray

      public double[] getDoubleArray(long offset, int arraySize)
      Read a native array of double of size arraySize from the given offset from this Pointer.
    • getPointerArray

      public Pointer[] getPointerArray(long offset)
      Returns an array of Pointer. The array length is determined by a NULL-valued terminating element.
    • getPointerArray

      public Pointer[] getPointerArray(long offset, int arraySize)
      Returns an array of Pointer of the requested size.
    • getStringArray

      public String[] getStringArray(long offset)

      Returns an array of String based on a native array of char *. The array length is determined by a NULL-valued terminating element.

      The strings are decoded using the encoding returned by Native.getDefaultStringEncoding().
    • getStringArray

      public String[] getStringArray(long offset, String encoding)
      Returns an array of String based on a native array of char *, using the requested encoding. The array length is determined by a NULL-valued terminating element.
    • getStringArray

      public String[] getStringArray(long offset, int length)

      Returns an array of String based on a native array of char *, using the given array length.

      The strings are decoded using the encoding returned by Native.getDefaultStringEncoding().
    • getWideStringArray

      public String[] getWideStringArray(long offset)
    • getWideStringArray

      public String[] getWideStringArray(long offset, int length)
    • getStringArray

      public String[] getStringArray(long offset, int length, String encoding)
      Returns an array of String based on a native array of char* or wchar_t* based on the wide parameter, using the given array length.
      Parameter:
      offset -
      length -
      encoding -
    • setValue

      void setValue(long offset, Object value, Class<?> type)
    • setMemory

      public void setMemory(long offset, long length, byte value)
      Write value to the requested bank of memory.
      Parameter:
      offset - byte offset from pointer to start
      length - number of bytes to write
      value - value to be written
    • setByte

      public void setByte(long offset, byte value)
      Set value at location being pointed to. This is equivalent to the expression *((jbyte *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - byte value to set
    • setShort

      public void setShort(long offset, short value)
      Set value at location being pointed to. This is equivalent to the expression *((jshort *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - short value to set
    • setChar

      public void setChar(long offset, char value)
      Set value at location being pointed to. This is equivalent to the expression *((wchar_t *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - char value to set
    • setInt

      public void setInt(long offset, int value)
      Set value at location being pointed to. This is equivalent to the expression *((jint *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - int value to set
    • setLong

      public void setLong(long offset, long value)
      Set value at location being pointed to. This is equivalent to the expression *((jlong *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - long value to set
    • setNativeLong

      public void setNativeLong(long offset, NativeLong value)
      Set value at location being pointed to. This is equivalent to the expression *((long *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - long value to set
    • setFloat

      public void setFloat(long offset, float value)
      Set value at location being pointed to. This is equivalent to the expression *((jfloat *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - float value to set
    • setDouble

      public void setDouble(long offset, double value)
      Set value at location being pointed to. This is equivalent to the expression *((jdouble *)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - double value to set
    • setPointer

      public void setPointer(long offset, Pointer value)
      Set value at location being pointed to. This is equivalent to the expression *((void **)((char *)Pointer + offset)) = value.
      Parameter:
      offset - byte offset from pointer at which value must be set
      value - Pointer holding the actual pointer value to set, which may be null to indicate a NULL pointer.
    • setWideString

      public void setWideString(long offset, String value)
      Copy string value to the location being pointed to as a wide string (wchar_t*).
      Parameter:
      offset - byte offset from pointer at which characters in value must be set
      value - java.lang.String value to set
    • setString

      public void setString(long offset, WString value)
      Copy string value to the location being pointed to as a wide string (wchar_t*).
      Parameter:
      offset - byte offset from pointer at which characters in value must be set
      value - WString value to set
    • setString

      public void setString(long offset, String value)
      Copy bytes out of string value to the location being pointed to, using the encoding indicated by Native.getDefaultStringEncoding().
      Parameter:
      offset - byte offset from pointer at which characters in value must be set
      value - java.lang.String value to set
    • setString

      public void setString(long offset, String value, String encoding)
      Copy string value to the location being pointed to, using the requested encoding.
      Parameter:
      offset - byte offset from pointer at which characters in value must be set
      value - java.lang.String value to set
      encoding - desired encoding
    • dump

      public String dump(long offset, int size)
      Dump memory for debugging purposes.
    • toString

      public String toString()
      Setzt außer Kraft:
      toString in Klasse Object
    • nativeValue

      public static long nativeValue(Pointer p)
      Read the native peer value. Use with caution.
    • nativeValue

      public static void nativeValue(Pointer p, long value)
      Set the native peer value. Use with caution.