NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #71 most downloaded on pub.dev
Call common Windows APIs directly from Dart using FFI.
Last release 2 months ago
05 Aug 2026
Release timing varies
gaps range from 1 weeks to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
152 releases · first in 2020
One column per quarter.
Add ResumeThread and SuspendThread APIs
ResumeThread and SuspendThread APIs (#1117)Remove the build hook that either downloaded prebuilt binaries or compiled native C wrappers for Win32 APIs that report errors via GetLastError() . Th
GetLastError().GetLastError() before each call, ensuring theAdd OsVersion class for reliable Windows version detection and OS baseline checks. Use OsVersion.current to retrieve the running version and the relat
Add OsVersion class for reliable Windows version detection and OS baseline
checks. Use OsVersion.current to 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 GUID for comparison and ordering: compareTo(),
isEqualTo(), and the relational operators (<, <=, >=, >). Useful for
using GUID as a key in sorted collections such as SplayTreeMap.
Add GET_X_LPARAM() and GET_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.
IsWindowsServer() using the wrong constant.The build hook now downloads prebuilt binaries from GitHub release artifacts instead of compiling from C source, eliminating the MSVC requirement for
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_build user-define to true in their pubspec.yaml:
hooks:
user_defines:
win32:
local_build: true6.0.1 - 2026-04-11 📦 Dependencies Lower minimum Dart SDK to 3.10
This release introduces a major redesign of the Win32 Dart API with a strong focus on type safety, deterministic resource management, and idiomatic Da
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
HRESULT now throw WindowsException on failureNew error model for APIs that call SetLastError()
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 preservedStrongly typed Win32 handles
HKEY, HWND, HICON) are now extension types
instead of plain int or Pointer valuesWin32 BOOL mapped to Dart bool
Enums are now extension types
int constants with strongly typed extension typesExplicit COM lifetime management
Finalizer has been removedArenaCOM and HRESULT API simplifications
QueryInterface-style methods now return interfaces directlyHRESULT checks and pointer plumbing are eliminatedMajor string API cleanup
TEXT(), BSTR class, and legacy helpersGUID API redesign
Guid class and string-based helpersGUID struct is now the single, explicit representationwinsock2 library removed
win32.dartDispatcher API redesign
VARIANT or DISPPARAMS constructionSee the Migration Guide with examples and mechanical migration steps.
Scope-based lifetime management
Arena to manage native memory and COM lifetimesMuch stronger type safety across the API surface
More idiomatic Dart APIs
Reliable error handling
GetLastError() values on native side, exposed via
Win32Result<T>Cleaner, more consistent conversion APIs
FILETIME valuesNative memory leak detection via package:ffi_leak_tracker
Add missing wincon.h console constants and docs to some existing constants. Fixes #1008 by @timmaffett in #1009
Add APIs for querying events by @halildurmus in #993
Add support for GetCurrentDirectory by @brianquinlan in #986
SetLastError function by @halildurmus in #975FILETIME to DateTime by @halildurmus in #974WIN32_FILE_ATTRIBUTE_DATA struct by @brianquinlan in #973Add more Kernel32 APIs by @halildurmus in #969
Revert deprecation of top-level constants of enums by @halildurmus in #960
nodoc deprecation fix by @weasdown in #949
PRINTER_ENUM_* constants by @halildurmus in #954nodoc deprecation fix by @weasdown in #949.gitattributes to normalize line endings by @halildurmusAdd IsWindows8OrGreater and GetCurrentPackageFullName APIs (#944) -
Deprecate SCARD_SCOPE_SYSTEM constant (#930) -
GetWindowCompositionAttribute, SetWindowCompositionAttribute APIs (#938) - (2081e94)SCARD_SCOPE_SYSTEM constant (#930) - (c6c2c5c)Add argError optional parameter to the Dispatcher.invoke method, allowing retrieval of the index of the first parameter in rgvarg that encounters an e
DISP_E_* constantsargError optional parameter to the Dispatcher.invoke method, allowing
retrieval of the index of the first parameter in rgvarg that encounters an
error, if applicableDispatcher.set to accept a Pointer<VARIANT> for the value
parameterbyReference optional named parameter to the Dispatcher.set method,
enabling property assignment by reference instead of by value- Add DROPFILES struct - Add DragQueryFile API
DROPFILES structDragQueryFile APIAdd Pointer optional parameter to Dispatcher.invoke method
Pointer<VARIANT> optional parameter to Dispatcher.invoke methodDispatcher.fromCLSID constructor for creating a Dispatcher from a
CLSIDAdd UnregisterDeviceNotification API
UnregisterDeviceNotification API (#916)DEV_BROADCAST_VOLUME structDRIVE_UNKNOWN, DRIVE_NO_ROOT_DIR, DRIVE_REMOVABLE, DRIVE_FIXED,
DRIVE_REMOTE, DRIVE_CDROM, and DRIVE_RAMDISK constantsDispatcher class, a thin wrapper around the IDispatch interface, used
for invoking methods and properties on COM automation objectsAdd RegisterDeviceNotification, WTSRegisterSessionNotification, and WTSUnRegisterSessionNotification APIs
RegisterDeviceNotification, WTSRegisterSessionNotification, and
WTSUnRegisterSessionNotification APIs (#913)NOTIFY_FOR_THIS_SESSION and NOTIFY_FOR_ALL_SESSIONS constants (#913)DEV_BROADCAST_DEVICEINTERFACE_ and DEV_BROADCAST_HDR structures (#913)DEV_BROADCAST_HDR_DEVICE_TYPE enum (#913)GUID_CONSOLE_DISPLAY_STATE, WM_WTSESSION_CHANGE, and WTS_SESSION_*
constants (#914)Deprecate SCARD_SCOPE_USER constant in favor of SCARD_SCOPE.SCARD_SCOPE_USER
DISPLAY_DEVICE_STATE_FLAGS enum (#901)FILE_DEVICE_TYPE enum (#901)SCARD_SCOPE_USER constant in favor of
SCARD_SCOPE.SCARD_SCOPE_USER (#901)SCARD_SCOPE_TERMINAL constant in favor of
SCARD_SCOPE.SCARD_SCOPE_TERMINAL (#901)SYMFLAG_VALUEPRESENT constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_VALUEPRESENT (#901)SYMFLAG_REGISTER constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_REGISTER (#901)SYMFLAG_REGREL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_REGREL (#901)SYMFLAG_FRAMEREL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_FRAMEREL (#901)SYMFLAG_PARAMETER constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_PARAMETER (#901)SYMFLAG_LOCAL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_LOCAL (#901)SYMFLAG_CONSTANT constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_CONSTANT (#901)SYMFLAG_EXPORT constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_EXPORT (#901)SYMFLAG_FORWARDER constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_FORWARDER (#901)SYMFLAG_FUNCTION constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_FUNCTION (#901)SYMFLAG_VIRTUAL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_VIRTUAL (#901)SYMFLAG_THUNK constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_THUNK (#901)SYMFLAG_TLSREL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_TLSREL (#901)SYMFLAG_SLOT constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_SLOT (#901)SYMFLAG_ILREL constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_ILREL (#901)SYMFLAG_METADATA constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_METADATA (#901)SYMFLAG_CLR_TOKEN constant in favor of
SYMBOL_INFO_FLAGS.SYMFLAG_CLR_TOKEN (#901)SND_SYNC constant in favor of SND_FLAGS.SND_SYNC (#901)SND_ASYNC constant in favor of SND_FLAGS.SND_ASYNC (#901)SND_NODEFAULT constant in favor of
SND_FLAGS.SND_NODEFAULT (#901)SND_MEMORY constant in favor of SND_FLAGS.SND_MEMORY (#901)SND_LOOP constant in favor of SND_FLAGS.SND_LOOP (#901)SND_NOSTOP constant in favor of SND_FLAGS.SND_NOSTOP (#901)SND_NOWAIT constant in favor of SND_FLAGS.SND_NOWAIT (#901)SND_ALIAS constant in favor of SND_FLAGS.SND_ALIAS (#901)SND_ALIAS_ID constant in favor of SND_FLAGS.SND_ALIAS_ID (#901)SND_FILENAME constant in favor of SND_FLAGS.SND_FILENAME (#901)SND_RESOURCE constant in favor of SND_FLAGS.SND_RESOURCE (#901)SND_PURGE constant in favor of SND_FLAGS.SND_PURGE (#901)SND_APPLICATION constant in favor of
SND_FLAGS.SND_APPLICATION (#901)SND_SENTRY constant in favor of SND_FLAGS.SND_SENTRY (#901)SND_RING constant in favor of SND_FLAGS.SND_RING (#901)SND_SYSTEM constant in favor of SND_FLAGS.SND_SYSTEM (#901)DISPLAY_DEVICE_MIRRORING_DRIVER constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MIRRORING_DRIVER (#901)DISPLAY_DEVICE_VGA_COMPATIBLE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_VGA_COMPATIBLE (#901)DISPLAY_DEVICE_REMOVABLE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_REMOVABLE (#901)DISPLAY_DEVICE_MODESPRUNED constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MODESPRUNED (#901)DISPLAY_DEVICE_ACTIVE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ACTIVE (#901)DISPLAY_DEVICE_PRIMARY_DEVICE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_PRIMARY_DEVICE (#901)WDA_NONE constant in favor of
WINDOW_DISPLAY_AFFINITY.WDA_NONE (#901)WDA_MONITOR constant in favor of
WINDOW_DISPLAY_AFFINITY.WDA_MONITOR (#901)WDA_EXCLUDEFROMCAPTURE constant in favor of
WINDOW_DISPLAY_AFFINITY.WDA_EXCLUDEFROMCAPTURE (#901)WAVE_FORMAT_QUERY constant in favor of
MIDI_WAVE_OPEN_TYPE.WAVE_FORMAT_QUERY (#901)WAVE_ALLOWSYNC constant in favor of
MIDI_WAVE_OPEN_TYPE.WAVE_ALLOWSYNC (#901)WAVE_MAPPED constant in favor of
MIDI_WAVE_OPEN_TYPE.WAVE_MAPPED (#901)WAVE_FORMAT_DIRECT constant in favor of
MIDI_WAVE_OPEN_TYPE.WAVE_FORMAT_DIRECT (#901)WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE constant in favor of
MIDI_WAVE_OPEN_TYPE.WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE (#901)VARIANT_NOVALUEPROP constant in favor of
VAR_CHANGE_FLAGS.VARIANT_NOVALUEPROP (#901)VARIANT_ALPHABOOL constant in favor of
VAR_CHANGE_FLAGS.VARIANT_ALPHABOOL (#901)VARIANT_NOUSEROVERRIDE constant in favor of
VAR_CHANGE_FLAGS.VARIANT_NOUSEROVERRIDE (#901)VARIANT_LOCALBOOL constant in favor of
VAR_CHANGE_FLAGS.VARIANT_LOCALBOOL (#901)NO_ERROR constant in favor of WIN32_ERROR.NO_ERROR (#901)DISPLAY_DEVICE_ATTACHED_TO_DESKTOP constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ATTACHED_TO_DESKTOP (#901)DISPLAY_DEVICE_ATTACHED constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ATTACHED (#901)DISPLAY_DEVICE_MULTI_DRIVER constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_MULTI_DRIVER (#901)DISPLAY_DEVICE_ACC_DRIVER constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_ACC_DRIVER (#901)DISPLAY_DEVICE_UNSAFE_MODES_ON constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_UNSAFE_MODES_ON (#901)DISPLAY_DEVICE_TS_COMPATIBLE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_TS_COMPATIBLE (#901)DISPLAY_DEVICE_RDPUDD constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_RDPUDD (#901)DISPLAY_DEVICE_REMOTE constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_REMOTE (#901)DISPLAY_DEVICE_DISCONNECT constant in favor of
DISPLAY_DEVICE_STATE_FLAGS.DISPLAY_DEVICE_DISCONNECT (#901)PRODUCT_UNDEFINED constant in favor of
OS_PRODUCT_TYPE.PRODUCT_UNDEFINED (#901)PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT (#901)PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL (#901)PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC (#901)PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC (#901)PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE constant in favor of
OS_PRODUCT_TYPE.PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE (#901)PRODUCT_CLUSTER_SERVER_V constant in favor of
OS_PRODUCT_TYPE.PRODUCT_CLUSTER_SERVER_V (#901)PRODUCT_STARTER_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_STARTER_E (#901)PRODUCT_HOME_BASIC_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_HOME_BASIC_E (#901)PRODUCT_HOME_PREMIUM_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_HOME_PREMIUM_E (#901)PRODUCT_PROFESSIONAL_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_PROFESSIONAL_E (#901)PRODUCT_ENTERPRISE_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_E (#901)PRODUCT_ULTIMATE_E constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ULTIMATE_E (#901)PRODUCT_ENTERPRISE_EVALUATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_EVALUATION (#901)PRODUCT_MULTIPOINT_STANDARD_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_MULTIPOINT_STANDARD_SERVER (#901)PRODUCT_MULTIPOINT_PREMIUM_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_MULTIPOINT_PREMIUM_SERVER (#901)PRODUCT_STANDARD_EVALUATION_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_STANDARD_EVALUATION_SERVER (#901)PRODUCT_DATACENTER_EVALUATION_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_DATACENTER_EVALUATION_SERVER (#901)PRODUCT_ENTERPRISE_N_EVALUATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_N_EVALUATION (#901)PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER (#901)PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER constant in favor of
OS_PRODUCT_TYPE.PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER (#901)PRODUCT_CORE_N constant in favor of
OS_PRODUCT_TYPE.PRODUCT_CORE_N (#901)PRODUCT_CORE_COUNTRYSPECIFIC constant in favor of
OS_PRODUCT_TYPE.PRODUCT_CORE_COUNTRYSPECIFIC (#901)PRODUCT_CORE_SINGLELANGUAGE constant in favor of
OS_PRODUCT_TYPE.PRODUCT_CORE_SINGLELANGUAGE (#901)PRODUCT_CORE constant in favor of
OS_PRODUCT_TYPE.PRODUCT_CORE (#901)PRODUCT_PROFESSIONAL_WMC constant in favor of
OS_PRODUCT_TYPE.PRODUCT_PROFESSIONAL_WMC (#901)PRODUCT_EDUCATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_EDUCATION (#901)PRODUCT_EDUCATION_N constant in favor of
OS_PRODUCT_TYPE.PRODUCT_EDUCATION_N (#901)PRODUCT_IOTUAP constant in favor of
OS_PRODUCT_TYPE.PRODUCT_IOTUAP (#901)PRODUCT_ENTERPRISE_S constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S (#901)PRODUCT_ENTERPRISE_S_N constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_N (#901)PRODUCT_ENTERPRISE_S_EVALUATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_EVALUATION (#901)PRODUCT_ENTERPRISE_S_N_EVALUATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ENTERPRISE_S_N_EVALUATION (#901)PRODUCT_DATACENTER_A_SERVER_CORE constant in favor of
OS_PRODUCT_TYPE.PRODUCT_DATACENTER_A_SERVER_CORE (#901)PRODUCT_STANDARD_A_SERVER_CORE constant in favor of
OS_PRODUCT_TYPE.PRODUCT_STANDARD_A_SERVER_CORE (#901)PRODUCT_PRO_WORKSTATION constant in favor of
OS_PRODUCT_TYPE.PRODUCT_PRO_WORKSTATION (#901)PRODUCT_PRO_WORKSTATION_N constant in favor of
OS_PRODUCT_TYPE.PRODUCT_PRO_WORKSTATION_N (#901)PRODUCT_ANDROMEDA constant in favor of
OS_PRODUCT_TYPE.PRODUCT_ANDROMEDA (#901)PRODUCT_XBOX_NATIVEOS constant in favor of
OS_PRODUCT_TYPE.PRODUCT_XBOX_NATIVEOS (#901)FILE_DEVICE_CD_ROM constant in favor of
FILE_DEVICE_TYPE.FILE_DEVICE_CD_ROM (#901)FILE_DEVICE_DISK constant in favor of
FILE_DEVICE_TYPE.FILE_DEVICE_DISK (#901)FILE_DEVICE_DVD constant in favor of
FILE_DEVICE_TYPE.FILE_DEVICE_DVD (#901)FILE_DEVICE_TAPE constant in favor of
FILE_DEVICE_TYPE.FILE_DEVICE_TAPE (#901)MIM_OPEN constant in favor of MM_MIM_OPEN (#902)MIM_CLOSE constant in favor of MM_MIM_CLOSE (#902)MIM_DATA constant in favor of MM_MIM_DATA (#902)MIM_LONGDATA constant in favor of MM_MIM_LONGDATA (#902)MIM_ERROR constant in favor of MM_MIM_ERROR (#902)MIM_LONGERROR constant in favor of MM_MIM_LONGERROR (#902)MOM_OPEN constant in favor of MM_MOM_OPEN (#902)MOM_CLOSE constant in favor of MM_MOM_CLOSE (#902)MOM_DONE constant in favor of MM_MOM_DONE (#902)MIM_MOREDATA constant in favor of MM_MIM_MOREDATA (#902)MOM_POSITIONCB constant in favor of MM_MOM_POSITIONCB (#902)isComInitialized getter (#903)isCOMInitialized getter in favor of isComInitialized (#903)dart fix --apply in your terminal.IsPropVariantString, PropVariantToStrRet, and
PropVariantToStringWithDefault APIs (#904)SafeArrayAccessData, SafeArrayCreateVector, SafeArrayDestroy, and
SafeArrayUnaccessData APIs (#905, thanks to @aweinber)SafeArray* APIs (#906)SHGetLocalizedName API (#908)Add SetClassLongPtr API (#899, thanks to @aweinber)
BITMAPV5HEADER struct (#892)SetClassLongPtr API (#899, thanks to @aweinber)3.5.0Optimize BSTR.fromString constructor
BSTR.fromString constructor (#879)GUID_DEVCLASS_* constants (#881)Fix issue preventing the README.md from being displayed on pub.dev
README.md from being displayed on pub.devAdd Service Manager CLI example
Migrate away from UnmodifiableUint8ListView
UnmodifiableUint8ListView (#850)3.4.0 (#850)lints dependency to 4.0.0 (#851)Add BLOB, BSTRBLOB, CABOOL, CABSTR, CABSTRBLOB, CAC, CACLIPDATA, CACLSID, CACY, CADATE, CADBL, CAFILETIME, CAFLT, CAH, CAI, CAL, CALPSTR, CALPWSTR, CA
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, and VERSIONEDSTREAM structures (#845)VARIANT_BOOL typedef (#845)PROPVARIANT structure (#845)PropVariantInit and PropVariantClear APIs (#845)Deprecate constants for the Win32 enumerations in favor of the newly introduced extension types. For example, replace the usage of ERROR_SUCCESS with…
Fix constant values ERROR_SERVICE_NOT_ACTIVE, KF_FLAG_ALIAS_ONLY,
QS_INPUT, STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE,
UIA_ItemTypePropertyId, and UIA_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_SUCCESS
with WIN32_ERROR.ERROR_SUCCESS (#832)
Deprecate constant values WBEM_TIMEOUT_TYPE.WBEM_NO_WAIT and
WBEM_TIMEOUT_TYPE.WBEM_INFINITE in favor of the newly introduced constants
WBEM_NO_WAIT and WBEM_INFINITE (#833)
You can automatically migrate your code to use the new constants by running
dart fix --apply in your terminal.
Deprecate CallWndProc typedef in favor of HOOKPROC
.elementAt in favor of operator + (#825)3.3.0 (#825)CallWndProc typedef in favor of HOOKPROC (#826)CCHookProc typedef in favor of LPCCHOOKPROC (#826)CFHookProc typedef in favor of LPCFHOOKPROC (#826)DlgProc typedef in favor of DLGPROC (#826)DrawStateProc typedef in favor of DRAWSTATEPROC (#826)DrawTextCallback typedef in favor of DTT_CALLBACK_PROC (#826)EnumPageFilesProc typedef in favor of
PENUM_PAGE_FILE_CALLBACK (#826)EnumFontFamExProc typedef in favor of FONTENUMPROC (#826)EnumResNameProc typedef in favor of ENUMRESNAMEPROC (#826)EnumResTypeProc typedef in favor of ENUMRESTYPEPROC (#826)EnumWindowsProc typedef in favor of WNDENUMPROC (#826)ExcepInfoProc typedef in favor of
LPEXCEPFINO_DEFERRED_FILLIN (#826)FRHookProc typedef in favor of LPFRHOOKPROC (#826)HandlerRoutine typedef in favor of PHANDLER_ROUTINE (#826)LphandlerFunction typedef in favor of LPHANDLER_FUNCTION (#826)LphandlerFunctionEx typedef in favor of
LPHANDLER_FUNCTION_EX (#826)LpoverlappedCompletionRoutine in favor of
LPOVERLAPPED_COMPLETION_ROUTINE (#826)LpserviceMainFunctionw in favor of
LPSERVICE_MAIN_FUNCTION (#826)MidiInProc typedef in favor of MIDIINPROC (#826)MidiOutProc typedef in favor of MIDIOUTPROC (#826)MonitorEnumProc typedef in favor of MONITORENUMPROC (#826)OFNHookProc typedef in favor of LPOFNHOOKPROC (#826)OpenCardCheckProc typedef in favor of LPOCNCHKPROC (#826)OpenCardConnProc typedef in favor of LPOCNCONNPROC (#826)OpenCardDisconnProc typedef in favor of LPOCNDSCPROC (#826)OutputProc typedef in favor of GRAYSTRINGPROC (#826)PfnAuthenticationCallbackEx in favor of
PFN_AUTHENTICATION_CALLBACK_EX (#826)PfnbluetoothGattEventCallback in favor of
PFN_BLUETOOTH_GATT_EVENT_CALLBACK (#826)PfnBluetoothEnumAttributesCallback in favor of
PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK (#826)PfnDeviceCallback typedef in favor of PFN_DEVICE_CALLBACK (#826)PfnScNotifyCallbackFunction in favor of
PFN_SC_NOTIFY_CALLBACK (#826)SendAsyncProc typedef in favor of SENDASYNCPROC (#826)SpNotifyCallback typedef in favor of SPNOTIFYCALLBACK (#826)SubclassProc typedef in favor of SUBCLASSPROC (#826)SymEnumSymbolsProc in favor of
PSYM_ENUMERATESYMBOLS_CALLBACK (#826)TaskDialogCallbackProc typedef in favor of
PFTASKDIALOGCALLBACK (#826)ThreadProc typedef in favor of LPTHREAD_START_ROUTINE (#826)TimerProc typedef in favor of TIMERPROC (#826)WindowProc typedef in favor of WNDPROC (#826)WlanNotificationCallback in favor of
WLAN_NOTIFICATION_CALLBACK (#826)dart fix --apply in your terminal.convertFromHString function (#829)convertToHString function (#829)getClassName function (#829)getInterfaces function (#829)getTrustLevel function (#829)Pointer<HSTRING>.toDartString extension method (#829)Migrate examples utilizing Pointer.fromFunction to use NativeCallable.isolateLocal
Pointer.fromFunction to use
NativeCallable.isolateLocal (#798)SHCreateMemStream API3.2.0Add NtQuerySystemInformation function
explorer example (#789)NtQuerySystemInformation function (#790)Bump minimum Dart version to 3.1.0
midiInAddBuffer function (#763)MIDIERR_* constants (#764)IAgileObject interface (#767)refCount function (#768)ISpeechVoice interface (#776)3.1.0Add more Windows Message constants
GlobalAlloc flags (#754)Add NetGetAadJoinInformation and NetFreeAadJoinInformation APIs (#748, thanks to @solbirn)
NetGetAadJoinInformation and NetFreeAadJoinInformation APIs (#748,
thanks to @solbirn)initApp function, which caused programs to crash when
running AOT-compiled executables (#750)shell_notify_icon example to ensure compatibility with
Windows 11 (#752)- Add MONITORINFOEX struct
MONITORINFOEX struct (#743)Fix the Dart representation of the VARIANT structure
VARIANT structure (#736)Add GetRestrictedErrorInfo and IRestrictedErrorInfo
GetRestrictedErrorInfo and IRestrictedErrorInfo (#732)Update the UI Automation example
WinHttpRequest APIs (#718)waveIn* APIs (#727)Update the screenshot example to support multiple displays (#704, thanks to @ilopx)
Add some additional user32 exports (#707, thanks to @ilopX)
Add IWebAuthenticationCoreManagerInterop (#702, thanks to @solbirn)
IWebAuthenticationCoreManagerInterop (#702, thanks to @solbirn)[BREAKING CHANGE] Experimental WinRT APIs are now removed, in favor of the new windows_* packages (see for more information) 🎉
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] Finalizer is now attached to COM objects. Therefore, you
no longer need to call .release() to decrement the reference count, because
Finalizer will do it for you when they go out of scope (#691).
Note: Calling .release() with Finalizer attached may result in use
after free and cause the process to crash
Note: 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 Struct subclasses
Added detach method to IUnknown, which detaches the object from
Finalizer if you want to manually manage the lifetime of the object
yourself (#677)
- Add some minor network APIs
Add registry constants for win32_registry
Fix missing export of crypt32 APIs
convertToHStringConvert acronyms in method/property names to lowercase (#649, @halildurmus)
Add low-level keyboard hook constants (#632, @timsneath)
winrtInitialize and winrtUninitialize are 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)Revert upper Dart SDK constraint update due to pub analyzer bug.
[BREAKING CHANGE] COM objects now inherit from NativeFinalizer. Instead of directly releasing the memory allocated for them, you can now call .release…
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)Fix missing export of crypt32 APIs
Restructure generator util to use JSON for all data files (#605, @timsneath)
Support generating IIDs for parameterized types
Fix documentation bug (@timsneath)
[BREAKING CHANGE] The WinSock APIs now use upper cased naming for structs. For example, hostent is now HOSTENT. This will only affect you if you expli…
hostent is now HOSTENT. This will only affect you if you
explicitly imported win32/winsock2.dart.Improve projection of Map, Vector, and reference Windows Runtime types, with thanks as ever to Halil Durmus (@halildurmus).
CryptProtectData, CryptProtectMemory etc.)console.dart (use
https://pub.dev/packages/dart_console instead).[BREAKING CHANGE] WinRT APIs have been moved to a separate library. This provides isolation for apps that only use traditional APIs (Win32/COM) from t…
import 'package:win32/winrt.dart';. The WinRT library
also exports all Win32 APIs, so you don't have to import both libraries. final modalWindow = IModalWindow(fileDialog.toInterface(IID_IModalWindow));
write:
final modalWindow = IModalWindow.from(fileDialog);
Lists and
Strings directly.fromPointer method is now fromRawPointer.GUIDFromString now supports an optional custom allocator parameter.DisableThreadLibraryCalls, FindStringOrdinal, GetConsoleCP,
GetConsoleOutputCP, GetModuleHandleExW, GetNumberOfConsoleInputEvents,
GetVolumeInformation, GetVolumeInformationByHandle, PeekConsoleInput,
ReadConsoleInputW, SetErrorMode, SetThreadErrorMode, SizeofResource
APIs from kernel32.dllGetClassFile API from ole32.dllSetupDiGetDeviceInstanceId, SetupDiGetDeviceRegistryPropertyW APIs
from setupapi.dllGetAltTabInfoW, GetClassNameW, GetGUIThreadInfo APIs from
user32.dllIIterable, IIterator,
IKeyValuePair, IMapView, IVector, IVectorView, IPropertyValue,
IReference, with tremendous thanks again to @halildurmus, who has driven
much of the recent WinRT work.[BREAKING CHANGE] Major work on Windows Runtime APIs, with huge thanks to Halil Durmus (@halildurmus). Breaking changes are limited to WinRT APIs, whi…
Windows.Globalization.Calendar that is the new reference design for WinRT
APIs.- Improve pana compliance
Add support for returning vectors from Windows Runtime APIs (#406, thanks to @halildurmus)
Add example for monitor EDID data (#393, thanks to @krjw-eyev)
Add GetProcessTimes (#396, thanks to @halildurmus)
Your coding agent can read these notes before it upgrades. Set up the MCP server →