Package com.sun.jna

Klasse Function


public class Function extends Pointer

An abstraction for a native function pointer. An instance of Function represents a pointer to some native function. invoke(Class,Object[],Map) is the primary means to call the function.

Function call behavior may be modified by passing one of the following call flags:
  • C_CONVENTION Use C calling convention (default)
  • ALT_CONVENTION Use alternate calling convention (e.g. stdcall)
  • THROW_LAST_ERROR Throw a LastErrorException if the native function sets the system error to a non-zero value (errno or GetLastError). Setting this flag will cause the system error to be cleared prior to native function invocation.
Autor:
Sheng Liang, originator, Todd Fast, suitability modifications, Timothy Wall
Siehe auch:
  • Felddetails

    • MAX_NARGS

      @Native public static final int MAX_NARGS
      Maximum number of arguments supported by a JNA function call.
      Siehe auch:
    • C_CONVENTION

      @Native public static final int C_CONVENTION
      Standard C calling convention.
      Siehe auch:
    • ALT_CONVENTION

      @Native public static final int ALT_CONVENTION
      First alternate convention (currently used only for w32 stdcall).
      Siehe auch:
    • THROW_LAST_ERROR

      @Native public static final int THROW_LAST_ERROR
      Whether to throw an exception if last error is non-zero after call.
      Siehe auch:
    • USE_VARARGS

      @Native public static final int USE_VARARGS
      Mask for number of fixed args (max 255) for varargs calls.
      Siehe auch:
    • INTEGER_TRUE

      static final Integer INTEGER_TRUE
    • INTEGER_FALSE

      static final Integer INTEGER_FALSE
    • encoding

      final String encoding
    • callFlags

      final int callFlags
    • options

      final Map<String,?> options
    • OPTION_INVOKING_METHOD

      static final String OPTION_INVOKING_METHOD
      For internal JNA use.
      Siehe auch:
  • Konstruktordetails

    • Function

      Function(NativeLibrary library, String functionName, int callFlags, String encoding)
      Create a new Function that is linked with a native function that follows the given calling convention.

      The allocated instance represents a pointer to the named native function from the supplied library, called with the given calling convention.

      Parameter:
      library - NativeLibrary in which to find the function
      functionName - Name of the native function to be linked with
      callFlags - Function call flags
      encoding - Encoding for conversion between Java and native strings.
      Löst aus:
      UnsatisfiedLinkError - if the given function name is not found within the library.
    • Function

      Function(Pointer functionAddress, int callFlags, String encoding)
      Create a new Function that is linked with a native function that follows the given calling convention.

      The allocated instance represents a pointer to the given function address, called with the given calling convention.

      Parameter:
      functionAddress - Address of the native function
      callFlags - Function call flags
      encoding - Encoding for conversion between Java and native strings.
  • Methodendetails

    • getFunction

      public static Function getFunction(String libraryName, String functionName)
      Obtain a Function representing a native function that follows the standard "C" calling convention.

      The allocated instance represents a pointer to the named native function from the named library, called with the standard "C" calling convention.

      Parameter:
      libraryName - Library in which to find the native function
      functionName - Name of the native function to be linked with
      Löst aus:
      UnsatisfiedLinkError - if the library is not found or the given function name is not found within the library.
    • getFunction

      public static Function getFunction(String libraryName, String functionName, int callFlags)
      Obtain a Function representing a native function.

      The allocated instance represents a pointer to the named native function from the named library.

      Parameter:
      libraryName - Library in which to find the function
      functionName - Name of the native function to be linked with
      callFlags - Function call flags
      Löst aus:
      UnsatisfiedLinkError - if the library is not found or the given function name is not found within the library.
    • getFunction

      public static Function getFunction(String libraryName, String functionName, int callFlags, String encoding)
      Obtain a Function representing a native function.

      The allocated instance represents a pointer to the named native function from the named library.

      Parameter:
      libraryName - Library in which to find the function
      functionName - Name of the native function to be linked with
      callFlags - Function call flags
      encoding - Encoding to use for conversion between Java and native strings.
      Löst aus:
      UnsatisfiedLinkError - if the library is not found or the given function name is not found within the library.
    • getFunction

      public static Function getFunction(Pointer p)
      Obtain a Function representing a native function pointer. In general, this function should be used by dynamic languages; Java code should allow JNA to bind to a specific Callback interface instead by defining a return type or Structure field type.

      The allocated instance represents a pointer to the native function pointer.

      Parameter:
      p - Native function pointer
    • getFunction

      public static Function getFunction(Pointer p, int callFlags)
      Obtain a Function representing a native function pointer. In general, this function should be used by dynamic languages; Java code should allow JNA to bind to a specific Callback interface instead by defining a return type or Structure field type.

      The allocated instance represents a pointer to the native function pointer.

      Parameter:
      p - Native function pointer
      callFlags - Function call flags
    • getFunction

      public static Function getFunction(Pointer p, int callFlags, String encoding)
      Obtain a Function representing a native function pointer. In general, this function should be used by dynamic languages; Java code should allow JNA to bind to a specific Callback interface instead by defining a return type or Structure field type.

      The allocated instance represents a pointer to the native function pointer.

      Parameter:
      p - Native function pointer
      callFlags - Function call flags
      encoding - Encoding to use for conversion between Java and native strings.
    • getName

      public String getName()
    • getCallingConvention

      public int getCallingConvention()
    • invoke

      public Object invoke(Class<?> returnType, Object[] inArgs)
      Invoke the native function with the given arguments, returning the native result as an Object.
    • invoke

      public Object invoke(Class<?> returnType, Object[] inArgs, Map<String,?> options)
      Invoke the native function with the given arguments, returning the native result as an Object.
    • invoke

      Object invoke(Method invokingMethod, Class<?>[] paramTypes, Class<?> returnType, Object[] inArgs, Map<String,?> options)
      Invoke the native function with the given arguments, returning the native result as an Object. This method can be called if invoking method and parameter types are already at hand. When calling invoke(Class, Object[], Map), the method has to be in the options under key OPTION_INVOKING_METHOD.
    • invoke

      Object invoke(Object[] args, Class<?> returnType, boolean allowObjects)
    • invoke

      Object invoke(Object[] args, Class<?> returnType, boolean allowObjects, int fixedArgs)
    • invoke

      public void invoke(Object[] args)
      Call the native function being represented by this object
      Parameter:
      args - Arguments to pass to the native function
    • toString

      public String toString()
      Provide a human-readable representation of this object.
      Setzt außer Kraft:
      toString in Klasse Pointer
    • invokeObject

      public Object invokeObject(Object[] args)
      Convenience method for invokeObject(Object.class, args).
    • invokePointer

      public Pointer invokePointer(Object[] args)
      Convenience method for invoke(Pointer.class, args).
    • invokeString

      public String invokeString(Object[] args, boolean wide)
      Parameter:
      args - Arguments passed to native function
      wide - Whether the return value is of type wchar_t*; if false, the return value is of type char*.
    • invokeInt

      public int invokeInt(Object[] args)
      Convenience method for invoke(Integer.class, args).
    • invokeLong

      public long invokeLong(Object[] args)
      Convenience method for invoke(Long.class, args).
    • invokeFloat

      public float invokeFloat(Object[] args)
      Convenience method for invoke(Float.class, args).
    • invokeDouble

      public double invokeDouble(Object[] args)
      Convenience method for invoke(Double.class, args).
    • invokeVoid

      public void invokeVoid(Object[] args)
      Convenience method for invoke(Void.class, args).
    • equals

      public boolean equals(Object o)
      Two function pointers are equal if they share the same peer address and calling convention.
      Setzt außer Kraft:
      equals in Klasse Pointer
    • hashCode

      public int hashCode()
      Provide a unique hash code for Functions which are equivalent.
      Setzt außer Kraft:
      hashCode in Klasse Pointer
    • concatenateVarArgs

      static Object[] concatenateVarArgs(Object[] inArgs)
      Concatenate varargs with normal args to obtain a simple argument array.
    • isVarArgs

      static boolean isVarArgs(Method m)
      Varargs are only supported on 1.5+.
    • fixedArgs

      static int fixedArgs(Method m)
      Varargs are only supported on 1.5+.
    • valueOf

      static Boolean valueOf(boolean b)
      Implementation of Boolean.valueOf for older VMs.