Skip to content

Add shift-left header annotations to the C# toolchain - #2363

Draft
Jevan Saks (jevansaks) wants to merge 64 commits into
mainfrom
jevansaks-header-annotation-migration
Draft

Jevan Saks (jevansaks) wants to merge 64 commits into
mainfrom
jevansaks-header-annotation-migration

Conversation

@jevansaks

@jevansaks Jevan Saks (jevansaks) commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

Scope

Generic header-annotation, constant-selection and cross-architecture metadata tooling, independently scoped from the SDK/header migration in #2365. The canonical annotation helper and SAL bootstrap are tooling infrastructure. No API header/IDL pilot patches, SDK replacement, migration recipe, API-specific workaround or mass sidecar retirement is included. Earlier descriptions are preserved in the owning session.

Current qualification

Published head ced6964abf13860760051d1e39962689c19f6a98, sole parent 5a6430584219edb2f0f5764b7cff5f6a1607736e, tree 28bc7643e1a7350eb6ea4f0a55e38e45eee1de23, published by guarded normal fast-forward. This final successor changes only AutomaticTypedefPrototypeTests.cs. The preceding eight-path callback/enum-provider correction is published as 5a6430584219edb2f0f5764b7cff5f6a1607736e, tree 3c1ea5d1237d4b7b0c78999a8166f03cefd71297, sole parent a2864206c1ba768a1d804130288d749482ee09ca.

Changed-head ordinary SDK CI failed: PR Validation 40721494889, the automatic pull_request run for exact ced6964, completed with failure at 2026-10-28 16:51:32 UTC. Workflow checks and all three native scrapes passed. Consumer job 122955719686 failed during metadata emission at emitter.typedef-composition with 47 unique CSSW005 type/diagnostic entries: 24 storage conflicts, 17 Value-field metadata rejections, two unresolved storage bindings, two architecture-coverage rejections, one duplicate HRESULT projection and one retained-provider overlap. These are diagnostic categories, not a count of independent root causes. Its ordinary tests did not qualify this head. The existing managed replay reproduces all 47 primary entries exactly through the normal consumer targets, actual archived generated inputs, routing and reference construction. A generic correction is being validated locally; no successor has been published.

The preceding callback head's 40719354495 passed x64 and Arm64, but x86 was cancelled after successor publication. That is neither a new code failure nor full callback CI success. No current image, complete-default, package, sample, full-SDK or gap acceptance is claimed.

The callback correction compares complete architecture provider-signature sets, preserves distinct scoped fragments through deduplication and keeps checked Single selection and strict nominal composition. Header-only providers require identical terminal fixed-integer backing. An inferred alias can share an explicitly remapped native enum projection only through its actual source-bound owner and compatible native storage; source-location identity is requested even for enum-only ordinary input. The matched-parent controls fail at checked Single in all 16 managed cases and with two native CS0101 errors. The final same-test managed controls pass 16/16, and the full emitter suite passes 574/574. All three genuine production analyzer Rebuilds pass with zero warnings/errors.

The full scraper attempt remains 134/135, with its sole failure caused by missing standard BuildTools.proj.nuget.g.props preparation. Normal dotnet build BuildTools -c Release generated that input, and only the failed Fact was rerun and passed. This is not relabeled a fresh full 135/135 run. The ordinary utility suite passes 206/206 and the existing Python SDK annotation-coverage auditor suite passes 26/26. These results precede the separate test-only cost change and remain image-independent source qualifications. The exact final callback native proof is the passing AutomaticTypedef row in that full scraper attempt; earlier native evidence is supporting evidence, not an identical eight-file source run. All executed sources and normal Git CRLF-to-LF staging qualifications remain explicit.

The separate one-file fixture optimization batches independent negative declarations, asserting all 13 exact named diagnostics in three phase-separated inputs. Four positive mode/architecture cases, both fixed-width physical/storage proofs, six physical images and standalone enum-only coverage remain. The fresh-process compiler-root Fact is unchanged. The bounded four-CPU before/after pair passes: 20 to 10 scraper child processes, 6 to 6 physical image emissions, 21.3783405s to 14.4662810s Fact time, and 40.4650134s to 36.4718414s complete command time including normal build. These measurements do not establish complete-default or annotated-SDK performance.

Historical a286420 40705453741 passed all three native scrapes, then failed during metadata emission at the callback dependency boundary; its Run tests step was skipped. The preceding compiler-root/provider correction retains actual SDK-target tests in separate producer/consumer MSBuild processes, independent compiler selection, corrupted retained-ownership replacement, exact physical header/hash/value and invalid-auto/explicit-valid/relative-root controls. Historical 26244 40687436369 also failed at the callback boundary after three successful native scrapes. Historical 7c44 40670990199 failed on nominal HRESULT backing; subsequent fixes preserve nominal storage and compiler-evaluated fixed-integer bits. Later numeric-namespace diagnostics were secondary syntax collection, not grounds for a namespace patch or preflight bypass.

Earlier 4c2772 passed 40591416271: all six jobs, 924 ordinary tests in the observed 203-second step (186 utility, 556 emitter, 129 scraper, 27 WinMD integrity, 26 Python), and 47 separate workflow tests. It cannot qualify this head. Its last-release comparison reported unknown differences; image equivalence is not inferred. Other failed/cancelled runs and the retained-private scraper attempt with two missing-extraction-input failures remain failed or cancelled. No stale or migration image, filtered default invocation or relaxed test is used.

Tooling changes and preserved behavior

  • Infer native typedef identities structurally from selected API parameters, returns and fields, preserving written scalar/pointer alias chains and required dependencies from included headers outside --traverse. Required dependency projection remains separate from emission ownership. Real record/enum declarations retain ordinary projection; incomplete records remain empty records. Callback discovery remains separate. The public NativeTypedef input fact/helper is retired and rejected; emitted NativeTypedefAttribute remains the identity contract.
  • Preserve native pointer depth/width and effective intrinsic/exclusion policy. Resolve complete named and anonymous record pointees through actual generated source identity. Distinguish synthesized buffers from enclosing records without relaxing genuine identity ambiguity. Unsupported arrays, pointers to arrays, unresolved dependent forms and template-owned aliases remain with ordinary generation. Selected non-template aliases of concrete specializations can retain scalar identity. Existing array projection is preserved without claiming an ABI correction.
  • Use matching fixed unsigned backing (uint/ulong) for a non-target-width data-pointer level, retaining nominal chains, ordinary outer pointers and native provenance. Capture canonical physical width before unwrapping attributes. Incompatible explicit CLR storage or unsupported width/alignment rejects. Native compiler storage and direct parameter/return feasibility was checked in both width directions; CLR-runtime acceptance is not inferred.
  • Validate mapped native pointee ownership and effective storage, including owned pointer layers and native-integer pointees. Canonically matching siblings in the same native declaration can supply ownership through their shared base. Preserve raw redeclarations until owner selection; a secondary owner requires an actual underlying typedef-chain relationship. Authored void/incomplete excluded-provider views retain validated pointer storage without inventing an alias owner. Excluded complete POD integer providers require coherent tag-pointer ownership, one zero-offset non-bit-field integer field and exact mapped storage, signedness, width and alignment. Unrelated identities, floating substitutions and narrowing providers reject. The unsigned-native-to-signed-IntPtr provider exception still requires coherent effective mapping/excluded-pointee ownership and matching physical width. Ordinary integer aliases require matching signedness.
  • Compare native nominal backing with retained-provider encoding during provider composition and constant lowering; emitted alias chains remain nominal. Every constant-storage fragment must agree on exact terminal fixed-integer storage and signedness. A retained fixed-integral resource can preserve same-width signed encoding only with its NativeTypedef, RAIIFree and InvalidHandleValue contract. This is not an IntPtr/UIntPtr, ordinary integer, incompatible-width or explicit native-storage-remap exception. One semantically resolved string NativeTypeName source-transport field attribute is accepted without relaxing other field/storage checks.
  • Preserve compiler-evaluated fixed-integer variable conversions at the source-bound native producer. Character-to-unsigned and signed-to-unsigned conversions do not require reinterpreting arbitrary managed initializers. Explicit invalid managed casts, overflow and conflicting backing storage still reject.
  • Select native constant-group owners using the same traversed/required provider policy as ordinary bindings, including redeclarations. Discover native typedef dependencies in constants-only exports. Do not equate x64 corroboration with missing failed-x86 native payloads.
  • Independently select and validate compiler include roots before both native header and constant targets, including cold consumers with SkipScraping=true. Use the selected roots consistently for compilation, name scanning, ownership and incremental state. Retained ownership JSON is not an independently authoritative compiler selection. Invalid automatic roots and relative explicit roots reject; valid explicit roots remain supported.
  • Preserve genuine primitive spellings; escape other C# keywords consistently while emitting unescaped metadata identities. Keep authored metadata parsing opt-in: disabled parsing does not apply or validate authored method/parameter/field/comment carriers, logical-group facts or native scoped/flags annotation facts. Transport cleanup and structural typedef inference continue alongside ordinary enum projection.
  • Extend transitive architecture-identity composition to structs, retaining architecture-correct referenced variants and compatible API containers. Compare complete callback provider sets and retain each distinct physical fragment until strict composition; do not select an arbitrary provider or discard conflicting native aliases. Keep exact callback scope, calling convention and intrinsic IntPtr/UIntPtr ABI checks.
  • Recognize genuine bare GUID initializer tuples before scalar probing; preserve wrapped comma expressions and parenthesized aliases as compiler-evaluated scalars. Scalar/GUID collisions reject with NATIVE_GUID_COLLISION and provenance; legitimate GUID deduplication remains. Legacy signed UCHAR macro casts wrap explicitly to bytes.

No dependency upgrade, native test-inventory relaxation, warning suppression, timeout increase or API-name inference allowlist is included.

Preserved contracts

--config parse-win32-annotations remains opt-in; native field-array inference remains separately default-off. Legacy/default RSP/JSON facts, manual C# inputs and optional documentation mapping remain supported. Explicit missing/malformed inputs, conflicting facts, ambiguous ownership and invalid native representations reject rather than producing partial or fallback metadata.

Selected native inputs require independently configured include roots and exact planned source, architecture, namespace, traversal and current physical header/content identity. Roots are not inferred from macro names, basenames or values. Incremental reuse remains content-bound. Existing typed diagnostics, independent failure accumulation, completed-receipt validation and atomic output publication remain intact. Stale source or rejected selections cannot publish an image.

The names file remains a query index, not an all-name probe list. Supported simple constants use shared scanners; genuine unresolved scalar expressions use a separate Clang value translation unit. Structural fragments are not scalar-probed. Native spelling, source/namespace ownership, logical groups, native scoped enums, synthetic unscoped groups, primitive versus projected storage, and native-versus-legacy provenance remain distinct. Generated C# NativeTypeName remains source transport consumed by the ordinary emitter; no public WinMD NativeTypeName attribute is added.

Typedef/function-pointer composition preserves qualified identity, native qualifiers, pointer depth and calling convention. Bare function typedefs receive only their first pointer reduction. Real complete/empty records, incomplete native backing records, raw pointers and opaque aliases remain distinct. No blanket pointer equivalence, native-type flattening, source/WinMD fallback or per-API override is introduced.

PreserveResult still lowers to CLR PreserveSig on free functions, interface methods and callback Invoke without changing ordinary methods or callback constructors. Existing SAL composition and original-IDL limitations remain explicit. No blanket SetLastError, packing or PreserveSig restoration is added.

Authoritative SDK import discovery precedes DLL overrides. Existing manual/forward/QI provider ownership, legacy enum ownership, architecture overlaps and compatible-provider coalescing remain unchanged. Authored member remaps still win; compiler-proven macro-selected OLD member identity remains a declaration-identity rule, not an ABI inference. UNICODE remains shared across parse/bind/constants/recovery with explicit -UUNICODE precedence; proven A/W recovery remains bounded.

MIDL producer identity, current tool/preparation validation, established SAL and explicit-local/plain-pointer semantics remain unchanged. No MIDL diagnostic suppression or /WX change is included.

Separate migration and PR state

SDK header/IDL cleanup, PBI header annotations, full annotated-SDK generation, original native evidence, physical ABI/QI grading and fresh OLD-to-NEW gap evaluation remain in #2365 and its qualification. Current source fixes do not confer actual new-head image, default or gap acceptance. Historical failed/rejected runs and immutable control images remain retained.

Native stack2385 remains #2363 below #2365, with existing bases and draft states. Only this lower head was fast-forwarded. No restack, rebase, force-push, merge, draft conversion, Agent merge or upper-head change was performed. Review and merge decisions remain with the user.

See the annotation specification, constant contracts, migration playbook, native const contracts, generation options and diagnostics, and recorded decisions.

Detect positional and qualified signature changes, sequential field order, interface slot order and inheritance changes. Compare repeated attributes as a bag and cover the behavior with compiled metadata fixtures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jevansaks Jevan Saks (jevansaks) changed the title Upgrade the C# toolchain to Clang 23: phase 1 Add shift-left header annotations to the C# toolchain Oct 14, 2026
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

📋 API Surface Diff

+1792 additions / -1138 deletions vs main branch (full validation run)

Click to expand API diff
diff --git "a/bin\\baseline.apidump.cs" "b/bin\\current.apidump.cs"
index bc6e749a..af06ab83 100644
--- "a/bin\\baseline.apidump.cs"
+++ "b/bin\\current.apidump.cs"
@@ -5985,15 +5985,15 @@ public struct HH_AKLINK
 
 	public BOOL fReserved;
 
-	public unsafe sbyte* pszKeywords;
+	public unsafe ushort* pszKeywords;
 
-	public unsafe sbyte* pszUrl;
+	public unsafe ushort* pszUrl;
 
-	public unsafe sbyte* pszMsgText;
+	public unsafe ushort* pszMsgText;
 
-	public unsafe sbyte* pszMsgTitle;
+	public unsafe ushort* pszMsgTitle;
 
-	public unsafe sbyte* pszWindow;
+	public unsafe ushort* pszWindow;
 
 	public BOOL fIndexOnFail;
 }
@@ -6047,7 +6047,7 @@ public struct HH_FTS_QUERY
 
 	public BOOL fUniCodeStrings;
 
-	public unsafe sbyte* pszSearchQuery;
+	public unsafe ushort* pszSearchQuery;
 
 	public int iProximity;
 
@@ -6057,7 +6057,7 @@ public struct HH_FTS_QUERY
 
 	public BOOL fExecute;
 
-	public unsafe sbyte* pszWindow;
+	public unsafe ushort* pszWindow;
 }
 
 using Windows.Win32.System.Variant;
@@ -6096,7 +6096,7 @@ public struct HH_POPUP
 
 	public uint idString;
 
-	public unsafe sbyte* pszText;
+	public unsafe ushort* pszText;
 
 	public POINT pt;
 
@@ -6106,7 +6106,7 @@ public struct HH_POPUP
 
 	public RECT rcMargins;
 
-	public unsafe sbyte* pszFont;
+	public unsafe ushort* pszFont;
 }
 
 using Windows.Win32.Foundation;
@@ -6137,13 +6137,13 @@ public struct HH_WINTYPE
 
 	public BOOL fUniCodeStrings;
 
-	public unsafe sbyte* pszType;
+	public unsafe ushort* pszType;
 
 	public uint fsValidMembers;
 
 	public uint fsWinProperties;
 
-	public unsafe sbyte* pszCaption;
+	public unsafe ushort* pszCaption;
 
 	public uint dwStyles;
 
@@ -6169,13 +6169,13 @@ public struct HH_WINTYPE
 
 	public RECT rcHTML;
 
-	public unsafe sbyte* pszToc;
+	public unsafe ushort* pszToc;
 
-	public unsafe sbyte* pszIndex;
+	public unsafe ushort* pszIndex;
 
-	public unsafe sbyte* pszFile;
+	public unsafe ushort* pszFile;
 
-	public unsafe sbyte* pszHome;
+	public unsafe ushort* pszHome;
 
 	public uint fsToolBarFlags;
 
@@ -6191,19 +6191,19 @@ public struct HH_WINTYPE
 
 	public int cHistory;
 
-	public unsafe sbyte* pszJump1;
+	public unsafe ushort* pszJump1;
 
-	public unsafe sbyte* pszJump2;
+	public unsafe ushort* pszJump2;
 
-	public unsafe sbyte* pszUrlJump1;
+	public unsafe ushort* pszUrlJump1;
 
-	public unsafe sbyte* pszUrlJump2;
+	public unsafe ushort* pszUrlJump2;
 
 	public RECT rcMinSize;
 
 	public int cbInfoTypes;
 
-	public unsafe sbyte* pszCustomTabs;
+	public unsafe ushort* pszCustomTabs;
 }
 
 namespace Windows.Win32.Data.HtmlHelp;
@@ -11385,18 +11385,18 @@ public interface IXmlReader : IUnknown
 
 	HRESULT SetProperty ([In] uint nProperty, [Optional][In] IntPtr pValue);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	unsafe HRESULT Read ([Optional][Out] XmlNodeType* pNodeType);
 
 	unsafe HRESULT GetNodeType ([Out] XmlNodeType* pNodeType);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	HRESULT MoveToFirstAttribute ();
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	HRESULT MoveToNextAttribute ();
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	HRESULT MoveToAttributeByName ([In][Const] PWSTR pwszLocalName, [Optional][In][Const] PWSTR pwszNamespaceUri);
 
 	HRESULT MoveToElement ();
@@ -11411,7 +11411,7 @@ public interface IXmlReader : IUnknown
 
 	unsafe HRESULT GetValue ([Out][Const] PWSTR* ppwszValue, [Optional][Out] uint* pcwchValue);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	unsafe HRESULT ReadValueChunk ([Out][NativeArrayInfo (CountParamIndex = 1)] PWSTR pwchBuffer, [In] uint cwchChunkSize, [In][Out] uint* pcwchRead);
 
 	unsafe HRESULT GetBaseUri ([Out][Const] PWSTR* ppwszBaseUri, [Optional][Out] uint* pcwchBaseUri);
@@ -15286,6 +15286,15 @@ public static class Apis
 
 	public const ushort WINBIO_ANSI_381_IMP_TYPE_LIVE_SCAN_CONTACTLESS = 9;
 
+	[NativeEncoding ("ansi")]
+	public const string WINBIO_QUERY_SENSOR_INTERFACE_FN_NAME = "WbioQuerySensorInterface";
+
+	[NativeEncoding ("ansi")]
+	public const string WINBIO_QUERY_ENGINE_INTERFACE_FN_NAME = "WbioQueryEngineInterface";
+
+	[NativeEncoding ("ansi")]
+	public const string WINBIO_QUERY_STORAGE_INTERFACE_FN_NAME = "WbioQueryStorageInterface";
+
 	public const uint FACILITY_WINBIO = 9u;
 
 	public const uint FACILITY_NONE = 0u;
@@ -15474,17 +15483,17 @@ public static class Apis
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows6.1")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbio/nf-winbio-winbioenumserviceproviders")]
-	public unsafe static extern HRESULT WinBioEnumServiceProviders ([In] uint Factor, [Out] WINBIO_BSP_SCHEMA** BspSchemaArray, [Out] UIntPtr* BspCount);
+	public unsafe static extern HRESULT WinBioEnumServiceProviders ([In] uint Factor, [Out][NativeArrayInfo (CountParamIndex = 2)] WINBIO_BSP_SCHEMA** BspSchemaArray, [Out] UIntPtr* BspCount);
 
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows6.1")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbio/nf-winbio-winbioenumbiometricunits")]
-	public unsafe static extern HRESULT WinBioEnumBiometricUnits ([In] uint Factor, [Out] WINBIO_UNIT_SCHEMA** UnitSchemaArray, [Out] UIntPtr* UnitCount);
+	public unsafe static extern HRESULT WinBioEnumBiometricUnits ([In] uint Factor, [Out][NativeArrayInfo (CountParamIndex = 2)] WINBIO_UNIT_SCHEMA** UnitSchemaArray, [Out] UIntPtr* UnitCount);
 
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows6.1")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbio/nf-winbio-winbioenumdatabases")]
-	public unsafe static extern HRESULT WinBioEnumDatabases ([In] uint Factor, [Out] WINBIO_STORAGE_SCHEMA** StorageSchemaArray, [Out] UIntPtr* StorageCount);
+	public unsafe static extern HRESULT WinBioEnumDatabases ([In] uint Factor, [Out][NativeArrayInfo (CountParamIndex = 2)] WINBIO_STORAGE_SCHEMA** StorageSchemaArray, [Out] UIntPtr* StorageCount);
 
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows8.0")]
@@ -15604,7 +15613,7 @@ public static class Apis
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows6.1")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbio/nf-winbio-winbioenumenrollments")]
-	public unsafe static extern HRESULT WinBioEnumEnrollments ([In] uint SessionHandle, [In] uint UnitId, [In] WINBIO_IDENTITY* Identity, [Out] byte** SubFactorArray, [Optional][Out] UIntPtr* SubFactorCount);
+	public unsafe static extern HRESULT WinBioEnumEnrollments ([In] uint SessionHandle, [In] uint UnitId, [In] WINBIO_IDENTITY* Identity, [Out][NativeArrayInfo (CountParamIndex = 4)] byte** SubFactorArray, [Optional][Out] UIntPtr* SubFactorCount);
 
 	[DllImport ("winbio.dll", ExactSpelling = true, PreserveSig = false)]
 	public static extern HRESULT WinBioImproveBegin ([In] uint SessionHandle, [In] uint UnitId);
@@ -16292,12 +16301,13 @@ public unsafe delegate HRESULT PIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN ([In][Out]
 using System;
 using System.Runtime.InteropServices;
 using Windows.Win32.Foundation;
+using Windows.Win32.Foundation.Metadata;
 
 namespace Windows.Win32.Devices.BiometricFramework;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
 [UnmanagedFunctionPointer (CallingConvention.Winapi)]
-public unsafe delegate HRESULT PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN ([In][Out] WINBIO_PIPELINE* Pipeline, [In] WINBIO_IDENTITY* Identity, [Out] UIntPtr* SecureIdentityCount, [Out] WINBIO_IDENTITY** SecureIdentities);
+public unsafe delegate HRESULT PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN ([In][Out] WINBIO_PIPELINE* Pipeline, [In] WINBIO_IDENTITY* Identity, [Out] UIntPtr* SecureIdentityCount, [Out][NativeArrayInfo (CountParamIndex = 2)] WINBIO_IDENTITY** SecureIdentities);
 
 using System;
 using System.Runtime.InteropServices;
@@ -26549,13 +26559,13 @@ public static class Apis
 	[SupportedOSPlatform ("windows5.1.2600")]
 	[Ansi]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupquerysourcelista")]
-	public unsafe static extern BOOL SetupQuerySourceListA ([In] uint Flags, [Out][Const] PSTR** List, [Out] uint* Count);
+	public unsafe static extern BOOL SetupQuerySourceListA ([In] uint Flags, [Out][Const][NativeArrayInfo (CountParamIndex = 2)] PSTR** List, [Out] uint* Count);
 
 	[DllImport ("SETUPAPI.dll", ExactSpelling = true, PreserveSig = false, SetLastError = true)]
 	[SupportedOSPlatform ("windows5.1.2600")]
 	[Unicode]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/setupapi/nf-setupapi-setupquerysourcelistw")]
-	public unsafe static extern BOOL SetupQuerySourceListW ([In] uint Flags, [Out][Const] PWSTR** List, [Out] uint* Count);
+	public unsafe static extern BOOL SetupQuerySourceListW ([In] uint Flags, [Out][Const][NativeArrayInfo (CountParamIndex = 2)] PWSTR** List, [Out] uint* Count);
 
 	[DllImport ("SETUPAPI.dll", ExactSpelling = true, PreserveSig = false, SetLastError = true)]
 	[SupportedOSPlatform ("windows5.1.2600")]
@@ -34147,19 +34157,19 @@ public static class Apis
 	public static extern void DevCloseObjectQuery ([In] HDEVQUERY hDevQuery);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-0.dll", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern HRESULT DevGetObjects ([In] DEV_OBJECT_TYPE ObjectType, [In] uint QueryFlags, [In] uint cRequestedProperties, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 2)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cFilterExpressionCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 4)] DEVPROP_FILTER_EXPRESSION* pFilter, [Out] uint* pcObjectCount, [Out][Const] DEV_OBJECT** ppObjects);
+	public unsafe static extern HRESULT DevGetObjects ([In] DEV_OBJECT_TYPE ObjectType, [In] uint QueryFlags, [In] uint cRequestedProperties, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 2)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cFilterExpressionCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 4)] DEVPROP_FILTER_EXPRESSION* pFilter, [Out] uint* pcObjectCount, [Out][Const][NativeArrayInfo (CountParamIndex = 6)] DEV_OBJECT** ppObjects);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-1.dll", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern HRESULT DevGetObjectsEx ([In] DEV_OBJECT_TYPE ObjectType, [In] uint QueryFlags, [In] uint cRequestedProperties, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 2)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cFilterExpressionCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 4)] DEVPROP_FILTER_EXPRESSION* pFilter, [In] uint cExtendedParameterCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 6)] DEV_QUERY_PARAMETER* pExtendedParameters, [Out] uint* pcObjectCount, [Out][Const] DEV_OBJECT** ppObjects);
+	public unsafe static extern HRESULT DevGetObjectsEx ([In] DEV_OBJECT_TYPE ObjectType, [In] uint QueryFlags, [In] uint cRequestedProperties, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 2)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cFilterExpressionCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 4)] DEVPROP_FILTER_EXPRESSION* pFilter, [In] uint cExtendedParameterCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 6)] DEV_QUERY_PARAMETER* pExtendedParameters, [Out] uint* pcObjectCount, [Out][Const][NativeArrayInfo (CountParamIndex = 8)] DEV_OBJECT** ppObjects);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-0.dll", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern void DevFreeObjects ([In] uint cObjectCount, [In][Const][NativeArrayInfo (CountParamIndex = 0)] DEV_OBJECT* pObjects);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-0.dll", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern HRESULT DevGetObjectProperties ([In] DEV_OBJECT_TYPE ObjectType, [In][Const] PWSTR pszObjectId, [In] uint QueryFlags, [In] uint cRequestedProperties, [In][Const][NativeArrayInfo (CountParamIndex = 3)] DEVPROPCOMPKEY* pRequestedProperties, [Out] uint* pcPropertyCount, [Out][Const] DEVPROPERTY** ppProperties);
+	public unsafe static extern HRESULT DevGetObjectProperties ([In] DEV_OBJECT_TYPE ObjectType, [In][Const] PWSTR pszObjectId, [In] uint QueryFlags, [In] uint cRequestedProperties, [In][Const][NativeArrayInfo (CountParamIndex = 3)] DEVPROPCOMPKEY* pRequestedProperties, [Out] uint* pcPropertyCount, [Out][Const][NativeArrayInfo (CountParamIndex = 5)] DEVPROPERTY** ppProperties);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-1.dll", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern HRESULT DevGetObjectPropertiesEx ([In] DEV_OBJECT_TYPE ObjectType, [In][Const] PWSTR pszObjectId, [In] uint QueryFlags, [In] uint cRequestedProperties, [In][Const][NativeArrayInfo (CountParamIndex = 3)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cExtendedParameterCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 5)] DEV_QUERY_PARAMETER* pExtendedParameters, [Out] uint* pcPropertyCount, [Out][Const] DEVPROPERTY** ppProperties);
+	public unsafe static extern HRESULT DevGetObjectPropertiesEx ([In] DEV_OBJECT_TYPE ObjectType, [In][Const] PWSTR pszObjectId, [In] uint QueryFlags, [In] uint cRequestedProperties, [In][Const][NativeArrayInfo (CountParamIndex = 3)] DEVPROPCOMPKEY* pRequestedProperties, [In] uint cExtendedParameterCount, [Optional][In][Const][NativeArrayInfo (CountParamIndex = 5)] DEV_QUERY_PARAMETER* pExtendedParameters, [Out] uint* pcPropertyCount, [Out][Const][NativeArrayInfo (CountParamIndex = 7)] DEVPROPERTY** ppProperties);
 
 	[DllImport ("api-ms-win-devices-query-l1-1-0.dll", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern void DevFreeObjectProperties ([In] uint cPropertyCount, [In][Const][NativeArrayInfo (CountParamIndex = 0)] DEVPROPERTY* pProperties);
@@ -35940,6 +35950,12 @@ public static class Apis
 
 	public const uint SETCONFIGURATION_STATUS_OVERRIDDEN = 2u;
 
+	public const uint FO_TYPE_RASTER = 1u;
+
+	public const uint FO_TYPE_DEVICE = 2u;
+
+	public const uint FO_TYPE_TRUETYPE = 4u;
+
 	[DllImport ("dxva2.dll", ExactSpelling = true, PreserveSig = false, SetLastError = true)]
 	[SupportedOSPlatform ("windows6.0.6000")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/physicalmonitorenumerationapi/nf-physicalmonitorenumerationapi-getnumberofphysicalmonitorsfromhmonitor")]
@@ -43903,10 +43919,10 @@ public static class Apis
 	public const string STI_REMOVE_DEVICE_BROADCAST_ACTION = "Removal";
 
 	[NativeEncoding ("ansi")]
-	public const string STI_ADD_DEVICE_BROADCAST_STRING = "STI\\";
+	public const string STI_ADD_DEVICE_BROADCAST_STRING = "STI\\Arrival\\%s";
 
 	[NativeEncoding ("ansi")]
-	public const string STI_REMOVE_DEVICE_BROADCAST_STRING = "STI\\";
+	public const string STI_REMOVE_DEVICE_BROADCAST_STRING = "STI\\Removal\\%s";
 
 	public const uint STI_DEVICE_CREATE_STATUS = 1u;
 
@@ -44067,6 +44083,10 @@ public static class Apis
 
 	public const uint STI_DEVICE_CREATE_FOR_MONITOR = 16777216u;
 
+	public const uint FAXSRV_MAX_SERVER_NAME = 260u;
+
+	public const uint FAXSRV_MAX_ROUTEEXT_NAME_LEN = 260u;
+
 	public const int lDEFAULT_PREFETCH_SIZE = 100;
 
 	public const ushort wcharREASSIGN_RECIPIENTS_DELIMITER = 59;
@@ -51505,6 +51525,8 @@ public static class Apis
 
 	public const string FD_SUBKEY = "SOFTWARE\\Microsoft\\Function Discovery\\";
 
+	public const string FD_SUBKEY_CATEGORIES = "SOFTWARE\\Microsoft\\Function Discovery\\Categories\\";
+
 	public const string FCTN_CATEGORY_PNP = "Provider\\Microsoft.Base.PnP";
 
 	public const string FCTN_CATEGORY_REGISTRY = "Provider\\Microsoft.Base.Registry";
@@ -51613,6 +51635,30 @@ public static class Apis
 
 	public const string SSDP_CONSTRAINTVALUE_TYPE_SVC_PREFIX = "urn:schemas-upnp-org:service:";
 
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_LIGHTING = "urn:schemas-upnp-org:device:Lighting:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_REMINDER = "urn:schemas-upnp-org:device:Reminder:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_POWERDEVICE = "urn:schemas-upnp-org:device:PowerDevice:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_IGD = "urn:schemas-upnp-org:device:InternetGatewayDevice:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_WANDEVICE = "urn:schemas-upnp-org:device:WANDevice:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_LANDEVICE = "urn:schemas-upnp-org:device:LANDevice:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_WANCONNDEVICE = "urn:schemas-upnp-org:device:WANConnectionDevice:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_LUXMETER = "urn:schemas-upnp-org:device:Luxmeter:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_MDARNDR = "urn:schemas-upnp-org:device:MediaRenderer:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_DEV_MDASRVR = "urn:schemas-upnp-org:device:MediaServer:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_SVC_SCANNER = "urn:schemas-upnp-org:service:Scanner:1";
+
+	public const string SSDP_CONSTRAINTVALUE_TYPE_SVC_DIMMING = "urn:schemas-upnp-org:service:DimmingService:1";
+
 	public const string PROVIDERWSD_QUERYCONSTRAINT_DIRECTEDADDRESS = "RemoteAddress";
 
 	public const string PROVIDERWSD_QUERYCONSTRAINT_TYPE = "Type";
@@ -63514,6 +63560,8 @@ public static class Apis
 
 	public const uint IOCTL_BUTTON_GET_ENABLED_ON_IDLE = 721580u;
 
+	public const uint DEV_STS_EFFECT_RUNNING = 1u;
+
 	[DllImport ("DINPUT8.dll", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern HRESULT DirectInput8Create ([In] HINSTANCE hinst, [In] uint dwVersion, [In][Const] Guid* riidltf, [In][Out] void** ppvOut, [In] IUnknown punkOuter);
 
@@ -68482,6 +68530,54 @@ public static class Apis
 
 	public const string WIA_EVENT_DEVICE_CONNECTED_STR = "Device Connected";
 
+	public const string WIA_ICON_DEVICE_DISCONNECTED = "sti.dll,-1001";
+
+	public const string WIA_ICON_DEVICE_CONNECTED = "sti.dll,-1001";
+
+	public const string WIA_ICON_ITEM_DELETED = "sti.dll,-1001";
+
+	public const string WIA_ICON_ITEM_CREATED = "sti.dll,-1001";
+
+	public const string WIA_ICON_TREE_UPDATED = "sti.dll,-1001";
+
+	public const string WIA_ICON_VOLUME_INSERT = "sti.dll,-1001";
+
+	public const string WIA_ICON_SCAN_BUTTON_PRESS = "sti.dll,-1001";
+
+	public const string WIA_ICON_DEVICE_NOT_READY = "sti.dll,-1001";
+
+	public const string WIA_ICON_DEVICE_READY = "sti.dll,-1001";
+
+	public const string WIA_ICON_FLATBED_LID_OPEN = "sti.dll,-1001";
+
+	public const string WIA_ICON_FLATBED_LID_CLOSED = "sti.dll,-1001";
+
+	public const string WIA_ICON_FEEDER_LOADED = "sti.dll,-1001";
+
+	public const string WIA_ICON_FEEDER_EMPTIED = "sti.dll,-1001";
+
+	public const string WIA_ICON_COVER_OPEN = "sti.dll,-1001";
+
+	public const string WIA_ICON_COVER_CLOSED = "sti.dll,-1001";
+
+	public const string WIA_ICON_START_FEEDER = "sti.dll,-1001";
+
+	public const string WIA_ICON_STOP_FEEDER = "sti.dll,-1001";
+
+	public const string WIA_ICON_SYNCHRONIZE = "sti.dll,-2000";
+
+	public const string WIA_ICON_TAKE_PICTURE = "sti.dll,-2001";
+
+	public const string WIA_ICON_DELETE_ALL_ITEMS = "sti.dll,-2002";
+
+	public const string WIA_ICON_CHANGE_DOCUMENT = "sti.dll,-2003";
+
+	public const string WIA_ICON_UNLOAD_DOCUMENT = "sti.dll,-2004";
+
+	public const string WIA_ICON_DELETE_DEVICE_TREE = "sti.dll,-2005";
+
+	public const string WIA_ICON_BUILD_DEVICE_TREE = "sti.dll,-2006";
+
 	public const uint TYMED_CALLBACK = 128u;
 
 	public const uint TYMED_MULTIPAGE_FILE = 256u;
@@ -69798,7 +69894,7 @@ public interface IWiaItem2 : IUnknown
 	unsafe HRESULT GetItemType ([Out] int* pItemType);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/wia/-wia-iwiaitem2-devicedlg")]
-	unsafe HRESULT DeviceDlg ([In] int lFlags, [In] HWND hwndParent, [In] BSTR bstrFolderName, [In] BSTR bstrFilename, [Out] int* plNumFiles, [Out] BSTR** ppbstrFilePaths, [Optional][Out] IWiaItem2* ppItem);
+	unsafe HRESULT DeviceDlg ([In] int lFlags, [In] HWND hwndParent, [In] BSTR bstrFolderName, [In] BSTR bstrFilename, [Out] int* plNumFiles, [Out][NativeArrayInfo (CountParamIndex = 4)] BSTR** ppbstrFilePaths, [Optional][Out] IWiaItem2* ppItem);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/wia/-wia-iwiaitem2-devicecommand")]
 	unsafe HRESULT DeviceCommand ([In] int lFlags, [In][Const] Guid* pCmdGUID, [In][Out] IWiaItem2* ppIWiaItem2);
@@ -75333,6 +75429,8 @@ public static class Apis
 
 	public const string NAME_FullEnumSyncSvc_EndSync = "EndSync";
 
+	public const string NAME_CalendarSvc_SyncInWindowOnly = "FilterType";
+
 	[DllImport ("DMProcessXMLFiltered.dll", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern HRESULT DMProcessConfigXMLFiltered ([In][Const] PWSTR pszXmlIn, [In][Const][NativeArrayInfo (CountParamIndex = 2)] PWSTR* rgszAllowedCspNodes, [In] uint dwNumAllowedCspNodes, [Out] BSTR* pbstrXmlOut);
 }
@@ -75421,11 +75519,11 @@ namespace Windows.Win32.Devices.PortableDevices;
 [Documentation ("https://learn.microsoft.com/windows/win32/api/portabledeviceapi/nn-portabledeviceapi-ienumportabledeviceobjectids")]
 public interface IEnumPortableDeviceObjectIDs : IUnknown
 {
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/portabledeviceapi/nf-portabledeviceapi-ienumportabledeviceobjectids-next")]
 	unsafe HRESULT Next ([In] uint cObjects, [Out][NativeArrayInfo (CountParamIndex = 0)] PWSTR* pObjIDs, [In][Out] uint* pcFetched);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/portabledeviceapi/nf-portabledeviceapi-ienumportabledeviceobjectids-skip")]
 	HRESULT Skip ([In] uint cObjects);
 
@@ -78884,7 +78982,7 @@ public interface ISensor : IUnknown
 	unsafe HRESULT SupportsEvent ([In][Const] Guid* eventGuid, [Out] VARIANT_BOOL* pIsSupported);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/sensorsapi/nf-sensorsapi-isensor-geteventinterest")]
-	unsafe HRESULT GetEventInterest ([Out] Guid** ppValues, [Out] uint* pCount);
+	unsafe HRESULT GetEventInterest ([Out][NativeArrayInfo (CountParamIndex = 1)] Guid** ppValues, [Out] uint* pCount);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/sensorsapi/nf-sensorsapi-isensor-seteventinterest")]
 	unsafe HRESULT SetEventInterest ([Optional][In][NativeArrayInfo (CountParamIndex = 1)] Guid* pValues, [In] uint count);
@@ -81836,6 +81934,12 @@ public static class Apis
 
 	public const uint TAPIMEDIATYPE_MULTITRACK = 65536u;
 
+	public const string CLSID_String_VideoSuperclass = "{714C6F8C-6244-4685-87B3-B91F3F9EADA7}";
+
+	public const string CLSID_String_StreamingSuperclass = "{214F4ACC-AE0B-4464-8405-07029003F8E2}";
+
+	public const string CLSID_String_FileSuperclass = "{B4790031-56DB-4d3e-88C8-6FFAAFA08A91}";
+
 	public const uint TSPI_MESSAGE_BASE = 500u;
 
 	public const uint LINETSPIOPTION_NONREENTRANT = 1u;
@@ -83501,11 +83605,11 @@ public static class Apis
 
 	[DllImport ("MAPI32.dll", ExactSpelling = true, PreserveSig = false)]
 	[Documentation ("https://learn.microsoft.com/office/client-developer/outlook/mapi/opentnefstream")]
-	public unsafe static extern HRESULT OpenTnefStream ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] sbyte* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [Out] ITnef* lppTNEF);
+	public unsafe static extern HRESULT OpenTnefStream ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] ushort* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [Out] ITnef* lppTNEF);
 
 	[DllImport ("MAPI32.dll", ExactSpelling = true, PreserveSig = false)]
 	[Documentation ("https://learn.microsoft.com/office/client-developer/outlook/mapi/opentnefstreamex")]
-	public unsafe static extern HRESULT OpenTnefStreamEx ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] sbyte* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [In] IAddrBook lpAdressBook, [Out] ITnef* lppTNEF);
+	public unsafe static extern HRESULT OpenTnefStreamEx ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] ushort* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [In] IAddrBook lpAdressBook, [Out] ITnef* lppTNEF);
 
 	[DllImport ("MAPI32.dll", ExactSpelling = true, PreserveSig = false)]
 	[Documentation ("https://learn.microsoft.com/office/client-developer/outlook/mapi/gettnefstreamcodepage")]
@@ -89848,7 +89952,7 @@ namespace Windows.Win32.Devices.Tapi;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
 [UnmanagedFunctionPointer (CallingConvention.Winapi)]
-public unsafe delegate HRESULT LPOPENTNEFSTREAM ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] sbyte* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [Out] ITnef* lppTNEF);
+public unsafe delegate HRESULT LPOPENTNEFSTREAM ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] ushort* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [Out] ITnef* lppTNEF);
 
 using System.Runtime.InteropServices;
 using Windows.Win32.Foundation;
@@ -89859,7 +89963,7 @@ namespace Windows.Win32.Devices.Tapi;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
 [UnmanagedFunctionPointer (CallingConvention.Winapi)]
-public unsafe delegate HRESULT LPOPENTNEFSTREAMEX ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] sbyte* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [In] IAddrBook lpAdressBook, [Out] ITnef* lppTNEF);
+public unsafe delegate HRESULT LPOPENTNEFSTREAMEX ([In][Out] void* lpvSupport, [In] IStream lpStream, [In] ushort* lpszStreamName, [In] uint ulFlags, [In] IMessage lpMessage, [In] ushort wKeyVal, [In] IAddrBook lpAdressBook, [Out] ITnef* lppTNEF);
 
 using Windows.Win32.Foundation.Metadata;
 
@@ -113233,9 +113337,8 @@ public static class Apis
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-globalfree")]
 	public static extern HGLOBAL GlobalFree ([Optional][In] HGLOBAL hMem);
 
-	[DllImport ("KERNEL32.dll", ExactSpelling = true, PreserveSig = false, SetLastError = true)]
+	[DllImport ("KERNEL32.dll", ExactSpelling = true, SetLastError = true)]
 	[SupportedOSPlatform ("windows5.1.2600")]
-	[CanReturnErrorsAsSuccess]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-localfree")]
 	public static extern HLOCAL LocalFree ([Optional][In] HLOCAL hMem);
 
@@ -113666,6 +113769,7 @@ using System;
 namespace Windows.Win32.Foundation.Metadata;
 
 [Flags]
+[ScopedEnum]
 public enum Architecture
 {
 	None = 0,
@@ -113855,7 +113959,7 @@ using System.Runtime.InteropServices;
 namespace Windows.Win32.Foundation.Metadata;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
-[AttributeUsage (AttributeTargets.Struct, AllowMultiple = true, Inherited = true)]
+[AttributeUsage (AttributeTargets.Struct | AttributeTargets.Parameter | AttributeTargets.ReturnValue, AllowMultiple = true, Inherited = true)]
 public sealed class InvalidHandleValueAttribute : Attribute
 {
 	public extern InvalidHandleValueAttribute ([In] long Value);
@@ -114084,7 +114188,7 @@ using System.Runtime.InteropServices;
 namespace Windows.Win32.Foundation.Metadata;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
-[AttributeUsage (AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface, AllowMultiple = false)]
+[AttributeUsage (AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false)]
 public sealed class SupportedOSPlatformAttribute : Attribute
 {
 	public extern SupportedOSPlatformAttribute ([In] string platform);
@@ -121063,7 +121167,7 @@ public static class Apis
 	[DllImport ("USP10.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows5.0")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/usp10/nf-usp10-scriptgetproperties")]
-	public unsafe static extern HRESULT ScriptGetProperties ([Out][Const] SCRIPT_PROPERTIES*** ppSp, [Out] int* piNumScripts);
+	public unsafe static extern HRESULT ScriptGetProperties ([Out][Const][NativeArrayInfo (CountParamIndex = 1)] SCRIPT_PROPERTIES*** ppSp, [Out] int* piNumScripts);
 
 	[DllImport ("USP10.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows5.0")]
@@ -121133,9 +121237,8 @@ public static class Apis
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/usp10/nf-usp10-scriptstringout")]
 	public unsafe static extern HRESULT ScriptStringOut ([In] void* ssa, [In] int iX, [In] int iY, [In] ETO_OPTIONS uOptions, [Optional][In][Const] RECT* prc, [In] int iMinSel, [In] int iMaxSel, [In] BOOL fDisabled);
 
-	[DllImport ("USP10.dll", ExactSpelling = true, PreserveSig = false)]
+	[DllImport ("USP10.dll", ExactSpelling = true)]
 	[SupportedOSPlatform ("windows5.0")]
-	[CanReturnMultipleSuccessValues]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/usp10/nf-usp10-scriptiscomplex")]
 	public static extern HRESULT ScriptIsComplex ([In][Const][NativeArrayInfo (CountParamIndex = 1)] PWSTR pwcInChars, [In] int cInChars, [In] SCRIPT_IS_COMPLEX_FLAGS dwFlags);
 
@@ -121648,7 +121751,7 @@ public static class Apis
 	public unsafe static extern uint ucpmap_get ([In][Const] UCPMap* map, [In] int c);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern int ucpmap_getRange ([In][Const] UCPMap* map, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In][Out] UCPMapValueFilter* filter, [In][Const] void* context, [In][Out] uint* pValue);
+	public unsafe static extern int ucpmap_getRange ([In][Const] UCPMap* map, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In] UCPMapValueFilter filter, [In][Const] void* context, [In][Out] uint* pValue);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern UCPTrie* ucptrie_openFromBinary ([In] UCPTrieType type, [In] UCPTrieValueWidth valueWidth, [In][Const] void* data, [In] int length, [In][Out] int* pActualLength, [In][Out] UErrorCode* pErrorCode);
@@ -121666,7 +121769,7 @@ public static class Apis
 	public unsafe static extern uint ucptrie_get ([In][Const] UCPTrie* trie, [In] int c);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern int ucptrie_getRange ([In][Const] UCPTrie* trie, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In][Out] UCPMapValueFilter* filter, [In][Const] void* context, [In][Out] uint* pValue);
+	public unsafe static extern int ucptrie_getRange ([In][Const] UCPTrie* trie, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In] UCPMapValueFilter filter, [In][Const] void* context, [In][Out] uint* pValue);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern int ucptrie_toBinary ([In][Const] UCPTrie* trie, [In][Out] void* data, [In] int capacity, [In][Out] UErrorCode* pErrorCode);
@@ -121699,7 +121802,7 @@ public static class Apis
 	public unsafe static extern uint umutablecptrie_get ([In][Const] UMutableCPTrie* trie, [In] int c);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern int umutablecptrie_getRange ([In][Const] UMutableCPTrie* trie, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In][Out] UCPMapValueFilter* filter, [In][Const] void* context, [In][Out] uint* pValue);
+	public unsafe static extern int umutablecptrie_getRange ([In][Const] UMutableCPTrie* trie, [In] int start, [In] UCPMapRangeOption option, [In] uint surrogateValue, [In] UCPMapValueFilter filter, [In][Const] void* context, [In][Out] uint* pValue);
 
 	[DllImport ("icu.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern void umutablecptrie_set ([In][Out] UMutableCPTrie* trie, [In] int c, [In] uint value, [In][Out] UErrorCode* pErrorCode);
@@ -121944,7 +122047,7 @@ public static class Apis
 	public static extern void u_cleanup ();
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern void u_setMemoryFunctions ([In][Const] void* context, [In][Out] UMemAllocFn* a, [In][Out] UMemReallocFn* r, [In][Out] UMemFreeFn* f, [In][Out] UErrorCode* status);
+	public unsafe static extern void u_setMemoryFunctions ([In][Const] void* context, [In] UMemAllocFn a, [In] UMemReallocFn r, [In] UMemFreeFn f, [In][Out] UErrorCode* status);
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern UResourceBundle* u_catopen ([In][Const] PSTR name, [In][Const] PSTR locale, [In][Out] UErrorCode* ec);
@@ -122064,7 +122167,7 @@ public static class Apis
 	public static extern sbyte u_charType ([In] int c);
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern void u_enumCharTypes ([In][Out] UCharEnumTypeRange* enumRange, [In][Const] void* context);
+	public unsafe static extern void u_enumCharTypes ([In] UCharEnumTypeRange enumRange, [In][Const] void* context);
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	public static extern byte u_getCombiningClass ([In] int c);
@@ -122082,7 +122185,7 @@ public static class Apis
 	public unsafe static extern int u_charFromName ([In] UCharNameChoice nameChoice, [In][Const] PSTR name, [In][Out] UErrorCode* pErrorCode);
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern void u_enumCharNames ([In] int start, [In] int limit, [In][Out] UEnumCharNamesFn* fn, [In][Out] void* context, [In] UCharNameChoice nameChoice, [In][Out] UErrorCode* pErrorCode);
+	public unsafe static extern void u_enumCharNames ([In] int start, [In] int limit, [In] UEnumCharNamesFn fn, [In][Out] void* context, [In] UCharNameChoice nameChoice, [In][Out] UErrorCode* pErrorCode);
 
 	[DllImport ("icuuc.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true, PreserveSig = false)]
 	[return: Const]
@@ -125200,7 +125303,7 @@ namespace Windows.Win32.Globalization;
 [Documentation ("https://learn.microsoft.com/windows/win32/api/spellcheck/nn-spellcheck-ienumspellingerror")]
 public interface IEnumSpellingError : IUnknown
 {
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/spellcheck/nf-spellcheck-ienumspellingerror-next")]
 	unsafe HRESULT Next ([Out][RetVal] ISpellingError* value);
 }
@@ -125347,7 +125450,7 @@ public interface IMLangStringAStr : IMLangString
 
 	unsafe HRESULT GetStrBufA ([In] int lSrcPos, [In] int lSrcMaxLen, [Optional][Out] uint* puDestCodePage, [Out] IMLangStringBufA* ppDestBuf, [Optional][Out] int* plDestLen);
 
-	unsafe HRESULT LockAStr ([In] int lSrcPos, [In] int lSrcLen, [In] int lFlags, [In] uint uCodePageIn, [In] int cchRequest, [Optional][Out] uint* puCodePageOut, [Optional][Out] PSTR* ppszDest, [Optional][Out] int* pcchDest, [Optional][Out] int* plDestLen);
+	unsafe HRESULT LockAStr ([In] int lSrcPos, [In] int lSrcLen, [In] int lFlags, [In] uint uCodePageIn, [In] int cchRequest, [Optional][Out] uint* puCodePageOut, [Optional][Out][NativeArrayInfo (CountParamIndex = 7)] PSTR* ppszDest, [Optional][Out] int* pcchDest, [Optional][Out] int* plDestLen);
 
 	unsafe HRESULT UnlockAStr ([In][Const][NativeArrayInfo (CountParamIndex = 1)] PSTR pszSrc, [In] int cchSrc, [Optional][Out] int* pcchActual, [Optional][Out] int* plActualLen);
 
@@ -125369,7 +125472,7 @@ public interface IMLangStringBufA : IUnknown
 {
 	unsafe HRESULT GetStatus ([Optional][Out] int* plFlags, [Optional][Out] int* pcchBuf);
 
-	unsafe HRESULT LockBuf ([In] int cchOffset, [In] int cchMaxLock, [Out] CHAR** ppszBuf, [Optional][Out] int* pcchBuf);
+	unsafe HRESULT LockBuf ([In] int cchOffset, [In] int cchMaxLock, [Out][NativeArrayInfo (CountParamIndex = 3)] CHAR** ppszBuf, [Optional][Out] int* pcchBuf);
 
 	HRESULT UnlockBuf ([In][Const] PSTR pszBuf, [In] int cchOffset, [In] int cchWrite);
 
@@ -125391,7 +125494,7 @@ public interface IMLangStringBufW : IUnknown
 {
 	unsafe HRESULT GetStatus ([Optional][Out] int* plFlags, [Optional][Out] int* pcchBuf);
 
-	unsafe HRESULT LockBuf ([In] int cchOffset, [In] int cchMaxLock, [Out] ushort** ppszBuf, [Optional][Out] int* pcchBuf);
+	unsafe HRESULT LockBuf ([In] int cchOffset, [In] int cchMaxLock, [Out][NativeArrayInfo (CountParamIndex = 3)] ushort** ppszBuf, [Optional][Out] int* pcchBuf);
 
 	HRESULT UnlockBuf ([In][Const] PWSTR pszBuf, [In] int cchOffset, [In] int cchWrite);
 
@@ -125417,7 +125520,7 @@ public interface IMLangStringWStr : IMLangString
 
 	unsafe HRESULT GetStrBufW ([In] int lSrcPos, [In] int lSrcMaxLen, [Out] IMLangStringBufW* ppDestBuf, [Optional][Out] int* plDestLen);
 
-	unsafe HRESULT LockWStr ([In] int lSrcPos, [In] int lSrcLen, [In] int lFlags, [In] int cchRequest, [Optional][Out] PWSTR* ppszDest, [Optional][Out] int* pcchDest, [Optional][Out] int* plDestLen);
+	unsafe HRESULT LockWStr ([In] int lSrcPos, [In] int lSrcLen, [In] int lFlags, [In] int cchRequest, [Optional][Out][NativeArrayInfo (CountParamIndex = 5)] PWSTR* ppszDest, [Optional][Out] int* pcchDest, [Optional][Out] int* plDestLen);
 
 	unsafe HRESULT UnlockWStr ([In][Const][NativeArrayInfo (CountParamIndex = 1)] PWSTR pszSrc, [In] int cchSrc, [Optional][Out] int* pcchActual, [Optional][Out] int* plActualLen);
 
@@ -131953,6 +132056,8 @@ public static class Apis
 
 	public const uint FACILITY_D2D = 2201u;
 
+	public const int D2DERR_UNSUPPORTED_PIXEL_FORMAT = -2003292288;
+
 	[DllImport ("d2d1.dll", ExactSpelling = true, PreserveSig = false)]
 	[SupportedOSPlatform ("windows6.1")]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/d2d1/nf-d2d1-d2d1createfactory")]
@@ -138058,7 +138163,7 @@ public interface ID2D1RenderTarget : ID2D1Resource
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/d2d1/nf-d2d1-id2d1rendertarget-begindraw")]
 	void BeginDraw ();
 
-	[CanReturnErrorsAsSuccess]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/d2d1/nf-d2d1-id2d1rendertarget-enddraw")]
 	unsafe HRESULT EndDraw ([Optional][Out] ulong* tag1, [Optional][Out] ulong* tag2);
 
@@ -171936,6 +172041,12 @@ public static class Apis
 
 	public const uint D3DDEVINFOID_TEXTURING = 3u;
 
+	public const int D3D_OK = 0;
+
+	public const uint D3DENUMRET_CANCEL = 0u;
+
+	public const uint D3DENUMRET_OK = 1u;
+
 	[DllImport ("d3d9.dll", ExactSpelling = true, PreserveSig = false)]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/d3d9/nf-d3d9-direct3dcreate9")]
 	public static extern IDirect3D9 Direct3DCreate9 ([In] uint SDKVersion);
@@ -180659,6 +180770,18 @@ public static class Apis
 
 	public const uint DXAPI_HALVERSION = 1u;
 
+	public const int DD_OK = 0;
+
+	public const int DD_FALSE = 1;
+
+	public const int DDERR_GENERIC = -2147467259;
+
+	public const int DDERR_INVALIDPARAMS = -2147024809;
+
+	public const int DDERR_OUTOFMEMORY = -2147024882;
+
+	public const int DDERR_UNSUPPORTED = -2147467263;
+
 	[DllImport ("DDRAW.dll", ExactSpelling = true, PreserveSig = false)]
 	[Unicode]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/ddraw/nf-ddraw-directdrawenumeratew")]
@@ -194659,7 +194782,7 @@ public interface IDWriteGdiInterop1 : IDWriteGdiInterop
 	unsafe HRESULT GetFontSignature ([In] IDWriteFont font, [Out] FONTSIGNATURE* fontSignature);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dwrite_3/nf-dwrite_3-idwritegdiinterop1-getmatchingfontsbylogfont")]
-	unsafe HRESULT GetMatchingFontsByLOGFONT ([In][Const] LOGFONTA* logFont, [In] IDWriteFontSet fontSet, [Out][ComOutPtr] IDWriteFontSet* filteredSet);
+	unsafe HRESULT GetMatchingFontsByLOGFONT ([In][Const] LOGFONTW* logFont, [In] IDWriteFontSet fontSet, [Out][ComOutPtr] IDWriteFontSet* filteredSet);
 }
 
 using System.Runtime.InteropServices;
@@ -195047,10 +195170,10 @@ namespace Windows.Win32.Graphics.DirectWrite;
 public interface IDWriteTextAnalysisSource : IUnknown
 {
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dwrite/nf-dwrite-idwritetextanalysissource-gettextatposition")]
-	unsafe HRESULT GetTextAtPosition ([In] uint textPosition, [Out][Const] ushort** textString, [Out] uint* textLength);
+	unsafe HRESULT GetTextAtPosition ([In] uint textPosition, [Out][Const][NativeArrayInfo (CountParamIndex = 2)] ushort** textString, [Out] uint* textLength);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dwrite/nf-dwrite-idwritetextanalysissource-gettextbeforeposition")]
-	unsafe HRESULT GetTextBeforePosition ([In] uint textPosition, [Out][Const] ushort** textString, [Out] uint* textLength);
+	unsafe HRESULT GetTextBeforePosition ([In] uint textPosition, [Out][Const][NativeArrayInfo (CountParamIndex = 2)] ushort** textString, [Out] uint* textLength);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dwrite/nf-dwrite-idwritetextanalysissource-getparagraphreadingdirection")]
 	DWRITE_READING_DIRECTION GetParagraphReadingDirection ();
@@ -198283,7 +198406,7 @@ namespace Windows.Win32.Graphics.Dxgi;
 [Agile]
 public interface IDXGIAdapter : IDXGIObject
 {
-	[CanReturnErrorsAsSuccess]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgiadapter-enumoutputs")]
 	unsafe HRESULT EnumOutputs ([In] uint Output, [Out][ComOutPtr] IDXGIOutput* ppOutput);
 
@@ -198440,7 +198563,7 @@ namespace Windows.Win32.Graphics.Dxgi;
 [Agile]
 public interface IDXGIDecodeSwapChain : IUnknown
 {
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi1_3/nf-dxgi1_3-idxgidecodeswapchain-presentbuffer")]
 	HRESULT PresentBuffer ([In] uint BufferToPresent, [In] uint SyncInterval, [In] DXGI_PRESENT Flags);
 
@@ -198627,7 +198750,7 @@ public interface IDXGIFactory : IDXGIObject
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgifactory-getwindowassociation")]
 	unsafe HRESULT GetWindowAssociation ([Out] HWND* pWindowHandle);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgifactory-createswapchain")]
 	unsafe HRESULT CreateSwapChain ([In] IUnknown pDevice, [In] DXGI_SWAP_CHAIN_DESC* pDesc, [Out][ComOutPtr] IDXGISwapChain* ppSwapChain);
 
@@ -198647,7 +198770,7 @@ namespace Windows.Win32.Graphics.Dxgi;
 [Agile]
 public interface IDXGIFactory1 : IDXGIFactory
 {
-	[CanReturnErrorsAsSuccess]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgifactory1-enumadapters1")]
 	unsafe HRESULT EnumAdapters1 ([In] uint Adapter, [Out][ComOutPtr] IDXGIAdapter1* ppAdapter);
 
@@ -199325,7 +199448,7 @@ namespace Windows.Win32.Graphics.Dxgi;
 [Agile]
 public interface IDXGISwapChain : IDXGIDeviceSubObject
 {
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-present")]
 	HRESULT Present ([In] uint SyncInterval, [In] DXGI_PRESENT Flags);
 
@@ -199383,7 +199506,7 @@ public interface IDXGISwapChain1 : IDXGISwapChain
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi1_2/nf-dxgi1_2-idxgiswapchain1-getcorewindow")]
 	unsafe HRESULT GetCoreWindow ([In][Const] Guid* refiid, [Out][ComOutPtr] void** ppUnk);
 
-	[CanReturnMultipleSuccessValues]
+	[PreserveSig]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/dxgi1_2/nf-dxgi1_2-idxgiswapchain1-present1")]
 	unsafe HRESULT Present1 ([In] uint SyncInterval, [In] DXGI_PRESENT PresentFlags, [In][Const] DXGI_PRESENT_PARAMETERS* pPresentParameters);
 
@@ -201300,6 +201423,10 @@ public static class Apis
 
 	public const int E_EXCEPTIONINCOMPRESSION = 522;
 
+	public const uint DMPAPER_FIRST = 1u;
+
+	public const uint DMBIN_FIRST = 1u;
+
 	[DllImport ("GDI32.dll", ExactSpelling = true, PreserveSig = false)]
 	[Ansi]
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/wingdi/nf-wingdi-getobjecta")]
@@ -207069,7 +207196,7 @@ namespace Windows.Win32.Graphics.Gdi;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
 [UnmanagedFunctionPointer (CallingConvention.Winapi)]
-public unsafe delegate uint LPFNDEVCAPS ([In] PSTR param0, [In] PSTR param1, [In] uint param2, [In] PSTR param3, [In][Out] DEVMODEA* param4);
+public unsafe delegate uint LPFNDEVCAPS ([In] PSTR param0, [In] PSTR param1, [In] uint param2, [In] PSTR param3, [In][Out] DEVMODEW* param4);
 
 using System.Runtime.InteropServices;
 using Windows.Win32.Foundation;
@@ -207078,7 +207205,7 @@ namespace Windows.Win32.Graphics.Gdi;
 
 [StructLayout (LayoutKind.Auto, CharSet = CharSet.Auto)]
 [UnmanagedFunctionPointer (CallingConvention.Winapi)]
-public unsafe delegate uint LPFNDEVMODE ([In] HWND param0, [In] HMODULE param1, [In][Out] DEVMODEA* param2, [In] PSTR param3, [In] PSTR param4, [In][Out] DEVMODEA* param5, [In] PSTR param6, [In] uint param7);
+public unsafe delegate uint LPFNDEVMODE ([In] HWND param0, [In] HMODULE param1, [In][Out] DEVMODEW* param2, [In] PSTR param3, [In] PSTR param4, [In][Out] DEVMODEW* param5, [In] PSTR param6, [In] uint param7);
 
 using Windows.Win32.Foundation.Metadata;
 
@@ -209352,7 +209479,7 @@ public static class Apis
 	public unsafe static extern Status GdipPathIterEnumerate ([In][Out] GpPathIterator* iterator, [Out] int* resultCount, [Out][NativeArrayInfo (CountParamIndex = 4)] PointF* points, [Out][NativeArrayInfo (CountParamIndex = 4)] byte* types, [In] int count);
 
 	[DllImport ("gdiplus.dll", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern Status GdipPathIterCopyData ([In][Out] GpPathIterator* iterator, [Out] int* resultCount, [Out] PointF* points, [Out] byte* types, [In] int startIndex, [In] int endIndex);
+	public unsafe static extern Status GdipPathIterCopyData ([In][Out] GpPathIterator* iterator, [Out] int* resultCount, [Out][NativeArrayInfo (CountParamIndex = 1)] PointF* points, [Out][NativeArrayInfo (CountParamIndex = 1)] byte* types, [In] int startIndex, [In] int endIndex);
 
 	[DllImport ("gdiplus.dll", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern Status GdipCreateMatrix ([In][Out] Matrix** matrix);
@@ -222034,6 +222161,16 @@ public static class Apis
 
 	public const string XPS_FP_FAX_JOB_PROPERTIES = "JobFaxProperties";
 
+	public const string MXDC_IMAGEABLE_AREA_PROP_NAME_WSTR = "MxdcImageableArea";
+
+	public const string MXDC_IMAGE_COMPRESSION_TYPE_PROP_NAME_WSTR = "MxdcImageCompressionType";
+
+	public const string MXDC_DOTS_PER_INCH_PROP_NAME_WSTR = "MxdcDotsPerInch";
+
+	public const string MXDC_LANDSCAPE_ROTATION_PROP_NAME_WSTR = "MxdcLandscapeRotation";
+
+	public const string MXDC_PHYSICAL_PAPER_DIMENSIONS_NAME_WSTR = "MxdcPhysicalPaperDimensions";
+
 	[Documentation ("https://learn.microsoft.com/windows/win32/printdocs/mxdc-escape")]
 	public const uint MXDC_ESCAPE = 4122u;
 
@@ -224447,7 +224584,7 @@ public static class Apis
 	public static extern uint DeleteJobNamedProperty ([In] PRINTER_HANDLE hPrinter, [In] uint JobId, [In][Const] PWSTR pszName);
 
 	[DllImport ("winspool.drv", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern uint EnumJobNamedProperties ([In] PRINTER_HANDLE hPrinter, [In] uint JobId, [Out] uint* pcProperties, [Out] PrintNamedProperty** ppProperties);
+	public unsafe static extern uint EnumJobNamedProperties ([In] PRINTER_HANDLE hPrinter, [In] uint JobId, [Out] uint* pcProperties, [Out][NativeArrayInfo (CountParamIndex = 2)] PrintNamedProperty** ppProperties);
 
 	[DllImport ("winspool.drv", ExactSpelling = true, PreserveSig = false)]
 	public unsafe static extern HRESULT GetPrintOutputInfo ([In] HWND hWnd, [In][Const] PWSTR pszPrinter, [Out] HANDLE* phFile, [Out] PWSTR* ppszOutputFile);
@@ -224531,7 +224668,7 @@ public static class Apis
 	public static extern BOOL DeletePrinterIC ([In] HANDLE hPrinterIC);
 
 	[DllImport ("winspool.drv", ExactSpelling = true, PreserveSig = false)]
-	public unsafe static extern BOOL DevQueryPrint ([In] PRINTER_HANDLE hPrinter, [In] DEVMODEA* pDevMode, [Out] uint* pResID);
+	public unsafe static extern BOOL DevQueryPrint ([In] PRINTER_HANDLE hPrinter, [In] DEVMODEW* pDevMode, [Out] uint* pResID);
 
 	[DllImport ("SPOOLSS.dll", ExactSpelling = true, PreserveSig = false)]
 	public static extern HANDLE RevertToPrinterSelf ();
@@ -224910,11 +225047,11 @@ public struct COMPROPSHEETUI
 
 	public HINSTANCE hInstCaller;
 
-	public unsafe sbyte* pCallerName;
+	public unsafe ushort* pCallerName;
 
 	public UIntPtr UserData;
 
-	public unsafe sbyte* pHelpFile;
+	public unsafe ushort* pHelpFile;
 
 	public _CPSUICALLBACK pfnCallBack;
 
@@ -224928,7 +225065,7 @@ public struct COMPROPSHEETUI
 
 	public UIntPtr IconID;
 
-	public unsafe sbyte* pOptItemName;
+	public unsafe ushort* pOptItemName;
 
 	public ushort CallerVersion;
 
@@ -225001,7 +225138,7 @@ public struct CPSUICBPARAM
 		public int OldSel;
 
 		[FieldOffset (0)]
-		public unsafe sbyte* pOldSel;
+		public unsafe ushort* pOldSel;
 	}
 
 	public ushort cbSize;
@@ -225111,7 +225248,7 @@ public struct DEVICEPROPERTYHEADER
 
 	public HANDLE hPrinter;
 
-	public unsafe sbyte* pszPrinterName;
+	public unsafe ushort* pszPrinterName;
 }
 
 using Windows.Win32.Foundation;
@@ -225129,7 +225266,7 @@ public struct DEVQUERYPRINT_INFO
 
 	public HANDLE hPrinter;
 
-	public unsafe DEVMODEA* pDevMode;
+	public unsafe DEVMODEW* pDevMode;
 
 	public PWSTR pszErrorStr;
 
@@ -225165,7 +225302,7 @@ public struct DLGPAGE
 
 	public DLGPROC DlgProc;
 
-	public unsafe sbyte* pTabName;
+	public unsafe ushort* pTabName;
 
 	public UIntPtr IconID;
 
@@ -225233,11 +225370,11 @@ public struct DOCUMENTPROPERTYHEADER
 
 	public HANDLE hPrinter;
 
-	public unsafe sbyte* pszPrinterName;
+	public unsafe ushort* pszPrinterName;
 
-	public unsafe DEVMODEA* pdmIn;
+	public unsafe DEVMODEW* pdmIn;
 
-	public unsafe DEVMODEA* pdmOut;
+	public unsafe DEVMODEW* pdmOut;
 
 	public uint cbOut;
 
@@ -225358,11 +225495,11 @@ namespace Windows.Win32.Graphics.Printing;
 
 public struct DOC_INFO_INTERNAL
 {
-	public unsafe sbyte* pDocName;
+	public unsafe ushort* pDocName;
 
-	public unsafe sbyte* pOutputFile;
+	public unsafe ushort* pOutputFile;
 
-	public unsafe sbyte* pDatatype;
+	public unsafe ushort* pDatatype;
 
 	public BOOL bLowILJob;
 
@@ -225829,40 +225966,40 @@ namespace Windows.Win32.Graphics.Printing;
 
 public struct DRIVER_UPGRADE_INFO_1
 {
-	public unsafe sbyte* pPrinterName;
+	public unsafe ushort* pPrinterName;
 
-	public unsafe sbyte* pOldDriverDirectory;
+	public unsafe ushort* pOldDriverDirectory;
 }
 
 namespace Windows.Win32.Graphics.Printing;
 
 public struct DRIVER_UPGRADE_INFO_2
 {
-	public unsafe sbyte* pPrinterName;
+	public unsafe ushort* pPrinterName;
 
-	public unsafe sbyte* pOldDriverDirectory;
+	public unsafe ushort* pOldDriverDirectory;
 
 	public uint cVersion;
 
-	public unsafe sbyte* pName;
+	public unsafe ushort* pName;
 
-	public unsafe sbyte* pEnvironment;
+	public unsafe ushort* pEnvironment;
 
-	public unsafe sbyte* pDriverPath;
+	public unsafe ushort* pDriverPath;
 
-	public unsafe sbyte* pDataFile;
+	public unsafe ushort* pDataFile;
 
-	public unsafe sbyte* pConfigFile;
+	public unsafe ushort* pConfigFile;
 
-	public unsafe sbyte* pHelpFile;
+	public unsafe ushort* pHelpFile;
 
-	public unsafe sbyte* pDependentFiles;
+	public unsafe ushort* pDependentFiles;
 
-	public unsafe sbyte* pMonitorName;
+	public unsafe ushort* pMonitorName;
 
-	public unsafe sbyte* pDefaultDataType;
+	public unsafe ushort* pDefaultDataType;
 
-	public unsafe sbyte* pszzPreviousNames;
+	public unsafe ushort* pszzPreviousNames;
 }
 
 namespace Windows.Win32.Graphics.Printing;
@@ -225962,11 +226099,11 @@ public struct EXTCHKBOX
 
 	public ushort Flags;
 
-	public unsafe sbyte* pTitle;
+	public unsafe ushort* pTitle;
 
-	public unsafe sbyte* pSeparator;
+	public unsafe ushort* pSeparator;
 
-	public unsafe sbyte* pCheckedName;
+	public unsafe ushort* pCheckedName;
 
 	public UIntPtr IconID;
 
@@ -226010,7 +226147,7 @@ public struct EXTPUSH
 
 	public ushort Flags;
 
-	public unsafe sbyte* pTitle;
+	public unsafe ushort* pTitle;
 
 	public _Anonymous1_e__Union Anonymous1;
 
@@ -226712,7 +226849,7 @@ namespace Windows.Win32.Graphics.Printing;
 public interface IPrintAsyncNotifyDataObject : IUnknown
 {
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/prnasnot/nf-prnasnot-iprintasyncnotifydataobject-acquiredata")]
-	unsafe HRESULT AcquireData ([Optional][Out] byte** ppNotificationData, [Optional][Out] uint* pSize, [Optional][Out] Guid** ppSchema);
+	unsafe HRESULT AcquireData ([Optional][Out][NativeArrayInfo (CountParamIndex = 1)] byte** ppNotificationData, [Optional][Out] uint* pSize, [Optional][Out] Guid** ppSchema);
 
 	[Documentation ("https://learn.microsoft.com/windows/win32/api/prnasnot/nf-prnasnot-iprintasyncnotifydataobject-releasedata")]
 	HRESULT ReleaseData ();
@@ -226784,17 +226921,17 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (2828977470u, 14597, 18886, 156, 26, 192, 168, 129, 23, 253, 182)]
 public interface IPrintCoreHelper : IUnknown
 {
-	unsafe HRESULT GetOption ([Optional][In][Const][MemorySize (BytesParamIndex = 1)] DEVMODEA* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureRequested, [Out][Const] PSTR* ppszOption);
+	unsafe HRESULT GetOption ([Optional][In][Const][MemorySize (BytesParamIndex = 1)] DEVMODEW* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureRequested, [Out][Const] PSTR* ppszOption);
 
-	unsafe HRESULT SetOptions ([In][Out] DEVMODEA* pDevmode, [In] uint cbSize, [In] BOOL bResolveConflicts, [In][Const] PRINT_FEATURE_OPTION* pFOPairs, [In] uint cPairs, [In][Out] uint* pcPairsWritten, [In][Out] uint* pdwResult);
+	unsafe HRESULT SetOptions ([In][Out] DEVMODEW* pDevmode, [In] uint cbSize, [In] BOOL bResolveConflicts, [In][Const] PRINT_FEATURE_OPTION* pFOPairs, [In] uint cPairs, [In][Out] uint* pcPairsWritten, [In][Out] uint* pdwResult);
 
-	unsafe HRESULT EnumConstrainedOptions ([In][Const] DEVMODEA* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR*** pConstrainedOptionList, [In][Out] uint* pdwNumOptions);
+	unsafe HRESULT EnumConstrainedOptions ([In][Const] DEVMODEW* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR*** pConstrainedOptionList, [In][Out] uint* pdwNumOptions);
 
-	unsafe HRESULT WhyConstrained ([Optional][In][Const][MemorySize (BytesParamIndex = 1)] DEVMODEA* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszOptionKeyword, [Out][Const] PRINT_FEATURE_OPTION** ppFOConstraints, [Out] uint* pdwNumOptions);
+	unsafe HRESULT WhyConstrained ([Optional][In][Const][MemorySize (BytesParamIndex = 1)] DEVMODEW* pDevmode, [In] uint cbSize, [In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszOptionKeyword, [Out][Const][NativeArrayInfo (CountParamIndex = 5)] PRINT_FEATURE_OPTION** ppFOConstraints, [Out] uint* pdwNumOptions);
 
-	unsafe HRESULT EnumFeatures ([Out][Const] PSTR*** pFeatureList, [Out] uint* pdwNumFeatures);
+	unsafe HRESULT EnumFeatures ([Out][Const][NativeArrayInfo (CountParamIndex = 1)] PSTR*** pFeatureList, [Out] uint* pdwNumFeatures);
 
-	unsafe HRESULT EnumOptions ([In][Const] PSTR pszFeatureKeyword, [Out][Const] PSTR*** pOptionList, [Out] uint* pdwNumOptions);
+	unsafe HRESULT EnumOptions ([In][Const] PSTR pszFeatureKeyword, [Out][Const][NativeArrayInfo (CountParamIndex = 2)] PSTR*** pOptionList, [Out] uint* pdwNumOptions);
 
 	unsafe HRESULT GetFontSubstitution ([In][Const] PWSTR pszTrueTypeFontName, [In][Const] PWSTR* ppszDevFontName);
 
@@ -226812,11 +226949,11 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (3267448687u, 38355, 19811, 150, 207, 107, 217, 230, 201, 7, 194)]
 public interface IPrintCoreHelperPS : IPrintCoreHelper
 {
-	unsafe HRESULT GetGlobalAttribute ([In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out] byte** ppbData, [Out] uint* pcbSize);
+	unsafe HRESULT GetGlobalAttribute ([In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out][NativeArrayInfo (CountParamIndex = 3)] byte** ppbData, [Out] uint* pcbSize);
 
-	unsafe HRESULT GetFeatureAttribute ([In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out] byte** ppbData, [Out] uint* pcbSize);
+	unsafe HRESULT GetFeatureAttribute ([In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out][NativeArrayInfo (CountParamIndex = 4)] byte** ppbData, [Out] uint* pcbSize);
 
-	unsafe HRESULT GetOptionAttribute ([In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszOptionKeyword, [Optional][In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out] byte** ppbData, [Out] uint* pcbSize);
+	unsafe HRESULT GetOptionAttribute ([In][Const] PSTR pszFeatureKeyword, [In][Const] PSTR pszOptionKeyword, [Optional][In][Const] PSTR pszAttribute, [Out] uint* pdwDataType, [Out][NativeArrayInfo (CountParamIndex = 5)] byte** ppbData, [Out] uint* pcbSize);
 }
 
 using System.Runtime.InteropServices;
@@ -226830,7 +226967,7 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (2123256278u, 58862, 17446, 129, 123, 149, 139, 148, 68, 235, 121)]
 public interface IPrintCoreHelperUni : IPrintCoreHelper
 {
-	unsafe HRESULT CreateGDLSnapshot ([In][Out] DEVMODEA* pDevmode, [In] uint cbSize, [In] uint dwFlags, [Out] IStream* ppSnapshotStream);
+	unsafe HRESULT CreateGDLSnapshot ([In][Out] DEVMODEW* pDevmode, [In] uint cbSize, [In] uint dwFlags, [Out] IStream* ppSnapshotStream);
 
 	unsafe HRESULT CreateDefaultGDLSnapshot ([In] uint dwFlags, [Out] IStream* ppSnapshotStream);
 }
@@ -226845,7 +226982,7 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (1821048316u, 60112, 19757, 128, 113, 155, 240, 23, 90, 108, 58)]
 public interface IPrintCoreHelperUni2 : IPrintCoreHelperUni
 {
-	unsafe HRESULT GetNamedCommand ([Optional][In][MemorySize (BytesParamIndex = 1)] DEVMODEA* pDevmode, [In] uint cbSize, [In][Const] PWSTR pszCommandName, [Out] byte** ppCommandBytes, [Out] uint* pcbCommandSize);
+	unsafe HRESULT GetNamedCommand ([Optional][In][MemorySize (BytesParamIndex = 1)] DEVMODEW* pDevmode, [In] uint cbSize, [In][Const] PWSTR pszCommandName, [Out] byte** ppCommandBytes, [Out] uint* pcbCommandSize);
 }
 
 using System.Runtime.InteropServices;
@@ -226981,10 +227118,10 @@ public interface IPrintOemUI : IPrintOemCommon
 
 	unsafe HRESULT DevicePropertySheets ([In] PROPSHEETUI_INFO* pPSUIInfo, [In] LPARAM lParam);
 
-	unsafe HRESULT DevQueryPrintEx ([In] OEMUIOBJ* poemuiobj, [In] DEVQUERYPRINT_INFO* pDQPInfo, [In] DEVMODEA* pPublicDM, [In] void* pOEMDM);
+	unsafe HRESULT DevQueryPrintEx ([In] OEMUIOBJ* poemuiobj, [In] DEVQUERYPRINT_INFO* pDQPInfo, [In] DEVMODEW* pPublicDM, [In] void* pOEMDM);
 
-	[Ansi]
-	unsafe HRESULT DeviceCapabilitiesA ([In][Out] OEMUIOBJ* poemuiobj, [In] HANDLE hPrinter, [In] PWSTR pDeviceName, [In] ushort wCapability, [Out] void* pOutput, [In] DEVMODEA* pPublicDM, [In] void* pOEMDM, [In] uint dwOld, [Out] uint* dwResult);
+	[Unicode]
+	unsafe HRESULT DeviceCapabilitiesA ([In][Out] OEMUIOBJ* poemuiobj, [In] HANDLE hPrinter, [In] PWSTR pDeviceName, [In] ushort wCapability, [Out] void* pOutput, [In] DEVMODEW* pPublicDM, [In] void* pOEMDM, [In] uint dwOld, [Out] uint* dwResult);
 
 	unsafe HRESULT UpgradePrinter ([In] uint dwLevel, [In] byte* pDriverUpgradeInfo);
 
@@ -226992,7 +227129,7 @@ public interface IPrintOemUI : IPrintOemCommon
 
 	unsafe HRESULT DriverEvent ([In] uint dwDriverEvent, [In] uint dwLevel, [In] byte* pDriverInfo, [In] LPARAM lParam);
 
-	unsafe HRESULT QueryColorProfile ([In] PRINTER_HANDLE hPrinter, [In] OEMUIOBJ* poemuiobj, [In] DEVMODEA* pPublicDM, [In] void* pOEMDM, [In] uint ulQueryMode, [Out][NativeArrayInfo (CountParamIndex = 6)] void* pvProfileData, [In][Out] uint* pcbProfileData, [Out] uint* pflProfileData);
+	unsafe HRESULT QueryColorProfile ([In] PRINTER_HANDLE hPrinter, [In] OEMUIOBJ* poemuiobj, [In] DEVMODEW* pPublicDM, [In] void* pOEMDM, [In] uint ulQueryMode, [Out][NativeArrayInfo (CountParamIndex = 6)] void* pvProfileData, [In][Out] uint* pcbProfileData, [Out] uint* pflProfileData);
 
 	HRESULT FontInstallerDlgProc ([In] HWND hWnd, [In] uint usMsg, [In] WPARAM wParam, [In] LPARAM lParam);
 
@@ -227009,7 +227146,7 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (690296313u, 46411, 18587, 146, 117, 186, 181, 104, 33, 57, 94)]
 public interface IPrintOemUI2 : IPrintOemUI
 {
-	unsafe HRESULT QueryJobAttributes ([In] PRINTER_HANDLE hPrinter, [In] DEVMODEA* pDevmode, [In] uint dwLevel, [In] byte* lpAttributeInfo);
+	unsafe HRESULT QueryJobAttributes ([In] PRINTER_HANDLE hPrinter, [In] DEVMODEW* pDevmode, [In] uint dwLevel, [In] byte* lpAttributeInfo);
 
 	HRESULT HideStandardUI ([In] uint dwMode);
 
@@ -227027,11 +227164,11 @@ namespace Windows.Win32.Graphics.Printing;
 [Windows.Win32.Foundation.Metadata.Guid (1934219045u, 58049, 19914, 175, 181, 193, 62, 145, 188, 147, 6)]
 public interface IPrintOemUIMXDC : IUnknown
 {
-	unsafe HRESULT AdjustImageableArea ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEA* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] RECTL* prclImageableArea);
+	unsafe HRESULT AdjustImageableArea ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEW* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] RECTL* prclImageableArea);
 
-	unsafe HRESULT AdjustImageCompression ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEA* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] int* pCompressionMode);
+	unsafe HRESULT AdjustImageCompression ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEW* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] int* pCompressionMode);
 
-	unsafe HRESULT AdjustDPI ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEA* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] int* pDPI);
+	unsafe HRESULT AdjustDPI ([In] PRINTER_HANDLE hPrinter, [In] uint cbDevMode, [In][Const] DEVMODEW* pDevMode, [In] uint cbOEMDM, [In][Const] void* pOEMDM, [In][Out] int* pDPI);
 }
 
 using System.Runtime.InteropServices;
@@ -227473,9 +227610,9 @@ public interface IPrintTicketProvider : IUnknown
 
 	unsafe HRESULT QueryDeviceNamespace ([In][Out] BSTR* pDefaultNamespace);
 
-	unsafe HRESULT ConvertPrintTicketToDevMode ([In] IXMLDOMDocument2 pPrintTicket, [In] uint cbDevmodeIn, [In][Out] DEVMODEA* pDevmodeIn, [In][Out] uint* pcbDevmodeOut, [In][Out] DEVMODEA** ppDevmodeOut);
+	unsafe HRESULT ConvertPrintTicketToDevMode ([In] IXMLDOMDocument2 pPrintTicket, [In] uint cbDevmodeIn, [In][Out] DEVMODEW* pDevmodeIn, [In][Out] uint* pcbDevmodeOut, [In][Out] DEVMODEW** ppDevmodeOut);
 
-	unsafe HRESULT ConvertDevModeToPrintTicket ([In] uint cbDevmode, [In][Out] DEVMODEA* pDevmode, [In] IXMLDOMDocument2 pPrintTicket);
+	unsafe HRESULT ConvertDevModeToPrintTicket ([In] uint cbDevmode, [In][Out] DEVMODEW* pDevmode, [In] IXMLDOMDocument2 pPrintTicket);
 
 	unsafe HRESULT GetPrintCapabilities ([In] IXMLDOMDocument2 pPrintTicket, [Out] IXMLDOMDocument2* ppCapabilities);
 
@@ -228883,7 +229020,7 @@ public struct OEMCUIPPARAM
 
 	public HANDLE hOEMHeap;
 
-	public unsafe DEVMODEA* pPublicDM;
+	public unsafe DEVMODEW* pPublicDM;
 
 	public unsafe void* pOEMDM;
 
@@ -228919,9 +229056,9 @@ public struct OEMDMPARAM
 
 	public HANDLE hModule;
 
-	public unsafe DEVMODEA* pPublicDMIn;
+	public unsafe DEVMODEW* pPublicDMIn;
 
-	public unsafe DEVMODEA* pPublicDMOut;
+	public unsafe DEVMODEW* pPublicDMOut;
 
 	public unsafe void* pOEMDMIn;
 
@@ -228993,7 +229130,7 @@ public struct OEMUIPSPARAM
 
 	public HANDLE hOEMHeap;
 
-	public unsafe DEVMODEA* pPublicDM;
+	public unsafe DEVMODEW* pPublicDM;
 
 	public unsafe void* pOEMDM;
 
@@ -2290

Diff truncated to fit this comment. Download the complete api-diff.patch from the api-diff artifact.

This comment is automatically updated on each push.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve existing semantic RetVal attributes during SAL lowering, including qualified and Attribute-suffixed spellings. Add native COM, BSTR, callback and function final-winmd controls across all architectures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Emit HASTHIS for instance constructors so local attribute constructor definitions match their references. Strengthen native final-winmd signature binding and add a complete-SDK constructor invariant without changing static PInvoke signatures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep native signatures when logical enum associations are present instead of guessing an unrelated same-short-name type. Cover scalar, pointer and array fields, parameters, and returns through final winmd emission on all three architectures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Pass prior cross-partition discoveries separately from authored settings. Keep legacy cache behavior below manual overrides while annotated translation units use their own discoveries. Clear obsolete per-translation-unit discovery output and cover first, repeated, and opt-in-transition builds through actual SDK targets and final winmd signatures on x86, x64, and ARM64.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use only authored remaps and exclusions for AST discovery while retaining derived settings for legacy binding generation. Verify stable per-partition sidecars, emitted pointer-reduction response files, and frozen-nonselected plus selected reduction inputs across repeated SDK-target builds on x86, x64, and ARM64.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use canonical Win32 SupportedOS macros, resolve header-local nested defaults and explicit overrides, and preserve native typedef and callback aliases. Lower native field-count SAL through CountFieldName without inventing parameter indices or changing existing parameter lowering. Cover real x86, x64 and ARM64 winmd output, native ABI and strict conflicts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep SupportedOS scope adoption independent of SDK-wide native field SAL activation. Restrict inferred field counts to pointer and array shapes, preserve default behavior, and cover enabled and disabled native emission on all three architectures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Recognize enum-member postfix annotations and const-qualified variable targets. Project each fact onto its exact emitted field without raising sibling or enum floors, while preserving strict placement and target diagnostics.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use metadata-only enum groups, native lexical availability scopes, typed import arguments and unevaluated cleanup references. Keep ignored metadata diagnostics local and preserve native SDK warning behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jevansaks

Copy link
Copy Markdown
Member Author

Qualified current tooling source 746d812dd15a93d77b24285708fd51727b293bba against the actual downloaded image from CI 38966888753. All five workflow-dispatch jobs pass, including all three architecture scrapes and build/test/package. The producer is this exact SHA, not a synthetic PR merge.

Downloaded image SHA256: AFF73919F08390D898C151B530CDBC5773363477C89CE0D68FE9418BC4DE6800.

Independent comparison against the previously qualified 7ea6c85d CI image (6539A79223A5ADDA3A04164DC88B57A49F4F616C5A7E232D2F519D981030B706):

dotnet WinmdUtils.dll compare --first old.winmd --second new.winmd
No unknown differences found.
Exit code: 0

Zero API differences; no known-differences file or normalization. This is incremental equivalence to the last qualified tooling source, not a claim that the earlier reviewed Printing changes vanish relative to main. Workflow-dispatch runs skip the PR-only automatic diff steps, so the comparison was performed independently on both downloaded images.

This clears the tooling/default-image gate only. The updated pilot #2365 still needs its own source-bound image, original-IDL preparation/provenance and current-head CI qualification. Full-SDK migration remains paused.

Jevan Saks (jevansaks) and others added 13 commits October 16, 2026 16:42
Move Clang encoding, diagnostics, IDL preparation and pipeline notes behind the public annotation contract. Explain the local ignored-attribute diagnostic guard without changing the qualified helper.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Leave the SDK transport as plain annotate and supply local ignored-attribute checking through the scraper invocation. Reject global warning suppression only in annotation mode. Clarify the complete annotation mode, existing remap-cache isolation, and actual MIDL transport limits; add physical type/member and compiler-policy regressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve native RPC and SAL while binding metadata to the actual interface method, without reading source tokens or reparsing expressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the repository-backed sample aligned with packaged SDK assets without adding the recompiled SDK header tree to its include path. Document missing-original-IDL residual handling and bootstrap asset coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Combine compatible original-AST and cross-partition logical groups without absorbing native or legacy enum definitions. Preserve explicit conflicts, architecture variants, namespace routing, and residual use-site facts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bind conversions to actual header-group symbols after namespace and architecture processing. Retain declared scalar storage, constant overflow diagnostics, native-enum errors, and the separate full-image source-admission gates.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain the new file-local default contract and its acceptance gates alongside the qualified IDL guidance. Distinguish the current Clang transport from the unimplemented default resolver. Import the upstream workflow regression coverage without changing production tooling or generation inputs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the generated patch unchanged in both artifact uploads, and truncate only the rendered PR comment while retaining full-diff statistics and budgeting for Markdown fences and the artifact notice.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c22b7dbd-d44e-4340-b66c-04ca2520967a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 3bc8894e-bedd-45c6-8231-cad0a275dc8f
…ers (#2376)

Annotate 25 producer out-parameters with the cleanup function that releases
the handle they return, and mark 0 as the invalid value for the 8 handle
typedefs that had no invalid value.

The annotations go on the producers. Typedefs such as PHIDP_PREPARSED_DATA
also describe caller-allocated buffers that the cleanup function must not
free, so the typedefs carry no RAIIFree.

Fixes #2375

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 62a90e5b-2b4b-46ac-b2e3-4a42da4989fc
* Update Windows SDK to 10.0.28000.2705

Use current shipped headers, add DXGI 1.7 and CXL/MTM coverage, and remove retired SDK inputs. Preserve architecture-specific Hyper-V enums and WinHTTP callback identity, fix MTM IOCTL extraction and WebAuthn imports, and make integrity checks and API dumps architecture-aware.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1a5db4f3-9b9e-4621-a599-c5578cee0cac

* Preserve SDK compatibility and narrow required tooling fixes

Restore existing AllJoyn, Peer and OPMXbox inputs and DLL mappings.
Keep only the enum-emission and architecture-validator fixes reproduced
with the current SDK and otherwise unchanged tools. Drop optional MTM
projection and review-only API-dumper changes. Preserve the WinHTTP
callback's canonical identity on every architecture.

Verify fresh SDK ingestion, all 114 .NET and 36 workflow tests, native
and managed samples, and the preserved legacy API surface.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1a5db4f3-9b9e-4621-a599-c5578cee0cac

---------

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 1a5db4f3-9b9e-4621-a599-c5578cee0cac
Keep Unicode authoritative while recovering only compiler-proven, import-mapped native declarations. Validate recursive native contracts, preserve exact existing scoped remap intent, and retain fresh SDK and physical-image proof.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Keep authored member names authoritative while projecting otherwise unconfigured macro-selected members at their exact compiler-proven source identity. Preserve primary Unicode signatures and encoding facts. Compose explicitly retained opaque struct-pointer factories only with fresh matching native and retained intent, without losing real extra parameter indirection. Honor existing complete explicit alias projections in remap discovery.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Add valueless EnumDecl-only metadata Flags without native diagnostic or storage changes. Preserve the original recompiled mirror's input and output spellings in strict MIDL preparation, with physical enum and closed-preparation controls.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Compile native owner headers independently and retain invalid-original
aggregate diagnostics. Classify only compiler-linked annotated self
typedefs, preserve raw multiplicities, and report every owner difference.

Replace stale all-retired and no-Hlsl assertions with the complete
inherited eight-record/import snapshot and exact 436 retired identities.
Keep actual VDS SAL failures and original-IDL coverage holds substantive.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Restore the original recompiled mirror parameter directions and size/length contracts instead of bypassing remote declarations. Preserve authored SAL/metadata payloads and existing local pointer behavior. Keep native MIDL2495 warnings and closed input/output provenance visible; helper changes require fresh strict preparation identities.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Jevan Saks (jevansaks) added a commit that referenced this pull request Oct 24, 2026
Inherit exact 2b750f6 from tooling PR #2363 while preserving the reviewed SDK28000 data, strict preparation inputs and native stack lineage. Fresh producers and image qualification remain separate gates.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Jevan Saks (jevansaks) and others added 12 commits October 24, 2026 12:36
Batch up to 4096 native constant probes per translation-unit parse while
retaining recursive diagnostic isolation and the existing extraction rules.

Keep the timed native-integer guard genuinely cross-batch with 8193 integer
macros and its unchanged 3000 ms budget. Cover recursive header diagnostics,
malformed and unsupported macros, and retained facts on all three targets.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Retain exact native identities and compiler provenance when constants are
owned by logical header groups, ordinary source enums, or projected fields.
Keep native scalar dependency storage independent of projected group storage
and preserve independent legacy expressions and ordinary default behavior.

Include the qualified generic typedef and function-pointer lowering repairs,
constant-selection transport, diagnostics, regression coverage, and spec
updates. Do not import SDK migration patches or the held EnumStorage work.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Match the published forward-only void-pointer storage contract while retaining
complete and empty record checks, exact pointer signatures and API alias identity.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Read supported simple macro values with the existing constants scanner.
Evaluate unresolved value expressions in an isolated Clang translation unit,
without probing structural or declaration fragments. Preserve native target
storage, active definitions, aliases, ownership and diagnostic provenance.

Require every planned root probe and compiler-backed type-operand ownership.
Keep rejected UUID operands explicit and reject unrelated escaped declarations.
Retain semantic provider discovery while sharing generated syntax roots and
counting immutable native diagnostics once. Add opt-in generation timing and
targeted route, containment, dependency and public-output controls.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Avoid semantic provider queries for reserved predefined C# types and their
pointer/array wrappers. Keep named types, aliases, inferred types and custom
pointees compiler-bound, and retain original immutable bindings for projection
validation. Scope companion member ownership before qualified-name work and
reuse native file/name materialization without changing capture or parsing.

Add work-count and custom-pointee controls. The actual default-output census
avoids 791242 of 1615689 provider queries; this is not a timing acceptance.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Share native cursor identities and resolve selected managed declaration paths
without eagerly constructing the complete ClangSharp child graph. Preserve
native recovery, dependency validation, traversal order, canonical storage
checks, and the full semantic provider analysis.

Split the header-annotation WinMD tests into independent concrete classes
over a test-free abstract helper so xUnit can schedule the existing cases
concurrently. Preserve existing test bodies and opt-in coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Replace the expanded native integration matrix with synthetic-header contract
batches that share scraper inputs and physical metadata emissions. Remove the
superseded migration and per-case native fixtures, and update the structural
guard for the batched suite.

Keep the ordinary test runner's project arguments, order and error handling.
Add built-in detailed console and suite-specific TRX logging under bin\logs.
No production scraper/emitter, SDK inputs, workflow or timeout is changed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Bind retained native facts to the recorded prepared SDK payload and source
identity before accepting direct or relocated headers. Preserve independent
validation failures across native, constants and managed generation without
authorizing incomplete output or legacy fallback for invalid inputs.

Validate producer receipts before transformation, continue later independent
proof checks in rejected inputs, and keep successful legacy receipts valid.
Compare constant types and literal payloads independently in WinmdUtils.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Distinguish SDK-created conventional settings from explicit caller inputs.
Allow absent implicit defaults while retaining contextual rejection of
explicit missing files and malformed settings.

Extend the existing compact default-path regression through the real SDK
properties and targets, including removal of previously present defaults.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Record anticipated generated-source deletion failures through the existing
validation path, retaining their original causes and continuing independent
input checks without compiling stale auto-types or publishing a new image.
Extend the existing strict locked-file regression and document the diagnostics.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Authorize external headers from explicitly selected include roots and exact planned input owners. Preserve strict SDK, source and header hash validation, rejecting missing or ambiguous ownership.

Bind incremental constants reuse to physical header content and the independently generated ownership plan. Cover authorization and actual task invalidation with focused managed regressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Compose callback-dependent owners per architecture and retain exact local
callback targets, including native aliases resolved within their full scope.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Jevan Saks (jevansaks) and others added 11 commits October 27, 2026 22:12
Preserve written scalar and pointer aliases transitively, including referenced
dependencies and actual inline record pointees. Retire the public NativeTypedef
annotation while keeping authored metadata opt-in and intrinsic ABI mappings.
Compose the reviewed transitive struct identity and GUID/scalar/UCHAR fixes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Limit inferred wrappers to supported scalar and data-pointer shapes outside
template-owned declarations. Preserve ordinary array/dependent binding and
strict concrete pointer-width/intrinsic validation. Cover the actual SDK forms
in the existing native batch and remove impossible nullable processor branches.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Back non-target-width data pointers with compiler-sized unsigned storage while
retaining nominal aliases and written native provenance. Keep incompatible
explicit storage mappings and mismatched opaque-provider widths rejecting.
Respect parser-disabled native enums and existing opaque-handle ownership.
Preserve primitive/keyword identities and distinguish synthesized buffers from
their enclosing native records without relaxing source-identity validation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Resolve named nominal and provider pointees through their written native
aliases, retaining effective owned storage and physical width/alignment checks.
Accept intrinsic integer pointees without inventing another native pointer
layer. Keep unrelated nominal identities, incompatible CLR storage and
narrowing opaque-provider mappings rejecting in the existing native batch.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Resolve canonical native owners for shared typedef declarators and authored
opaque provider views while retaining pointer width and identity validation.
Preserve validated pointer remaps and native source transport through retained
provider composition. Compare nominal native backing without flattening emitted
aliases, retaining same-width integral resource encodings only under the
existing close-function and invalid-value contract.

Extend the existing native batch with sibling/provider storage and negative
controls. Keep incompatible primitive mappings and provider narrowing rejecting.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Select native redeclarations before deduplicating owner identities, and prove
secondary ownership through the written native typedef chain. Preserve existing
excluded complete POD integer providers only with coherent tag ownership and
matching single-field storage, signedness, width, offset and alignment.

Extend the existing native batch with the three residual generic shapes and
complete-provider narrowing and incompatible-storage controls. Preserve ordinary
intrinsic/provider behavior, nominal fields and parameters, fixed-width pointer
storage and all existing incompatible primitive and wrong-owner rejections.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Compare each fragment's validated native backing before lowering fixed-integer
constants. Preserve retained field encoding, public alias chains, nominal API
parameters and returns, and existing incompatible-storage rejection.

Extend the existing four scalar controls with repeated native and retained
providers, two-level backing chains and physical metadata assertions. Retain
strict signedness, width and floating-storage negatives. Namespace routing,
syntax preflight, native export and SDK/API inputs are unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Use the already source-bound native variable and original translation unit to
preserve fixed-integer conversion bits in generated constant initializers.
Keep nominal field types and source transport. Leave managed emission's
invalid casts, overflow and conflicting storage validation unchanged.

Extend the existing native control with character-to-byte and negative-to-
unsigned constants, native static assertions and physical metadata payload
checks in its four existing architecture/mode cases.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Select traversed and required logical-group owners consistently in ordinary
bindings and constants-only annotation export. Discover the same native typedef
dependencies before exporting constants-only group declarations.

Select compiler include roots through a shared strict prerequisite for both
header and constant targets. Independently validate the cold SkipScraping
consumer rather than trusting retained ownership files or a skipped header
task's output. Use the same roots for native compilation, name scanning and
constant ownership, and track them in native incremental state. Let native
Windows PowerShell construct its own module path.

Extend the existing constant-selection controls with external required and
redeclared owners, constants-only exports and actual SDK targets in separate
producer/consumer MSBuild processes. Preserve invalid-auto, explicit-valid
and relative-root controls in both normal and cold paths. Keep binding and
physical-header checks strict.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Compare complete architecture provider-signature sets before callback identity
binding. Preserve distinct source fragments through variant deduplication so
strict nominal owner/storage composition sees every provider. Keep checked
Single selection and reject conflicting native aliases instead of dropping
fragments.

Compare header-only integer provider chains through their exact terminal
fixed-integer backing without rewriting nominal storage. Preserve retained
provider, signedness, owner and cycle constraints.

Recognize only an explicitly remapped, source-bound native enum as owner of
its matching inferred scalar typedef. Request native source-location identity
for this path even without authored annotations or record pointees. Preserve
native width/alignment and invalid pointer/float/wider-storage rejection.

Add managed architecture/provider-placement controls and extend the existing
native typedef fixture with enum-only and storage controls. Leave default
fixture cost optimization and fresh-process root-wiring tests separate.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Reuse one native input per architecture for independent discovery/storage
errors and retain enum-projection errors in their own later-phase batch.
Assert every exact named diagnostic so one failure cannot hide another.

Keep all four positive mode/architecture cases, six physical images,
fixed-pointer storage/ABI assertions and the standalone enum-only positive.
Leave all production and fresh-process compiler-root tests unchanged.

The bounded paired four-CPU fixture uses10 rather than20 scraper processes
and still emits6 physical images. Its test time is21.3783405s before versus
14.4662810s after; normal command time including build is40.4650134s versus
36.4718414s. These are not complete-default or SDK timing claims.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 26213770-7ef5-40d1-b93c-93707612f5ef
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant