Skip to content

Update dependency Microsoft.Windows.CsWin32 to 0.3.298#1269

Open
renovate[bot] wants to merge 1 commit into
dev8from
renovate/microsoft.windows.cswin32-0.x
Open

Update dependency Microsoft.Windows.CsWin32 to 0.3.298#1269
renovate[bot] wants to merge 1 commit into
dev8from
renovate/microsoft.windows.cswin32-0.x

Conversation

@renovate

@renovate renovate Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
Microsoft.Windows.CsWin32 (source) 0.3.1620.3.298 age confidence

Release Notes

microsoft/CsWin32 (Microsoft.Windows.CsWin32)

v0.3.296

Changes:

Fixes:
  • #​1703: CsWin32-generated COM structs trip CS3016 under [assembly: CLSCompliant(true)]
Enhancements:
  • #​408: Fields in Anonymous nested structs should be exposed with property getters on the nesting struct
  • #​1720: Generate generic overloads for IID_PPV_ARGS pattern on COM methods
Others:
  • #​1531: Update nbgv and nerdbank.gitversioning updates to 3.9.50
  • #​1727: Flatten anonymous bitfield sub-properties (#​408 phase 2)
  • #​1721: Flatten anonymous nested struct/union fields (#​408)
  • #​1715: fix: document inherited COM interface methods
See More
  • #​1728: Serialize Linux test runs and capture crash dumps as a dedicated artifact
  • #​1722: Limit test parallelism on Linux to avoid OOM kills
  • #​1709: Update actions/checkout action to v5.0.1
  • #​1723: Suppress CS3016 on internal COM wrappers without [CLSCompliant(false)] (#​1703)

This list of changes was auto generated.

v0.3.287

Changes:

Fixes:
  • #​1703: CsWin32-generated COM structs trip CS3016 under [assembly: CLSCompliant(true)]
  • #​1704: IComIID is not emitted on net472 / netstandard2.0
  • #​1716: Generated IStream.Read/Write forward to ISequentialStream and fail for IID_IStream COM objects
  • #​1696: Broken code generated due to hardcoded "PInvoke" classname
Enhancements:
  • #​1477: Allow specifying extension member target for static class
Others:
  • #​1718: Add integration tests to PR gate and fix Roslyn 4 analyzer leg
  • #​1701: Add extensionReceiver option for layered PInvoke composition (#​1477)
See More
  • #​1706: Mark internal COM struct wrappers [CLSCompliant(false)] when they carry CCW thunks
  • #​1698: Auto-generated baselines by 1ES Pipeline Templates
  • #​1705: Emit IComIID on downlevel TFMs (net472 / netstandard2.0)
  • #​1555: Downgrade dependencies so the source analyzer works with .NET 8 SDK again
  • #​1717: Fix #​1716: emit friendly overloads for inherited COM methods on derived interfaces in source-generator mode
  • #​1707: Bump .NET SDK to 10.0.108 (CG alert 1235255)
  • #​1694: Add missing unchecked regions
  • #​1697: Fix hardcoded PInvoke class name in ICCloseSafeHandle generation
  • #​1690: Add validate gate job for single required status check
  • #​1685: Add GitHub Actions workflow to run all tests in PR

This list of changes was auto generated.

v0.3.275

Changes:

  • #​1678: Fix cross-winmd STATUS_SUCCESS lookup
  • #​1672: Promote handle pointer to an out reference if handle cannot be trivially represented as a SafeHandle
  • #​1668: Bump metadata version
  • #​1621: Fix AppLocalAllowedLibraries handling in CsWin32RunAsBuildTask mode
  • #​1623: Cleanup codecov sample comment
  • #​1620: Reduce allocations

This list of changes was auto generated.

v0.3.269

Changes:

  • #​1613: Use Marshal.InitHandle API to avoid memory leak when OOM happens
  • #​1614: Update to latest win32metadata
  • #​1603: Generate SafeHandle when freeing method accepts additional reserved parameters
  • #​1597: Add more examples to the docs

This list of changes was auto generated.

v0.3.264

Changes:

  • #​1593: Fix IDispatch property returns with built-in COM
  • #​1591: Update README.md & add sample snippets
  • #​1589: Add [Optional] on optional params

This list of changes was auto generated.

v0.3.259

Changes:

  • #​1545: Generate struct wrapper around function pointer to make a native delegate typedef
  • #​1578: Update win32metadata to latest (68.0.4-preview)

This list of changes was auto generated.

v0.3.257

Changes:

  • #​1575: Fix bug when multiple Span-params share a CountParamIndex and one param is null
  • #​1567: Fix mis-handling of parameters that are arrays of HANDLE
  • #​1565: Switch CsWin32RunAsBuildTask to EmitSingleFile by default (for VS incremental scenario)
  • #​1562: Move to .NET 10 SDK, add test coverage for net10 TFM

This list of changes was auto generated.

v0.3.253

Changes:

  • #​1557: Improve intellisense experience with CsWin32RunAsBuildTask mode

This list of changes was auto generated.

v0.3.252

Changes:

  • #​1550: Support $(ProjectName).NativeMethods.txt pattern for single-file-app projects
  • #​1555: Downgrade dependencies so the source analyzer works with .NET 8 SDK again

This list of changes was auto generated.

v0.3.250

Changes:

  • #​1554: Translate VARIANT to ComVariant when using COM source generators
  • #​1548: Add common Win32 message parameter extraction macros

This list of changes was auto generated.

v0.3.248

Changes:

  • #​1544: Improve optional out interface arguments (e.g. IWbemServices.GetObject) and other minor tweaks
  • #​1547: Add test for cross-winmd IInspectable derivation and fix a tiny bug
  • #​1541: Don't emit friendly overload of Span param for flexible array structs
  • #​1536: Handle struct returns for COM interface methods across all marshalling modes
  • #​1534: Preserve pointer return types
  • #​1533: Fix out ** pointer parameters

This list of changes was auto generated.

v0.3.242

Changes:

  • #​1524: Add an option to FriendlyOverloads to request previous pointer overloads
  • #​1526: Generate real IDispatch when requested
  • #​1522: [Retained] parameters need to project as pointer
  • #​1521: Add implicit IntPtr casts to void* typedefs

This list of changes was auto generated.

v0.3.238

Changes:

  • #​1520: Don't make void* params Span in friendly methods
  • #​1517: CsWin32Generator should allow newer language versions

This list of changes was auto generated.

v0.3.236

NOTE: This changes the signature of methods with optional parameters. This change is also documented at https://microsoft.github.io/CsWin32/docs/getting-started.html:

Optional out/ref parameters

Some parameters in win32 are [optional, out] or [optional, in, out]. C# does not have an idiomatic way to represent this concept, so for any method that has such parameters, CsWin32 will generate two versions: one with all ref or out parameters included, and one with all such parameters omitted. For example:

// Omitting the optional parameter:
IsTextUnicode(buffer);

// Passing ref for optional parameter:
IS_TEXT_UNICODE_RESULT result = default;
IsTextUnicode(buffer, ref result);
Working with Span-typed and MemorySize-d parameters

In the Win32 APIs there are many functions where one parameter is a buffer (void* or byte*) and another parameter is the size of that buffer. When generating for a target framework that supports Spans, there will be overloads of these functions that take a Span<byte> which represents both of these parameters, since a Span refers to a chunk of memory and a length. For example, an API like IsTextUnicode has a void* parameter whose length is described by the iSize parameter in the native signature. The CsWin32 projection of this method will be:

BOOL IsTextUnicode(ReadOnlySpan<byte> lpv, ref IS_TEXT_UNICODE_RESULT lpiResult)

Instead of passing the buffer and length separately, in this projection you pass just one parameter. Span is a flexible type with many things that can be converted to it safely. You will also see Span parameters for things that may look like a struct but are variable sized. For example, InitializeAcl looks like it returns an ACL struct but the parameter is annotated with a [MemorySize] attribute in the metadata, indicating it is variable-sized based on another parameter. Thus, the cswin32 projection of this method will project this parameter as a Span<byte> since the size of the parameter is variable:

// The cswin32 signature:
static BOOL InitializeAcl(Span<byte> pAcl, ACE_REVISION dwAclRevision) { ... }

And you would call this by creating a buffer to receive the ACL. Then, after the call you can reinterpret the buffer as an ACL:

// Make a buffer
Span<byte> buffer = new byte[CalculateAclSize(...)];
InitializeAcl(buffer, ACE_REVISION.ACL_REVISION);

// The beginning of the buffer is an ACL, so cast it to a ref:
ref ACL acl = ref MemoryMarshal.AsRef<ACL>(buffer);

// Or treat it as a Span:
Span<ACL> aclSpan = MemoryMarshal.Cast<byte, ACL>(buffer);

CsWin32 will also generate a struct-typed parameter for convenience but this overload will pass sizeof(T) for the length parameter to the underlying Win32 API, so this only makes sense in some overloads such as SHGetFileInfo where the parameter has an annotation indicating it's variable-sized, but the size is only ever sizeof(SHFILEINFOW):

// Span<byte> overload:
static nuint SHGetFileInfo(string pszPath, FILE_FLAGS_AND_ATTRIBUTES dwFileAttributes, Span<byte> psfi, SHGFI_FLAGS uFlags)
// ref SHGETFILEINFOW overload:
static nuint SHGetFileInfo(string pszPath, FILE_FLAGS_AND_ATTRIBUTES dwFileAttributes, ref SHFILEINFOW psfi, SHGFI_FLAGS uFlags)

Changes:

  • #​1511: Improve projection of MemorySize-d and optional ref/out parameters

v0.3.235

What's Changed

Full Changelog: microsoft/CsWin32@v0.3.228...v0.3.235

v0.3.228

What's Changed

New Contributors

Full Changelog: microsoft/CsWin32@v0.3.217...v0.3.228

https://www.nuget.org/packages/Microsoft.Windows.CsWin32/0.3.228

v0.3.217

What's Changed

Full Changelog: microsoft/CsWin32@v0.3.213...v0.3.217

v0.3.213

What's Changed

Full Changelog: microsoft/CsWin32@v0.3.205...v0.3.213

v0.3.205

What's Changed

New Contributors

Full Changelog: microsoft/CsWin32@v0.3.183...v0.3.205

v0.3.183

Fixes

  • Generate WinRTCustomMarshaler when referenced from extern methods by @​AArnott in #​1335
  • Fix build break when friendly methods are turned off and IUnknown is generated by @​AArnott in #​1337

Enhancements

  • Use C# 13 overload resolution attribute to improve friendly overloads by @​AArnott in #​1336
  • Improve [Out] PWSTR parameters in friendly overloads by @​AArnott in #​1341
  • Friendly overloads replace PCWSTR* parameters with ReadOnlySpan<string> by @​AArnott in #​1346
  • Implement LOWORD and HIWORD Macros for Extracting Low-Order and High-Order Words from a 32-Bit Value by @​vitkuz573 in #​1300

New Contributors

Full Changelog: microsoft/CsWin32@v0.3.162...v0.3.183


Configuration

📅 Schedule: (in timezone Asia/Shanghai)

  • Branch creation
    • "before 1am,before 5am,before 9am"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/microsoft.windows.cswin32-0.x branch from 98e85c1 to f5a0df5 Compare June 15, 2026 02:54
@renovate renovate Bot changed the title Update dependency Microsoft.Windows.CsWin32 to 0.3.287 Update dependency Microsoft.Windows.CsWin32 to 0.3.296 Jun 15, 2026
@renovate renovate Bot force-pushed the renovate/microsoft.windows.cswin32-0.x branch from f5a0df5 to 1ac096a Compare June 17, 2026 23:59
@renovate renovate Bot changed the title Update dependency Microsoft.Windows.CsWin32 to 0.3.296 Update dependency Microsoft.Windows.CsWin32 to 0.3.298 Jun 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants