com.sun.jna
public final class Native extends Object
Native and Native are provided to avoid having to explicitly pass these parameters to Structures, which would require every Structure which requires custom mapping or alignment to define a constructor and pass parameters to the superclass. To avoid lots of boilerplate, the base Structure constructor figures out these properties based on its enclosing interface.
See Also: Library
Nested Class Summary | |
---|---|
static class | Native.DeleteNativeLibrary For internal use only. |
interface | Native.ffi_callback |
Field Summary | |
---|---|
static int | LONG_SIZE Size of a native long type, in bytes. |
static int | POINTER_SIZE The size of a native pointer ( void* ) on the current
platform, in bytes. |
static int | SIZE_T_SIZE Size of a native size_t type, in bytes. |
static int | WCHAR_SIZE Size of a native wchar_t type, in bytes. |
Method Summary | |
---|---|
static void | ffi_call(long cif, long fptr, long resp, long args) |
static void | ffi_free_closure(long closure) |
static long | ffi_prep_cif(int abi, int nargs, long ffi_return_type, long ffi_types) |
static long | ffi_prep_closure(long cif, Native.ffi_callback cb) |
static Class | findEnclosingLibraryClass(Class cls) Find the library interface corresponding to the given class. |
static byte[] | getBytes(String s) Return a byte array corresponding to the given String. |
static byte[] | getBytes(String s, String encoding) Return a byte array corresponding to the given String, using the given
encoding. |
static Callback.UncaughtExceptionHandler | getCallbackExceptionHandler() Returns the current handler for callback uncaught exceptions. |
static Class | getCallingClass() |
static long | getComponentID(Component c) Utility method to get the native window ID for a heavyweight Java
Component as a long value.
|
static Pointer | getComponentPointer(Component c) Utility method to get the native window pointer for a heavyweight Java
Component as a Pointer value. |
static Pointer | getDirectBufferPointer(Buffer b) Convert a direct Buffer into a Pointer. |
static int | getLastError() Retrieve the last error set by the OS. |
static Map | getLibraryOptions(Class type) Return the preferred native library configuration options for the given
class. |
static Class | getNativeClass(Class cls) |
static String | getNativeLibraryResourcePath(int osType, String arch, String name) |
static int | getNativeSize(Class type, Object value) Returns the native size of the given class, in bytes.
|
static int | getNativeSize(Class cls) Returns the native size for a given Java class. |
static boolean | getPreserveLastError() Indicates whether the system last error result is preserved
after every invocation. |
static int | getStructureAlignment(Class cls) Return the preferred structure alignment for the given native interface.
|
static TypeMapper | getTypeMapper(Class cls) Return the preferred TypeMapper for the given native interface.
|
static String | getWebStartLibraryPath(String libName) If running web start, determine the location of a given native
library. |
static long | getWindowID(Window w) Utility method to get the native window ID for a Java Window
as a long value.
|
static Pointer | getWindowPointer(Window w) Utility method to get the native window pointer for a Java
Window as a Pointer value. |
static int | initialize_ffi_type(long type_info) Returns the size (calculated by libffi) of the given type. |
static boolean | isProtected() Returns whether protection is enabled. |
static boolean | isSupportedNativeType(Class cls) Indicate whether the given class is supported as a native argument
type. |
static Object | loadLibrary(Class interfaceClass) Map a library interface to the current process, providing
the explicit interface class. |
static Object | loadLibrary(Class interfaceClass, Map options) Map a library interface to the current process, providing
the explicit interface class. |
static Object | loadLibrary(String name, Class interfaceClass) Map a library interface to the given shared library, providing
the explicit interface class.
|
static Object | loadLibrary(String name, Class interfaceClass, Map options) Load a library interface from the given shared library, providing
the explicit interface class and a map of options for the library.
|
static void | main(String[] args) Prints JNA library details to the console. |
static void | register(String libName) When called from a class static initializer, maps all native methods
found within that class to native libraries via the JNA raw calling
interface. |
static void | register(NativeLibrary lib) When called from a class static initializer, maps all native methods
found within that class to native libraries via the JNA raw calling
interface. |
static void | register(Class cls, NativeLibrary lib) When called from a class static initializer, maps all native methods
found within that class to native libraries via the JNA raw calling
interface. |
static void | setCallbackExceptionHandler(Callback.UncaughtExceptionHandler eh) Set the default handler invoked when a callback throws an uncaught
exception. |
static void | setLastError(int code) Set the OS last error code. |
static void | setPreserveLastError(boolean enable) Set whether the system last error result is captured after every
native invocation. |
static void | setProtected(boolean enable) Set whether native memory accesses are protected from invalid
accesses. |
static Library | synchronizedLibrary(Library library)
Returns a synchronized (thread-safe) library backed by the specified
library. |
static byte[] | toByteArray(String s) Obtain a NUL-terminated byte buffer equivalent to the given String,
using jna.encoding or the default platform encoding if
that property is not set. |
static byte[] | toByteArray(String s, String encoding) Obtain a NUL-terminated byte buffer equivalent to the given String,
using the given encoding. |
static char[] | toCharArray(String s) Obtain a NUL-terminated wide character buffer equivalent to the given
String. |
static String | toString(byte[] buf) Obtain a Java String from the given native byte array. |
static String | toString(byte[] buf, String encoding) Obtain a Java String from the given native byte array, using the given
encoding. |
static String | toString(char[] buf) Obtain a Java String from the given native wchar_t array. |
static void | unregister() Remove all native mappings for the calling class.
|
static void | unregister(Class cls) Remove all native mappings for the given class.
|
static void | updateLastError(int e) Update the last error value (called from native code). |
long
type, in bytes.void*
) on the current
platform, in bytes.size_t
type, in bytes.wchar_t
type, in bytes.jna.encoding
is set, its value will override
the default platform encoding (if supported).long
value.
This method is primarily for X11-based systems, which use an opaque
XID
(usually long int
) to identify windows.Throws: HeadlessException if the current VM is running headless
HWND
type (actually
void *
) to identify windows.Throws: HeadlessException if the current VM is running headless
Throws: IllegalArgumentException if the buffer is not direct.
GetLastError()
on Windows, and errno
on
most other platforms. The value is preserved per-thread, but whether
the original value is per-thread depends on the underlying OS. The
result is undefined if Native is
false
.The preferred method of obtaining the last error result is to declare your mapped method to throw LastErrorException instead.
See Also: Library
struct
pointers unless they implement
ByValue.Deprecated: The preferred method of obtaining the last error result is to declare your mapped method to throw LastErrorException instead.
Indicates whether the system last error result is preserved after every invocation.jna.library.path
so that JNA can load libraries identified
by the <nativelib> tag in the JNLP configuration file. Returns
null
if the Web Start native library cache location can not
be determined. Note that the path returned may be different for any
given library name.
Use System.getProperty("javawebstart.version")
to detect
whether your code is running under Web Start.
Returns: null if unable to query the web start loader.
Throws: UnsatisfiedLinkError if the library can't be found by the
Web Start class loader, which usually means it wasn't included as
a <nativelib>
resource in the JNLP file.
long
value.
This method is primarily for X11-based systems, which use an opaque
XID
(usually long int
) to identify windows.Throws: HeadlessException if the current VM is running headless
HANDLE
type (actually
void *
) to identify windows.Throws: HeadlessException if the current VM is running headless
setProtected(true)
to determine
if this platform supports protecting memory accesses.Parameters: interfaceClass
Parameters: interfaceClass options Map of library options
name
is null, attempts to map onto the current process.Parameters: name interfaceClass
If name
is null, attempts to map onto the current process.
Parameters: name interfaceClass options Map of library options
Parameters: libName library name to which functions should be bound
Parameters: lib native library to which functions should be bound
Parameters: lib library to which functions should be bound
null
, the default
handler will be reinstated.Deprecated: The preferred method of obtaining the last error result is to declare your mapped method to throw LastErrorException instead.
Set whether the system last error result is captured after every native invocation. Defaults totrue
(false
for direct-mapped calls).jna.protected
has a value of "true"
when the JNA library is first loaded.If not supported by the underlying platform, this setting will have no effect.
NOTE: On platforms which support signals (non-Windows), JNA uses
signals to trap errors. This may interfere with the JVM's own use of
signals. When protected mode is enabled, you should make use of the
jsig library, if available (see Signal Chaining).
In short, set the environment variable LD_PRELOAD
to the
path to libjsig.so
in your JRE lib directory
(usually ${java.home}/lib/${os.arch}/libjsig.so) before launching your
Java application.
Parameters: library the library to be "wrapped" in a synchronized library.
Returns: a synchronized view of the specified library.
jna.encoding
or the default platform encoding if
that property is not set.jna.encoding
is set, its value will
override the platform default encoding (if supported).encoding
parameter is null,
the platform default encoding will be used.