NOTE: as of JNA 4.0, JNA is now dual-licensed under LGPL and AL 2.0 (see LICENSE).
NOTE: JNI native support is typically incompatible between minor versions, and almost always incompatible between major versions.
- #652: Dead Lock in class initialization - @matthiasblaesing.
- #843: Correctly bind
com.sun.jna.platform.win32.SecBufferDesc
and add convenience binding ascom.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc
. Bind SSPI functionsInitializeSecurityContext
,AcceptSecurityContext
,QueryCredentialsAttributes
,QuerySecurityPackageInfo
,EncryptMessage
,DecryptMessage
,MakeSignature
,VerifySignature
incom.sun.jna.platform.win32.Secur32
- @matthiasblaesing.
Pointer#SIZE
is removed. Its use is replaced byNative#POINTER_SIZE
to prevent a class loading deadlock, when JNA is initialized from multiple threadsSecBufferDesc
was incompatibly changed to match the correct native semantics. SecBufferDesc describing more than one buffer were broken. For most usecasescom.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc
is the best alternative.
- #774: Addition win32 api : SendMessage, GetActiveWindow, COPYDATASTRUCT and a few constants + a demo application - @cnico.
- #783: Add Ole32 functions:
OleBuildVersion
,OleInitialize
,OleUninitialize
,OleFlushClipboard
,OleRun
, add VARIANT conversion functions to OleAuto, add default locale, LCID and LANG to WinNT - @matthiasblaesing. - #784: Added Solaris Kstat library - @dbwiddis.
- #805: Provide a way to pass JNIEnv pointer to native method and support OPTION_ALLOW_OBJECTs for direct mapping - @ncruces.
- #816: Support
boolean[]
in direct mapping - @ncruces. - #827: Add support for linux-mips64el - @all7.
- #845: Add support for linux-s390x - @matthiasblaesing.
- #771: Rebuild native libraries for linux-x86 and linux-x86-64 with an against an older GLIBC (minimum version of glibc for these architectures is now 2.7) - @matthiasblaesing.
- #821: Move windows service related functions and structures in ntservice sample project to
com.sun.jna.platform.win32.Advapi32
:StartServiceCtrlDispatcher
,RegisterServiceCtrlHandler
,RegisterServiceCtrlHandlerEx
,SetServiceStatus
,CreateService
,DeleteService
andcom.sun.jna.platform.win32.Winsvc
:Handler
,HandlerEx
,SERVICE_MAIN_FUNCTION
,SERVICE_TABLE_ENTRY
,SERVICE_DESCRIPTION
,SERVICE_STATUS_HANDLE
- @matthiasblaesing.
- #776: Do not include ClassPath attribute in MANIFEST.MF of jna-platform. - @matthiasblaesing.
- #785: OaIdlUtil#toPrimitiveArray fails if dimension bounds are not 0-based - @matthiasblaesing.
- #795: com.sun.jna.platform.win32.WinDef.WORDByReference holds a WORD which is defined to 16 bit on windows, so it needs to be accessed as short (getShort()). Fix suggested by - @kdeines.
- #804 Main-Class in jna-platform.jar collides with java 9 module system - @matthiasblaesing.
- #838: Fix binding of
com.sun.jna.platform.win32.User32#MonitorFromPoint
- @matthiasblaesing. - #834: Declare structure members of LPPRINTER_DEFAULTS as public - @matthiasblaesing.
- #757: Build android archive (AAR) - @matthiasblaesing.
- #767: Add Win32 API mapping for Shlwapi PathIsUNC - @ivanwick.
- #753: Support arm hardfloat and softfloat by introducing armel as platform (ARM EABI Little-endian) - @matthiasblaesing.
- #772: Improved speed of GDIUtil.getScreenshot() by ~30% - @sommd.
- #754: Move MSVC build to standard stdbool.h and require Visual C++ 2015 (sizeof(bool) = 1 is now also true on MSVC build) - @matthiasblaesing.
- #399: Check native version before attempting to call into native code - @matthiasblaesing.
- #763: Fix vararg calls without fixed parts - @matthiasblaesing.
- #770: Fix for free data handle in DdemlUtil. - @stolarczykt.
- #526: Added initialization and conversion between Windows SYSTEMTIME and Java Calendar - @lgoldstein.
- #532: Added
com.sun.jna.platform.win32.Mpr
,com.sun.jna.platform.win32.LmShare
, andcom.sun.jna.platform.win32.Winnetwk
- @amarcionek. - #532: Added
ACCESS_*
definitions tocom.sun.jna.platform.win32.LmAccess
- @amarcionek. - #532: Added
NetShareAdd
andNetShareDel
tocom.sun.jna.platform.win32.Netapi32
- @amarcionek. - #535: Added
CreateProcessWithLogonW
tocom.sun.jna.platform.win32.Advapi32
- @mlfreeman2. - #535: Added
CertAddEncodedCertificateToSystemStore
tocom.sun.jna.platform.win32.Crypt32
- @mlfreeman2. - #535: Added
BitBlt
tocom.sun.jna.platform.win32.GDI32
, Addedcom.sun.jna.platform.win32.GDI32Util
and addedgetScreenshot()
to it - @mlfreeman2. - #535: Added
SHEmptyRecycleBin
,ShellExecuteEx
tocom.sun.jna.platform.win32.Shell32
- @mlfreeman2. - #535: Added
GetDesktopWindow
tocom.sun.jna.platform.win32.User32
- @mlfreeman2. - #540: Added Missing Windows kernel32 method: QueryFullProcessImageName - @yossieilaty.
- #543: Added
ProcessIdToSessionId
,LoadLibraryEx
,FreeLibrary
andFind/Load/Lock/SizeofResource
tocom.sun.jna.platform.win32.Kernel32
- @mlfreeman2. - #545: Added
EnumResourceTypes
andEnumResourceNames
tocom.sun.jna.platform.win32.Kernel32
- @mlfreeman2. - #547: Added
GetSystemTimes
tocom.sun.jna.platform.win32.Kernel32
- @dbwiddis. - #548: Return 64-bit unsigned integer from
com.sun.jna.platform.win32.WinBase.FILETIME
- @dbwiddis. - #524: Added IShellFolder interface plus necessary utility functions to Windows platform, and a sample for enumerating objects in My Computer - @lwahonen.
- #471: Determine size of native
bool
- @twall. - #484: Added
XFetchName
toX11
interface - @pinaf. - #554: Initial code for a few Unix 'libc' API(s) @lgoldstein
- #552: Added
Module32FirstW
andModule32NextW
tocom.sun.jna.platform.win32.Kernel32
(and helper tocom.sun.jna.platform.win32.Kernel32Util
) andMODULEENTRY32W
structure tocom.sun.jna.platform.win32.Tlhelp32
- @mlfreeman2. - #564: Use generic definition of Native#loadLibrary @lgoldstein
- #562: Added
com.sun.jna.platform.win32.VersionUtil
withgetFileVersionInfo
utility method to get file major, minor, revision, and build version parts - @mlfreeman2. - #563: Added
com.sun.jna.platform.win32.Wininet
with the following 4 methods:FindFirstUrlCacheEntry
,DeleteUrlCacheEntry
,FindCloseUrlCache
,FindNextUrlCacheEntry
, and theINTERNET_CACHE_ENTRY_INFO
structure, and a helper incom.sun.jna.platform.win32.WininetUtil
for parsing WinInet's cache - @mlfreeman2. - #567: Added
PrintWindow
,IsWindowEnabled
,IsWindow
,FindWindowEx
,GetAncestor
,GetCursorPos
,SetCursorPos
,SetWinEventHook
,UnhookWinEvent
,CopyIcon
, andGetClassLong
tocom.sun.jna.platform.win32.User32
and supporting constants tocom.sun.jna.platform.win32.WinUser
- @mlfreeman2. - #573: Added
EnumProcessModules
,GetModuleInformation
, andGetProcessImageFileName
tocom.sun.jna.platform.win32.Psapi
and addedExtractIconEx
tocom.sun.jna.platform.win32.Shell32
- @mlfreeman2. - #574: Using static final un-modifiable List of field names for structure(s) - @lgoldstein.
- #577: Apply generic definitions wherever applicable - @lgoldstein.
- #569: Added
com.sun.jna.platform.win32.Winspool.PRINTER_INFO_2
support. Added GetPrinter and ClosePrinter functions incom.sun.jna.platform.win32.Winspool
- @IvanRF. - #583: Added printer attributes and status - @IvanRF.
- #589: Use
com.sun.jna.MethodResultContext
in direct mapping (as done in interface mapping) - @marco2357. - #595: Allow calling COM methods/getters requiring hybrid calling (METHOD+PROPERTYGET) - @matthiasblaesing.
- #582: Mavenize the build process - Phase 1: building the native code via Maven - @lgoldstein.
- #606: Added Kernel32Util method to facilitate checking that calls to LocalFree/GlobalFree are successful - @lgoldstein.
- #612:
Kernel32Util.freeLocalMemory()
/Kernel32Util.freeGlobalMemory()
always throwcom.sun.jna.platform.win32.Win32Exception
if failed - @lgoldstein. - #608: Mavenize the build process - change parent and native pom artifactId/name to differentiate in IDE and build tools. - @bhamail
- #613: Make
com.sun.jna.platform.win32.Win32Exception
extendcom.sun.jna.LastErrorException
- @lgoldstein. - #614: Added standard
com.sun.jna.platform.win32.Kernel32Util.closeHandle()
method that throws acom.sun.jna.platform.win32.Win32Exception
if failed to close the handle - @lgoldstein. - #618: Implement SAFEARRAY access and bugfix VARIANT - @matthiasblaesing.
- #616: Allow access to base interfaces (most important IDispatch) via ProxyObject and improve binding by allowing to use dispId for the call - @matthiasblaesing.
- #621: Added TYPEFLAGS-constants for
wTypeFlags
incom.sun.jna.platform.win32.OaIdl.TYPEATTR
- @SevenOf9Sleeper. - #625: Make conversion to/from java to/from VARIANT in
com.sun.jna.platform.win32.COM.util.Convert
more flexible and dependable - @matthiasblaesing. - #639: Add getloadavg() to OS X and Unix - @dbwiddis.
- #640: Add
com.sun.jna.platform.win32.Psapi.GetPerformanceInfo()
,com.sun.jna.platform.win32.Kernel32.GetTickCount64()
, andcom.sun.jna.platform.win32.Kernel32.SetErrorMode()
- @dbwiddis. - #642: COM calls with variable number of arguments (varargs) are now supported - @SevenOf9Sleeper.
- #644: New ant target 'install' for installing JNA artifacts in local m2-repository - @SevenOf9Sleeper.
- #649: Bugfix msoffice sample and add two samples taken from MSDN and translated from VisualBasic to Java - @matthiasblaesing.
- #654: Support named arguments for
com.sun.jna.platform.win32.COM.util.CallbackProxy
based callbacks - @matthiasblaesing. - #659: Enable LCID (locale) override for
com.sun.jna.platform.win32.COM.util.ProxyObject
-based COM calls - @matthiasblaesing. - #665: Added
XSetWMProtocols
andXGetWMProtocols
tocom.sun.jna.platform.unix.X11
- @zainab-ali. - #667: Added SetFileSecurity, GetSecurityInfo and SetSecurityInfo to
com.sun.jna.platform.win32.Advapi32
- @amarcionek. - #667: Added NtSetSecurityObject and NtQuerySecurityObject to
com.sun.jna.platform.win32.NtDll
- @amarcionek. - #680: Added
SetCurrentProcessExplicitAppUserModelID
andGetCurrentProcessExplicitAppUserModelID
tocom.sun.jna.platform.win32.Shell32
for setting the System.AppUserModel.ID of the host process - @rednoah. - #693: Bind DDEML (Dynamic Data Exchange Management Library), add a thread implementation that runs a windows message loop - @matthiasblaesing.
- #702: Added
GetClientRect
tocom/sun/jna/platform/win32/User32
- @Jonatino. - #689: Add
GetProcAddress(HMODULE, int)
tocom.sun.jna.platform.win32.Kernel32
- @matthiasblaesing. - #723: Added
com.sun.jna.platform.win32.Wevtapi
andcom.sun.jna.platform.win32.Winevt
- @sakamotodesu. - #720: Added
SetThreadExecutionState
tocom.sun.jna.platform.win32.Kernel32
- @matthiasblaesing. - #738: Added
GetSecurityDescriptorOwner
,SetSecurityDescriptorOwner
,GetSecurityDescriptorGroup
,SetSecurityDescriptorGroup
,GetSecurityDescriptorControl
,SetSecurityDescriptorControl
,GetSecurityDescriptorDacl
,SetSecurityDescriptorDacl
,MakeSelfRelativeSD
,MakeAbsoluteSD
,EqualSid
,InitializeSecurityDescriptor
,InitializeAcl
,AddAce
,AddAccessAllowedAce
,AddAccessAllowedAceEx
, andGetAce
to `com.sun.jna.platform.win32.Advapi32 - @amarcionek. - #738: Added
RtlNtStatusToDosError
to `com.sun.jna.platform.win32.NtDll - @amarcionek. - #732: Added
com.sun.jna.platform.win32.WinioctlUtil
for help in determining FSCTL_* codes - @amarcionek. - #732: Added
com.sun.jna.platform.win32.Ntifs
with Reparse Point structures and defines - @amarcionek. - #732: Added initialization of FILETIME from LARGE_INTEGER - @amarcionek.
- #732: Added
GetFileInformationByHandleEx
andSetFileInformationByHandle
tocom.sun.jna.platform.win32.Kernel32
- @amarcionek. - #740: Modified
com.sun.jna.platform.win32.WinioctlUtil
for simplicity dealing with FSCTL_* codes - @amarcionek. - #745: Added Secur32#QueryContextAttributes - @barney2k7.
- #549: Fixed bug in types derived from XID - @twall.
- #536: Fixed bug in determining the Library and options associated with types defined outside of a Library - @twall.
- #531: Ensure direct-mapped callbacks use the right calling convention - @twall.
- #566: Fix return type of Native#loadLibrary to match unconstrained generic @lgoldstein.
- #584: Promote float varargs to double - @marco2357.
- #588: Fix varargs calls on arm - @twall.
- #593: Improve binding of TypeLib bindings - @matthiasblaesing.
- #578: Fix COM CallbackHandlers, allow usage of VARIANTs directly in c.s.j.p.w.COM.util.ProxyObject and fix native memory leak in c.s.j.p.w.COM.util.ProxyObject - @matthiasblaesing
- #601: Remove COMThread and COM initialization from objects and require callers to initialize COM themselves. Asserts are added to guard correct usage. - @matthiasblaesing.
- #602: Make sure SID related memory is properly released once no longer required @lgoldstein.
- #610: Fixed issue #604: Kernel32#GetLastError() always returns ERROR_SUCCESS @lgoldstein.
- #633: Restore default usage of platform native encoding for Java strings passed to native functions (was hard-coded to UTF-8 in 4.0 and later) @amake
- #634: Improve BSTR handling and add
SysStringByteLen
andSysStringLen
tocom.sun.jna.platform.win32.OleAuto
- @matthiasblaesing. - #646:
platform.win32.COM.COMBindingBaseObject
swallows reason if instantiation fails - @matthiasblaesing. - #674: Update references to Apache License as requested by issue #673 @bhamail
- #636: Staticly link visual c++ runtime when building with MSVC - @matthiasblaesing.
- #624: WinDef.DWORD getLow() & getHigh() using incorrect bit mask - @matthiasblaesing.
- #668: Correct typemapper used for structures defined in
com.sun.jna.platform.win32.DsGetDC
,com.sun.jna.platform.win32.LMAccess
,com.sun.jna.platform.win32.LMShare
,com.sun.jna.platform.win32.Sspi
,com.sun.jna.platform.win32.WinBase
,com.sun.jna.platform.win32.WinCrypt
,com.sun.jna.platform.win32.WinUser
andcom.sun.jna.platform.win32.Winnetwk
- @matthiasblaesing. - #696: COMLateBindingObject.getAutomationProperty method that takes iDispatch parameter doesn't use it - @matthiasblaesing.
- #664: Prevent premature GC of Pointer and Function objects by passing whole object into JNI call in addition to the raw pointer value - @matthiasblaesing.
- #669: Ensure XSI-compliant strerror_r is used, to prevent corrupted error messages on linux - @DavidKeller.
- #697: Ensure disposed memory is removed from Memory#allocatedMemory map - @matthiasblaesing.
- #731: Require mingw-w64 instead of mingw as the alternative to the MSVC build - @matthiasblaesing.
- #747: - Call
Native.toString()
in#getFileName()
and#getAlternateFileName()
inc.s.j.p.win32.WinBase
instead of custom NUL terminator logic - @jhult.
- #504: Add support for linux-sparcv9 - @alexvsimon.
- #510: Added
GetCommState
,GetCommTimeouts
SetCommState
andSetCommTimeouts
tocom.sun.jna.platform.win32.Kernel32
. AddedDCB
structure tocom.sun.jna.platform.win32.WinBase
- @MBollig. - #512: Make loading debug flags mutable @lwahonen.
- #514: Added
host_processor_info
tocom.sun.jna.platform.mac.SystemB
- @dbwiddis. - #519: Added JNA functional overview - @twall.
- #528: Added idea-jar ant task that creates a convenience jar that contains all native dispatch libraries - @lwahonen.
- #452: Added Mac OS X System.B library at
com.sun.jna.platform.mac.SystemB
including support forsysctl
,sysctlbyname
,sysctlnametomib
,mach_host_self
,host_page_size
,host_statistics
andhost_statistics64
- @dbwiddis. - #446: Added
com.sun.jna.platform.win32.Advapi32.GetNamedSecurityInfo
,SetNamedSecurityInfo
,GetSecurityDescriptorLength
,IsValidSecurityDescriptor
,IsValidAcl
- @amarcionek. - #387: Use of interfaces and annotations to provide easier implementation of COM interfaces (with
InvocationHandler
) - @dhakehurst. - #387: Support for COM event callbacks - @dhakehurst.
- #387: Support for COM interface discovery by iteration over
RunningObjectTable
- @dhakehurst. - Updated AIX natives and build - @twall.
- #290: Improved the stacktrace for the exceptions thrown by
com.sun.jna.Structure
- @ebourg. - #332: Added Win32 Monitor Configuration API in
com.sun.jna.platform.win32.Dxva2
- @msteiger. - Added Winspool monitor sample and updated Kernel32, WinBase, Winspool - @wolftobias.
- #333: Added
CoTaskMemAlloc
,CoTaskMemRealloc
andCoTaskMemFree
tocom.sun.jna.platform.win32.Ole32
- @msteiger. - #334: Added
com.sun.jna.platform.win32.Shell32.SHGetKnownFolderPath
andKnownFolders
GUID constants - @msteiger. - #338: Added
com.sun.jna.platform.mac.XAttr
andcom.sun.jna.platform.mac.XAttrUtil
JNA wrapper for<sys/xattr.h>
for Mac OS X - @rednoah. - #339: Added
GetWindowPlacement
,SetWindowPlacement
,AdjustWindowRect
,AdjustWindowRectEx
,ExitWindowsEx
, andLockWorkstation
tocom.sun.jna.platform.win32.User32
- @Timeroot. - #286: Added
CreateRemoteThread
,WritePocessMemory
andReadProcessMemory
tocom.sun.jna.platform.win32.Kernel32
- @sstokic-tgm. - #350: Added
jnacontrib.x11.api.X.Window.getSubwindows
- @rm5248. - Improved
contrib/msoffice
sample - @wolftobias. - #352: Performance improvements due to reduced locking in
com.sun.jna.Library$Handler
and fewer vararg checks incom.sun.jna.Function
- @Boereck. - #353: Performance improvements by improved collaboration between
com.sun.jna.Library$Handler
andcom.sun.jna.Function
- @Boereck. - #357: Added
com.sun.jna.platform.win32.Kernel32.SetSystemTime
- @lgoldstein, @thomasjoulin. - #365: Added
com.sun.jna.platform.win32.Kernel32.GetComputerNameEx
support - @lgoldstein. - #368: Added
com.sun.jna.platform.win32.Kernel32.VirtualQueryEx
,com.sun.jna.platform.win32.WinNT.MEMORY_BASIC_INFORMATION
andMEM_COMMIT
,MEM_FREE
,MEM_RESERVE
,MEM_IMAGE
,MEM_MAPPED
,MEM_PRIVATE
constants - @apsk. - Allow interoperation with JNI revision changes - @twall.
- #376: Added
com.sun.jna.VarArgsChecker
for faster vararg checks. Used incom.sun.jna.Function
- @Boereck. - #391: Added
com.sun.jna.platform.win32.Advapi3.EncryptFile
,DecryptFile
,FileEncryptionStatus
,EncryptionDisable
,OpenEncryptedFileRaw
,ReadEncryptedFileRaw
,WriteEncryptedFileRaw
, andCloseEncryptedFileRaw
with relatedAdvapi32Util
helpers - @khalidq. - #400: Added
com.sun.jna.platform.WindowUtils.getAllWindows
,getWindowIcon
,getIconSize
,getWindowTitle
,getPRocessFilePath
andgetWindowLocationAndSize
- @PAX523. - #400: Added
com.sun.jna.platform.win32.Kernel32Util.getLastErrorMessage
- @PAX523. - #400: Added
com.sun.jna.platform.win32.GDI32.GetObject
- @PAX523. - #400: Added
com.sun.jna.platform.win32.Psapi.GetModuleFileNameEx
- @PAX523. - #400: Added
com.sun.jna.platform.win32.User32.GetIconInfo
,SendMessageTimeout
andGetClassLongPtr
- @PAX523. - #400: Added
com.sun.jna.platform.win32.WinGDI.ICONINFO
andBITMAP
- @PAX523. - #400: Added process-specific access rights constants in
com.sun.jna.platform.win32.WinNT
- @PAX523. - #400: Added specific constants for request of icon settings in
com.sun.jna.platform.win32.WinUser
- @PAX523. - #400: Added constants for
GetClassLong
,SendMessageTimeout
andGetIconInfo
incom.sun.jna.platform.win32.WinUser
- @PAX523. - #419: Added
SetupDiOpenDevRegKey
,SetupDiEnumDeviceInfo
and related constants tocom.sun.jna.platform.win32.SetupApi
- @ChristianSchwarz. - #421: Added
XGrabKeyboard
andXUngrabKeyboard
toX11
interface - @pinaf. - #422: Update libffi to v3.2.1 - @tdaitx.
- #425: Add support for PPCLE - @tdaitx.
- #428: Added Wincon.h related functions and definitions to
com.sun.jna.platform.win32.Kernel32
- @lgoldstein. - #430: Add android
aarch64
,x86-64
,mips
, andmips64
targets - @twall. - #431: Added named pipe API support to
com.sun.jna.platform.win32.Kernel32
- @lgoldstein. - #432: Added
com.sun.jna.platform.win32.Kernel32.SetLocalTime
- @lgoldstein. - #434: Added
com.sun.jna.platform.win32.Kernel32.GetEnvironmentStrings
- @lgoldstein. - Loosen OSGI OS name matching to accommodate Windows 8 family - Niels Bertram.
- [#436] (java-native-access#469): Added basic Pdh API implementation to 'com.sun.jna.platform.win32' - @lgoldstein.
- [#451] (java-native-access#451): Add VARIANT support for CHAR and BYTE - @mitkola.
- [#478] (java-native-access#451): Ask ldconfig for more places to search for libraries - @gohal.
- [#481] (java-native-access#481): Added volume management functions to
com.sun.jna.platform.win32
- @lgoldstein. - [#483] (java-native-access#483): Found and fixed duplicate method definitions for the same API in
com.sun.jna.platform.win32
- @lgoldstein. - [#485] (java-native-access#485): Implemented
Comparable
interface for many of the base types incom.sun.jna.platform.win32.WinDef
- @lgoldstein. - [#488] (java-native-access#488): Added
GetRawInputDeviceList
tocom.sun.jna.platform.win32.User32
andUser32Util
- @lgoldstein. - #490: Allow arbitrary calling convention specification, including FFI_MS_CDECL which alters handling of struct return values, and multiple Linux/PowerPC conventions - @twall.
- #450: Libraries extracted to temp directory are now cleaned up in case of library loading errors, as well - @aschnab.
- #319: Fix direct-mapping type-mapped pointer result types - @marco2357.
- #350: Fix
jnacontrib.x11.api.X.Window.getXXXProperty
, returnsnull
if the window property is not found - @rm5248. - Fixed
com.sun.jna.platform.win32.Variant
andTlbImp
- @wolftobias. - Fixed
com.sun.jna.Pointer.getWideStringArray
not respecting the length parameter - @csoren. - Fix missing code in X11 demos - @twall.
- Fix compiler warnings OSX - @twall.
- Remove unsupported JAWT from OSX build - @twall.
- Disable WebStart tests - @twall.
- Dispose all native resources when JNA's native library is unloaded - Paul Grütter, @twall.
- Weakly hold registered direct-mapped classes - @twall.
- #382: Fixed memory allocation in
com.sun.jna.platform.win32.WTypes.LPWSTR
andLPSTR
constructors - @junak-michal. - Fix publish doc links - @bhamail.
- #388: Ensure native library always opened with provided flags - @zolyfarkas.
- #403: Fix
com.sun.jna.platform.win32.COM.COMUtils.SUCCEEDED
andFAILED
- @lwahonen. - #404: Fix
VARIANT
constructors forint
,short
, andlong
- @lwahonen. - #420: Fix structure leaving always one element in ThreadLocal set - @sjappig.
- #467: Fix TypeMapper usage with direct-mapped libraries converting primitives to Java objects (specifically enums) - @twall.
- #475: Avoid modifying native memory in
Structure.equals()/hashCode()
- @twall. - #496: Properly handle direct mapping with type mappers which return String/WString - @twall.
- Added
com.sun.jna.platform.win32.Advapi32Util.registryCloseKey
- @falldog. - Enabled platform tests to be run w/o building native bits - @twall.
- Added COM/Typelib java code generator
com.sun.jna.platform.win32.COM.tlb.TlbImp
- @wolftobias. - #226: Added OSGI information to jna-platform.jar - @brettwooldridge.
- #267: Added support for Windows RAS32 API,
com.sun.jna.platform.win32.Rasapi32
andRasapi32Util
- @kc7bfi. - #101: Modify
com.sun.jna.platform.win32.Advapi32Util.registryGet*
API to supportKEY_WOW64
option - @falldog. - #271: Added
com.sun.jna.platform.win32.Gdi32.ChoosePixelFormat
andSetPixelFormat
- @kc7bfi. - #271: Added
com.sun.jna.platform.win32.OpenGL32
,OpenGL32Util
andWinOpenGL
- @kc7bfi. - #250: Added
com.sun.jna.platform.win32.Kernel32.GetPrivateProfileSection
,GetPrivateProfileSectionNames
andWritePrivateProfileSection
and correspondingKernel32Util
helpers - @quipsy-karg. - #287: Added
DBTF_MEDIA
andDBTF_NET
tocom.sun.jna.platform.win32.DBT
- @daifei4321. - #295: Added
com.sun.jna.platform.win32.Kernel32.ResetEvent
- @manithree. - #301: Added
accessCheck
tocom.sun.jna.platform.win32.Advapi32Util
,MapGenericMask
andAccessCheck
tocom.sun.jna.platform.win32.Advapi32
,PRIVILEGE_SET
andGENERIC_MAPPING
tocom.sun.jna.platform.win32.WinNT
- @BusyByte.
- Fixed inconsistent behavior on
Structure.ByValue
fields within aStructure
- @twall. - #279: Accommodate FreeBSD libc loading - @sevan.
- #287: Fixed contrib
win32.Win32WindowDemo
, now showing the added/removed drive letter, and whether the event is about media in drive or physical drive - @daifei4321. - #300: Fix stdcall argument alignment - @twall.
- Added ASL licensing to facilitate distribution - @twall.
- #109: Set default Java compatibility level to 1.6 - @twall.
- #209: Improved default performance saving last error results - @twall.
- Use predictable names for CPU architecture prefix (namely x86, x86-64); names correspond to OSGI processor values - @twall.
- Avoid superfluous Structure memory allocation from native - @twall.
- Added
Library.OPTION_CLASSLOADER
, which enables loading native libraries from any class loader (including JNA's native library). This enables parallel dependencies on JNA (e.g. within a tomcat deployment without having to include JNA in the app server environment) - @twall. - Use per-library String encoding settings (see
Native.getDefaultStringEncoding()
andStructure.getStringEncoding()
) - @twall. - Added memory dump for debugging (see
com.sun.jna.Memory
) - @twall. - Improved caching of Structure alignment, type mapping, and encoding information - @twall.
-
#225: Added
platform.win32.Kernel32.GetLogicalProcessorInformation
andplatform.win32.Kernel32Util.getLogicalProcessorInformation
- @trejkaz. -
#236: Auto-strip profiler native method prefix specified by
jna.profiler.prefix
, which defaults to$$YJP$$ - @twall. - Added
jna.debug_load
property to diagnose library loading issues - @twall. - Throw explicit
IllegalArgumentException
whenStructure.ByReference
is used where it shouldn't be (can result in multiply freed memory or other unexpected behavior) - @twall. - #243: Automatically accommodate long library paths on Windows which would otherwise fail - @twall.
-
#241 - Added
com.sun.jna.platform.win32.Shell32.SHAppBarMessage
- @bsorrentino. - Make
Structure.read/writeField()
protected to facilitate per-field overrides - @twall. - Speed up callback lookup where large numbers of native function pointers are in use - @twall.
- #213: Fixed
Structure.toString()
not to dump memory whenjna.dump_memory
is false - @tomohiron. - Use dedicated TLS to indicate callback detach state, to avoid any potential conflicts with last error storage - @twall.
- #173: Fixed OSX 10.8/Xcode 4+ builds, web start path with Oracle 1.7 JDK - @mkjellman.
- #215: Forced use of XSI
strerror_r
on linux - LionelCons. - #214: Don't map library names when an absolute path is provided - @twall.
- #218: Explicitly handled broken Android
SecurityManager
implementation - @twall. - #223: Fixed layout/size derivation for unions - @twall.
- #229: Added
CreateProcessW
(Unicode version) - @twall. - Avoid solaris/x86 JVM bug w/library open flags - @twall.
- Fixed NPE returning wide string from a direct-mapped function - @twall.
- #237: Fix LastErrorException/getLastError on AIX - @skissane.
- #228: Fix win32/win64 crashes due to LastErrorException buffer overruns (
snprintf
on windows is broken) - @davidhoyt.
- Basic COM support for w32 - @wolftobias.
- Avoid superfluous Structure memory allocation by using Structure(Pointer) ctors if available - @twall.
- PR#120: Provide methods for extracting native libraries from the class path for use by JNA - @Zlika.
- PR#163: The Java
GUID
structure can be used directly as alternative toOle32Util.getGUIDFromString()
- @wolftobias. - PR#163: Ported Win32
dbt.h
- @wolftobias. - PR#163: Added Win32
WTSRegisterSessionNotification()
andWTSUnRegisterSessionNotification()
fromWtsapi32.dll
- @wolftobias. - PR#163: Added Win32
native_window_msg
that creates windows, registers for USB device and logon/logoff notifications - @wolftobias. - PR#178: Added Win32
USER_INFO_10
structure fromLMAccess.h
- @davidmc24. - PR#192: Added Win32
SHGetSpecialFolderPath()
and initialization file (.ini) API functions fromkernel32.dll
- @headcrashing. - PR#194: Added Unit Test for
CLSIDFromProgID()
- @headcrashing. - PR#196: Added Win32
RegisterWindowMessage()
and new wrapperUser32Util
for convenient use ofRegisterWindowMessage
,CreateWindow
andCreateWindowEx
- @headcrashing. - PR#187: Allow
StructureFieldOrderTest
unit test in platform project to run on Linux. - @bhamail.
- PR#180: Fix: added missing fields in
XEvents.getFieldOrder()
- @xwizard. - PR#183: Fix
LMAccess.GROUP_INFO_3.getFieldOrder()
to return correct fields names - @bhamail. - PR#187: Fix
getFieldOrder()
to return correct field names for some X11 structures - @bhamail. - Remove deprecated methods on Memory (getSize,isValid) and Structure (getSize) - @twall.
- Remove problematic AWT check via
Class.forName("java.awt.Component")
(see here) - @twall. - PR#210 Add OSGI processor specs for Mac OS X - @bertfrees.
- PR#174: Recompile linux-amd64 natives to remove glibc-2.11 dependencies, now requires only 2.2.5 or better - @twall.
- PR#183: Added
StructureFieldOrderInspector
unit test utility to scan forStructure
field issues; see:com.sun.jna.platform.StructureFieldOrderTest.testMethodGetFieldOrder
- @bhamail. - PR#187: Allow
StructureFieldOrderTest
unit test in platform project to run on Linux - @bhamail. - #206: Fix
moveToTrash()
on OSX to work with symlinks - @twall. - Fix NPE if
Thread.getContextClassLoader()
returnsnull
- @twall.
- Fix bug where string fields sometimes failed to be writtern - @twall (roman kisluhin).
- PR#145: Fix
Netapi32Util.getDomainTrusts()
returns "empty" domain object - @aikidojohn. - PR#145: Fix
Netapi32.getDC()
- added missing fields inDOMAIN_CONTROLLER_INFO
- @aikidojohn. - PR#151: 'platform.jar' in the dist directory was not updated for release 3.5.0. (The 'platform.jar' published to maven central was correct.)
- #62 If a callback is required to reside in a DLL, use
DLLCallback
to tag your Callback object - @twall. Structure.getFieldOrder()
supersedesStructure.setFieldOrder()
and is now required - @twall.- Search
~/Library/Frameworks
and/Library/Frameworks
on OSX - @shaneholloway. - Automatic cleanup of native threads (based on suggestions from neil smith) - @twall.
- Add
android-arm
target - @ochafik, @twall. - Add
jna.tmpdir
to override temporary JNA storage location - @twall. - Add
EXTRA_MAKE_OPTS
ant property to override make variables - @twall. - Add
Library.OPTION_OPEN_FLAGS
to customize dlopen behavior - @twall. - #113, #114: Add support for GNU/kFreeBSD and debian multi-arch distros - @twall.
- Fix
Advapi32Util.registryGetValues()
tried to allocate memory for a zero-lengthREG_BINARY
value - @phailwhale22. - Fix crash in direct mode callbacks with certain type conversions - @twall.
- More thoroughly propagate unexpected exceptions generated in jnidispatch - @twall.
- Cleanup maven poms and publishing to central repo - @bhamail.
- #129: Allow
Memory
field in structure - @twall. - Preserve
PointerType
fields onStructure.read()
if unchanged - @twall. - #128: Fix masking extracting DWORD upper and lower WORD values - @twall.
- #135: Fix for
Advapi32Util.registryGetValues()
when reading zero length values - @danwi.
- Add
platform.win32.Kernel32.GetEnvironmentVariable
andplatform.win32.Kernel32Util.getEnvironmentVariable
- @dblock. - Moved
Kernel32.dll
function definitions fromWinNT.java
intoKernel32.java
- @dblock. - Provide
toPointer()
methods on all_PTR
types (platform win32) - @twall. - Provide
ant -Dskip-native
to skip platform native build - @twall. - Provide
ant -Dheadless=true
to run unit tests headless - @twall. - Added Windows dev environment instructions - @twall.
- Ensure platform win32 classes use unsigned where appropriate (
ULONG_PTR
,UINT_PTR
,ULONGLONG
,WORD
,DWORDLONG
) - @twall. - #71, #73: Fix OSGI entries in manifest - @twall.
- #78: Fix NPE in
platform.win32.Netapi32Util.getDomainTrusts
- @dblock. - Fix: auto-sync memory for
struct**
arguments (array of struct pointers) - @twall. - Fix:
platform.win32.Secur32.AcquireCredentialsHandle
,InitializeSecurityContext
andAcceptSecurityContext
on Win32 64-bit - @dblock. - Fix: avoid overwriting native
char *
orwchar_t *
fields within structures when unmodified (similar to current operation with pointers) - @twall. - Fix:
platform.win32.DsGetDC.DS_DOMAIN_TRUSTS
andDsEnumerateDomainTrusts
on Win32 64-bit - @trejkaz. - Fix: Crash freeing the wrong pointer in
Netapi32Util.getDomainTrusts
- @trejkaz. - #100: Fix
platform.win32.W32FileMonitor
- @dblock. - Return INT_PTR from
platform.win32.Shell32.ShellExecute
, since returningHINSTANCE
is useless. - Fix runtime error in some instances where Structure.setFieldOrder is used (never return self when sharing AutoAllocated memory).
- #107:
Structure.clear()
always callsensureAllocated()
to avoid NPE. - Ensure internal memory pointer is always allocated when calling
Structure.useMemory()
, even if layout is not yet determined.
- Add 'unsigned' modifier to IntegerType.
- Add to
platform.win32.User32
:GetLastInputInfo
. - Add
platform.win32.WinNT.GetFileType
andplatform.win32.Kernel32Util.getFileType
. - Add to
platform.win32.Kernel32Util
:getFileType
.
- Re-build linux-amd and linux-i386 against older versions of glibc (2.2.5 and 2.1.3 respectively).
- Properly initialize first printer info struct in winspool library.
- Properly support getting and setting zero-array-length
REG_MULTI_SZ
values on Win32. - Fixed SID in Win32
USER_INFO_23
andGROUP_INFO_3
. - Fixed passing domain name into Win32
Netapi32Util.getUserInfo
.
- Provide
jna.nosys=true
to avoid loading any system-provided JNA (useful for local build/development). - Allow override of default jnidispatch library name with
jna.boot.library.name
system property. - Throw an Error if a system install of JNA is incompatible or if JNA's JNI library does not match.
- Disable automatic jnidispatch unpacking with
jna.nounpack=true
. - Automatically look up system error messages for LastErrorException.
- Improved callback thread-mapping support; re-use, rename, and group callback threads.
- Cache structure layout results, improving performance of structure creation.
- linux/arm 32-bit support (hardware provided by Alex Lam).
- linux/ppc 32-bit support (hardware provided by Fritiof Hedman).
- Preliminary linux/ia64, linux/ppc64 support (thanks to Laurent Guerby and the GCC compile farm).
- Windows CE/Mobile support (w32ce-arm) (resources provided by andrea antonello and Hydrologis SRL).
- linux multi-arch support (kohsuke).
- Added REG_QWORD registry type support
- Add to
platform.unix.x11
:XGrabKey
,XUngrabKey
,XSetErrorHandler
. - Add to
platform.mac.Carbon
:GetEventDispatcherTarget
,InstallEventHandler
,RegisterEventHotKey
,GetEventParameter
,RemoveEventHandler
,UnregisterEventHotKey
. - Add to
platform.win32.Kernel32
:CopyFile
,MoveFile
,MoveFileEx
,CreateProcess
,SetEnvironmentVariables
,GetFileTime
,SetFileTime
,SetFileAttributes
,DeviceIoControl
,GetDiskFreeSpaceEx
,CreateToolhelp32Snapshot
,Process32First
,Process32Next
. - Add to
platform.win32.Msi
:MsiGetComponentPath
,MsiLocateComponent
,MsiGetProductCode
,MsiEnumComponents
. - Add to
platform.win32.User32
:RegisterHotKey
,UnregisterHotKey
- Add to
platform.win32.SetupApi
:SetupDiGetClassDevs
,SetupDiDestroyDeviceInfoList
,SetupDiEnumDeviceInterfaces
,SetupDiGetDeviceInterfaceDetail
,SetupDiGetDeviceRegistryProperty
. - Add
platform.win32.Shell32.ShellExecute
. - Add to
platform.win32.User32
:SetParent
,IsWindowVisible
,MoveWindow
,SetWindowPos
,AttachInputThread
,SetForegroundWindow
,GetForegroundWindow
,SetFocus
,SendInput
,WaitForInputIdle
,InvalidateRect
,RedrawWindow
,GetWindow
,UpdateWindow
,ShowWindow
,CloseWindow
. - Add to
platform.win32.Version
:GetFileVersionInfoSize
,GetFileVersionInfo
,VerQueryValue
. - Add to
platform.win32.Advapi32
:GetFileSecurity
,RegQueryValueEx(...Long...)
. - Add to
platform.win32.Netapi32
:NetUserGetInfo
.
- Revise cleanup of in-use temporary files on win32 (issue 6).
- Fix structure alignment issues on linux/ppc.
- Fix structure alignment issues on linux/arm.
- Account for NIO Buffer position (JIRA issue 185).
- Avoid crash with very long Strings (> 150k in length).
- Fix bug tracking Memory with an associated direct ByteBuffer.
- Fix bug handling structs by value when type mappers are in effect (JIRA issue 188).
- Facilitate
Memory
subclasses (jbellis). - Allow multiple fields of the same type in Unions (Francis Barber).
- Add
platform.win32.Advapi32.AdjustTokenPrivileges
,platform.win32.Advapi32.LookupPrivilegeName
,platform.win32.Advapi32.LookupPrivilegeValue
,platform.win32.Advapi32.ImpersonateSelf
. - Add
platform.win32.Advapi32.DuplicateTokenEx
,platform.win32.Advapi32.CreateProcessAsUser
,platform.win32.Kernel32.GetExitCodeProcess
,platform.win32.Kernel32.TerminateProcess
,platform.win32.Kernel32.ReadFile
,platform.win32.Kernel32.CreatePipe
,platform.win32.Kernel32.SetHandleInformation
and related constants / structures inplatform.win32.WinBase
andplatform.win32.WinNT
. Please note that theSECURITY_ATTRIBUTES
structure has been moved fromplatform.win32.WinNT
toplatform.win32.WinBase
. - Add
platform.win32.Kernel32.DeleteFile
andplatform.win32.Kernel32Util.deleteFile
. - Add
platform.win32.Kernel32.GetFileAttributes
andplatform.win32.Kernel32Util.getFileAttributes
. - Add
platform.win32.Kernel32.GetTickCount
. - Add Win32 Service functions to
platform.win32.Advapi32
. - Add
platform.win32.W32ServiceManager
andW32Service
. - Add Win32 Event Logging functions to
platform.win32.Advapi32
andplatform.win32.Advapi32Util.EventLogIterator
. platform.win32.Advapi32Util.registryCreateKey
returnstrue
if key was created,false
if it already exists.- Add
REG_BINARY
,REG_EXPAND_SZ
andREG_MULTI_SZ
support toplatform.win32.Advapi32Util
registry functions. - Reduce JNI crossings in a number of native methods, moving object creation out into pure Java code.
- Move all native functions into
com.sun.jna.Native
, to ensure that all dependent classes must be disposed before theNative
class is unloaded. Note that this change is incompatible with all previous JNA native libraries. - Fix
platform.win32.Kernel32.GetNativeSystemInfo
andGetSystemInfo
AV on Win64. - Fix several potential minor bugs as reported by TvT.
- Fix bug in Structure.StructureSet.toString (Blair Zajac), exposed by Tomcat ThreadLocal cleanup.
- Fix several bugs when using Structure(Pointer) ctor and array fields (Samuel Audet).
- Add native peer value accessors for Pointer
- The
jna.library.path
property is now re-evaluated whenever a native library is loaded. Previously this value was cached when the JNA classes loaded. Native.loadLibrary
can now load.drv
files.- Refactor
com.sun.jna.platform.win32.WINBASE
intoWinDef
,WinNT
andBaseTSD
, matching Windows SDK headers. - Refactor constants from
com.sun.jna.platform.win32.GDI32
intoWinGDI
, matching Windows SDK headers. - Refactor constants from
com.sun.jna.platform.win32.User32
intoWinUser
, matching Windows SDK headers. - Refactor
platform.win32.WinNT.LARGE_INTEGER
into a union. - Add
platform.win32.ObjBase
,com.sun.jna.platform.win32.Ole32.CoInitializeEx
,CoUninitialize
, andCoCreateInstance
. - Add
platform.win32.Oleaut32.SysAllocString
andSysFreeString
. - Add
platform.win32.Secur32.ImpersonateSecurityContext
andRevertSecurityContext
. - Add
platform.win32.WinNT.WELL_KNOWN_SID_TYPE
,SECURITY_MAX_SID_SIZE
and other related SID-related constants. - Add
platform.win32.Advapi32.CreateWellKnownSid
andIsWellKnownSid
andcom.sun.jna.platform.win32.Advapi32Util.isWellKnownSid
. - Add
platform.win32.Kernel32.GetVersion
,GetVersionEx
,GetSystemInfo
,GetNativeSystemInfo
,GlobalMemoryStatusEx
,GetLogicalDriveStrings
andIsWow64Process
. - Add
platform.win32.Kernel32Util.getLogicalDriveStrings
. - Add
platform.win32.User32.GetSystemMetrics
. - Add
platform.win32.BaseTSD.DWORD_PTR
. - Add
platform.win32.WinBase.SYSTEM_INFO
andMEMORYSTATUSEX
. - Add
platform.win32.WinNT.OSVERSIONINFOEX
,VER
constants. - Add
platform.win32.WinDef.ULONGLONG
andDWORDLONG
. - Add
platform.win32.Shell32.SHGetDesktopFolder
(prep work for Com4JNA). - Add
platform.win32.Winspool.GetPrinterInfo
. - Add
platform.win32.WinspoolUtil.getPrinterInfo1
. - Add
platform.win32.GDI32.GetDeviceCaps
. - Add
platform.win32.GDI32.GetDIBits
.
- Fix
ClassCastException
inStructure.equals
(issue 152). - Fix bug initializing a structure object from existing memory when the structure has initialized fields (issue 133).
- Fix NPE reading an array of string from a pointer when an element of the array is
NULL
(issue 151). - Avoid calling
UnregisterNatives
in native code (issue 154). - Compare unpacked library path against canonical (long) filename (issue 156).
- Fix
read()
of uninitialized memory inplatform.win32.Advapi32Util.getTokenGroups
andgetTokenAccount
. - Fix
com.sun.jna.platform.win32.Secur32.QuerySecurityContextToken
to take aCtxtHandle
instead ofPSecHandle
. - Fix definition of BITMAPINFO (platform/win32).
- Split code in examples.jar into a contrib platform.jar package and individual packages for demos.
- Fix Eclipse build and added Eclipse projects for all contrib samples, import projects from jnalib and contrib.
- Ensure Structure fields correctly ordered when inherited.
- Use explicit Structure field whenever provided, regardless of whether the VM requires it.
- Add Win32 mappings for two dozen functions from Kernel32.dll, Advapi32.dll, Netapi32.dll, Secur32.dll, NtDll.dll, Ole32.dll, Shell32.dll and Crypt32.dll to com.sun.jna.platform.win32.
- Port parts of WinError.h, WinNT.h, LMAccess.h, LMCons.h, LMErr.h, LMJoin.h, NTStatus.h, ShlObj.h, WinDef.h, ShellApi.h, Wdm.h, WinReg.h, WinCrypt.h, Sspi.h, Guid.h, NtSecApi.h and DsGetDc.h.
- Add Win32 simplified utility interfaces Kernel32Util, Advapi32Util, Netapi32Util, Crypt32Util, NtDllUtil, Shell32Util, Ole32Util and Secur32Util to com.sun.jna.platform.win32.
- Support unicode paths in W32FileUtils.
- Fix exception during dispose in W32FileMonitor.
- Provide String.replace for 1.4 compatibility.
- Avoid allocating memory when Structure is provided a pointer in the ctor.
- Ensure proper value returned in Pointer.getValue() for non-null, unchanged NIO Buffer values.
- Use 1.4-compatible URI generation (issue 149).
- Make Pointer ctor public.
- Provide access to Function objects for arbitrary Pointer values.
- Add linux/ia64 binaries (bpiwowar). See issue 134 patch.
- Use a more robust method to decode a file-based URL (issue 135).
- Include version information in code in case package information lost.
- Fix WindowUtils exception on mouse over TrayIcon.
- Fix bug toggling windows transparent/opaque (win32/OSX).
- Avoid overwriting unchanged Pointer values in arrays (function calls with Pointer[] and Structure.read).
- Ensure Structure fields marked
final
are never written. - Fix bug preventing proper population Structure.ByReference fields on Structure read.
- Ensure double buffering is disabled in components added to a transparent window.
- Fix UnsatisfiedLinkError attempting to load system libraries under Web Start.
- Fix loading Web Start-provided libraries on OSX (libraries must have a .jnilib suffix under Web Start).
- Properly include sources in Maven zip file (Issue 129).
- Provide length-specified Pointer.getStringArray()
- Fix crash with direct mapping if NULL struct* used (Issue 125).
- Fix case where null-valued Structure fields would get non-null values on write.
- Synch callback Structure/Structure[] arguments on callback return.
- Fix NPE when mapping an interface to the current process.
- Automatically load proper C library version from current process on Linux (avoids crashing bug on Ubuntu with libc-i686 packages active).
- Avoid scanning structure contents in Structure.toString if contents aren't actually used.
- Add HRESULT, LONG mapping to W32API (marc strapetz).
- Fix definition of HWND_BROADCAST in W32API.
- Fix memory alignment checking (Issue 121).
- Fix Structure equals/hashCode implementation, based on current Java fields rather than strictly native memory contents. Avoid using equals/hashCode when avoiding recursive reads/writes.
- Handle String, Structure, Callback, Buffer, and primitive arrays in direct mappings. Handle NativeMapped and TypeMapper, with optimized paths for IntegerType and PointerType.
- Optionally throw errno/GetLastError as an exception. This is preferred to (and more efficient than) calling Native.getLastError().
- Unload/delete native library unpacked from jna.jar if Native class is garbage collected. Only install shutdown hook if using the system class loader.
- Auto-write contiguous Structure arrays when first element is written.
- Support NativeMapped[] as function arguments for interface-mapped libraries (Issue 90).
- Enable function lookup within current process on Windows.
- Restrict recursive structure reads/writes by thread instead of globally. This avoids potentially missed reads/writes with concurrent access (Issue 120).
- Ensure Memory is not GC'd and freed if direct NIO buffers mapped to it are extant.
- Allow types derived from java.nio.Buffer as Structure fields.
- Add raw JNI mapping of static Java methods. Performance is about 10X that of traditional JNA interface mapping, although with less type conversion functionality.
- Add library option to allow passing/return of Java Objects.
- Allow handling of uncaught callback exceptions (Issue 63).
- Object oriented interface to X server (see contrib/x11)
- Make Memory class more accessible.
- Provide Structure ctor with Pointer argument (issue 102).
- Allow implicit library access to current process on linux (issue 98).
- Open all shared libraries with RTLD_GLOBAL, if applicable. This was the default behavior on OSX and changes the default behavior on linux.
- Allow NIO Buffer as Structure field (with limitations) (Issue 57)
- Add
size_t
size.
- Run tests with libjsig.so, if available, which fixes some crashes when running tests on 64-bit platforms.
- Fix Issue 104.
- Fix Issue 94 (Java 1.6 update 10 regression).
- Fix Issue 51 (Java 1.6 update 10 regression).
- Fix Issue 95.
- Fix Issue 101.
- Fix Issue 111, memory leak with String-returning Callback.
- Fix missing storage of union type information (affects usage of struct/union by value as argument and return type).
- Remove non-functional Structure ctors requiring explicit size.
- Fix issue 93 by only manually searching jna.library.path, then falling back to passing the mapped library name to dlopen/LoadLibrary. This fixes an issue in JRUBY where the incorrect libc.so.6 was being loaded.
- Auto-map Pointer[]/String[]/WString[] return values.
- Provide utility functions to convert String to primitive array.
- Add jna.library.boot.path property to define the directory that the native stub library is loaded from
- Improve Win32 loading of libraries with dependencies.
- Fix bug reading structures with PointerType fields, introduced with Pointer field preservation fix.
- Allow arbitrary callback method names if only one method is defined in the class which implements Callback (colinwalters).
- Allow specification of callback type mappers by using a TYPE_MAPPER field (colinwalters).
- Allow uninitialized (null-valued) boxed primitives in Structures (colinwalters).
- Add convenience methods to set active Union field and value simultaneously (xylo).
- Augment Union read/writeField to set the active field.
- Allow Structure auto-synch across native calls to be disabled.
- Win64 support.
- Avoid overwriting unchanged Structure fields of type Pointer.
- Avoid more content dragging on OSX or warn if it's too late.
- Fix UnsatisfiedLinkError using transparent window on Win2K.
- Fix memory leak with callbacks called from native threads with no Java context (johnwallace).
- Defer structure size calculation if type mapper not yet set, allowing type mapper to be set in derived constructors (colinwalters).
- Ensure structure memory is allocated in Structure.read/writeField.
- Allow explicit declaration of field order for VMs which have an unpredictable field order.
- Check for w32 libraries with a "lib" prefix in addition to normal lookup.
- Allow String[]/WString[] as callback argument/return value (assume NULL-terminated array).
- Add Solaris8 compatibility to sunos-sparc build (Corey Puffalt).
- Look up libraries using web start library path, if appropriate (Corey Puffalt).
- Use constants to return integer boolean values.
- Properly track cursor on alpha-masked windows.
- Avoid searching /lib or /usr/lib on 64-bit Linux.
- Avoid using incorrect version of a library when both 32- and 64-bit versions are found.
- Avoid transparent window events always dragging window bug on OSX.
- Fix division by zero error calculating structure size on OSX/ppc.
- Avoid overwriting initialized NativeMapped Structure fields when calculating structure size.
- Fix NPE reading back into StringArray.
- Automatically write contents of Structure.ByReference fields on Structure.write().
- Use the actual parameter type in Function invocations if no parameter type information is available (whether method is missing or untyped varargs).
- Augmented X11 library mappings (xylo).
- Support read/write of NativeMapped arrays within Structure (notably NativeLong).
- Fix library load error when /usr/lib32 and /usr/lib both exist (linux) (Marek Slama).
- Avoid incorrect matches against libraries named with the same prefix (e.g. libc-client.so vs libc.so) (xylo).
- Properly handle arrays of NativeMapped (e.g. NativeLong) as a Structure field (stefan endrullis).
- Ensure structure size calculated prior to setting union active type.
- XID is 64-bits on 64-bit X clients (xylo).
- Ensure proper arch name is used on Debian (amd64 instead of x86_64).
- Enable build/run using IBM's J9 VM (leonardo).
- Make StdCallFunctionMapper attempt a leading underscore if the simpler mapping doesn't work.
- Allow Structure.read to overwrite final fields (may not work on some 1.4 VMs).
- Fix NPE when passing an array of Structure.ByReference.
- Compare entire linux library version when finding a match.
- Don't pass struct by value unless the method signature declares it.
- Restrict custom first element structure alignment to OSX/ppc.
- Improve performance and reduce memory footprint for window masks. Optimize polygon-based masks on w32. Use XFillRectangles on X11.
- Fix linkage settings on sunos-amd64 to avoid relocation errors.
- Fix callback allocation code on w32, solaris, freebsd, darwin (libffi was misconfigured).
- Fix bug when NativeMapped fields are used in a Structure.ByValue instance.
- Fix NPE calling Structure.read() before memory is initialized.
- Fix NPE calling Structure.read/write with uninitialized NativeMapped fields.
- Attempt to force unload of jnidispatch library prior to deleting it (w32).
- Added amd64 targets for OSX, FreeBSD, and Solaris.
- Reduce space allocated for invocation arguments.
- Fix NPE when NativeMapped type is used in a Structure.
- Fix some X11 type mappings for 64-bit.
- Fix OSX Leopard/JRE1.5+ window transparency.
- Fix window alpha compositing on X11.
- Fix loading of libraries with unicode names on OSX.
- Improve transparent window drawing performance on w32
- Use closure allocation from libffi
- Ensure nested structure arrays initialized with Structure.toArray use the appropriate native memory.
- Ensure structure size is calculated prior to converting to array
- Avoid creating new windows when setting a window mask
- Fix bug in Pointer.setChar.
- More supported platforms, via GCC's libffi (wmeissner)
- Support struct by value as parameter and return value (duncan)
- Support struct by reference within structures
- Provide access to native peer for java.awt.Component
- Provide access to native peer on OS X.
- Support MINGW32 builds (fullung)
- Allow per-field Structure read/write by field name
- Avoid writing Structure fields marked 'volatile'
- Read and wrap function pointers in Structure fields when read with a Java proxy to allow easy Java-side invocation (Ken Larson)
- Support array-backed Buffers as arguments (wmeissner)
- Auto-conversion of custom types (wmeissner)
- Allow pointer type-safety
- Optional VM crash protection, via Native.setProtected(boolean)
- Auto-convert WString[]
- Provide library synchronization wrapper similar to Collections.synchronizedX
- Support lookup of OSX framework libraries by name
- Explicit access to shared library global data
- Invocation interception to facilitate translation of C preprocessor macros and inline functions
- Provide utility to determine Web Start native library cache location; auto-include this path if jnidispatch is included as a <nativelib> (robertengels)
- Provide access to aligned memory
- Versioning information embedded in jna.jar and native library
- Avoid attempts to free native library if it failed to load (wmeissner)
- Explicitly check method signatures for varargs instead of heuristically guessing (wmeissner)
- Disallow declaring Pointer-derived fields in Structures (Function, Memory)
- Ensure Object.toString/hashCode/equals methods are intercepted on proxyied interfaces
- Update X11 library for 64-bit use (wmeissner)
- Properly map arrays of char*/wchar_t* under w32
- Allow Pointer[] as a Structure field and Function argument
- Fix some misleading Structure error messages
- Properly preserve/return GetLastError/errno after native calls
- Allocate executable memory on w32 to avoid errors with hardware-enforced data execution protection (DEP)
- Fix VM crash on w32 stdcall callbacks
- Use long offsets and sizes rather than ints (64-bit safe)
- Properly clean up references and release closure memory on JNI_Unload
- Use simpler AWT/JAWT library loading workaround
- Avoid changing array references within a Structure on read
- Unions
- Optimized shaped windows (chris deckers & olivier chafik); instantiation time improved by about 2-3 orders of magnitude for large, mostly contiguous shapes
- Provide type mapping in callback arguments/results
- Provide access to ByteBuffer direct address as a Pointer
- Provide customization of native string encoding with jna.encoding system property
- Properly handle VMs with reversed Structure member storage
- Avoid making window undecorated when clearing window mask on X11
- Fix structure alignment bug on OSX/PPC when first element is > 4 bytes in size
- Clearing OSX window mask by setting to MASK_NONE now works properly
- Avoid index exceptions if native buffers are not NUL-terminated on string conversions
- Write initialized Structure[] argument memory prior to function calls
- Fix IllegalArgumentException reading WString into a Structure
- Clear memory when allocating a structure block (fixes VM crash)
- Remove versioned JAWT dependency on OSX, allowing use on 10.3/JRE1.4.
- Explicitly support unaligned structures
- Auto-reallocate structure arrays
- Automatic handling of w32 UNICODE/ASCII variants
- Automatic mapping of decorated w32 stdcall function names
- Customizable, automatic type conversion of arguments and results (wmeissner)
- Support char*[] arguments as Java String[]
- Structure supports Callback members (wmeissner)
- getByteBuffer from Pointer/Memory (wmeissner)
- Allow GC of native libraries
- Facilitate use from non-Java contexts (JRuby et al.) (wmeissner)
- Improve library path searching (wmeissner)
- Handle Structure[] arguments
- Handle native long arguments and return values
- Handle direct and array-based ByteBuffer arguments (wmeissner)
- Change default w32 build to use GCC (it's free, yo)
- Structure.toArray failed to initialize members
- Disallow explicit free of Structure/Memory
- Ensure native libraries are only loaded once until released
- Properly handle NULL when the return value is a Structure
- Proper conversion to wchar_t on linux
- Copy full length of Java strings to C strings instead of stopping when a NUL character is encountered