CHANGES.md
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.
LARGE_INTEGER.ByValue to LARGE_INTEGER in WinNT.java - @baier233.isRISCV to c.s.j.Platform - @Glavo.CFLocale, CFLocaleCopyCurrent, CFCFDateFormatter, CFDateFormatterStyle, CFDateFormatterCreate and CFDateFormatterGetFormat to c.s.j.p.mac.CoreFoundation - @dbwiddis.Structure along with more efficient reentrant read-write locking instead of synchronized() blocks - @BrettWooldridgeIsProcessorFeaturePresent to c.s.j.p.win32.Kernel32 - @dbwiddis.XMoveWindow, XResizeWindow, XMoveResizeWindow, XRaiseWindow, XLowerWindow X11 calls to c.s.j.p.unix.X11 - @vinceh121.SetJob, SetPrinter to c.s.j.p.w.Winspool - @tresf.GetMethod, Put, SpawnInstance to c.s.j.p.win32.COM.WbemCli#IWbemClassObject and ExecMethod to c.s.j.p.win32.COM.WbemCli#IWbemServices - @faddom.GetPriorityClass, SetPriorityClass, GetThreadPriority, SetThreadPriority and associated constants to c.s.j.p.win32.Kernel32 - @dEajL3kA.c.s.j.p.mac.XAttr public - @matthiasblaesing.c.s.j.p.bsd.ExtAttr and c.s.j.p.bsd.ExtAttrUtil to wrap BSD <sys/extattr.h> system calls. @rednoah.O_* (e.g. O_APPEND, O_SYNC, O_DIRECT, ...) to c.s.j.p.linux.Fcntl - @matthiasblaesing.Library.OPTION_STRING_ENCODING is ignore for string arguments function calls - @matthiasblaesing.c.s.j.p.win32.Kerne32Util and c.s.j.p.win32.DBT - @matthiasblaesing.libjnidispatch
must be rebuilt to be compatible with this release.c.s.j.p.win32.Psapi.QueryWorkingSetEx and associated Types - @crain-32.VirtualLock and VirtualUnlock in c.s.j.p.win32.Kernel32 - @matthiasblaesing.c.s.j.p.win32.Advapi32Util#isCurrentProcessElevated and associated Types - @dbwiddis.c.s.j.p.win32.WbemCli#IWbemClassObject.IWbemQualifierSet, IWbemServices.GetObject, IWbemContext.SetValue and associated methods - @rchateauneu.Kernel32Util.formatMessage - @overpathz.SymbolProvider in NativeLibrary & Library - @soywiz.dispatch.c) - @matthiasblaesing.c.s.j.Pointer#createConstant(int) - @dbwiddis.OpenGL32Util#wglGetProcAddress, instead of parameter procName the hardcoded value wglEnumGpusNV was used - @soywiz.CFEqual, CFDictionaryRef.ByReference, CFStringRef.ByReference to c.s.j.p.mac.CoreFoundation - @shalupovMemory, CallbackReference and NativeLibrary - @matthiasblaesing.c.s.j.p.win32.PdhUtil#PdhEnumObjectItems - @dbwiddis.Memory#dispose, CallbackReference#dispose and NativeLibrary#dispose
were called by the Object#finalize override. These calls were replaced by
the use of a cleaner. It is not guaranteed anymore, that dispose is called
on subclasses on finalization.c.s.j.p.win32.Sspi#MAX_TOKEN_SIZE on Windows 8/Server 2012 and later - @dbwiddis.CFDictionaryGetCount to c.s.j.p.mac.CoreFoundation - @shalupovCertOpenStore to c.s.j.p.win32.Crypt32 - @shalupovWin32Exception on success for empty section in Kernel32Util#getPrivateProfileSection - @mkarg.c.s.j.p.unix.X11.XK_Shift_R - @matthiasblaesing.sun.boot.library.path system on unix OSes - @matthiasblaesing.RegLoadAppKey to c.s.j.p.win32.Advapi32 and registryLoadAppKey to c.s.j.p.win32.Advapi32Util - @mfilippov.OpenFileMapping to c.s.j.p.win32.Kernel32 - @lmitusinski.zarch_64 as reported by SAPJVM8 to s390x - @MBaesken.file.encoding now defaults to UTF-8) - @matthiasblaesing.ffi_closure_alloc - @davecturner.HKEY_CURRENT_USER_LOCAL_SETTINGS to c.s.j.p.win32.WinReg - @Dani-Hub.REG_NOTIFY_THREAD_AGNOSTIC to c.s.j.p.win32.WinNet and update REG_LEGAL_CHANGE_FILTER - @Dani-Hub.RegNotifyChangeKeyValue to c.s.j.p.win32.Advapi32 - @Dani-Hub.CM_Get_DevNode_Registry_Property to c.s.j.p.win32.Cfgmgr32 and corresponding util in c.s.j.p.win32.Cfgmgr32Util - @dbwiddis.BringWindowToTop to c.s.j.p.win32.User32 - @kahgoh.GetParent to c.s.j.p.win32.User32 - @kahgoh.CommandLineToArgvW to c.s.j.p.win32.Shell32 and corresponding util in c.s.j.p.win32.Shell32Util - @dbwiddis.NUMA_NODE_RELATIONSHIP in c.s.j.p.win32.WinNT to new version of the structure and improve support for future values of c.s.j.p.win32.WinNT.LOGICAL_PROCESSOR_RELATIONSHIP - @dbwiddis.c.s.j.p.mac.CoreFoundation.CFStringRef#stringValue buffer needs space for a null byte - @dbwiddis.c.s.j.p.unix.size_t.ByReference and fix macOS sysctl size_t * parameters - @dbwiddis.c.s.j.p.win32.Crypt32Util#cryptProtectData and #cryptUnprotectData - @dmytro-sheyko.c.s.j.p.win32.Crypt32Util#cryptProtectData and #cryptUnprotectData properly handle 0-length array as input - @dmytro-sheyko.RESOURCE_PREFIX for darwin to darwin-$arch and split jnidispatch library per architecture - @matthiasblaesing.c.s.j.p.win32.WinNT.LOGICAL_PROCESSOR_RELATIONSHIP enum present in Windows Insider builds - @dbwiddis.jpms to custom artifact ids jna-jpms and jna-platform-jpms - @matthiasblaesing.c.s.j.p.win32.Advapi32Util#getAccountBySid - @dbwiddis.The maven coordinates of the experimental JPMS (java module system) artifacts
were moved from using the classifier jpms to custom artifact ids jna-jpms
and jna-platform-jpms, without an classifier. The reason for this is, that
the platform artifacts depend on the jna artifacts and need to pull in the
right variant. This is not possible if the classifier is used.
RESOURCE_PREFIX for darwin (mac OS) was changed from darwin to
darwin-$arch as the fat binaries on mac OS causes various problems:
It was reported, that binaries were rejected from the appstore because x86
binaries were found in the application (jnidispatch for mac OS x86) and that
builds needed to be special cased so that the native library can be
assembled. The latter is also true for JNA.
While the prefix is changed, the old prefix is still searched as a fallback location, so if only a fat binary is present, it can still be loaded.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification) in c.s.j.p.w.Winspool - @ianjoneill.aarch64 architecture to universal darwin target. Cherry pick libffi/libffi#577. - @fkistner, @Vzor-, @tresf.aarch64 target. - @tresf.RegisterApplicationRestart, UnregisterApplicationRestart and GetApplicationRestartSettings in c.s.j.p.w.Kernel32 - @matthiasblaesing.Perfstat library to c.s.j.p.unix.aix - @dbwiddis.-Dw32.ascii=true/false to ant. Previously, UNICODE was always used. - @T-Svenssonmodule-info.class). The new artifacts are named jna-jpms.jar and jna-platform-jpms.jar - @matthiasblaesing.c.s.j.Memory objects - @joerg1985.c.s.j.Structure#read and c.s.j.Structure#write - @joerg1985.c.s.j.p.win32.IPHlpApi#GetExtendedTcpTable, c.s.j.p.win32.IPHlpApi#GetExtendedUdpTable, and supporting structures. - @dbwiddis.c.s.j.p.win32.DBT - @matthiasblaesing.CTL_ENTRY#getRgAttribute, CTL_INFO#getRgCTLEntry, CTL_INFO#getRgExtension, CERT_EXTENSIONS#getRgExtension, CERT_INFO#getRgExtension, CRL_INFO#getRgCRLEntry, CRL_INFO#getRgExtension, CRL_ENTRY#getRgExtension. Add bindings for CertEnumCertificatesInStore, CertEnumCTLsInStore, CertEnumCRLsInStore and CryptQueryObject in c.s.j.p.win32.Crypt32.
WARNING: The signatures for CTL_INFO#getRgCTLEntry and CTL_INFO#getRgExtension were changed - as the original signatures were obviously wrong and read the wrong attributes, it is not considered an API break - @matthiasblaesing.CFStringRef#stringValue for empty Strings - @dyorgio.DLLCallback import from CallbackReference - @dyorgio.c.s.j.p.WindowUtils#getProcessFilePath and fix unittests for windows 32bit intel - @matthiasblaesing.c.s.j.p.win32.WTypes.BSTR String constructor and setValue method, as BSTR allocation should be managed by COM, Automation, and Interop functions - @dbwiddis.c.s.j.p.win32.Kernel32#GetProcessAffinityMask - @dbwiddis.c.s.j.p.win32.Kernel32#SetProcessAffinityMask - @dbwiddis.c.s.j.p.win32.IPHlpAPI#GetTcpStatistics, c.s.j.p.win32.IPHlpAPI#GetUdpStatistics, c.s.j.p.win32.IPHlpAPI#GetTcpStatisticsEx and c.s.j.p.win32.IPHlpAPI#GetUdpStatisticsEx - @dbwiddis.toString to classes extending c.s.j.ptr.ByReference - @dbwiddis.c.s.j.p.win32.Advapi32Util#getTokenPrimaryGroup - @dbwiddis.GetConsoleScreenBufferInfo, ReadConsoleInput and WriteConsole with associated structures to c.s.j.p.win32.Wincon - @rednoah.NetSessionEnum to c.s.j.p.win32.Netapi32 and WTSEnumerateSessions, WTSQuerySessionInformation, and WTSFreeMemory to c.s.j.p.win32.Wtsapi32 - @dbwiddis.libudev to c.s.j.p.linux.Udev - @dbwiddis.c.s.j.p.unix.LibCAPI types size_t and ssize_t, c.s.j.p.linux.LibC methods munmap(), msync(), and close(), c.s.j.p.unix.LibCUtil mapping mmap() and ftruncate(), and c.s.j.p.linux.LibRT methods shm_open() and shm_unlink() - @dbwiddis.Thread32First and Thread32Next to c.s.j.p.win32.Kernel32 - @dbwiddis.c.s.j.p.win32.Psapi and c.s.j.p.win32.PsapiUtil - @T-Svensson.c.s.j.p.win32.WinDef.CHARByReference#getValue should only read one byte - @dbwiddis.c.s.j.p.win32.WinDef.ULONGLONG should always be 8 bytes - @dbwiddis.c.s.j.p.win32.WinNT.LARGE_INTEGER needs to populate both union fields - @dbwiddis.c.s.j.p.mac. @dbwiddis.c.s.j.p.mac.SystemB now extends c.s.j.p.unix.LibCAPI. @dbwiddis.c.s.j.p.win32.com.util and c.s.j.p.win32.com.annotation) in OSGI bundle @dbwiddis.c.s.j.p.win32.Kernel32#CreateRemoteThread and bind VirtualAllocEx, VirtualFreeEx, GetExitCodeThread in c.s.j.p.win32.Kernel32 - @apangin, @matthiasblaesing.c.s.j.p.win32.COM.IShellFolder#ParseDisplayName - @dbwiddis.c.s.j.p.win32.WinNT.java - @trevormaggs.Info-ZIP Unicode Path extra info - @matthiasblaesing.WinBase.SYSTEM_INFO.processorArchitecture union - @dbwiddis.c.s.j.p.win32.Advapi32Util.EventLogRecord#getEventId in favor of #getInstanceId - @dbwiddis..ocx as extension of native libraries on windows - @dmigowski.c.s.j.Structure#newInstance by iteration available constructors instead of exception handling @bjorndarri.Structure#toArray in c.s.j.p.win32.Netapi32Util - @trevormagg, @matthiasblaesing.c.s.j.internal.ReflectionUtils accesses java.lang.invoke.MethodType without reflection, causing java.lang.NoClassDefFoundError on android API level < 26 - @matthiasblaesing.c.s.j.p.win32.VersionHelpers and supporting functions - @dbwiddis.c.s.j.p.win32.Kernel32.GetLogicalProcessorInformationEx function, convenience Util method and supporting structures - @dbwiddis.c.s.j.p.win32.PowrProf#CallNTPowerInformation and supporting structures - @dbwiddis.c.s.j.p.win32.User32 and associated classes to support keyboard related functionality. - @kevemueller.c.s.j.p.win32.Advapi32Util.getAccountBySid(String systemName, PSID sid) ignored parameter instead of passing it to the native function - @nirud.c.s.j.p.win32.COM.util.ProxyObject - @matthiasblaesing.c.s.j.p.win32.COM.WbemcliUtil#enumerateProperties and bind c.s.j.p.win32.COM.Wbemcli.IWbemClassObject.GetNames - @matthiasblaesing.c.s.j.p.win32.PdhUtil - @dbwiddis.c.s.j.p.linux in OSGi bundle. - @dbwiddis.libjnidispatch.a, OpenJDK maps to libjnidispatch.so, which causes the native library extractor to fail. AIX is now hard-coded to libjnidispatch.a - @matthiasblaesing.System.out and System.err in favor of regular logging - @matthiasblaesing.c.s.j.p.win32.Kernel32#OpenEvent - @matthiasblaesing.Advapi32Util.registryValueExists called on non existing key raises exception instead of returning false - @matthiasblaesing.System#loadLibrary mechanism, defaulting jna.nosys to true disabled that code path - @matthiasblaesing.c.s.j.p.WindowUtils.W32WindowUtils.getProcessFilePath(HWND) does not close process handle - @matthiasblaesing.c.s.j.p.unix.X11.XResizeRequestEvent - @matthiasblaesing.statvfs to c.s.j.platform.linux.LibC - @dbwiddis.c.s.j.platform.win32.COM.util.annotation.ComEventCallback in favour of c.s.j.platform.win32.COM.util.annotation.ComMethod - @matthiasblaesing.com.sun.jna.platform.linux.XAttr and com.sun.jna.platform.linux.XAttrUtil JNA wrapper for <sys/xattr.h> for Linux - @wilx.c.s.j.p.win32.Secur32#CompleteAuthToken - @matthiasblaesing.HRESULT in c.s.j.p.win32.COM.COMException, introduce c.s.j.p.win32.COM.COMInvokeException as subclass of COMException for exception as the result of a IDispatch#Invoke. The EXECPINFO is unwrapped into fields in the COMInvokeException and correctly freed. - @matthiasblaesing.Native#loadLibrary requires that the interface class passed in is an instance of Library. The runtime check can be enhanced by using a constraint generic. This breaks binary compatibility (see notes below) - @d-noll.In a followup, the original loadLibrary methods were deprecated and Native#load methods were introduced, that hold the new generic definitions. So this change is now binary compatible.
Structure#newInstance receive the target type as a parameter. This adds a limited generic type, so that the return type ist the target type and not a generic structure, removing the necessity to do an explizit cast - @matthiasblaesing.@ComInterface annotation to com.sun.jna.platform.win32.COM.util.IConnectionPoint to make it possible to retrieve it via IUnknown#queryInterface - @matthiasblaesing.Advapi32#EnumDependendServices, Advapi32#EnumServicesStatusEx and Advapi32#QueryServiceStatus. W32Service#stopService was modified to be more resilent when stopping service - @matthiasblaesing.com.sun.jna.platform.win32.Kernel32.ExpandEnvironmentStrings and add helper method for it as Kernel32Util#expandEnvironmentStrings - @matthiasblaesing.ACEs from com.sun.jna.platform.win32.WinNT.ACL even if the contained ACE is not currently supported - @jrobhoward.c.s.j.Structure.FieldOrder annotation to define the field order of a structures without implementing Structure#getFieldOrder() - @idosu.GetProcessTimes and GetProcessIoCounters to com.sun.jna.platform.win32.Kernel32 - @dbwiddis.CreateMutex, OpenMutex and ReleaseMutex to com.sun.jna.platform.win32.Kernel32 - @matthiasblaesing.PdhLookupPerfNameByIndex, PdhLookupPerfIndexByName, and PdhEnumObjectItems to c.s.j.platform.win32.Pdh and a c.s.j.platform.win32.PdhUtil class to access them - @dbwiddis.PERF_OBJECT_TYPE, PERF_COUNTER_BLOCK, and PERF_COUNTER_DEFINITION to c.s.j.platform.win32.WinPerf and added Pointer constructors to ``PERF_INSTANCE_DEFINITIONandPERF_DATA_BLOCK` - @dbwiddis.WTS_PROCESS_INFO_EX, WTSEnumerateProcessesEx, and WTSFreeMemoryEx to c.s.j.platform.win32.Wtsapi32 - @dbwiddis.GetIfEntry, GetIfEntry2, and GetNetworkParams and supporting structures MIB_IFROW, MIB_IF_ROW2, and FIXED_INFO to c.s.j.platform.win32.IPHlpAPI.java - @dbwiddis.CM_Locate_DevNode, CM_Get_Parent, CM_Get_Child, CM_Get_Sibling, CM_Get_Device_ID, and CM_Get_Device_ID_Size to c.s.j.platform.win32.Cfgmgr32.java and a c.s.j.platform.win32.Cfgmgr32Util class for CM_Get_Device_ID - @dbwiddis.PdhLookupPerfIndexByEnglishName to c.s.j.platform.win32.PdhUtil - @dbwiddis.c.s.j.platform.mac.SystemB for Process, Network interface, Swapfile, Time, and Filesystem info - @dbwiddis.Sysinfo structure and function to c.s.j.platform.linux.LibC - @dbwiddis.c.s.j.platform.win32.Advapi32Util methods which allow the caller to specify samDesiredExtra to request additional registry key security and access rights - @camw.NativeMapped to be used with enums - @koraktor.CoInitializeSecurity and CoSetProxyBlanket to c.s.j.platform.win32.Ole32, added new c.s.j.platform.win32.Wbemcli classes needed to query WMI, and added a WbemcliUtil class implementing WMI queries. - @dbwiddis.~/Library/Application Support/JNA/temp and on other Unix like systems $XDG_CACHE_DIR/JNA/temp (Default value is: ~/.cache/JNA/temp) is used - @matthiasblaesing.com.sun.jna.platform.win32.Kernel32#ExitProcess - @Groostav.#652: Dead Lock in class initialization - @matthiasblaesing.
#843: Correctly bind com.sun.jna.platform.win32.SecBufferDesc and add convenience binding as com.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc. Bind SSPI functions InitializeSecurityContext, AcceptSecurityContext, QueryCredentialsAttributes, QuerySecurityPackageInfo, EncryptMessage, DecryptMessage, MakeSignature, VerifySignature in com.sun.jna.platform.win32.Secur32 - @matthiasblaesing.
#863: Fix ARM softfloat/hardfloat detection by modifying armSoftFloat condition in ELFAnalyser. Before this fix a softfloat binary could be misdetected as hardfloat. - @kunkun26.
#867: Fix memory leak in COMLateBindingObject#getStringProperty - @matthiasblaesing.
#871: Fix mapping of libc function gethostname, sethostname, getdomainname and setdomainname and bind com.sun.jna.platform.win32.Winsock2.gethostname(byte[], int) - @matthiasblaesing.
#876: Restore java 6 compatibility - @matthiasblaesing.
#882: Correctly close file in ELFAnalyser#runDetection, fix suggested by @Sylvyrfysh in #880 - @matthiasblaesing.
#887: MacFileUtils.moveToTrash() doesn't work in a sandboxed app fix suggested by @sobakasu - @matthiasblaesing.
#894: NullPointerException can be caused by calling com.sun.jna.platform.win32.COM.util.ProxyObject#dispose multiple times - @matthiasblaesing.
#925: Optimize Structure#validate and prevent ArrayIndexOutOfBoundsException in SAFEARRAY#read for zero dimensions - @matthiasblaesing.
#340: Guard registry handling against out-of-bounds reads by ensuring all read strings are NULL terminated - @matthiasblaesing.
#902: Allow building JNA on JDK 10. javah
was removed from the JDK and javac is now used to create the necessary headers.
JNA now has JDK 8 as the minimum build version, at runtime Java 6 is the minimum version.
Native code for platforms with a JDK version lower than 8 can still be build by (demonstrated for Solaris x86):
<ol> <li>Run `ant -Dbuild.os.name=SunOS -Dbuild.os.arch=x86 native-build-package`</li> <li>Transfer the `build/build-package-sunos-x86-5.2.1.zip` file to the target system. The file holds the native sources, the necessary headers and and a shell script for the build.</li> <li>Expand the zip on the target system.</li> <li>Setup `JAVA_HOME` to point to the JDK sources.</li> <li>Change into the expanded directory and run `bash build.sh`.</li> <li>The resulting `sunos-x86.jar` is copied back to the original build system to `lib/native/sunos-x86.jar`</li> </ol> - [@matthiasblaesing](https://github.com/matthiasblaesing).#958: Update for PR 863: Old toolchains produce binaries without hard-/softfloat markers. Rasbian is missing the markers and the oracle JDK is also affected. For hardfloat detection now also the Arm EABI section is also considered - @matthiasblaesing.
#974: If the callback code failed to attach to the JVM, this lead to a segfault. The success of attaching to the JVM was checked to late and an invalid JNIEnv pointer was used to access the JVM - @matthiasblaesing.
#1010: Fix binding of lpAccessName parameter of com.sun.jna.platform.win32.Mpr#WNetUseConnection - @matthiasblaesing.
#384: Switch default value for jna.nosys to true. By default then the embedded native library is used - @matthiasblaesing.
com.sun.jna.Pointer#SIZE is removed. Its use is replaced by com.sun.jna.Native#POINTER_SIZE
to prevent a class loading deadlock, when JNA is initialized from multiple threadscom.sun.jna.Pointer#getString(long offset, boolean wide) is removed. It was replaced by
com.sun.jna.Pointer#getString(long offset) or
com.sun.jna.Pointer#getWideString(long offset)com.sun.jna.Pointer#getStringArray(long offset, boolean wide) is removed. It was replaced by
com.sun.jna.Pointer#getStringArray(long offset) or
com.sun.jna.Pointer#getWideStringArray(long offset)com.sun.jna.Pointer#setString(long offset, String value, boolean wide) is removed. It was replaced by
com.sun.jna.Pointer#setString(long offset, String value) or
com.sun.jna.Pointer#setWideString(long offset, String value)com.sun.jna.Structure#setFieldOrder is removed. It was replaced by
com.sun.jna.Structure#getFieldOrder and threw an java.lang.Error on call.com.sun.jna.Native#parseVersion was removed without replacementcom.sun.jna.Native#setPreserveLastError and com.sun.jna.Native#getPreserveLastError
were removed without replacement. They were turned into NOOPs in the past.com.sun.jna.Native#getDirectByteBuffer was replaced by com.sun.jna.Pointer#getByteBuffergethostname, sethostname, getdomainname
and setdomainname in the interface com.sun.jna.platform.unix.LibCAPI
were changed from (char[] name, int len) to (byte[] name, int len)com.sun.jna.Platform#isAix was replaced by com.sun.jna.Platform#isAIXcom.sun.jna.platform.win32.Sspi.SecBufferDesc was incompatibly changed to
match the correct native semantics. SecBufferDesc describing more than one
buffer were broken. For most usecases
com.sun.jna.platform.win32.SspiUtil.ManagedSecBufferDesc is the best
alternative.com.sun.jna.platform.win32.WinBase.FILETIME#toLong() was replaced by
com.sun.jna.platform.win32.WinBase.FILETIME#toTime()com.sun.jna.platform.win32.Variant#COM_DAYS_ADJUSTMENT was removedcom.sun.jna.platform.win32.Variant#MICRO_SECONDS_PER_DAY was removedcom.sun.jna.platform.win32.Variant.VARIANT#toJavaDate was removedcom.sun.jna.platform.win32.Variant.VARIANT#fromJavaDate was removedcom.sun.jna.platform.win32.User32#MonitorFromPoint(Point pt, int dwFlags)
was replaced by
com.sun.jna.platform.win32.User32#MonitorFromPoint(Point.ByValue pt, int dwFlags)com.sun.jna.platform.win32.OleAuto.LoadTypeLib(WString, PointerByReference)
was replaced by
com.sun.jna.platform.win32.OleAuto.LoadTypeLib(String, PointerByReference)com.sun.jna.platform.win32.Kernel32Util.formatMessageFromHR(HRESULT)
was replaced by
com.sun.jna.platform.win32.Kernel32Util.formatMessage(HRESULT)com.sun.jna.platform.win32.COM.COMException was structurally modified. The
pExcepInfo and puArgErr members were removed and hresult member was added.
The now missing information in COMException was moved to COMInvokeException.com.sun.jna.platform.win32.COM.IShellFolder#GetDisplayNameOf
was changed from PointerByReference to STRRET and matching this,
the first parameter of com.sun.jna.platform.win32.Shlwapi.StrRetToStr was
changed identically.ACE_HEADER replaces ACEStructure as the base class for ACEs.
com.sun.jna.platform.win32.WinNT.ACL was modified to support ACLS, that contain
ACEs other than ACCESS_ALLOWED_ACE_TYPE and ACCESS_DENIED_ACE_TYPE by
widening the return type of getACEStructures to ACE_HEADER[] and renaming
the method to getACEs. In
consequence com.sun.jna.platform.win32.Advapi32Util#getFileSecurity was
changed similarly. The SID accessors getSidString and getSID were moved
from ACEStructure to ACCESS_ACEStructure.com.sun.jna.platform.win32.Ole32#CoCreateGuid(GUID.ByReference pguid) was replaced by
com.sun.jna.platform.win32.Ole32#CoCreateGuid(GUID pguid) and
com.sun.jna.platform.win32.Ole32#CLSIDFromString(WString lpsz, CLSID.ByReference pclsid) was replaced by
com.sun.jna.platform.win32.Ole32#CLSIDFromString(String lpsz, CLSID.ByReference pclsid)OleBuildVersion, OleInitialize, OleUninitialize, OleFlushClipboard, OleRun, add VARIANT conversion functions to OleAuto, add default locale, LCID and LANG to WinNT - @matthiasblaesing.boolean[] in direct mapping - @ncruces.com.sun.jna.platform.win32.Advapi32: StartServiceCtrlDispatcher, RegisterServiceCtrlHandler, RegisterServiceCtrlHandlerEx, SetServiceStatus, CreateService, DeleteService and com.sun.jna.platform.win32.Winsvc: Handler, HandlerEx, SERVICE_MAIN_FUNCTION, SERVICE_TABLE_ENTRY, SERVICE_DESCRIPTION, SERVICE_STATUS_HANDLE - @matthiasblaesing.com.sun.jna.platform.win32.User32#MonitorFromPoint - @matthiasblaesing.com.sun.jna.platform.win32.Mpr, com.sun.jna.platform.win32.LmShare, and com.sun.jna.platform.win32.Winnetwk - @amarcionek.ACCESS_* definitions to com.sun.jna.platform.win32.LmAccess - @amarcionek.NetShareAdd and NetShareDel to com.sun.jna.platform.win32.Netapi32 - @amarcionek.CreateProcessWithLogonW to com.sun.jna.platform.win32.Advapi32 - @mlfreeman2.CertAddEncodedCertificateToSystemStore to com.sun.jna.platform.win32.Crypt32 - @mlfreeman2.BitBlt to com.sun.jna.platform.win32.GDI32, Added com.sun.jna.platform.win32.GDI32Util and added getScreenshot() to it - @mlfreeman2.SHEmptyRecycleBin, ShellExecuteEx to com.sun.jna.platform.win32.Shell32 - @mlfreeman2.GetDesktopWindow to com.sun.jna.platform.win32.User32 - @mlfreeman2.ProcessIdToSessionId, LoadLibraryEx, FreeLibrary and Find/Load/Lock/SizeofResource to com.sun.jna.platform.win32.Kernel32 - @mlfreeman2.EnumResourceTypes and EnumResourceNames to com.sun.jna.platform.win32.Kernel32 - @mlfreeman2.GetSystemTimes to com.sun.jna.platform.win32.Kernel32 - @dbwiddis.com.sun.jna.platform.win32.WinBase.FILETIME - @dbwiddis.bool - @twall.XFetchName to X11 interface - @pinaf.Module32FirstW and Module32NextW to com.sun.jna.platform.win32.Kernel32 (and helper to com.sun.jna.platform.win32.Kernel32Util) and MODULEENTRY32W structure to com.sun.jna.platform.win32.Tlhelp32 - @mlfreeman2.com.sun.jna.platform.win32.VersionUtil with getFileVersionInfo utility method to get file major, minor, revision, and build version parts - @mlfreeman2.com.sun.jna.platform.win32.Wininet with the following 4 methods: FindFirstUrlCacheEntry, DeleteUrlCacheEntry, FindCloseUrlCache, FindNextUrlCacheEntry, and the INTERNET_CACHE_ENTRY_INFO structure, and a helper in com.sun.jna.platform.win32.WininetUtil for parsing WinInet's cache - @mlfreeman2.PrintWindow, IsWindowEnabled, IsWindow, FindWindowEx, GetAncestor, GetCursorPos, SetCursorPos, SetWinEventHook, UnhookWinEvent, CopyIcon, and GetClassLong to com.sun.jna.platform.win32.User32 and supporting constants to com.sun.jna.platform.win32.WinUser - @mlfreeman2.EnumProcessModules, GetModuleInformation, and GetProcessImageFileName to com.sun.jna.platform.win32.Psapi and added ExtractIconEx to com.sun.jna.platform.win32.Shell32 - @mlfreeman2.com.sun.jna.platform.win32.Winspool.PRINTER_INFO_2 support. Added GetPrinter and ClosePrinter functions in com.sun.jna.platform.win32.Winspool - @IvanRF.com.sun.jna.MethodResultContext in direct mapping (as done in interface mapping) - @marco2357.Kernel32Util.freeLocalMemory()/Kernel32Util.freeGlobalMemory() always throw com.sun.jna.platform.win32.Win32Exception if failed - @lgoldstein.com.sun.jna.platform.win32.Win32Exception extend com.sun.jna.LastErrorException - @lgoldstein.com.sun.jna.platform.win32.Kernel32Util.closeHandle() method that throws a com.sun.jna.platform.win32.Win32Exception if failed to close the handle - @lgoldstein.wTypeFlags in com.sun.jna.platform.win32.OaIdl.TYPEATTR - @SevenOf9Sleeper.com.sun.jna.platform.win32.COM.util.Convert more flexible and dependable - @matthiasblaesing.com.sun.jna.platform.win32.Psapi.GetPerformanceInfo(), com.sun.jna.platform.win32.Kernel32.GetTickCount64(), and com.sun.jna.platform.win32.Kernel32.SetErrorMode() - @dbwiddis.com.sun.jna.platform.win32.COM.util.CallbackProxy based callbacks - @matthiasblaesing.com.sun.jna.platform.win32.COM.util.ProxyObject-based COM calls - @matthiasblaesing.XSetWMProtocols and XGetWMProtocols to com.sun.jna.platform.unix.X11 - @zainab-ali.com.sun.jna.platform.win32.Advapi32 - @amarcionek.com.sun.jna.platform.win32.NtDll - @amarcionek.SetCurrentProcessExplicitAppUserModelID and GetCurrentProcessExplicitAppUserModelID to com.sun.jna.platform.win32.Shell32 for setting the System.AppUserModel.ID of the host process - @rednoah.GetClientRect to com/sun/jna/platform/win32/User32 - @Jonatino.GetProcAddress(HMODULE, int) to com.sun.jna.platform.win32.Kernel32 - @matthiasblaesing.com.sun.jna.platform.win32.Wevtapi and com.sun.jna.platform.win32.Winevt - @sakamotodesu.SetThreadExecutionState to com.sun.jna.platform.win32.Kernel32 - @matthiasblaesing.GetSecurityDescriptorOwner, SetSecurityDescriptorOwner, GetSecurityDescriptorGroup, SetSecurityDescriptorGroup, GetSecurityDescriptorControl, SetSecurityDescriptorControl, GetSecurityDescriptorDacl, SetSecurityDescriptorDacl, MakeSelfRelativeSD, MakeAbsoluteSD, EqualSid, InitializeSecurityDescriptor, InitializeAcl, AddAce, AddAccessAllowedAce, AddAccessAllowedAceEx, and GetAce to `com.sun.jna.platform.win32.Advapi32 - @amarcionek.RtlNtStatusToDosError to `com.sun.jna.platform.win32.NtDll - @amarcionek.com.sun.jna.platform.win32.WinioctlUtil for help in determining FSCTL_* codes - @amarcionek.com.sun.jna.platform.win32.Ntifs with Reparse Point structures and defines - @amarcionek.GetFileInformationByHandleEx and SetFileInformationByHandle to com.sun.jna.platform.win32.Kernel32 - @amarcionek.com.sun.jna.platform.win32.WinioctlUtil for simplicity dealing with FSCTL_* codes - @amarcionek.SysStringByteLen and SysStringLen to com.sun.jna.platform.win32.OleAuto - @matthiasblaesing.platform.win32.COM.COMBindingBaseObject swallows reason if instantiation fails - @matthiasblaesing.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 and com.sun.jna.platform.win32.Winnetwk - @matthiasblaesing.Native.toString() in #getFileName() and #getAlternateFileName() in c.s.j.p.win32.WinBase instead of custom NUL terminator logic - @jhult.GetCommState, GetCommTimeouts SetCommState and SetCommTimeouts to com.sun.jna.platform.win32.Kernel32. Added DCB structure to com.sun.jna.platform.win32.WinBase - @MBollig.host_processor_info to com.sun.jna.platform.mac.SystemB - @dbwiddis.com.sun.jna.platform.mac.SystemB including support for sysctl, sysctlbyname, sysctlnametomib, mach_host_self, host_page_size, host_statistics and host_statistics64 - @dbwiddis.com.sun.jna.platform.win32.Advapi32.GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityDescriptorLength, IsValidSecurityDescriptor, IsValidAcl - @amarcionek.InvocationHandler) - @dhakehurst.RunningObjectTable - @dhakehurst.com.sun.jna.Structure - @ebourg.com.sun.jna.platform.win32.Dxva2 - @msteiger.CoTaskMemAlloc, CoTaskMemRealloc and CoTaskMemFree to com.sun.jna.platform.win32.Ole32 - @msteiger.com.sun.jna.platform.win32.Shell32.SHGetKnownFolderPath and KnownFolders GUID constants - @msteiger.com.sun.jna.platform.mac.XAttr and com.sun.jna.platform.mac.XAttrUtil JNA wrapper for <sys/xattr.h> for Mac OS X - @rednoah.GetWindowPlacement, SetWindowPlacement, AdjustWindowRect, AdjustWindowRectEx, ExitWindowsEx, and LockWorkstation to com.sun.jna.platform.win32.User32 - @Timeroot.CreateRemoteThread, WritePocessMemory and ReadProcessMemory to com.sun.jna.platform.win32.Kernel32 - @sstokic-tgm.jnacontrib.x11.api.X.Window.getSubwindows - @rm5248.contrib/msoffice sample - @wolftobias.com.sun.jna.Library$Handler and fewer vararg checks in com.sun.jna.Function - @Boereck.com.sun.jna.Library$Handler and com.sun.jna.Function - @Boereck.com.sun.jna.platform.win32.Kernel32.SetSystemTime - @lgoldstein, @thomasjoulin.com.sun.jna.platform.win32.Kernel32.GetComputerNameEx support - @lgoldstein.com.sun.jna.platform.win32.Kernel32.VirtualQueryEx, com.sun.jna.platform.win32.WinNT.MEMORY_BASIC_INFORMATION and MEM_COMMIT, MEM_FREE, MEM_RESERVE, MEM_IMAGE, MEM_MAPPED, MEM_PRIVATE constants - @apsk.com.sun.jna.VarArgsChecker for faster vararg checks. Used in com.sun.jna.Function - @Boereck.com.sun.jna.platform.win32.Advapi3.EncryptFile, DecryptFile, FileEncryptionStatus, EncryptionDisable, OpenEncryptedFileRaw, ReadEncryptedFileRaw, WriteEncryptedFileRaw, and CloseEncryptedFileRaw with related Advapi32Util helpers - @khalidq.com.sun.jna.platform.WindowUtils.getAllWindows, getWindowIcon, getIconSize, getWindowTitle, getPRocessFilePath and getWindowLocationAndSize - @PAX523.com.sun.jna.platform.win32.Kernel32Util.getLastErrorMessage - @PAX523.com.sun.jna.platform.win32.GDI32.GetObject - @PAX523.com.sun.jna.platform.win32.Psapi.GetModuleFileNameEx- @PAX523.com.sun.jna.platform.win32.User32.GetIconInfo, SendMessageTimeout and GetClassLongPtr - @PAX523.com.sun.jna.platform.win32.WinGDI.ICONINFO and BITMAP - @PAX523.com.sun.jna.platform.win32.WinNT - @PAX523.com.sun.jna.platform.win32.WinUser - @PAX523.GetClassLong, SendMessageTimeout and GetIconInfo in com.sun.jna.platform.win32.WinUser - @PAX523.SetupDiOpenDevRegKey , SetupDiEnumDeviceInfo and related constants to com.sun.jna.platform.win32.SetupApi - @ChristianSchwarz.XGrabKeyboard and XUngrabKeyboard to X11 interface - @pinaf.com.sun.jna.platform.win32.Kernel32 - @lgoldstein.aarch64, x86-64, mips, and mips64 targets - @twall.com.sun.jna.platform.win32.Kernel32 - @lgoldstein.com.sun.jna.platform.win32.Kernel32.SetLocalTime - @lgoldstein.com.sun.jna.platform.win32.Kernel32.GetEnvironmentStrings - @lgoldstein.com.sun.jna.platform.win32 - @lgoldstein.com.sun.jna.platform.win32 - @lgoldstein.Comparable interface for many of the base types in com.sun.jna.platform.win32.WinDef - @lgoldstein.GetRawInputDeviceList to com.sun.jna.platform.win32.User32 and User32Util - @lgoldstein.jnacontrib.x11.api.X.Window.getXXXProperty, returns null if the window property is not found - @rm5248.com.sun.jna.platform.win32.Variant and TlbImp - @wolftobias.com.sun.jna.Pointer.getWideStringArray not respecting the length parameter - @csoren.com.sun.jna.platform.win32.WTypes.LPWSTR and LPSTR constructors - @junak-michal.com.sun.jna.platform.win32.COM.COMUtils.SUCCEEDED and FAILED - @lwahonen.VARIANT constructors for int, short, and long - @lwahonen.Structure.equals()/hashCode()- @twall.com.sun.jna.platform.win32.Advapi32Util.registryCloseKey - @falldog.com.sun.jna.platform.win32.COM.tlb.TlbImp - @wolftobias.com.sun.jna.platform.win32.Rasapi32 and Rasapi32Util - @kc7bfi.com.sun.jna.platform.win32.Advapi32Util.registryGet* API to support KEY_WOW64 option - @falldog.com.sun.jna.platform.win32.Gdi32.ChoosePixelFormat and SetPixelFormat - @kc7bfi.com.sun.jna.platform.win32.OpenGL32, OpenGL32Util and WinOpenGL - @kc7bfi.com.sun.jna.platform.win32.Kernel32.GetPrivateProfileSection, GetPrivateProfileSectionNames and WritePrivateProfileSection and corresponding Kernel32Util helpers - @quipsy-karg.DBTF_MEDIA and DBTF_NET to com.sun.jna.platform.win32.DBT - @daifei4321.com.sun.jna.platform.win32.Kernel32.ResetEvent - @manithree.accessCheck to com.sun.jna.platform.win32.Advapi32Util, MapGenericMask and AccessCheck to com.sun.jna.platform.win32.Advapi32, PRIVILEGE_SET and GENERIC_MAPPING to com.sun.jna.platform.win32.WinNT - @BusyByte.Structure.ByValue fields within a Structure - @twall.win32.Win32WindowDemo, now showing the added/removed drive letter, and whether the event is about media in drive or physical drive - @daifei4321.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.Native.getDefaultStringEncoding() and Structure.getStringEncoding()) - @twall.com.sun.jna.Memory) - @twall.platform.win32.Kernel32.GetLogicalProcessorInformation and platform.win32.Kernel32Util.getLogicalProcessorInformation - @trejkaz.jna.profiler.prefix, which defaults to $$YJP$$ - @twall.jna.debug_load property to diagnose library loading issues - @twall.IllegalArgumentException when Structure.ByReference is used where it shouldn't be (can result in multiply freed memory or other unexpected behavior) - @twall.com.sun.jna.platform.win32.Shell32.SHAppBarMessage - @bsorrentino.Structure.read/writeField() protected to facilitate per-field overrides - @twall.Structure.toString() not to dump memory when jna.dump_memory is false - @tomohiron.strerror_r on linux - LionelCons.SecurityManager implementation - @twall.CreateProcessW (Unicode version) - @twall.snprintf on windows is broken) - @davidhoyt.GUID structure can be used directly as alternative to Ole32Util.getGUIDFromString() - @wolftobias.dbt.h - @wolftobias.WTSRegisterSessionNotification() and WTSUnRegisterSessionNotification() from Wtsapi32.dll - @wolftobias.native_window_msg that creates windows, registers for USB device and logon/logoff notifications - @wolftobias.USER_INFO_10 structure from LMAccess.h - @davidmc24.SHGetSpecialFolderPath() and initialization file (.ini) API functions from kernel32.dll - @headcrashing.CLSIDFromProgID() - @headcrashing.RegisterWindowMessage() and new wrapper User32Util for convenient use of RegisterWindowMessage, CreateWindow and CreateWindowEx - @headcrashing.StructureFieldOrderTest unit test in platform project to run on Linux. - @bhamail.XEvents.getFieldOrder() - @xwizard.LMAccess.GROUP_INFO_3.getFieldOrder() to return correct fields names - @bhamail.getFieldOrder() to return correct field names for some X11 structures - @bhamail.Class.forName("java.awt.Component") (see here) - @twall.StructureFieldOrderInspector unit test utility to scan for Structure field issues; see: com.sun.jna.platform.StructureFieldOrderTest.testMethodGetFieldOrder - @bhamail.StructureFieldOrderTest unit test in platform project to run on Linux - @bhamail.moveToTrash() on OSX to work with symlinks - @twall.Thread.getContextClassLoader() returns null - @twall.Netapi32Util.getDomainTrusts() returns "empty" domain object - @aikidojohn.Netapi32.getDC() - added missing fields in DOMAIN_CONTROLLER_INFO - @aikidojohn.DLLCallback to tag your Callback object - @twall.Structure.getFieldOrder() supersedes Structure.setFieldOrder() and is now required - @twall.~/Library/Frameworks and /Library/Frameworks on OSX - @shaneholloway.android-arm target - @ochafik, @twall.jna.tmpdir to override temporary JNA storage location - @twall.EXTRA_MAKE_OPTS ant property to override make variables - @twall.Library.OPTION_OPEN_FLAGS to customize dlopen behavior - @twall.Advapi32Util.registryGetValues() tried to allocate memory for a zero-length REG_BINARY value - @phailwhale22.Memory field in structure - @twall.PointerType fields on Structure.read() if unchanged - @twall.Advapi32Util.registryGetValues() when reading zero length values - @danwi.platform.win32.Kernel32.GetEnvironmentVariable and platform.win32.Kernel32Util.getEnvironmentVariable - @dblock.Kernel32.dll function definitions from WinNT.java into Kernel32.java - @dblock.toPointer() methods on all _PTR types (platform win32) - @twall.ant -Dskip-native to skip platform native build - @twall.ant -Dheadless=true to run unit tests headless - @twall.ULONG_PTR, UINT_PTR, ULONGLONG, WORD, DWORDLONG) - @twall.platform.win32.Netapi32Util.getDomainTrusts - @dblock.struct** arguments (array of struct pointers) - @twall.platform.win32.Secur32.AcquireCredentialsHandle, InitializeSecurityContext and AcceptSecurityContext on Win32 64-bit - @dblock.char * or wchar_t * fields within structures when unmodified (similar to current operation with pointers) - @twall.platform.win32.DsGetDC.DS_DOMAIN_TRUSTS and DsEnumerateDomainTrusts on Win32 64-bit - @trejkaz.Netapi32Util.getDomainTrusts - @trejkaz.platform.win32.W32FileMonitor - @dblock.platform.win32.Shell32.ShellExecute, since returning
HINSTANCE is useless.Structure.clear() always calls ensureAllocated() to avoid NPE.Structure.useMemory(), even if layout is not yet determined.platform.win32.User32: GetLastInputInfo.platform.win32.WinNT.GetFileType and platform.win32.Kernel32Util.getFileType.platform.win32.Kernel32Util: getFileType.REG_MULTI_SZ values on Win32.USER_INFO_23 and GROUP_INFO_3.Netapi32Util.getUserInfo.jna.nosys=true to avoid loading any system-provided JNA (useful for local build/development).jna.boot.library.name system property.jna.nounpack=true.platform.unix.x11: XGrabKey, XUngrabKey, XSetErrorHandler.platform.mac.Carbon: GetEventDispatcherTarget, InstallEventHandler, RegisterEventHotKey, GetEventParameter, RemoveEventHandler, UnregisterEventHotKey.platform.win32.Kernel32: CopyFile, MoveFile, MoveFileEx, CreateProcess, SetEnvironmentVariables, GetFileTime, SetFileTime, SetFileAttributes, DeviceIoControl, GetDiskFreeSpaceEx, CreateToolhelp32Snapshot, Process32First, Process32Next.platform.win32.Msi: MsiGetComponentPath, MsiLocateComponent, MsiGetProductCode, MsiEnumComponents.platform.win32.User32: RegisterHotKey, UnregisterHotKeyplatform.win32.SetupApi: SetupDiGetClassDevs, SetupDiDestroyDeviceInfoList, SetupDiEnumDeviceInterfaces, SetupDiGetDeviceInterfaceDetail, SetupDiGetDeviceRegistryProperty.platform.win32.Shell32.ShellExecute.platform.win32.User32: SetParent, IsWindowVisible, MoveWindow, SetWindowPos, AttachInputThread, SetForegroundWindow, GetForegroundWindow, SetFocus, SendInput, WaitForInputIdle, InvalidateRect, RedrawWindow, GetWindow, UpdateWindow, ShowWindow, CloseWindow.platform.win32.Version: GetFileVersionInfoSize, GetFileVersionInfo, VerQueryValue.platform.win32.Advapi32: GetFileSecurity, RegQueryValueEx(...Long...).platform.win32.Netapi32: NetUserGetInfo.Memory subclasses (jbellis).platform.win32.Advapi32.AdjustTokenPrivileges, platform.win32.Advapi32.LookupPrivilegeName, platform.win32.Advapi32.LookupPrivilegeValue, platform.win32.Advapi32.ImpersonateSelf.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 in platform.win32.WinBase and platform.win32.WinNT. Please note that the SECURITY_ATTRIBUTES structure has been moved from platform.win32.WinNT to platform.win32.WinBase.platform.win32.Kernel32.DeleteFile and platform.win32.Kernel32Util.deleteFile.platform.win32.Kernel32.GetFileAttributes and platform.win32.Kernel32Util.getFileAttributes.platform.win32.Kernel32.GetTickCount.platform.win32.Advapi32.platform.win32.W32ServiceManager and W32Service.platform.win32.Advapi32 and platform.win32.Advapi32Util.EventLogIterator.platform.win32.Advapi32Util.registryCreateKey returns true if key was created, false if it already exists.REG_BINARY, REG_EXPAND_SZ and REG_MULTI_SZ support to platform.win32.Advapi32Util registry functions.com.sun.jna.Native, to ensure that all dependent classes must be disposed before the Native class is unloaded. Note that this change is incompatible with all previous JNA native libraries.platform.win32.Kernel32.GetNativeSystemInfo and GetSystemInfo AV on Win64.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.com.sun.jna.platform.win32.WINBASE into WinDef, WinNT and BaseTSD, matching Windows SDK headers.com.sun.jna.platform.win32.GDI32 into WinGDI, matching Windows SDK headers.com.sun.jna.platform.win32.User32 into WinUser, matching Windows SDK headers.platform.win32.WinNT.LARGE_INTEGER into a union.platform.win32.ObjBase, com.sun.jna.platform.win32.Ole32.CoInitializeEx, CoUninitialize, and CoCreateInstance.platform.win32.Oleaut32.SysAllocString and SysFreeString.platform.win32.Secur32.ImpersonateSecurityContext and RevertSecurityContext.platform.win32.WinNT.WELL_KNOWN_SID_TYPE, SECURITY_MAX_SID_SIZE and other related SID-related constants.platform.win32.Advapi32.CreateWellKnownSid and IsWellKnownSid and com.sun.jna.platform.win32.Advapi32Util.isWellKnownSid.platform.win32.Kernel32.GetVersion, GetVersionEx, GetSystemInfo, GetNativeSystemInfo, GlobalMemoryStatusEx, GetLogicalDriveStrings and IsWow64Process.platform.win32.Kernel32Util.getLogicalDriveStrings.platform.win32.User32.GetSystemMetrics.platform.win32.BaseTSD.DWORD_PTR.platform.win32.WinBase.SYSTEM_INFO and MEMORYSTATUSEX.platform.win32.WinNT.OSVERSIONINFOEX, VER constants.platform.win32.WinDef.ULONGLONG and DWORDLONG.platform.win32.Shell32.SHGetDesktopFolder (prep work for Com4JNA).platform.win32.Winspool.GetPrinterInfo.platform.win32.WinspoolUtil.getPrinterInfo1.platform.win32.GDI32.GetDeviceCaps.platform.win32.GDI32.GetDIBits.ClassCastException in Structure.equals (issue 152).NULL (issue 151).UnregisterNatives in native code (issue 154).read() of uninitialized memory in platform.win32.Advapi32Util.getTokenGroups and getTokenAccount.com.sun.jna.platform.win32.Secur32.QuerySecurityContextToken to take a CtxtHandle instead of PSecHandle.final are never written.size_t size.