win32
Call common Windows APIs directly from Dart using FFI.
6.4.0
1000K downloads/mo
#36 most downloaded on pub.dev
halildurmus/win32
What this package is like to depend on
Last release 18 days ago
05 Aug 2026
Release timing varies
gaps range from 1 weeks to 5 months
Nearly every release is documented
notes for 137 of 137 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
152 releases · first in 2020
7 releases in the last 12 months
see the full history below
Release timeline
152 releases · Mar 2020 to Aug 2026Releases
latest 60 of 152-
6.4.005 Aug 2026Release notes
Open source →🚀 Features
- Add
ResumeThreadandSuspendThreadAPIs (#1117) - Add DNS Service Registration functions (#1118)
- Add
-
6.3.022 May 2026Release notes
Open source →6.3.0 - 2026-05-22
🧹 Refactor
- Remove the build hook that either downloaded prebuilt binaries or compiled
native C wrappers for Win32 APIs that report errors viaGetLastError().
These bindings now pre-resolveGetLastError()before each call, ensuring the
error code is captured reliably without any native code.
Release notes
Open source →🧹 Refactor
- Remove the build hook that either downloaded prebuilt binaries or compiled
native C wrappers for Win32 APIs that report errors via
GetLastError(). These bindings now pre-resolveGetLastError()before each call, ensuring the error code is captured reliably without any native code.
- Remove the build hook that either downloaded prebuilt binaries or compiled
-
6.2.007 May 2026Release notes
Open source →6.2.0 - 2026-05-07
🚀 Features
-
Add
OsVersionclass for reliable Windows version detection and OS baseline
checks. UseOsVersion.currentto retrieve the running version and the
relational operators (<,<=,>=,>) to range-check it against
well-known baselines (OsVersion.win10,OsVersion.win11, etc.). -
Add extension methods on
GUIDfor comparison and ordering:compareTo(),
isEqualTo(), and the relational operators (<,<=,>=,>). Useful for
usingGUIDas a key in sorted collections such asSplayTreeMap. -
Add
GET_X_LPARAM()andGET_Y_LPARAM()macros for correctly extracting
signed x/y cursor coordinates from Windows message parameters. Unlike
LOWORD()/HIWORD(), these macros handle negative coordinates that occur
when a secondary display is positioned to the left of or above the primary
display.
🐛 Bug Fixes
- Fix
IsWindowsServer()using the wrong constant.
Release notes
Open source →🚀 Features
-
Add
OsVersionclass for reliable Windows version detection and OS baseline checks. UseOsVersion.currentto retrieve the running version and the relational operators (<,<=,>=,>) to range-check it against well-known baselines (OsVersion.win10,OsVersion.win11, etc.). -
Add extension methods on
GUIDfor comparison and ordering:compareTo(),isEqualTo(), and the relational operators (<,<=,>=,>). Useful for usingGUIDas a key in sorted collections such asSplayTreeMap. -
Add
GET_X_LPARAM()andGET_Y_LPARAM()macros for correctly extracting signed x/y cursor coordinates from Windows message parameters. UnlikeLOWORD()/HIWORD(), these macros handle negative coordinates that occur when a secondary display is positioned to the left of or above the primary display.
🐛 Bug Fixes
- Fix
IsWindowsServer()using the wrong constant.
-
-
6.1.022 Apr 2026Release notes
Open source →6.1.0 - 2026-04-22
🚀 Features
-
The build hook now downloads prebuilt binaries from GitHub release artifacts
instead of compiling from C source, eliminating the MSVC requirement for
users who don't have the necessary tools installed.Users who prefer or require local compilation can opt out by setting the
local_builduser-define totruein theirpubspec.yaml:hooks: user_defines: win32: local_build: true
Release notes
Open source →🚀 Features
-
The build hook now downloads prebuilt binaries from GitHub release artifacts instead of compiling from C source, eliminating the MSVC requirement for users who don't have the necessary tools installed.
Users who prefer or require local compilation can opt out by setting the
local_builduser-define totruein theirpubspec.yaml:hooks: user_defines: win32: local_build: true
-
-
6.0.111 Apr 2026 -
6.0.022 Feb 2026Release notes
Open source →🔄 Breaking Changes
This release introduces a major redesign of the Win32 Dart API with a strong focus on type safety, deterministic resource management, and idiomatic Dart usage. Most changes are mechanical but widespread.
Key breaking changes include:
-
Exception-based error handling
- APIs returning
HRESULTnow throwWindowsExceptionon failure - Logical return values are returned directly instead of via out-parameters
- APIs returning
-
New error model for APIs that call
SetLastError()- Such APIs now return
Win32Result<T>which captures both the logical return value and the associated last-error code atomically on the native side, ensuring the error state is preserved
- Such APIs now return
-
Strongly typed Win32 handles
- Opaque handles (e.g.,
HKEY,HWND,HICON) are now extension types instead of plainintorPointervalues
- Opaque handles (e.g.,
-
Win32
BOOLmapped to Dartbool- Applies uniformly to return values, parameters, and struct fields
-
Enums are now extension types
- Replaces raw
intconstants with strongly typed extension types
- Replaces raw
-
Explicit COM lifetime management
- Automatic cleanup via
Finalizerhas been removed - COM objects must be released explicitly or managed with
Arena
- Automatic cleanup via
-
COM and
HRESULTAPI simplificationsQueryInterface-style methods now return interfaces directly- Manual
HRESULTchecks and pointer plumbing are eliminated
-
Major string API cleanup
- Renamed and simplified string conversion helpers
- Removed
TEXT(),BSTRclass, and legacy helpers
-
GUID API redesign
- Removed
Guidclass and string-based helpers GUIDstruct is now the single, explicit representation
- Removed
-
winsock2library removed- All Winsock APIs are now exported directly from
win32.dart
- All Winsock APIs are now exported directly from
-
Dispatcher API redesign
- Strongly typed results
- No manual
VARIANTorDISPPARAMSconstruction - Explicit ownership and cleanup
See the Migration Guide with examples and mechanical migration steps.
🚀 Features
-
Scope-based lifetime management
- New extensions for
Arenato manage native memory and COM lifetimes
- New extensions for
-
Much stronger type safety across the API surface
- Typed handles, enums, booleans, GUIDs, and COM interfaces
-
More idiomatic Dart APIs
- Fewer pointers, fewer out-parameters, clearer ownership rules
-
Reliable error handling
- Atomic capture of
GetLastError()values on native side, exposed viaWin32Result<T>
- Atomic capture of
-
Cleaner, more consistent conversion APIs
- Unified naming and semantics for strings, binary data, and
FILETIMEvalues
- Unified naming and semantics for strings, binary data, and
-
Native memory leak detection via
package:ffi_leak_tracker- Tracks allocations with call stacks and timestamps; see the Leak Tracking guide for details
-
-
5.15.007 Oct 2025Release notes
Open source →🚀 Features
- Add missing wincon.h console constants and docs to some existing constants. Fixes #1008 by @timmaffett in #1009
- Add ProcessIdToSessionId function by @kjeremy in #1002
New Contributors ❤️
-
5.14.012 Jun 2025Release notes
Open source →🚀 Features
- Add APIs for querying events by @halildurmus in #993
- Add PathAllocCanonicalize/PathAllocCombine by @brianquinlan in #988
📝 Documentation
- (examples) Fix link by @halildurmus
🎨 Styling
-
5.13.009 May 2025Release notes
Open source →🚀 Features
- Add support for GetCurrentDirectory by @brianquinlan in #986
- Add
SetLastErrorfunction by @halildurmus in #975 - Add extension methods to convert
FILETIMEtoDateTimeby @halildurmus in #974 - Add the
WIN32_FILE_ATTRIBUTE_DATAstruct by @brianquinlan in #973
⚙️ Miscellaneous Tasks
- Tweak win32 workflow by @halildurmus in #982
-
5.12.011 Mar 2025Release notes
Open source →🚀 Features
- Add more Kernel32 APIs by @halildurmus in #969
- Add
MOVE_FILE_FLAGSenum by @halildurmus in #967 - Add support for MoveFileEx by @brianquinlan in #966
New Contributors ❤️
- @brianquinlan made their first contribution in #966
-
5.11.019 Feb 2025Release notes
Open source →🚀 Features
- Revert deprecation of top-level constants of enums by @halildurmus in #960
- Improve projection of flexible array members by @halildurmus in #959
🎨 Styling
- Format with tall-style by @halildurmus in #957
-
5.10.127 Jan 2025Release notes
Open source →🐛 Bug Fixes
- Fix
PRINTER_ENUM_*constants by @halildurmus in #954 nodocdeprecation fix by @weasdown in #949
⚙️ Miscellaneous Tasks
- Add
.gitattributesto normalize line endings by @halildurmus - Tweak git-cliff configuration by @halildurmus
New Contributors ❤️
- @weasdown made their first contribution in #949
- Fix
-
5.10.001 Jan 2025Release notes
Open source → -
5.9.029 Nov 2024Release notes
Open source →🚀 Features
- (COM) Add more Core Audio interfaces (#937) - (2eaeef1)
- Add
GetWindowCompositionAttribute,SetWindowCompositionAttributeAPIs (#938) - (2081e94) - Deprecate
SCARD_SCOPE_SYSTEMconstant (#930) - (c6c2c5c)
🐛 Bug Fixes
🧹 Refactor
📝 Documentation
- (website) Tweak commands - (2f75003)
- (website) Update contributing guide - (865d9ec)
- Update PUBLISHING.md - (18420d6)
⚙️ Miscellaneous Tasks
-
5.8.002 Nov 2024Release notes
Open source →- Add
DISP_E_*constants - Add
argErroroptional parameter to theDispatcher.invokemethod, allowing retrieval of the index of the first parameter inrgvargthat encounters an error, if applicable - Update
Dispatcher.setto accept aPointer<VARIANT>for the value parameter - Add
byReferenceoptional named parameter to theDispatcher.setmethod, enabling property assignment by reference instead of by value
- Add
-
5.7.228 Oct 2024 -
5.7.122 Oct 2024Release notes
Open source →- Add
Pointer<VARIANT>optional parameter toDispatcher.invokemethod - Add
Dispatcher.fromCLSIDconstructor for creating aDispatcherfrom a CLSID
- Add
-
5.7.019 Oct 2024Release notes
Open source →- Add
UnregisterDeviceNotificationAPI (#916) - Add
DEV_BROADCAST_VOLUMEstruct - Add
DRIVE_UNKNOWN,DRIVE_NO_ROOT_DIR,DRIVE_REMOVABLE,DRIVE_FIXED,DRIVE_REMOTE,DRIVE_CDROM, andDRIVE_RAMDISKconstants - Add
Dispatcherclass, a thin wrapper around theIDispatchinterface, used for invoking methods and properties on COM automation objects
- Add
-
5.6.118 Oct 2024Release notes
Open source →- Add
RegisterDeviceNotification,WTSRegisterSessionNotification, andWTSUnRegisterSessionNotificationAPIs (#913) - Add
NOTIFY_FOR_THIS_SESSIONandNOTIFY_FOR_ALL_SESSIONSconstants (#913) - Add
DEV_BROADCAST_DEVICEINTERFACE_andDEV_BROADCAST_HDRstructures (#913) - Add
DEV_BROADCAST_HDR_DEVICE_TYPEenum (#913) - Add
GUID_CONSOLE_DISPLAY_STATE,WM_WTSESSION_CHANGE, andWTS_SESSION_*constants (#914)
- Add
-
5.6.012 Oct 2024Release notes
Open source →- Add
DISPLAY_DEVICE_STATE_FLAGSenum (#901) - Add
FILE_DEVICE_TYPEenum (#901) - Deprecate
SCARD_SCOPE_USERconstant in favor ofSCARD_SCOPE.SCARD_SCOPE_USER(#901) - Deprecate
SCARD_SCOPE_TERMINALconstant in favor ofSCARD_SCOPE.SCARD_SCOPE_TERMINAL(#901) - Deprecate
SYMFLAG_VALUEPRESENTconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_VALUEPRESENT(#901) - Deprecate
SYMFLAG_REGISTERconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_REGISTER(#901) - Deprecate
SYMFLAG_REGRELconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_REGREL(#901) - Deprecate
SYMFLAG_FRAMERELconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_FRAMEREL(#901) - Deprecate
SYMFLAG_PARAMETERconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_PARAMETER(#901) - Deprecate
SYMFLAG_LOCALconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_LOCAL(#901) - Deprecate
SYMFLAG_CONSTANTconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_CONSTANT(#901) - Deprecate
SYMFLAG_EXPORTconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_EXPORT(#901) - Deprecate
SYMFLAG_FORWARDERconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_FORWARDER(#901) - Deprecate
SYMFLAG_FUNCTIONconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_FUNCTION(#901) - Deprecate
SYMFLAG_VIRTUALconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_VIRTUAL(#901) - Deprecate
SYMFLAG_THUNKconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_THUNK(#901) - Deprecate
SYMFLAG_TLSRELconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_TLSREL(#901) - Deprecate
SYMFLAG_SLOTconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_SLOT(#901) - Deprecate
SYMFLAG_ILRELconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_ILREL(#901) - Deprecate
SYMFLAG_METADATAconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_METADATA(#901) - Deprecate
SYMFLAG_CLR_TOKENconstant in favor ofSYMBOL_INFO_FLAGS.SYMFLAG_CLR_TOKEN(#901) - Deprecate
SND_SYNCconstant in favor ofSND_FLAGS.SND_SYNC(#901) - Deprecate
SND_ASYNCconstant in favor ofSND_FLAGS.SND_ASYNC(#901) - Deprecate
SND_NODEFAULTconstant in favor ofSND_FLAGS.SND_NODEFAULT(#901) - Deprecate
SND_MEMORYconstant in favor ofSND_FLAGS.SND_MEMORY(#901) - Deprecate
SND_LOOPconstant in favor ofSND_FLAGS.SND_LOOP(#901) - Deprecate
SND_NOSTOPconstant in favor ofSND_FLAGS.SND_NOSTOP(#901) - Deprecate
SND_NOWAITconstant in favor ofSND_FLAGS.SND_NOWAIT(#901) - Deprecate
SND_ALIASconstant in favor ofSND_FLAGS.SND_ALIAS(#901) - Deprecate
SND_ALIAS_IDconstant in favor ofSND_FLAGS.SND_ALIAS_ID(#901) - Deprecate
SND_FILENAMEconstant in favor ofSND_FLAGS.SND_FILENAME(#901) - Deprecate
SND_RESOURCEconstant in favor ofSND_FLAGS.SND_RESOURCE(#901) - Deprecate
SND_PURGEconstant in favor ofSND_FLAGS.SND_PURGE(#901) - Deprecate
SND_APPLICATIONconstant in favor ofSND_FLAGS.SND_APPLICATION(#901) - Deprecate
SND_SENTRYconstant in favor ofSND_FLAGS.SND_SENTRY(#901) - Deprecate
SND_RINGconstant in favor ofSND_FLAGS.SND_RING(#901) - Deprecate
SND_SYSTEMconstant in favor ofSND_FLAGS.SND_SYSTEM(#901) - Deprecate
DISPLAY_DEVICE_MIRRORING_DRIVERconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MIRRORING_DRIVER(#901) - Deprecate
DISPLAY_DEVICE_VGA_COMPATIBLEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_VGA_COMPATIBLE(#901) - Deprecate
DISPLAY_DEVICE_REMOVABLEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_REMOVABLE(#901) - Deprecate
DISPLAY_DEVICE_MODESPRUNEDconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MODESPRUNED(#901) - Deprecate
DISPLAY_DEVICE_ACTIVEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ACTIVE(#901) - Deprecate
DISPLAY_DEVICE_PRIMARY_DEVICEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_PRIMARY_DEVICE(#901) - Deprecate
WDA_NONEconstant in favor ofWINDOW_DISPLAY_AFFINITY.WDA_NONE(#901) - Deprecate
WDA_MONITORconstant in favor ofWINDOW_DISPLAY_AFFINITY.WDA_MONITOR(#901) - Deprecate
WDA_EXCLUDEFROMCAPTUREconstant in favor ofWINDOW_DISPLAY_AFFINITY.WDA_EXCLUDEFROMCAPTURE(#901) - Deprecate
WAVE_FORMAT_QUERYconstant in favor ofMIDI_WAVE_OPEN_TYPE.WAVE_FORMAT_QUERY(#901) - Deprecate
WAVE_ALLOWSYNCconstant in favor ofMIDI_WAVE_OPEN_TYPE.WAVE_ALLOWSYNC(#901) - Deprecate
WAVE_MAPPEDconstant in favor ofMIDI_WAVE_OPEN_TYPE.WAVE_MAPPED(#901) - Deprecate
WAVE_FORMAT_DIRECTconstant in favor ofMIDI_WAVE_OPEN_TYPE.WAVE_FORMAT_DIRECT(#901) - Deprecate
WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICEconstant in favor ofMIDI_WAVE_OPEN_TYPE.WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE(#901) - Deprecate
VARIANT_NOVALUEPROPconstant in favor ofVAR_CHANGE_FLAGS.VARIANT_NOVALUEPROP(#901) - Deprecate
VARIANT_ALPHABOOLconstant in favor ofVAR_CHANGE_FLAGS.VARIANT_ALPHABOOL(#901) - Deprecate
VARIANT_NOUSEROVERRIDEconstant in favor ofVAR_CHANGE_FLAGS.VARIANT_NOUSEROVERRIDE(#901) - Deprecate
VARIANT_LOCALBOOLconstant in favor ofVAR_CHANGE_FLAGS.VARIANT_LOCALBOOL(#901) - Deprecate
NO_ERRORconstant in favor ofWIN32_ERROR.NO_ERROR(#901) - Deprecate
DISPLAY_DEVICE_ATTACHED_TO_DESKTOPconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP(#901) - Deprecate
DISPLAY_DEVICE_ATTACHEDconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ATTACHED(#901) - Deprecate
DISPLAY_DEVICE_MULTI_DRIVERconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MULTI_DRIVER(#901) - Deprecate
DISPLAY_DEVICE_ACC_DRIVERconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ACC_DRIVER(#901) - Deprecate
DISPLAY_DEVICE_UNSAFE_MODES_ONconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_UNSAFE_MODES_ON(#901) - Deprecate
DISPLAY_DEVICE_TS_COMPATIBLEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_TS_COMPATIBLE(#901) - Deprecate
DISPLAY_DEVICE_RDPUDDconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_RDPUDD(#901) - Deprecate
DISPLAY_DEVICE_REMOTEconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_REMOTE(#901) - Deprecate
DISPLAY_DEVICE_DISCONNECTconstant in favor ofDISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_DISCONNECT(#901) - Deprecate
PRODUCT_UNDEFINEDconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_UNDEFINED(#901) - Deprecate
PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT(#901) - Deprecate
PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL(#901) - Deprecate
PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVCconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC(#901) - Deprecate
PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVCconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC(#901) - Deprecate
PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_COREconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE(#901) - Deprecate
PRODUCT_CLUSTER_SERVER_Vconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_CLUSTER_SERVER_V(#901) - Deprecate
PRODUCT_STARTER_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_STARTER_E(#901) - Deprecate
PRODUCT_HOME_BASIC_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_HOME_BASIC_E(#901) - Deprecate
PRODUCT_HOME_PREMIUM_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_HOME_PREMIUM_E(#901) - Deprecate
PRODUCT_PROFESSIONAL_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_PROFESSIONAL_E(#901) - Deprecate
PRODUCT_ENTERPRISE_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_E(#901) - Deprecate
PRODUCT_ULTIMATE_Econstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ULTIMATE_E(#901) - Deprecate
PRODUCT_ENTERPRISE_EVALUATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_EVALUATION(#901) - Deprecate
PRODUCT_MULTIPOINT_STANDARD_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_MULTIPOINT_STANDARD_SERVER(#901) - Deprecate
PRODUCT_MULTIPOINT_PREMIUM_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_MULTIPOINT_PREMIUM_SERVER(#901) - Deprecate
PRODUCT_STANDARD_EVALUATION_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_STANDARD_EVALUATION_SERVER(#901) - Deprecate
PRODUCT_DATACENTER_EVALUATION_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_DATACENTER_EVALUATION_SERVER(#901) - Deprecate
PRODUCT_ENTERPRISE_N_EVALUATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_N_EVALUATION(#901) - Deprecate
PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER(#901) - Deprecate
PRODUCT_STORAGE_STANDARD_EVALUATION_SERVERconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER(#901) - Deprecate
PRODUCT_CORE_Nconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_CORE_N(#901) - Deprecate
PRODUCT_CORE_COUNTRYSPECIFICconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_CORE_COUNTRYSPECIFIC(#901) - Deprecate
PRODUCT_CORE_SINGLELANGUAGEconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_CORE_SINGLELANGUAGE(#901) - Deprecate
PRODUCT_COREconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_CORE(#901) - Deprecate
PRODUCT_PROFESSIONAL_WMCconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_PROFESSIONAL_WMC(#901) - Deprecate
PRODUCT_EDUCATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_EDUCATION(#901) - Deprecate
PRODUCT_EDUCATION_Nconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_EDUCATION_N(#901) - Deprecate
PRODUCT_IOTUAPconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_IOTUAP(#901) - Deprecate
PRODUCT_ENTERPRISE_Sconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S(#901) - Deprecate
PRODUCT_ENTERPRISE_S_Nconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_N(#901) - Deprecate
PRODUCT_ENTERPRISE_S_EVALUATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_EVALUATION(#901) - Deprecate
PRODUCT_ENTERPRISE_S_N_EVALUATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_N_EVALUATION(#901) - Deprecate
PRODUCT_DATACENTER_A_SERVER_COREconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_DATACENTER_A_SERVER_CORE(#901) - Deprecate
PRODUCT_STANDARD_A_SERVER_COREconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_STANDARD_A_SERVER_CORE(#901) - Deprecate
PRODUCT_PRO_WORKSTATIONconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_PRO_WORKSTATION(#901) - Deprecate
PRODUCT_PRO_WORKSTATION_Nconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_PRO_WORKSTATION_N(#901) - Deprecate
PRODUCT_ANDROMEDAconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_ANDROMEDA(#901) - Deprecate
PRODUCT_XBOX_NATIVEOSconstant in favor ofOS_PRODUCT_TYPE.PRODUCT_XBOX_NATIVEOS(#901) - Deprecate
FILE_DEVICE_CD_ROMconstant in favor ofFILE_DEVICE_TYPE.FILE_DEVICE_CD_ROM(#901) - Deprecate
FILE_DEVICE_DISKconstant in favor ofFILE_DEVICE_TYPE.FILE_DEVICE_DISK(#901) - Deprecate
FILE_DEVICE_DVDconstant in favor ofFILE_DEVICE_TYPE.FILE_DEVICE_DVD(#901) - Deprecate
FILE_DEVICE_TAPEconstant in favor ofFILE_DEVICE_TYPE.FILE_DEVICE_TAPE(#901) - Deprecate
MIM_OPENconstant in favor ofMM_MIM_OPEN(#902) - Deprecate
MIM_CLOSEconstant in favor ofMM_MIM_CLOSE(#902) - Deprecate
MIM_DATAconstant in favor ofMM_MIM_DATA(#902) - Deprecate
MIM_LONGDATAconstant in favor ofMM_MIM_LONGDATA(#902) - Deprecate
MIM_ERRORconstant in favor ofMM_MIM_ERROR(#902) - Deprecate
MIM_LONGERRORconstant in favor ofMM_MIM_LONGERROR(#902) - Deprecate
MOM_OPENconstant in favor ofMM_MOM_OPEN(#902) - Deprecate
MOM_CLOSEconstant in favor ofMM_MOM_CLOSE(#902) - Deprecate
MOM_DONEconstant in favor ofMM_MOM_DONE(#902) - Deprecate
MIM_MOREDATAconstant in favor ofMM_MIM_MOREDATA(#902) - Deprecate
MOM_POSITIONCBconstant in favor ofMM_MOM_POSITIONCB(#902) - Add
isComInitializedgetter (#903) - Deprecate
isCOMInitializedgetter in favor ofisComInitialized(#903) - You can automatically migrate your code to use the new constants and
properties by running
dart fix --applyin your terminal. - Add
IsPropVariantString,PropVariantToStrRet, andPropVariantToStringWithDefaultAPIs (#904) - Add
SafeArrayAccessData,SafeArrayCreateVector,SafeArrayDestroy, andSafeArrayUnaccessDataAPIs (#905, thanks to @aweinber) - Add remaining
SafeArray*APIs (#906) - Add
SHGetLocalizedNameAPI (#908)
- Add
-
5.5.502 Oct 2024Release notes
Open source →- Add
BITMAPV5HEADERstruct (#892) - Add
SetClassLongPtrAPI (#899, thanks to @aweinber) - Bump minimum required Dart version to
3.5.0
- Add
-
5.5.412 Aug 2024Release notes
Open source →- Optimize
BSTR.fromStringconstructor (#879) - Fix
GUID_DEVCLASS_*constants (#881)
- Optimize
-
5.5.331 Jul 2024 -
5.5.231 Jul 2024Release notes
Open source →- Add some service constants (#858)
- Add Service Manager CLI example (#859)
- Add Task Manager App example (#860)
-
5.5.115 May 2024Release notes
Open source →- Migrate away from
UnmodifiableUint8ListView(#850) - Bump minimum required Dart version to
3.4.0(#850) - Bump
lintsdependency to4.0.0(#851)
- Migrate away from
-
5.5.025 Apr 2024Release notes
Open source →- Add
BLOB,BSTRBLOB,CABOOL,CABSTR,CABSTRBLOB,CAC,CACLIPDATA,CACLSID,CACY,CADATE,CADBL,CAFILETIME,CAFLT,CAH,CAI,CAL,CALPSTR,CALPWSTR,CAPROPVARIANT,CASCODE,CAUB,CAUH,CAUI,CAUL,CLIPDATA, andVERSIONEDSTREAMstructures (#845) - Add
VARIANT_BOOLtypedef (#845) - Fix the Dart representation of the
PROPVARIANTstructure (#845) - Add
PropVariantInitandPropVariantClearAPIs (#845)
- Add
-
5.4.030 Mar 2024Release notes
Open source →-
Fix constant values
ERROR_SERVICE_NOT_ACTIVE,KF_FLAG_ALIAS_ONLY,QS_INPUT,STD_INPUT_HANDLE,STD_OUTPUT_HANDLE,STD_ERROR_HANDLE,UIA_ItemTypePropertyId, andUIA_OrientationPropertyId(#832) -
Introduce Win32 enumerations as extension types based on
int(#832) -
Deprecate constants for the Win32 enumerations in favor of the newly introduced extension types. For example, replace the usage of
ERROR_SUCCESSwithWIN32_ERROR.ERROR_SUCCESS(#832) -
Deprecate constant values
WBEM_TIMEOUT_TYPE.WBEM_NO_WAITandWBEM_TIMEOUT_TYPE.WBEM_INFINITEin favor of the newly introduced constantsWBEM_NO_WAITandWBEM_INFINITE(#833)You can automatically migrate your code to use the new constants by running
dart fix --applyin your terminal.
-
-
5.3.008 Mar 2024Release notes
Open source →- Migrate away from
.elementAtin favor ofoperator +(#825) - Bump minimum required Dart version to
3.3.0(#825) - Deprecate
CallWndProctypedef in favor ofHOOKPROC(#826) - Deprecate
CCHookProctypedef in favor ofLPCCHOOKPROC(#826) - Deprecate
CFHookProctypedef in favor ofLPCFHOOKPROC(#826) - Deprecate
DlgProctypedef in favor ofDLGPROC(#826) - Deprecate
DrawStateProctypedef in favor ofDRAWSTATEPROC(#826) - Deprecate
DrawTextCallbacktypedef in favor ofDTT_CALLBACK_PROC(#826) - Deprecate
EnumPageFilesProctypedef in favor ofPENUM_PAGE_FILE_CALLBACK(#826) - Deprecate
EnumFontFamExProctypedef in favor ofFONTENUMPROC(#826) - Deprecate
EnumResNameProctypedef in favor ofENUMRESNAMEPROC(#826) - Deprecate
EnumResTypeProctypedef in favor ofENUMRESTYPEPROC(#826) - Deprecate
EnumWindowsProctypedef in favor ofWNDENUMPROC(#826) - Deprecate
ExcepInfoProctypedef in favor ofLPEXCEPFINO_DEFERRED_FILLIN(#826) - Deprecate
FRHookProctypedef in favor ofLPFRHOOKPROC(#826) - Deprecate
HandlerRoutinetypedef in favor ofPHANDLER_ROUTINE(#826) - Deprecate
LphandlerFunctiontypedef in favor ofLPHANDLER_FUNCTION(#826) - Deprecate
LphandlerFunctionExtypedef in favor ofLPHANDLER_FUNCTION_EX(#826) - Deprecate
LpoverlappedCompletionRoutinein favor ofLPOVERLAPPED_COMPLETION_ROUTINE(#826) - Deprecate
LpserviceMainFunctionwin favor ofLPSERVICE_MAIN_FUNCTION(#826) - Deprecate
MidiInProctypedef in favor ofMIDIINPROC(#826) - Deprecate
MidiOutProctypedef in favor ofMIDIOUTPROC(#826) - Deprecate
MonitorEnumProctypedef in favor ofMONITORENUMPROC(#826) - Deprecate
OFNHookProctypedef in favor ofLPOFNHOOKPROC(#826) - Deprecate
OpenCardCheckProctypedef in favor ofLPOCNCHKPROC(#826) - Deprecate
OpenCardConnProctypedef in favor ofLPOCNCONNPROC(#826) - Deprecate
OpenCardDisconnProctypedef in favor ofLPOCNDSCPROC(#826) - Deprecate
OutputProctypedef in favor ofGRAYSTRINGPROC(#826) - Deprecate
PfnAuthenticationCallbackExin favor ofPFN_AUTHENTICATION_CALLBACK_EX(#826) - Deprecate
PfnbluetoothGattEventCallbackin favor ofPFN_BLUETOOTH_GATT_EVENT_CALLBACK(#826) - Deprecate
PfnBluetoothEnumAttributesCallbackin favor ofPFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK(#826) - Deprecate
PfnDeviceCallbacktypedef in favor ofPFN_DEVICE_CALLBACK(#826) - Deprecate
PfnScNotifyCallbackFunctionin favor ofPFN_SC_NOTIFY_CALLBACK(#826) - Deprecate
SendAsyncProctypedef in favor ofSENDASYNCPROC(#826) - Deprecate
SpNotifyCallbacktypedef in favor ofSPNOTIFYCALLBACK(#826) - Deprecate
SubclassProctypedef in favor ofSUBCLASSPROC(#826) - Deprecate
SymEnumSymbolsProcin favor ofPSYM_ENUMERATESYMBOLS_CALLBACK(#826) - Deprecate
TaskDialogCallbackProctypedef in favor ofPFTASKDIALOGCALLBACK(#826) - Deprecate
ThreadProctypedef in favor ofLPTHREAD_START_ROUTINE(#826) - Deprecate
TimerProctypedef in favor ofTIMERPROC(#826) - Deprecate
WindowProctypedef in favor ofWNDPROC(#826) - Deprecate
WlanNotificationCallbackin favor ofWLAN_NOTIFICATION_CALLBACK(#826) - Note: You can automatically migrate your code to use the new typedefs by
running
dart fix --applyin your terminal. - Deprecate
convertFromHStringfunction (#829) - Deprecate
convertToHStringfunction (#829) - Deprecate
getClassNamefunction (#829) - Deprecate
getInterfacesfunction (#829) - Deprecate
getTrustLevelfunction (#829) - Deprecate
Pointer<HSTRING>.toDartStringextension method (#829)
- Migrate away from
-
5.2.004 Jan 2024Release notes
Open source →- Migrate examples utilizing
Pointer.fromFunctionto useNativeCallable.isolateLocal(#798) - Add more WASAPI APIs, COM interfaces, and constants (#800)
- Generate missing documentation for certain COM interfaces (#806)
- Expose
SHCreateMemStreamAPI - Bump minimum Dart version requirement to
3.2.0
- Migrate examples utilizing
-
5.1.101 Dec 2023Release notes
Open source →- Fix dartdoc comment references (#787)
- Modernize
explorerexample (#789) - Add
NtQuerySystemInformationfunction (#790) - Add more SAPI interfaces and constants (#794)
-
5.1.015 Nov 2023Release notes
Open source →- Add
midiInAddBufferfunction (#763) - Add
MIDIERR_*constants (#764) - Add
IAgileObjectinterface (#767) - Add
refCountfunction (#768) - Add
ISpeechVoiceinterface (#776) - Bump minimum Dart version to
3.1.0
- Add
-
5.0.926 Sep 2023Release notes
Open source →- Add
GlobalAllocflags (#754) - Add more Windows Message constants (#755)
- Add Device Management events (#756)
- Add
-
5.0.819 Sep 2023Release notes
Open source →- Add
NetGetAadJoinInformationandNetFreeAadJoinInformationAPIs (#748, thanks to @solbirn) - Fix a bug in the
initAppfunction, which caused programs to crash when running AOT-compiled executables (#750) - Fix a bug in the
shell_notify_iconexample to ensure compatibility with Windows 11 (#752)
- Add
-
5.0.724 Aug 2023 -
5.0.625 Jul 2023 -
5.0.527 Jun 2023 -
5.0.420 Jun 2023Release notes
Open source →- Add
WinHttpRequestAPIs (#718) - Update the UI Automation example (#719)
- Fix projection of COM get properties (#720)
- Add
waveIn*APIs (#727)
- Add
-
5.0.329 May 2023Release notes
Open source →- Update the screenshot example to support multiple displays (#704, thanks to @ilopx)
- Add Windows UI Automation APIs (#711)
-
5.0.216 May 2023Release notes
Open source →- Add some additional user32 exports (#707, thanks to @ilopX)
- Add service management APIs (#709)
-
5.0.115 May 2023 -
5.0.011 May 2023Release notes
Open source →-
Note: This package no longer supports 32-bit architectures. It assumes 64-bit.
-
[BREAKING CHANGE] Experimental WinRT APIs are now removed, in favor of the new
windows_*packages (see https://win32.pub for more information) 🎉 -
[BREAKING CHANGE]
Finalizeris now attached to COM objects. Therefore, you no longer need to call.release()to decrement the reference count, becauseFinalizerwill do it for you when they go out of scope (#691).Note: Calling
.release()withFinalizerattached may result in use after free and cause the process to crashNote: If you're manually managing the lifetime of the object, you need to call
.release()to decrement the reference count -
Add Windows metadata interfaces (
IMetaData*) -
Fixed memory leak in
convertToHString -
Upgrade to Dart 3 and add class modifiers to
Structsubclasses -
Added
detachmethod toIUnknown, which detaches the object fromFinalizerif you want to manually manage the lifetime of the object yourself (#677)
-
-
4.1.405 May 2023 -
4.1.312 Apr 2023 -
4.1.208 Apr 2023Release notes
Open source →- Fix missing export of crypt32 APIs (#673)
- Fix a dartdoc comment reference (#666)
- Fix memory leak in
convertToHString
-
4.1.130 Jan 2023Release notes
Open source →- Convert acronyms in method/property names to lowercase (#649, @halildurmus)
- Mark methods/properties that return WinRT objects as nullable (#650, @halildurmus)
- Mark WinRT object parameters as nullable (#652, @halildurmus)
- Tidy up various samples (#653, @timsneath)
- Add missing display enumeration funcs (#662, @timsneath)
- Add job object APIs (#663, @timsneath)
-
4.1.006 Jan 2023Release notes
Open source →- Add low-level keyboard hook constants (#632, @timsneath)
- Add WinRT geolocation classes and example (#633, #635, @timsneath/@halildurmus)
- Convert acryonyms in enums, methods and properties to match Dart style guide (#637, #649, @halildurmus)
- Generalize map collection interfaces to support enum arguments (#638, @halildurmus)
- Add extra Bluetooth APIs (#640, @timsneath)
winrtInitializeandwinrtUninitializeare no longer required. Windows Runtime classes automatically activate the runtime as required for a given thread. Added example of interaction between Dart isolates and COM apartments (#642, @halildurmus/@timsneath)
-
4.0.130 Dec 2022 -
4.0.030 Dec 2022Release notes
Open source →- [BREAKING CHANGE] COM objects now inherit from
NativeFinalizer. Instead of directly releasing the memory allocated for them, you can now call.release()to decrement the reference count, and the memory will be automatically disposed when the refcount falls to zero (#623, @halildurmus) - Update examples for new COM release mechanism (#623, @halildurmus)
- Update to latest Win32 metadata (#626, @timsneath)
- Add APIs for processor / firmware information (#627, @timsneath)
- Add APIs for shell file operations (#630, @timsneath)
- Update upper Dart SDK constraint to explicitly support Dart 3
- [BREAKING CHANGE] COM objects now inherit from
-
3.1.408 Apr 2023 -
3.1.317 Dec 2022Release notes
Open source →- Restructure generator util to use JSON for all data files (#605, @timsneath)
- Add more K32* APIs (#607, @timsneath)
- Remove unnecessary nullability from HSTRINGs (#608, #615, @halildurmus)
- Add UISettings (#610, @halildurmus)
- Add doc comments for COM and WinRT classes (#611, @timsneath)
- Clean up generation of WinRT imports (#616, @halildurmus)
- Add VirtualQuery and VirtualQueryEx (#619, @Smotto)
- Add SetDisplayConfig (#621, @timsneath)
-
3.1.225 Nov 2022Release notes
Open source →- Support generating IIDs for parameterized types (#596)
- Clean up GUID implementations (#599)
- Wrap WinRT representations of GUID as Dart Guid (#602)
-
3.1.108 Nov 2022Release notes
Open source →- Fix documentation bug (@timsneath)
- Add URI support to the WinRT generator (@halildurmus)
-
3.1.006 Nov 2022Release notes
Open source →- Fixed memory leaks in COM and WinRT code when an exception is generated.
- Update to the latest Win32 metadata from Microsoft.
- [BREAKING CHANGE] The WinSock APIs now use upper cased naming for structs. For
example,
hostentis nowHOSTENT. This will only affect you if you explicitly importedwin32/winsock2.dart. - [BREAKING CHANGE] TouchInputParameters is now upper-cased in the metadata.
-
3.0.114 Oct 2022Release notes
Open source →- Improve projection of Map, Vector, and reference Windows Runtime types, with thanks as ever to Halil Durmus (@halildurmus).
- Add CryptoAPI functions (
CryptProtectData,CryptProtectMemoryetc.) - Add pointer and touch APIs
- Fix WinRT FilePicker demo
- Add raw printer API example
- Remove console example
console.dart(use https://pub.dev/packages/dart_console instead).
-
3.0.030 Aug 2022Release notes
Open source →- This release includes an overhaul of the COM and WinRT API generation, as described below. Apps and packages that call traditional Win32 APIs should not require changes, but apps that use COM or the highly-experimental WinRT APIs should expect to make changes.
- [BREAKING CHANGE] WinRT APIs have been moved to a separate library. This
provides isolation for apps that only use traditional APIs (Win32/COM) from
the more experimental WinRT APIs. To use WinRT from your code, change your
import statement to
import 'package:win32/winrt.dart';. The WinRT library also exports all Win32 APIs, so you don't have to import both libraries. - [BREAKING CHANGE] COM and Windows Runtime methods and properties are now camelCased, not TitleCased. This is inconvenient, but it avoids a whole class of name clashes and aligns COM and WinRT APIs more closely with Dart idioms. As the projections get smarter with more helpers, we think this is the right call for the future and worth a one-time tax to fix.
- [BREAKING CHANGE] You can now cast to a new COM interface without needing the IID for the target interface. Instead of:
final modalWindow = IModalWindow(fileDialog.toInterface(IID_IModalWindow));write:
final modalWindow = IModalWindow.from(fileDialog);- [BREAKING CHANGE] WinRT classes now support projection of
Lists andStrings directly. - [BREAKING CHANGE] The WinRT
fromPointermethod is nowfromRawPointer. GUIDFromStringnow supports an optional custom allocator parameter.- Added various APIs from iphlpapi.dll for tracking and renewing IP addresses.
- Added
DisableThreadLibraryCalls,FindStringOrdinal,GetConsoleCP,GetConsoleOutputCP,GetModuleHandleExW,GetNumberOfConsoleInputEvents,GetVolumeInformation,GetVolumeInformationByHandle,PeekConsoleInput,ReadConsoleInputW,SetErrorMode,SetThreadErrorMode,SizeofResourceAPIs from kernel32.dll - Added
GetClassFileAPI from ole32.dll - Added
SetupDiGetDeviceInstanceId,SetupDiGetDeviceRegistryPropertyWAPIs from setupapi.dll - Added
GetAltTabInfoW,GetClassNameW,GetGUIThreadInfoAPIs from user32.dll - Added various foundational WinRT types, including
IIterable,IIterator,IKeyValuePair,IMapView,IVector,IVectorView,IPropertyValue,IReference, with tremendous thanks again to @halildurmus, who has driven much of the recent WinRT work. - Major reworking of the WinRT generation code, thanks to @halildurmus.
-
2.7.027 May 2022Release notes
Open source →- [BREAKING CHANGE] Major work on Windows Runtime APIs, with huge thanks to
Halil Durmus (@halildurmus). Breaking changes are limited to WinRT APIs, which
are now more idiomatic for Dart. Includes full implementation of
Windows.Globalization.Calendarthat is the new reference design for WinRT APIs. - Restructure generation code into a separate package.
- Use super parameters introduced in Dart 2.17, with matching dependency upgrade.
- Tidy up examples to include consistent headers.
- All files now have lower case names (e.g. IUnknown.dart -> iunknown.dart)
- [BREAKING CHANGE] Major work on Windows Runtime APIs, with huge thanks to
Halil Durmus (@halildurmus). Breaking changes are limited to WinRT APIs, which
are now more idiomatic for Dart. Includes full implementation of
-
2.6.115 May 2022 -
2.6.015 May 2022Release notes
Open source →- Add support for returning vectors from Windows Runtime APIs (#406, thanks to @halildurmus)
- Automatically convert Windows Runtime date properties to Dart DateTime equivalents (#418, thanks to @halildurmus)
- Add additional documentation on Windows Runtime APIs
- Update IDispatch sample to show how to supply parameters
- Add example for Windows Audio Session API (#422, thanks to @postacik)
- Fix an error with strings in structs (#425, thanks to @postacik)
- Update contributor documentation
-
2.5.226 Apr 2022Release notes
Open source →- Add example for monitor EDID data (#393, thanks to @krjw-eyev)
- Expand Bluetooth example (#397, thanks to @Sunbreak)
- Fix a comment typo (#398, thanks to @gaddlord)
- Improve fidelity of WinRT Calendar class and more tests (#396, #404, #405, #412 thanks to @halildurmus)
- Add additional spell checker COM interfaces
- Add example for an owner-draw (custom) titlebar
- Add new Wbem WMI interfaces
- Add example of WMI high-performance counters
- Add new theming APIs
- Update to latest Windows metadata (with a couple of minor changes to signed ints in MOUSEDATA and send()).
-
2.5.131 Mar 2022Release notes
Open source →- Add GetProcessTimes (#396, thanks to @halildurmus)
- Add device interface and device class GUIDs
- Add examples for Bluetooth LE and Setup APIs (#390, #392, thanks to @Sunbreak)
- Fix setup APIs to project HDEVINFO correctly