From 6d3fcb0ff6ec5c1d92df950a7424194aa14623cd Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 15:14:12 -0700 Subject: [PATCH 01/57] Migrate WinHttp semantic facts to prepared headers Apply independently reviewed, SDK-pinned post-MIDL patches to a private header tree. Remove emitted-scope semantic sidecars and retain native ABI types with AssociatedEnum. Add complete-image, physical metadata, native ABI, transactional preparation, and exact-owner acceptance controls. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .gitattributes | 1 + docs/winhttp-header-annotations.md | 192 ++++++ .../WinSDK/ConstantsScraper.settings.rsp | 7 - .../WinSDK/Partitions/WinHttp/settings.rsp | 4 +- generation/WinSDK/Windows.Win32.proj | 21 + generation/WinSDK/WithSetLastError.rsp | 28 - generation/WinSDK/emitter.settings.rsp | 2 - generation/WinSDK/enums.json | 138 +--- generation/WinSDK/libMappings.rsp | 59 -- .../patches/WinHttp.expected-differences.txt | 28 + generation/WinSDK/patches/WinHttp.json | 33 + .../post-midl/um/winhttp.callback-alias.patch | 13 + .../post-midl/um/winhttp.imports.patch | 472 ++++++++++++++ .../um/winhttp.interior-pointers.patch | 12 + .../post-midl/um/winhttp.last-error.patch | 220 +++++++ .../post-midl/um/winhttp.logical-enums.patch | 190 ++++++ .../um/winhttp.port-constant-types.patch | 26 + .../post-midl/um/winhttp.supported-os.patch | 298 +++++++++ generation/WinSDK/supportedOS.rsp | 38 -- scripts/Build-WinHttpMigrationImage.ps1 | 251 ++++++++ scripts/Prepare-SdkHeaders.ps1 | 249 ++++++++ sources/WinmdUtils/Program.cs | 3 +- .../WinmdComparisonTests.cs | 21 + .../PreparedSdkHeadersTests.cs | 283 +++++++++ .../WinHttpMigrationTests.cs | 600 ++++++++++++++++++ .../WinHttpNativeControlTests.cs | 134 ++++ .../assets/duplicateConstantsAllowList.rsp | 6 +- 27 files changed, 3055 insertions(+), 274 deletions(-) create mode 100644 docs/winhttp-header-annotations.md create mode 100644 generation/WinSDK/patches/WinHttp.expected-differences.txt create mode 100644 generation/WinSDK/patches/WinHttp.json create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.imports.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch create mode 100644 scripts/Build-WinHttpMigrationImage.ps1 create mode 100644 scripts/Prepare-SdkHeaders.ps1 create mode 100644 tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs create mode 100644 tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs create mode 100644 tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs diff --git a/.gitattributes b/.gitattributes index 64acd225d..a88fec83c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ RecompiledIdlHeaders.zip filter=lfs diff=lfs merge=lfs -text Windows.Win32.winmd filter=lfs diff=lfs merge=lfs -text +generation/WinSDK/patches/**/*.patch -text diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md new file mode 100644 index 000000000..8f06ab65c --- /dev/null +++ b/docs/winhttp-header-annotations.md @@ -0,0 +1,192 @@ +# WinHttp header annotations + +This pilot moves the functional WinHttp sidecars into reviewed header patches while +retaining the C# scraper/emitter and the matched ClangSharp 21 stack. It is a separate +migration layer above the tooling PR, not a replacement for that tooling. No other +partition is migrated. + +## Inputs and ownership + +`generation\WinSDK\patches\WinHttp.json` pins SDK CPP `10.0.26100.7705`, the +post-MIDL mirror Git tree, exact header preimages, their selected-SDK inputs, and +patch order. `winhttp.h` is byte-identical to the selected package. The package +supplies `httprequest.idl`, not `httprequest.h`; the recipe separately pins the +checked-in post-MIDL header and the identical selected-SDK IDL. There are no +pre-MIDL changes or IDL recompilation in this migration. + +Only WinHttp traverses these two headers. HttpServer also includes `winhttp.h`, +but traverses `http.h`, so it is an affected physical-header dependent rather than +a second owner. The mirror and partition include inventory contains no other +direct or transitive includes of these headers. WinInet is a semantic dependent: +its two existing create-URL flag uses refer to the WinHttp-owned enum, and its +existing `HTTP_VERSION_INFO` exclusion preserves that type's WinHttp ownership. + +`Prepare-SdkHeaders.ps1` copies the complete mirror into a private, +content-addressed include tree and applies the ordered post-MIDL patches there. +It checks SDK/preimage identity, admitted patch targets, source/cache hashes, +ordinary paths, patch ordering, and strict patch applicability. Publication is +transactional and serialized; a modified published cache is rejected, not repaired +while a scraper might be reading it. Unmodified files retain their exact bytes. +The tracked SDK mirror is never an output. + +The repository project prepares this tree before scraping and uses the same root +for constants. Changing its identity invalidates both scrape markers. Namespace, +traversal, architecture, schema, and cross-partition declaration-ownership +configuration remain build inputs, not replacements for functional annotations. + +## Migration accounting + +The scraper sees 61 native WinHttp functions; the final OLD winmd emits 59 API +methods. The other two native declarations lack an import binding and are not +emitted as APIs. Import-library names alone are not declarations: 20 additional +WinHttp library-map candidates are outside the emitted scope and remain unmigrated. + +| Functional fact | Migrated source | Legacy input removed | +| --- | --- | --- | +| 59 DLL bindings | `_Win32_ImportLibrary_("WINHTTP.dll")` | 59 emitted-function `libMappings.rsp` rows | +| 38 OS floors: 27 XP, 11 Windows 8 | Fixed `_Windows_SupportedOS_*_` macros | All 38 WinHttp `supportedOS.rsp` rows | +| 28 thread-last-error contracts | `_Win32_SetLastError_` | All 28 WinHttp `WithSetLastError.rsp` rows | +| One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | +| Five logical enums, 21 emitted members, eight uses | Guarded native enums plus `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | +| Three port constant types | Guarded `constexpr INTERNET_PORT` declarations | Three `ushort` constant overrides | +| Four scheme constant spellings | Genuine `INTERNET_SCHEME_*` members | Four constants-scraper exclusions | +| One pointer-adding callback alias | Metadata-only guard around `LPWINHTTP_STATUS_CALLBACK` | Partition callback exclusion | + +All 59 bindings independently match the selected SDK's x64 `winhttp.lib` +(`SHA256 6873F0B8893E8E7BD86CB7A8310631B3FCDE99A85486196FE61CE9F1A352906A`). +`WinHttpIsHostInProxyBypassList` and `WinHttpQueryAuthParams` have native declarations +but no binding in that library or OLD metadata; neither is a final-winmd API, and +the migration does not invent a binding or synthetic declaration. +The 38 OS contracts and 28 last-error contracts were checked against +MicrosoftDocs/sdk-api revision `656e9656bfaef34dd29cd7ee9e1146aec17e924c`. +The XP annotations retain the conservative in-box floor rather than asserting +Windows 2000 redistributable availability as an unconditional OS guarantee. + +There are no emitted-scope ownership/invalid-value `autoTypes.json` entries, +function-pointer fixups, or manual declarations to migrate. Native `HINTERNET` +remains `void*`; this pilot neither fabricates a handle nor claims ownership +migration coverage it does not exercise. `_WINHTTP_SECURITY_INFO` is conditional +and absent from the OLD emitted scope, so its unrelated global tag remap is not +removed. + +All 108 documentation-map rows matching emitted WinHttp declarations/members, +including non-prefix targets such as `HTTP_VERSION_INFO` and `IWinHttpRequest` +members, remain documentation tooling inputs. There is no new documentation +annotation vocabulary or functional fallback in this pilot. + +## Native types and source compatibility + +Logical enum relationships do not replace the native ABI type in metadata: + +| Declaration | Native member | Associated enum | Native type | +| --- | --- | --- | --- | +| `WinHttpOpenRequest` | `dwFlags` | `WINHTTP_OPEN_REQUEST_FLAGS` | `DWORD` | +| `WinHttpOpen` | `dwAccessType` | `WINHTTP_ACCESS_TYPE` | `DWORD` | +| `WinHttpCreateUrl` | `dwFlags` | `WIN_HTTP_CREATE_URL_FLAGS` | `DWORD` | +| `WINHTTP_PROXY_INFO` | `dwAccessType` | `WINHTTP_ACCESS_TYPE` | `DWORD` | +| `WINHTTP_CREDS` / `WINHTTP_CREDS_EX` | `dwAuthScheme` | `WINHTTP_CREDS_AUTHSCHEME` | `DWORD` | +| `URL_COMPONENTS` | `nScheme` | `WINHTTP_INTERNET_SCHEME` | `INTERNET_SCHEME` (`int`) | +| `WINHTTP_PROXY_RESULT_ENTRY` | `ProxyScheme` | `WINHTTP_INTERNET_SCHEME` | `INTERNET_SCHEME` (`int`) | + +Only the open-request group is a flags enum, matching OLD. All five groups are +unscoped. Macro push/pop pairs preserve genuine macro spellings and native values. +The shared create-URL enum is owned by the header; `enums.json` retains only the two +unmigrated WinInet `addUsesTo` relationships, not another definition. + +The old authentication JSON's `INHTTP_AUTH_SCHEME_DIGEST` is a nonexistent typo and +was not emitted. The new group preserves the three actually emitted members; +genuine `WINHTTP_AUTH_SCHEME_DIGEST` remains a loose constant. The scheme group uses +the actual SDK's `INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS`, not fabricated +`WINHTTP_INTERNET_SCHEME_*` names. These four old member spellings are an explicit +consumer source-compatibility concern, not a reason to falsify native declarations. + +CsWin32 generated-source compatibility is the primary acceptance gate. A metadata +declaration diff is supporting evidence, not a substitute for generating both +marshaling legs, comparing their public surfaces, and compiling the same unchanged +callers against OLD and NEW with the proposed consumer. +`AssociatedEnum` tells that consumer to use the native use site's width and +signedness for the enum and reference it directly in generated signatures and +fields, matching OLD synthetic-enum C#. It does not request an enum-valued property, +an interface-property shim, or a legacy projection mode. Each associated group in +this pilot has one consistent underlying type across all its use sites. + +The genuine scheme spellings are also present in the distinct WinInet native enum, +with different values. The duplicate-constant gate admits only the exact +WinHttp/WinInet owner pair for each of these four names, not unqualified name-wide +exceptions. Its mutation controls reject a wrong owner and an additional owner; +the physical enum checks still require the exact WinHttp values. + +## Reproducing the image and controls + +Build the supported BuildTools first. The frozen OLD directory must contain +`Windows.Win32.winmd`, `provenance.json`, its complete `obj\generated` snapshot, +and `obj\scratch` discovery inputs +from tooling base `b5b7b26ed09d648766f07449af48c64ef0e99d13` and the selected SDK. +It contains 1,642 C# files / 1,654 generated inputs and 37,314 physical TypeDef rows, +including nested helpers. It is not a release-package baseline. + +The frozen image has a confirmed pre-existing constructor-signature defect: local +attribute constructor MethodDefs omit `HASTHIS` while their MemberRefs require it. +It is retained as OLD evidence, not described as physically valid. The tooling +layer corrects this separately. A frozen-input tooling control must prove that +only those missing instance bits change and that the corrected image has exact +local constructor binding; the NEW image does not receive a waiver. + +```powershell +dotnet build BuildTools -c Release +.\scripts\Build-WinHttpMigrationImage.ps1 -ToolingControl ` + -OutputDirectory .\artifacts\winhttp-migration\tooling-control +.\scripts\Build-WinHttpMigrationImage.ps1 ` + -BaselineDirectory .\artifacts\winhttp-migration\old ` + -OutputDirectory .\artifacts\winhttp-migration\new ` + -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control +``` + +The image builder verifies the frozen inputs and tools, scrapes only WinHttp and +HttpServer, overlays their four native source files onto the complete source +closure, recomputes constants with all partition inputs, preserves the other +partitions' discovered pointer fixes, and emits `Windows.Win32.winmd`. It rejects +overwriting an existing consumer-fixture or selection directory. Each image gets +a fresh selected scrape so prior aggregate discoveries cannot become configured +remap authority. The frozen discovery inputs must reproduce the pinned complete +pointer-fixup response file before the selected discoveries are overlaid. +`PartitionFilter` alone is not a complete constants/manual/emission closure. + +```powershell +. .\scripts\CommonUtils.ps1 +Install-VsDevShell +$env:WINHTTP_MIGRATION_OLD = (Resolve-Path .\artifacts\winhttp-migration\old\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control\Windows.Win32.winmd).Path +$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new\selection\obj\prepared-sdk.txt -Raw).Trim() +dotnet test tests\Win32MetadataScraperTests -c Release ` + --filter "FullyQualifiedName~PreparedSdkHeadersTests|FullyQualifiedName~WinHttpMigrationTests|FullyQualifiedName~WinHttpNativeControlTests" ` + --logger "console;verbosity=normal" +``` + +Integration tests explicitly skip without the pinned fixture environment; skips +are not acceptance. Record nonzero executed counts and require no skipped pilot +legs. Preparation controls cover cache reuse/tampering, preimage/SDK/MIDL mismatch, +path escapes, unadmitted targets, mode/identity changes, duplicate patches, failed +transactions, and lock contention. + +Native controls parse the real WinHttp and HttpServer translation units for +x86, x64, and ARM64 with metadata disabled, comparing native signatures, calling +conventions, typedef pointer depth, enum values, field offsets, record sizes, and +alignment. Physical readback covers DLL/entrypoint/import flags, attribute targets, +associations, enum values/types, ports, callback identity, architecture coverage, +and local type/attribute-constructor closure, with missing-type/constructor mutation +controls. HttpServer and WinInet snapshots must remain unchanged. + +The full-image decompiler comparison must consume exact symbol/value-scoped expected +differences, with no unknown or unused expectations. It complements these narrow +SRM checks; neither is presented as a comprehensive typed metadata equivalence +oracle. The ten approved Printing fixes belong to the tooling OLD baseline and +must not appear as new WinHttp migration differences. + +`patches\WinHttp.expected-differences.txt` admits exactly 24 declaration differences: +native integer types and `AssociatedEnum` at eight sites (16 differences), plus +four genuine scheme member additions and four fabricated-member removals. It +does not admit callback renames, import changes, dependent changes, additional +constants, or changed values. The image builder applies this grade before publishing +its provenance receipt. diff --git a/generation/WinSDK/ConstantsScraper.settings.rsp b/generation/WinSDK/ConstantsScraper.settings.rsp index 49579e6dd..f75796430 100644 --- a/generation/WinSDK/ConstantsScraper.settings.rsp +++ b/generation/WinSDK/ConstantsScraper.settings.rsp @@ -75,9 +75,6 @@ IMAGE_OS2_SIGNATURE=ushort IMAGE_VXD_SIGNATURE=ushort INTERNET_DEFAULT_FTP_PORT=ushort INTERNET_DEFAULT_GOPHER_PORT=ushort -INTERNET_DEFAULT_HTTP_PORT=ushort -INTERNET_DEFAULT_HTTPS_PORT=ushort -INTERNET_DEFAULT_PORT=ushort INTERNET_DEFAULT_SOCKS_PORT=ushort IO_REPARSE_TAG_AF_UNIX=uint IO_REPARSE_TAG_APPEXECLINK=uint @@ -518,10 +515,6 @@ EM_CHARFROMPOS EM_GETLIMITTEXT EM_POSFROMCHAR EM_SCROLLCARET -INTERNET_SCHEME_HTTP -INTERNET_SCHEME_HTTPS -INTERNET_SCHEME_FTP -INTERNET_SCHEME_SOCKS U_ICUDATA_NAME PRINTSCHEMA_KEYWORDS_NAMESPACE_URI PRINTSCHEMA_KEYWORDSV11_NAMESPACE_URI diff --git a/generation/WinSDK/Partitions/WinHttp/settings.rsp b/generation/WinSDK/Partitions/WinHttp/settings.rsp index e3940dfef..4c46a083b 100644 --- a/generation/WinSDK/Partitions/WinHttp/settings.rsp +++ b/generation/WinSDK/Partitions/WinHttp/settings.rsp @@ -3,5 +3,5 @@ /um/winhttp.h --namespace Windows.Win32.Networking.WinHttp ---exclude -LPWINHTTP_STATUS_CALLBACK +--config +parse-win32-annotations diff --git a/generation/WinSDK/Windows.Win32.proj b/generation/WinSDK/Windows.Win32.proj index 27c743f47..aea79b813 100644 --- a/generation/WinSDK/Windows.Win32.proj +++ b/generation/WinSDK/Windows.Win32.proj @@ -65,4 +65,25 @@ + + + + + + + + + + + @(_PreparedSdkIncludeRoot) + + + + + diff --git a/generation/WinSDK/WithSetLastError.rsp b/generation/WinSDK/WithSetLastError.rsp index 489c2ba95..68312b3e5 100644 --- a/generation/WinSDK/WithSetLastError.rsp +++ b/generation/WinSDK/WithSetLastError.rsp @@ -3122,34 +3122,6 @@ wglUseFontOutlinesW WideCharToMultiByte WinHelpA WinHelpW -WinHttpAddRequestHeaders -WinHttpCheckPlatform -WinHttpCloseHandle -WinHttpConnect -WinHttpCrackUrl -WinHttpCreateUrl -WinHttpDetectAutoProxyConfigUrl -WinHttpGetDefaultProxyConfiguration -WinHttpGetIEProxyConfigForCurrentUser -WinHttpGetProxyForUrl -WinHttpOpen -WinHttpOpenRequest -WinHttpQueryAuthSchemes -WinHttpQueryDataAvailable -WinHttpQueryHeaders -WinHttpQueryOption -WinHttpReadData -WinHttpReceiveResponse -WinHttpSendRequest -WinHttpSetCredentials -WinHttpSetDefaultProxyConfiguration -WinHttpSetOption -WinHttpSetStatusCallback -WinHttpSetTimeouts -WinHttpTimeFromSystemTime -WinHttpTimeToSystemTime -WinHttpWebSocketCompleteUpgrade -WinHttpWriteData WintrustAddActionID WintrustAddDefaultForUsage WintrustGetDefaultForUsage diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp index 93283321f..5a0168020 100644 --- a/generation/WinSDK/emitter.settings.rsp +++ b/generation/WinSDK/emitter.settings.rsp @@ -2533,8 +2533,6 @@ GetOwnerModuleFromUdp6Entry::pBuffer=[ContainsInteriorPointers] HttpQueryServiceConfiguration::pOutput=[ContainsInteriorPointers] # https://learn.microsoft.com/windows/win32/api/http/nf-http-httpreceiveclientcertificate HttpReceiveClientCertificate::SslClientCertInfo=[ContainsInteriorPointers] -# https://learn.microsoft.com/windows/win32/api/winhttp/nf-winhttp-winhttpqueryheadersex -WinHttpQueryHeadersEx::pBuffer=[ContainsInteriorPointers] # https://learn.microsoft.com/windows/win32/api/icmpapi/nf-icmpapi-icmpsendecho # https://learn.microsoft.com/windows/win32/api/icmpapi/nf-icmpapi-icmpsendecho2 # https://learn.microsoft.com/windows/win32/api/icmpapi/nf-icmpapi-icmpsendecho2ex diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index d44cc6acc..dd2c70395 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -9094,39 +9094,6 @@ } ] }, - { - "name": "WINHTTP_OPEN_REQUEST_FLAGS", - "flags": true, - "members": [ - { - "name": "WINHTTP_FLAG_BYPASS_PROXY_CACHE" - }, - { - "name": "WINHTTP_FLAG_ESCAPE_DISABLE" - }, - { - "name": "WINHTTP_FLAG_ESCAPE_DISABLE_QUERY" - }, - { - "name": "WINHTTP_FLAG_ESCAPE_PERCENT" - }, - { - "name": "WINHTTP_FLAG_NULL_CODEPAGE" - }, - { - "name": "WINHTTP_FLAG_REFRESH" - }, - { - "name": "WINHTTP_FLAG_SECURE" - } - ], - "uses": [ - { - "method": "WinHttpOpenRequest", - "parameter": "dwFlags" - } - ] - }, { "addUsesTo": "NtmsDismountOptions", "members": [], @@ -11622,23 +11589,9 @@ ] }, { - "name": "WIN_HTTP_CREATE_URL_FLAGS", - "members": [ - { - "name": "ICU_ESCAPE" - }, - { - "name": "ICU_REJECT_USERPWD" - }, - { - "name": "ICU_DECODE" - } - ], + "addUsesTo": "WIN_HTTP_CREATE_URL_FLAGS", + "members": [], "uses": [ - { - "method": "WinHttpCreateUrl", - "parameter": "dwFlags" - }, { "method": "InternetCrackUrlA", "parameter": "dwFlags" @@ -18905,33 +18858,6 @@ } ] }, - { - "name": "WINHTTP_ACCESS_TYPE", - "members": [ - { - "name": "WINHTTP_ACCESS_TYPE_NO_PROXY" - }, - { - "name": "WINHTTP_ACCESS_TYPE_DEFAULT_PROXY" - }, - { - "name": "WINHTTP_ACCESS_TYPE_NAMED_PROXY" - }, - { - "name": "WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY" - } - ], - "uses": [ - { - "method": "WinHttpOpen", - "parameter": "dwAccessType" - }, - { - "struct": "WINHTTP_PROXY_INFO", - "field": "dwAccessType" - } - ] - }, { "name": "CRYPT_DEFAULT_CONTEXT_TYPE", "members": [ @@ -26896,33 +26822,6 @@ } ] }, - { - "name": "WINHTTP_CREDS_AUTHSCHEME", - "members": [ - { - "name": "WINHTTP_AUTH_SCHEME_BASIC" - }, - { - "name": "WINHTTP_AUTH_SCHEME_NTLM" - }, - { - "name": "INHTTP_AUTH_SCHEME_DIGEST" - }, - { - "name": "WINHTTP_AUTH_SCHEME_NEGOTIATE" - } - ], - "uses": [ - { - "struct": "WINHTTP_CREDS", - "field": "dwAuthScheme" - }, - { - "struct": "WINHTTP_CREDS_EX", - "field": "dwAuthScheme" - } - ] - }, { "name": "DEV_BROADCAST_HDR_DEVICE_TYPE", "members": [ @@ -28902,39 +28801,6 @@ } ] }, - { - "name": "WINHTTP_INTERNET_SCHEME", - "type": "int", - "flags": false, - "members": [ - { - "name": "WINHTTP_INTERNET_SCHEME_HTTP", - "value": "(1)" - }, - { - "name": "WINHTTP_INTERNET_SCHEME_HTTPS", - "value": "(2)" - }, - { - "name": "WINHTTP_INTERNET_SCHEME_FTP", - "value": "(3)" - }, - { - "name": "WINHTTP_INTERNET_SCHEME_SOCKS", - "value": "(4)" - } - ], - "uses": [ - { - "struct": "URL_COMPONENTS", - "field": "nScheme" - }, - { - "struct": "WINHTTP_PROXY_RESULT_ENTRY", - "field": "ProxyScheme" - } - ] - }, { "name": "IMAGELIST_CREATION_FLAGS", "flags": true, diff --git a/generation/WinSDK/libMappings.rsp b/generation/WinSDK/libMappings.rsp index f1cfa83ea..7ac5b4e4e 100644 --- a/generation/WinSDK/libMappings.rsp +++ b/generation/WinSDK/libMappings.rsp @@ -692,65 +692,11 @@ auxGetVolume=WINMM.dll auxGetNumDevs=WINMM.dll auxGetDevCapsW=WINMM.dll auxGetDevCapsA=WINMM.dll -WinHttpWriteProxySettings=WINHTTP.dll -WinHttpWriteData=WINHTTP.dll -WinHttpWebSocketShutdown=WINHTTP.dll -WinHttpWebSocketSend=WINHTTP.dll -WinHttpWebSocketReceive=WINHTTP.dll -WinHttpWebSocketQueryCloseStatus=WINHTTP.dll -WinHttpWebSocketCompleteUpgrade=WINHTTP.dll -WinHttpWebSocketClose=WINHTTP.dll -WinHttpUnregisterProxyChangeNotification=WINHTTP.dll -WinHttpTimeToSystemTime=WINHTTP.dll -WinHttpTimeFromSystemTime=WINHTTP.dll -WinHttpSetTimeouts=WINHTTP.dll -WinHttpSetStatusCallback=WINHTTP.dll -WinHttpSetProxySettingsPerUser=WINHTTP.dll -WinHttpSetOption=WINHTTP.dll -WinHttpSetDefaultProxyConfiguration=WINHTTP.dll -WinHttpSetCredentials=WINHTTP.dll -WinHttpSendRequest=WINHTTP.dll WinHttpSaveProxyCredentials=WINHTTP.dll -WinHttpResetAutoProxy=WINHTTP.dll -WinHttpRegisterProxyChangeNotification=WINHTTP.dll -WinHttpReceiveResponse=WINHTTP.dll WinHttpReadProxySettingsHvsi=WINHTTP.dll -WinHttpReadProxySettings=WINHTTP.dll -WinHttpReadDataEx=WINHTTP.dll -WinHttpReadData=WINHTTP.dll -WinHttpQueryOption=WINHTTP.dll -WinHttpQueryHeadersEx=WINHTTP.dll -WinHttpQueryHeaders=WINHTTP.dll -WinHttpQueryDataAvailable=WINHTTP.dll -WinHttpQueryConnectionGroup=WINHTTP.dll -WinHttpQueryAuthSchemes=WINHTTP.dll -WinHttpProtocolSend=WINHTTP.dll -WinHttpProtocolReceive=WINHTTP.dll -WinHttpProtocolCompleteUpgrade=WINHTTP.dll WinHttpProbeConnectivity=WINHTTP.dll -WinHttpOpenRequest=WINHTTP.dll -WinHttpOpen=WINHTTP.dll WinHttpGetTunnelSocket=WINHTTP.dll -WinHttpGetProxySettingsVersion=WINHTTP.dll -WinHttpGetProxySettingsResultEx=WINHTTP.dll -WinHttpGetProxySettingsEx=WINHTTP.dll -WinHttpGetProxyResultEx=WINHTTP.dll -WinHttpGetProxyResult=WINHTTP.dll WinHttpGetProxyForUrlHvsi=WINHTTP.dll -WinHttpGetProxyForUrlEx2=WINHTTP.dll -WinHttpGetProxyForUrlEx=WINHTTP.dll -WinHttpGetProxyForUrl=WINHTTP.dll -WinHttpGetIEProxyConfigForCurrentUser=WINHTTP.dll -WinHttpGetDefaultProxyConfiguration=WINHTTP.dll -WinHttpFreeQueryConnectionGroupResult=WINHTTP.dll -WinHttpFreeProxySettingsEx=WINHTTP.dll -WinHttpFreeProxySettings=WINHTTP.dll -WinHttpFreeProxyResultEx=WINHTTP.dll -WinHttpFreeProxyResult=WINHTTP.dll -WinHttpDetectAutoProxyConfigUrl=WINHTTP.dll -WinHttpCreateUrl=WINHTTP.dll -WinHttpCreateProxyResolver=WINHTTP.dll -WinHttpCrackUrl=WINHTTP.dll WinHttpConnectionUpdateIfIndexTable=WINHTTP.dll WinHttpConnectionSetProxyInfo=WINHTTP.dll WinHttpConnectionSetPolicyEntries=WINHTTP.dll @@ -765,12 +711,7 @@ WinHttpConnectionFreeProxyInfo=WINHTTP.dll WinHttpConnectionFreeNameList=WINHTTP.dll WinHttpConnectionDeleteProxyInfo=WINHTTP.dll WinHttpConnectionDeletePolicyEntries=WINHTTP.dll -WinHttpConnect=WINHTTP.dll -WinHttpCloseHandle=WINHTTP.dll -WinHttpCheckPlatform=WINHTTP.dll WinHttpAutoProxySvcMain=WINHTTP.dll -WinHttpAddRequestHeadersEx=WINHTTP.dll -WinHttpAddRequestHeaders=WINHTTP.dll WICSetEncoderFormat_Proxy=WindowsCodecs.dll WICSerializeMetadataContent=WindowsCodecs.dll WICMatchMetadataContent=WindowsCodecs.dll diff --git a/generation/WinSDK/patches/WinHttp.expected-differences.txt b/generation/WinSDK/patches/WinHttp.expected-differences.txt new file mode 100644 index 000000000..83615e38f --- /dev/null +++ b/generation/WinSDK/patches/WinHttp.expected-differences.txt @@ -0,0 +1,28 @@ +# Same-SDK b5b7b26 OLD to the complete WinHttp header-annotation NEW. +# Native integer ABI plus eight authored logical-enum relationships. +# Four genuine SDK scheme spellings replace fabricated old enum member names. +# No import, OS, last-error, callback, port, dependent-partition, or value changes. +Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags) : [In] => [AssociatedEnum(WIN_HTTP_CREATE_URL_FLAGS),In] +Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags)...Windows.Win32.Networking.WinHttp.WIN_HTTP_CREATE_URL_FLAGS => System.UInt32 +Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType) : [In] => [AssociatedEnum(WINHTTP_ACCESS_TYPE),In] +Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType)...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 +Windows.Win32.Networking.WinHttp.Apis.WinHttpOpenRequest : parameter 7 (dwFlags) : [In] => [AssociatedEnum(WINHTTP_OPEN_REQUEST_FLAGS),In] +Windows.Win32.Networking.WinHttp.Apis.WinHttpOpenRequest : parameter 7 (dwFlags)...Windows.Win32.Networking.WinHttp.WINHTTP_OPEN_REQUEST_FLAGS => System.UInt32 +Windows.Win32.Networking.WinHttp.URL_COMPONENTS.nScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] +Windows.Win32.Networking.WinHttp.URL_COMPONENTS.nScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 +Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme : => [AssociatedEnum(WINHTTP_CREDS_AUTHSCHEME)] +Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 +Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme : => [AssociatedEnum(WINHTTP_CREDS_AUTHSCHEME)] +Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_FTP added +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_HTTP added +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_HTTPS added +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_SOCKS added +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_FTP removed +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_HTTP removed +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_HTTPS removed +Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_SOCKS removed +Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType : => [AssociatedEnum(WINHTTP_ACCESS_TYPE)] +Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 +Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] +Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 diff --git a/generation/WinSDK/patches/WinHttp.json b/generation/WinSDK/patches/WinHttp.json new file mode 100644 index 000000000..4a8cb484b --- /dev/null +++ b/generation/WinSDK/patches/WinHttp.json @@ -0,0 +1,33 @@ +{ + "schemaVersion": 1, + "sdkPackageVersion": "10.0.26100.7705", + "sourceStage": "post-midl", + "sourceGitTree": "77817f12308e29ec8bf77dc6fe56786e65ff9e08", + "headers": [ + { + "path": "um\\winhttp.h", + "sourceSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2", + "sdkPath": "c\\include\\10.0.26100.0\\um\\winhttp.h", + "sdkSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2" + }, + { + "path": "um\\httprequest.h", + "sourceSha256": "84D9B00F3AC18FAC5A97DB772FE486CA80BF80BDCF6F46F98CA31D3FD1636F93", + "sdkPath": "c\\include\\10.0.26100.0\\um\\httprequest.idl", + "sdkSha256": "671F997E30FF1108FF4C7FB03631B3E4B1CABF05B8A31D14F5E4802D6FA997AE" + } + ], + "partitions": [ + "WinHttp", + "HttpServer" + ], + "patches": [ + "post-midl\\um\\winhttp.imports.patch", + "post-midl\\um\\winhttp.supported-os.patch", + "post-midl\\um\\winhttp.last-error.patch", + "post-midl\\um\\winhttp.callback-alias.patch", + "post-midl\\um\\winhttp.interior-pointers.patch", + "post-midl\\um\\winhttp.port-constant-types.patch", + "post-midl\\um\\winhttp.logical-enums.patch" + ] +} diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch b/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch new file mode 100644 index 000000000..3ad4c693a --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch @@ -0,0 +1,13 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -1035,7 +1035,9 @@ + IN DWORD dwStatusInformationLength + ); + ++#ifndef WIN32METADATA + typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; ++#endif + + + // diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch b/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch new file mode 100644 index 000000000..76ab4841e --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch @@ -0,0 +1,472 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -16,6 +16,7 @@ + #define _WINHTTPX_ + + #include ++#include + + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +@@ -1584,6 +1585,7 @@ + // prototypes + // + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + WINHTTP_STATUS_CALLBACK + WINAPI +@@ -1595,6 +1597,7 @@ + IN DWORD_PTR dwReserved + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1604,6 +1607,7 @@ + _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1613,6 +1617,7 @@ + _Out_ SYSTEMTIME *pst // output in GMT time + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1625,6 +1630,7 @@ + ); + + _Success_(return != FALSE) ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1642,9 +1648,12 @@ + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ +@@ -1653,6 +1662,7 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + HINTERNET + WINAPI +@@ -1665,6 +1675,7 @@ + _In_ DWORD dwFlags + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1673,6 +1684,7 @@ + IN HINTERNET hInternet + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + HINTERNET + WINAPI +@@ -1684,6 +1696,7 @@ + IN DWORD dwReserved + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1695,6 +1708,7 @@ + OUT LPDWORD lpdwNumberOfBytesRead + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -1709,6 +1723,7 @@ + _In_reads_bytes_opt_(cbProperty) PVOID pvProperty + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1720,6 +1735,7 @@ + OUT LPDWORD lpdwNumberOfBytesWritten + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1730,6 +1746,7 @@ + ); + + _Success_(return != FALSE) ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1741,6 +1758,7 @@ + IN OUT LPDWORD lpdwBufferLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1767,6 +1785,7 @@ + _In_ DWORD dwBufferLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1807,6 +1826,7 @@ + // prototypes + // + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + HINTERNET + WINAPI +@@ -1821,6 +1841,7 @@ + IN DWORD dwFlags + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1834,6 +1855,7 @@ + IN DWORD dwModifiers + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -1847,6 +1869,7 @@ + _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1861,6 +1884,7 @@ + IN DWORD_PTR dwContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1881,6 +1905,7 @@ + IN LPVOID pAuthParams + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1914,6 +1939,7 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1924,6 +1950,7 @@ + ); + + _Success_(return != FALSE) ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1937,6 +1964,7 @@ + IN OUT LPDWORD lpdwIndex OPTIONAL + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -1954,6 +1982,7 @@ + _Out_ PDWORD pdwHeadersCount + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -1965,6 +1994,7 @@ + _Inout_ PWINHTTP_QUERY_CONNECTION_GROUP_RESULT *ppResult + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + VOID + WINAPI +@@ -1979,6 +2009,7 @@ + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1988,6 +2019,7 @@ + _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -1999,6 +2031,7 @@ + OUT WINHTTP_PROXY_INFO * pProxyInfo + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2008,6 +2041,7 @@ + _Out_ HINTERNET *phResolver + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2019,6 +2053,7 @@ + _In_opt_ DWORD_PTR pContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2032,6 +2067,7 @@ + _In_opt_ DWORD_PTR pContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2041,6 +2077,7 @@ + _Out_ WINHTTP_PROXY_RESULT *pProxyResult + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2050,6 +2087,7 @@ + _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + VOID + WINAPI +@@ -2058,6 +2096,7 @@ + _Inout_ WINHTTP_PROXY_RESULT *pProxyResult + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + VOID + WINAPI +@@ -2066,6 +2105,7 @@ + _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2075,6 +2115,7 @@ + _In_ DWORD dwFlags + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + BOOL + WINAPI +@@ -2083,6 +2124,7 @@ + IN OUT WINHTTP_CURRENT_USER_IE_PROXY_CONFIG * pProxyConfig + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2092,6 +2134,7 @@ + _In_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2105,6 +2148,7 @@ + _Out_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + VOID + WINAPI +@@ -2112,6 +2156,7 @@ + _In_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2120,6 +2165,7 @@ + _Out_ DWORD *pdwProxySettingsVersion + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2181,6 +2227,7 @@ + #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 + #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + HINTERNET + WINAPI +@@ -2190,6 +2237,7 @@ + _In_opt_ DWORD_PTR pContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2201,6 +2249,7 @@ + _In_ DWORD dwBufferLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2213,6 +2262,7 @@ + _Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2224,6 +2274,7 @@ + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2235,6 +2286,7 @@ + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2259,6 +2311,7 @@ + WINHTTP_PROTOCOL_OPERATION Operation; + } WINHTTP_PROTOCOL_ASYNC_RESULT; + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + HINTERNET + WINAPI +@@ -2268,6 +2321,7 @@ + _In_opt_ DWORD_PTR dwContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2279,6 +2333,7 @@ + _In_ DWORD dwBufferLength + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2307,6 +2362,7 @@ + + #define WINHTTP_PROXY_NOTIFY_CHANGE 0x0001 + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2317,6 +2373,7 @@ + _Out_ WINHTTP_PROXY_CHANGE_REGISTRATION_HANDLE *hRegistration + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2361,6 +2418,7 @@ + PCWSTR pcwszProbeHost; + } WINHTTP_PROXY_SETTINGS_PARAM, *PWINHTTP_PROXY_SETTINGS_PARAM; + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2371,6 +2429,7 @@ + _In_opt_ DWORD_PTR pContext + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI +@@ -2379,6 +2438,7 @@ + _Out_ PVOID pProxySettingsEx + ); + ++_Win32_ImportLibrary_("WINHTTP.dll") + WINHTTPAPI + DWORD + WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch new file mode 100644 index 000000000..c7660889c --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch @@ -0,0 +1,12 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -2026,7 +2026,7 @@ + _In_ UINT uiCodePage, + _Inout_opt_ PDWORD pdwIndex, + _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, +- _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) PVOID pBuffer, ++ _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) _Win32_ContainsInteriorPointers_ PVOID pBuffer, + _Inout_ PDWORD pdwBufferLength, + _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER *ppHeaders, + _Out_ PDWORD pdwHeadersCount diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch new file mode 100644 index 000000000..5b6caf359 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch @@ -0,0 +1,220 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -1587,6 +1587,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + WINHTTP_STATUS_CALLBACK + WINAPI +@@ -1600,6 +1601,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1611,6 +1613,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1622,6 +1625,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1636,6 +1640,7 @@ + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1655,13 +1660,16 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ +@@ -1672,6 +1680,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1686,6 +1695,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1696,6 +1706,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1709,6 +1720,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1737,6 +1749,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1750,6 +1763,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1762,6 +1776,7 @@ + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1775,6 +1790,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1803,6 +1819,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1845,6 +1862,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1861,6 +1879,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1890,6 +1909,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1906,6 +1926,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1928,6 +1949,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1963,6 +1985,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1975,6 +1998,7 @@ + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -2035,6 +2059,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -2046,6 +2071,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -2148,6 +2174,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -2261,6 +2288,7 @@ + + _Win32_ImportLibrary_("WINHTTP.dll") + _Windows_SupportedOS_Windows8_ ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch new file mode 100644 index 000000000..ad3fe3401 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch @@ -0,0 +1,190 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -169,7 +169,7 @@ + DWORD dwStructSize; // size of this structure. Used in version check + LPWSTR lpszScheme; // pointer to scheme name + DWORD dwSchemeLength; // length of scheme name +- INTERNET_SCHEME nScheme; // enumerated scheme type (if known) ++ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME nScheme; // enumerated scheme type (if known) + LPWSTR lpszHostName; // pointer to host name + DWORD dwHostNameLength; // length of host name + INTERNET_PORT nPort; // converted port number +@@ -197,7 +197,7 @@ + + typedef struct _WINHTTP_PROXY_INFO + { +- DWORD dwAccessType; // see WINHTTP_ACCESS_* types below ++ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType; // see WINHTTP_ACCESS_* types below + LPWSTR lpszProxy; // proxy server list + LPWSTR lpszProxyBypass; // proxy bypass list + } WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO, *PWINHTTP_PROXY_INFO; +@@ -254,7 +254,7 @@ + { + BOOL fProxy; // Is this a proxy or DIRECT? + BOOL fBypass; // If DIRECT, is it bypassing a proxy (intranet) or is all traffic DIRECT (internet) +- INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) ++ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) + PWSTR pwszProxy; // Hostname of the proxy. + INTERNET_PORT ProxyPort; // Port of the proxy. + } WINHTTP_PROXY_RESULT_ENTRY; +@@ -945,7 +945,7 @@ + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; +- DWORD dwAuthScheme; ++ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + } WINHTTP_CREDS, *PWINHTTP_CREDS; +@@ -957,7 +957,7 @@ + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; +- DWORD dwAuthScheme; ++ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +@@ -1649,7 +1649,7 @@ + WinHttpCreateUrl + ( + _In_ LPURL_COMPONENTS lpUrlComponents, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(WIN_HTTP_CREATE_URL_FLAGS) DWORD dwFlags, + _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, + _Inout_ LPDWORD pdwUrlLength + ); +@@ -1689,7 +1689,7 @@ + WinHttpOpen + ( + _In_opt_z_ LPCWSTR pszAgentW, +- _In_ DWORD dwAccessType, ++ _In_ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType, + _In_opt_z_ LPCWSTR pszProxyW, + _In_opt_z_ LPCWSTR pszProxyBypassW, + _In_ DWORD dwFlags +@@ -1876,7 +1876,7 @@ + IN LPCWSTR pwszVersion, + IN LPCWSTR pwszReferrer OPTIONAL, + IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, +- IN DWORD dwFlags ++ IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags + ); + + _Win32_ImportLibrary_("WINHTTP.dll") +@@ -2653,6 +2653,114 @@ + #endif + + ++#ifdef WIN32METADATA ++#pragma push_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") ++#undef WINHTTP_FLAG_BYPASS_PROXY_CACHE ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE") ++#undef WINHTTP_FLAG_ESCAPE_DISABLE ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") ++#undef WINHTTP_FLAG_ESCAPE_DISABLE_QUERY ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_PERCENT") ++#undef WINHTTP_FLAG_ESCAPE_PERCENT ++#pragma push_macro("WINHTTP_FLAG_NULL_CODEPAGE") ++#undef WINHTTP_FLAG_NULL_CODEPAGE ++#pragma push_macro("WINHTTP_FLAG_REFRESH") ++#undef WINHTTP_FLAG_REFRESH ++#pragma push_macro("WINHTTP_FLAG_SECURE") ++#undef WINHTTP_FLAG_SECURE ++enum [[clang::flag_enum]] WINHTTP_OPEN_REQUEST_FLAGS : DWORD ++{ ++ WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, ++ WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, ++ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, ++ WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, ++ WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, ++ WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, ++ WINHTTP_FLAG_SECURE = 0x00800000, ++}; ++#pragma pop_macro("WINHTTP_FLAG_SECURE") ++#pragma pop_macro("WINHTTP_FLAG_REFRESH") ++#pragma pop_macro("WINHTTP_FLAG_NULL_CODEPAGE") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_PERCENT") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE") ++#pragma pop_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") ++ ++#pragma push_macro("ICU_ESCAPE") ++#undef ICU_ESCAPE ++#pragma push_macro("ICU_REJECT_USERPWD") ++#undef ICU_REJECT_USERPWD ++#pragma push_macro("ICU_DECODE") ++#undef ICU_DECODE ++enum WIN_HTTP_CREATE_URL_FLAGS : DWORD ++{ ++ ICU_ESCAPE = 0x80000000, ++ ICU_REJECT_USERPWD = 0x00004000, ++ ICU_DECODE = 0x10000000, ++}; ++#pragma pop_macro("ICU_DECODE") ++#pragma pop_macro("ICU_REJECT_USERPWD") ++#pragma pop_macro("ICU_ESCAPE") ++ ++#pragma push_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") ++#undef WINHTTP_ACCESS_TYPE_NO_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") ++#undef WINHTTP_ACCESS_TYPE_DEFAULT_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") ++#undef WINHTTP_ACCESS_TYPE_NAMED_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") ++#undef WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY ++enum WINHTTP_ACCESS_TYPE : DWORD ++{ ++ WINHTTP_ACCESS_TYPE_NO_PROXY = 1, ++ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, ++ WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, ++ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4, ++}; ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") ++ ++#pragma push_macro("WINHTTP_AUTH_SCHEME_BASIC") ++#undef WINHTTP_AUTH_SCHEME_BASIC ++#pragma push_macro("WINHTTP_AUTH_SCHEME_NTLM") ++#undef WINHTTP_AUTH_SCHEME_NTLM ++#pragma push_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") ++#undef WINHTTP_AUTH_SCHEME_NEGOTIATE ++enum WINHTTP_CREDS_AUTHSCHEME : DWORD ++{ ++ WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, ++ WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, ++ WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, ++}; ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_NTLM") ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_BASIC") ++ ++#pragma push_macro("INTERNET_SCHEME_HTTP") ++#undef INTERNET_SCHEME_HTTP ++#pragma push_macro("INTERNET_SCHEME_HTTPS") ++#undef INTERNET_SCHEME_HTTPS ++#pragma push_macro("INTERNET_SCHEME_FTP") ++#undef INTERNET_SCHEME_FTP ++#pragma push_macro("INTERNET_SCHEME_SOCKS") ++#undef INTERNET_SCHEME_SOCKS ++enum WINHTTP_INTERNET_SCHEME : INTERNET_SCHEME ++{ ++ INTERNET_SCHEME_HTTP = (1), ++ INTERNET_SCHEME_HTTPS = (2), ++ INTERNET_SCHEME_FTP = (3), ++ INTERNET_SCHEME_SOCKS = (4), ++}; ++#pragma pop_macro("INTERNET_SCHEME_SOCKS") ++#pragma pop_macro("INTERNET_SCHEME_FTP") ++#pragma pop_macro("INTERNET_SCHEME_HTTPS") ++#pragma pop_macro("INTERNET_SCHEME_HTTP") ++ ++#endif ++ ++ + #if defined(__cplusplus) + } + #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch new file mode 100644 index 000000000..ed6467092 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch @@ -0,0 +1,26 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -2637,6 +2637,22 @@ + + + ++#ifdef WIN32METADATA ++#pragma push_macro("INTERNET_DEFAULT_PORT") ++#undef INTERNET_DEFAULT_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_PORT = 0; ++#pragma pop_macro("INTERNET_DEFAULT_PORT") ++#pragma push_macro("INTERNET_DEFAULT_HTTP_PORT") ++#undef INTERNET_DEFAULT_HTTP_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_HTTP_PORT = 80; ++#pragma pop_macro("INTERNET_DEFAULT_HTTP_PORT") ++#pragma push_macro("INTERNET_DEFAULT_HTTPS_PORT") ++#undef INTERNET_DEFAULT_HTTPS_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_HTTPS_PORT = 443; ++#pragma pop_macro("INTERNET_DEFAULT_HTTPS_PORT") ++#endif ++ ++ + #if defined(__cplusplus) + } + #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch new file mode 100644 index 000000000..b20a7fe79 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch @@ -0,0 +1,298 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +@@ -1586,6 +1586,7 @@ + // + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + WINHTTP_STATUS_CALLBACK + WINAPI +@@ -1598,6 +1599,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1608,6 +1610,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1618,6 +1621,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1631,6 +1635,7 @@ + + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1649,11 +1654,14 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ +@@ -1663,6 +1671,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1676,6 +1685,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1685,6 +1695,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1697,6 +1708,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1724,6 +1736,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1736,6 +1749,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1747,6 +1761,7 @@ + + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1759,6 +1774,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1786,6 +1802,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1827,6 +1844,7 @@ + // + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1842,6 +1860,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1870,6 +1889,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1885,6 +1905,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1906,6 +1927,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1940,6 +1962,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -1951,6 +1974,7 @@ + + _Success_(return != FALSE) + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -2010,6 +2034,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -2020,6 +2045,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -2032,6 +2058,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2042,6 +2069,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2068,6 +2096,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2088,6 +2117,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + VOID + WINAPI +@@ -2106,6 +2136,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2116,6 +2147,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_WindowsXP_ + WINHTTPAPI + BOOL + WINAPI +@@ -2228,6 +2260,7 @@ + #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -2238,6 +2271,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2250,6 +2284,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2263,6 +2298,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2275,6 +2311,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2287,6 +2324,7 @@ + ); + + _Win32_ImportLibrary_("WINHTTP.dll") ++_Windows_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index 332be969b..fbc6263f7 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -14677,44 +14677,6 @@ wglUseFontBitmapsW=SupportedOSPlatform("windows5.0") wglUseFontOutlinesA=SupportedOSPlatform("windows5.0") wglUseFontOutlinesW=SupportedOSPlatform("windows5.0") WidenPath=SupportedOSPlatform("windows5.0") -WinHttpAddRequestHeaders=SupportedOSPlatform("windows5.1.2600") -WinHttpCheckPlatform=SupportedOSPlatform("windows5.1.2600") -WinHttpCloseHandle=SupportedOSPlatform("windows5.1.2600") -WinHttpConnect=SupportedOSPlatform("windows5.1.2600") -WinHttpCrackUrl=SupportedOSPlatform("windows5.1.2600") -WinHttpCreateProxyResolver=SupportedOSPlatform("windows8.0") -WinHttpCreateUrl=SupportedOSPlatform("windows5.1.2600") -WinHttpDetectAutoProxyConfigUrl=SupportedOSPlatform("windows5.1.2600") -WinHttpFreeProxyResult=SupportedOSPlatform("windows8.0") -WinHttpGetDefaultProxyConfiguration=SupportedOSPlatform("windows5.1.2600") -WinHttpGetIEProxyConfigForCurrentUser=SupportedOSPlatform("windows5.1.2600") -WinHttpGetProxyForUrl=SupportedOSPlatform("windows5.1.2600") -WinHttpGetProxyForUrlEx=SupportedOSPlatform("windows8.0") -WinHttpGetProxyResult=SupportedOSPlatform("windows8.0") -WinHttpOpen=SupportedOSPlatform("windows5.1.2600") -WinHttpOpenRequest=SupportedOSPlatform("windows5.1.2600") -WinHttpQueryAuthSchemes=SupportedOSPlatform("windows5.1.2600") -WinHttpQueryDataAvailable=SupportedOSPlatform("windows5.1.2600") -WinHttpQueryHeaders=SupportedOSPlatform("windows5.1.2600") -WinHttpQueryOption=SupportedOSPlatform("windows5.1.2600") -WinHttpReadData=SupportedOSPlatform("windows5.1.2600") -WinHttpReceiveResponse=SupportedOSPlatform("windows5.1.2600") -WinHttpResetAutoProxy=SupportedOSPlatform("windows8.0") -WinHttpSendRequest=SupportedOSPlatform("windows5.1.2600") -WinHttpSetCredentials=SupportedOSPlatform("windows5.1.2600") -WinHttpSetDefaultProxyConfiguration=SupportedOSPlatform("windows5.1.2600") -WinHttpSetOption=SupportedOSPlatform("windows5.1.2600") -WinHttpSetStatusCallback=SupportedOSPlatform("windows5.1.2600") -WinHttpSetTimeouts=SupportedOSPlatform("windows5.1.2600") -WinHttpTimeFromSystemTime=SupportedOSPlatform("windows5.1.2600") -WinHttpTimeToSystemTime=SupportedOSPlatform("windows5.1.2600") -WinHttpWebSocketClose=SupportedOSPlatform("windows8.0") -WinHttpWebSocketCompleteUpgrade=SupportedOSPlatform("windows8.0") -WinHttpWebSocketQueryCloseStatus=SupportedOSPlatform("windows8.0") -WinHttpWebSocketReceive=SupportedOSPlatform("windows8.0") -WinHttpWebSocketSend=SupportedOSPlatform("windows8.0") -WinHttpWebSocketShutdown=SupportedOSPlatform("windows8.0") -WinHttpWriteData=SupportedOSPlatform("windows5.1.2600") CommitUrlCacheEntryA=SupportedOSPlatform("windows5.0") CommitUrlCacheEntryW=SupportedOSPlatform("windows5.0") CreateMD5SSOHash=SupportedOSPlatform("windows5.0") diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 new file mode 100644 index 000000000..42713bf94 --- /dev/null +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -0,0 +1,251 @@ +#Requires -Version 7.0 + +[CmdletBinding()] +param( + [string]$BaselineDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\old", + [string]$OutputDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\new", + [string]$SelectionDirectory, + [switch]$ToolingControl, + [string]$ToolingControlDirectory +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest +$repo = [IO.Path]::GetFullPath("$PSScriptRoot\..").TrimEnd('\') +$BaselineDirectory = [IO.Path]::GetFullPath($BaselineDirectory).TrimEnd('\') +$OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory).TrimEnd('\') +if (!$SelectionDirectory) { + $SelectionDirectory = "$OutputDirectory\selection" +} +$SelectionDirectory = [IO.Path]::GetFullPath($SelectionDirectory).TrimEnd('\') +foreach ($path in @($BaselineDirectory, $OutputDirectory, $SelectionDirectory)) { + if (!$path.StartsWith("$repo\artifacts\", [StringComparison]::OrdinalIgnoreCase)) { + throw "Migration artifacts must stay in this worktree's artifacts directory: $path" + } +} +if (Test-Path -LiteralPath $OutputDirectory) { + throw "Use a new output directory; published consumer fixtures must not be overwritten: $OutputDirectory" +} +if (!$ToolingControl -and (Test-Path -LiteralPath $SelectionDirectory)) { + throw 'Use a fresh selection directory; prior aggregate discoveries must not become scraper inputs.' +} +foreach ($path in @($SelectionDirectory, $OutputDirectory)) { + if ($BaselineDirectory -eq $path -or + $path.StartsWith("$BaselineDirectory\", [StringComparison]::OrdinalIgnoreCase) -or + $BaselineDirectory.StartsWith("$path\", [StringComparison]::OrdinalIgnoreCase)) { + throw 'Migration output must not overlap the frozen baseline.' + } +} + +function Get-Sha256([string]$Path) { + (Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash +} + +function Invoke-Dotnet([string[]]$Arguments, [string]$Log) { + & dotnet @Arguments *> $Log + if ($LASTEXITCODE -ne 0) { + throw "dotnet failed; see $Log`n$((Get-Content -LiteralPath $Log -Tail 35) -join "`n")" + } +} + +function Get-PointerReductions([IO.FileInfo[]]$Remaps) { + $reduce = [Collections.Generic.HashSet[string]]::new([StringComparer]::Ordinal) + $preserve = [Collections.Generic.HashSet[string]]::new([StringComparer]::Ordinal) + foreach ($file in $Remaps) { + foreach ($line in [IO.File]::ReadLines($file.FullName)) { + if ($line.StartsWith('REDUCE_PTR_LEVEL:', [StringComparison]::Ordinal)) { + $reduce.Add($line.Substring('REDUCE_PTR_LEVEL:'.Length)) | Out-Null + } + elseif ($line.StartsWith('PRESERVE_PTR_LEVEL:', [StringComparison]::Ordinal)) { + $preserve.Add($line.Substring('PRESERVE_PTR_LEVEL:'.Length)) | Out-Null + } + } + } + $reduce.ExceptWith($preserve) + return ,$reduce +} + +$provenancePath = "$BaselineDirectory\provenance.json" +$baseline = Get-Content -LiteralPath $provenancePath -Raw | ConvertFrom-Json +if ($baseline.toolingCommit -ne 'b5b7b26ed09d648766f07449af48c64ef0e99d13' -or + $baseline.sdkPackageVersion -ne '10.0.26100.7705') { + throw 'The OLD fixture must come from the supported tooling base and selected SDK.' +} +if ((Get-Sha256 "$BaselineDirectory\Windows.Win32.winmd") -ne $baseline.winmdSha256) { + throw 'The OLD winmd no longer matches its frozen provenance.' +} +$oldGenerated = "$BaselineDirectory\obj\generated" +$actualFiles = @(Get-ChildItem -LiteralPath $oldGenerated -Recurse -File) +if ($actualFiles.Count -ne $baseline.generatedFiles.Count) { + throw 'The complete OLD generated-source closure is required.' +} +foreach ($file in $baseline.generatedFiles) { + if ((Get-Sha256 "$oldGenerated\$($file.path)") -ne $file.sha256) { + throw "The OLD generated-source snapshot was modified: $($file.path)" + } +} +$toolFiles = @($baseline.toolFiles | ForEach-Object { + [ordered]@{ path = $_.path; sha256 = Get-Sha256 "$repo\$($_.path)" } +}) +$toolingChanged = @($baseline.toolFiles | Where-Object { + $expected = $_ + @($toolFiles | Where-Object { $_.path -eq $expected.path -and $_.sha256 -eq $expected.sha256 }).Count -ne 1 +}).Count -ne 0 +if ($toolingChanged -and !$ToolingControl) { + if (!$ToolingControlDirectory) { + throw 'Changed tooling requires a separately emitted frozen-input tooling control.' + } + $ToolingControlDirectory = [IO.Path]::GetFullPath($ToolingControlDirectory) + if (!$ToolingControlDirectory.StartsWith("$repo\artifacts\", [StringComparison]::OrdinalIgnoreCase)) { + throw 'The tooling control must be in this worktree.' + } + $control = Get-Content -LiteralPath "$ToolingControlDirectory\provenance.json" -Raw | ConvertFrom-Json + if ($control.kind -ne 'tooling-control' -or $control.oldWinmdSha256 -ne $baseline.winmdSha256 -or + $control.baselineProvenanceSha256 -ne (Get-Sha256 $provenancePath) -or + $control.newWinmdSha256 -ne (Get-Sha256 "$ToolingControlDirectory\Windows.Win32.winmd")) { + throw 'The tooling control does not bind this frozen OLD fixture.' + } + foreach ($file in $toolFiles) { + if (@($control.toolFiles | Where-Object { $_.path -eq $file.path -and $_.sha256 -eq $file.sha256 }).Count -ne 1) { + throw "The current tools differ from the verified tooling-control producer: $($file.path)" + } + } +} + +[IO.Directory]::CreateDirectory($OutputDirectory) | Out-Null +[IO.Directory]::CreateDirectory($SelectionDirectory) | Out-Null +Push-Location $repo +try { + . "$PSScriptRoot\CommonUtils.ps1" + Install-VsDevShell + if ($ToolingControl) { + [IO.Directory]::CreateDirectory("$OutputDirectory\obj") | Out-Null + Copy-Item -LiteralPath $oldGenerated -Destination "$OutputDirectory\obj" -Recurse + $generated = "$OutputDirectory\obj\generated" + $archive = "$OutputDirectory\inputs.zip" + & git archive --format=zip "--output=$archive" $baseline.toolingCommit -- ` + 'generation/WinSDK/emitter.settings.rsp' 'generation/WinSDK/requiredNamespacesForNames.rsp' ` + 'generation/WinSDK/documentationMappings.rsp' 'generation/WinSDK/autoTypes.json' + if ($LASTEXITCODE -ne 0) { + throw 'Could not materialize the pinned OLD emitter inputs.' + } + Expand-Archive -LiteralPath $archive -DestinationPath "$OutputDirectory\inputs" + $inputs = "$OutputDirectory\inputs\generation\WinSDK" + $winmd = "$OutputDirectory\Windows.Win32.winmd" + $arguments = @("$repo\bin\Release\net10.0\ClangSharpSourceToWinmd.dll", + '--sourceDir', $generated, '--arch', 'crossarch', '--version', '1.0.0.0', '--outputFileName', $winmd, + '--autoTypes', "$inputs\autoTypes.json", + "@$inputs\emitter.settings.rsp", "@$inputs\requiredNamespacesForNames.rsp", "@$inputs\documentationMappings.rsp", + "@$generated\emitter.functionPointerFixups.generated.rsp", "@$generated\emitter.autoFnPtr.crossarch.generated.rsp", + "@$generated\enumsMakeFlags.generated.rsp", "@$generated\enumsRemap.rsp") + Invoke-Dotnet $arguments "$OutputDirectory\emit.log" + Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', + '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd) "$OutputDirectory\comparison.log" + $receipt = [ordered]@{ + kind = 'tooling-control' + toolingCommit = $baseline.toolingCommit + sdkPackageVersion = $baseline.sdkPackageVersion + baselineProvenanceSha256 = Get-Sha256 $provenancePath + oldWinmdSha256 = $baseline.winmdSha256 + newWinmdSha256 = Get-Sha256 $winmd + sourceCommit = (& git rev-parse HEAD) + toolFiles = $toolFiles + frozenEmitterInputs = @(Get-ChildItem -LiteralPath $inputs -File | ForEach-Object { + [ordered]@{ path = $_.Name; sha256 = Get-Sha256 $_.FullName } + }) + } + [IO.File]::WriteAllText("$OutputDirectory\provenance.json", ($receipt | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) + return [pscustomobject]@{ Winmd = $winmd; Sha256 = $receipt.newWinmdSha256; Provenance = "$OutputDirectory\provenance.json" } + } + $selectedObj = "$SelectionDirectory\obj" + Invoke-Dotnet @('build', 'generation\WinSDK', '-c', 'Release', '-t:ScrapeHeaders', + "-p:ObjDir=$selectedObj", '-p:PartitionFilter=WinHttp%3BHttpServer', '-p:MaxProcessors=2', + '--no-restore', '--verbosity', 'minimal') "$OutputDirectory\scrape.log" + $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() + + $obj = "$OutputDirectory\obj" + [IO.Directory]::CreateDirectory($obj) | Out-Null + Copy-Item -LiteralPath $oldGenerated -Destination $obj -Recurse + $generated = "$obj\generated" + $overlays = @('x86\WinHttp.cs', 'x64\WinHttp.cs', 'arm64\WinHttp.cs', 'common\HttpServer.cs') + foreach ($path in $overlays) { + [IO.File]::Copy("$selectedObj\generated\$path", "$generated\$path", $true) + } + foreach ($name in @('filtered.headers.generated.rsp', 'filtered.constants.generated.rsp', 'filtered.emitter.generated.rsp')) { + if (Test-Path -LiteralPath "$selectedObj\generated\$name") { + [IO.File]::Copy("$selectedObj\generated\$name", "$generated\$name", $true) + } + elseif (Test-Path -LiteralPath "$generated\$name") { + throw "The selected build lost a filtered response file: $name" + } + } + + $baselineRemaps = @(Get-ChildItem "$BaselineDirectory\obj\scratch" -Recurse -Filter '*.remaps' -File) + $baselineReductions = Get-PointerReductions $baselineRemaps + $frozenReductions = @([IO.File]::ReadAllLines("$oldGenerated\emitter.autoFnPtr.crossarch.generated.rsp")) + if ($frozenReductions[0] -ne '--reducePointerLevel' -or + !$baselineReductions.SetEquals([string[]]($frozenReductions | Select-Object -Skip 1))) { + throw 'The baseline discovery inputs do not reproduce the frozen complete pointer-fixup response file.' + } + $remaps = @($baselineRemaps | Where-Object { $_.BaseName -notin @('WinHttp', 'HttpServer') }) + $remaps += @(Get-ChildItem "$selectedObj\scratch" -Recurse -Filter '*.remaps' -File) + $reduce = Get-PointerReductions $remaps + [IO.File]::WriteAllLines("$generated\emitter.autoFnPtr.crossarch.generated.rsp", + [string[]](@('--reducePointerLevel') + @($reduce | Sort-Object)), [Text.UTF8Encoding]::new($false)) + + $mapping = [IO.File]::ReadAllText("$oldGenerated\traversedFileToNamespace.rsp") + $oldRoot = "$repo\generation\WinSDK\RecompiledIdlHeaders" + if (!$mapping.Contains($oldRoot)) { + throw 'The frozen traversal map is not rooted in this baseline worktree.' + } + [IO.File]::WriteAllText("$generated\traversedFileToNamespace.rsp", + $mapping.Replace($oldRoot, $includeRoot), [Text.UTF8Encoding]::new($false)) + $project = "$repo\generation\WinSDK" + $constantArguments = @("$repo\bin\Release\net10.0\ConstantsScraper.dll", + '--headerTextFile', "$generated\ConstantsScraper.header.generated.txt", + '--scraperOutputDir', $generated, + "@$project\ConstantsScraper.settings.rsp", "@$project\requiredNamespacesForNames.rsp", + "@$repo\sources\GeneratorSdk\tools\assets\scraper\baseSettings.ConstantsScraper.rsp", + "@$generated\traversedFileToNamespace.rsp", '--enumsJson', "$project\enums.json") + if (Test-Path -LiteralPath "$generated\filtered.constants.generated.rsp") { + $constantArguments += "@$generated\filtered.constants.generated.rsp" + } + Invoke-Dotnet $constantArguments "$OutputDirectory\constants.log" + [IO.File]::WriteAllText("$generated\constants.scraped.txt", '') + [IO.File]::WriteAllText("$obj\prepared-sdk.txt", $includeRoot) + + $winmd = "$OutputDirectory\Windows.Win32.winmd" + Invoke-Dotnet @('build', 'generation\WinSDK', '-c', 'Release', '-t:EmitWinmd', + "-p:ObjDir=$obj", "-p:OutputWinmd=$winmd", '-p:SkipScraping=true', + '--no-restore', '--verbosity', 'minimal') "$OutputDirectory\emit.log" + Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', + '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd, + '--knownDiffsFile', "$project\patches\WinHttp.expected-differences.txt") "$OutputDirectory\comparison.log" + $receipt = [ordered]@{ + toolingCommit = $baseline.toolingCommit + sdkPackageVersion = $baseline.sdkPackageVersion + baselineProvenanceSha256 = Get-Sha256 $provenancePath + oldWinmdSha256 = $baseline.winmdSha256 + newWinmdSha256 = Get-Sha256 $winmd + preparedIncludeRoot = $includeRoot + preparedManifestSha256 = Get-Sha256 ([IO.Path]::Combine([IO.Path]::GetDirectoryName($includeRoot), 'manifest.json')) + overlaidHeaderSources = $overlays + sourceCommit = (& git rev-parse HEAD) + toolFiles = $toolFiles + toolingControl = $ToolingControlDirectory + expectedDifferencesSha256 = Get-Sha256 "$project\patches\WinHttp.expected-differences.txt" + sourceDiffSha256 = [Convert]::ToHexString([Security.Cryptography.SHA256]::HashData( + [Text.Encoding]::UTF8.GetBytes((& git diff --binary HEAD | Out-String)))) + generatedFiles = @(Get-ChildItem -LiteralPath $generated -Recurse -File | ForEach-Object { + [ordered]@{ path = [IO.Path]::GetRelativePath($generated, $_.FullName); sha256 = Get-Sha256 $_.FullName } + }) + pointerDiscoveryInputs = @($remaps | ForEach-Object { + [ordered]@{ path = [IO.Path]::GetRelativePath($repo, $_.FullName); sha256 = Get-Sha256 $_.FullName } + }) + } + [IO.File]::WriteAllText("$OutputDirectory\provenance.json", ($receipt | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) + [pscustomobject]@{ Winmd = $winmd; Sha256 = $receipt.newWinmdSha256; Provenance = "$OutputDirectory\provenance.json" } +} +finally { + Pop-Location +} diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 new file mode 100644 index 000000000..2be332d04 --- /dev/null +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -0,0 +1,249 @@ +#Requires -Version 7.0 + +[CmdletBinding()] +param( + [string]$Recipe = "$PSScriptRoot\..\generation\WinSDK\patches\WinHttp.json", + [string]$SourceRoot = "$PSScriptRoot\..\generation\WinSDK\RecompiledIdlHeaders", + [string]$SdkPackageRoot, + [string]$OutputRoot = "$PSScriptRoot\..\artifacts\prepared-sdk" +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest +$repoRoot = [IO.Path]::GetFullPath("$PSScriptRoot\..") + +function Get-Sha256([string]$Path) { + (Get-FileHash -LiteralPath $Path -Algorithm SHA256).Hash +} + +function Get-TextHash([string]$Text) { + [Convert]::ToHexString([Security.Cryptography.SHA256]::HashData([Text.Encoding]::UTF8.GetBytes($Text))) +} + +function Assert-OrdinaryPath([string]$Path) { + $current = [IO.Path]::GetFullPath($Path) + while ($current) { + if (Test-Path -LiteralPath $current) { + if ((Get-Item -LiteralPath $current -Force).Attributes -band [IO.FileAttributes]::ReparsePoint) { + throw "Reparse points are not permitted in a prepared-header path: $current" + } + } + $current = [IO.Path]::GetDirectoryName($current) + } +} + +function Get-DirectoryState([string]$Path) { + $entries = @(Get-ChildItem -LiteralPath $Path -Recurse -Force) + foreach ($entry in $entries) { + if ($entry.Attributes -band [IO.FileAttributes]::ReparsePoint) { + throw "Reparse points are not permitted in the header tree: $($entry.FullName)" + } + } + $files = @($entries | Where-Object { !$_.PSIsContainer } | ForEach-Object { + [pscustomobject]@{ + path = [IO.Path]::GetRelativePath($Path, $_.FullName) + sha256 = Get-Sha256 $_.FullName + } + } | Sort-Object -Property path -CaseSensitive) + [pscustomobject]@{ + files = $files + sha256 = Get-TextHash (($files | ForEach-Object { "$($_.path)`t$($_.sha256)" }) -join "`n") + } +} + +function Resolve-Child([string]$Root, [string]$RelativePath) { + if ([IO.Path]::IsPathRooted($RelativePath)) { + throw "Recipe paths must be relative: $RelativePath" + } + $path = [IO.Path]::GetFullPath([IO.Path]::Combine($Root, $RelativePath)) + if (!$path.StartsWith("$Root\", [StringComparison]::OrdinalIgnoreCase)) { + throw "Recipe path escapes its root: $RelativePath" + } + Assert-OrdinaryPath $path + $path +} + +$Recipe = [IO.Path]::GetFullPath($Recipe) +$SourceRoot = [IO.Path]::GetFullPath($SourceRoot).TrimEnd('\') +$OutputRoot = [IO.Path]::GetFullPath($OutputRoot).TrimEnd('\') +Assert-OrdinaryPath $Recipe +Assert-OrdinaryPath $SourceRoot +Assert-OrdinaryPath $OutputRoot +if ($OutputRoot -eq $SourceRoot -or $OutputRoot.StartsWith("$SourceRoot\", [StringComparison]::OrdinalIgnoreCase) -or + $SourceRoot.StartsWith("$OutputRoot\", [StringComparison]::OrdinalIgnoreCase)) { + throw 'The source and prepared-header roots must not overlap.' +} +if (!(Test-Path -LiteralPath $SourceRoot -PathType Container)) { + throw "Missing post-MIDL source tree: $SourceRoot" +} + +$config = Get-Content -LiteralPath $Recipe -Raw | ConvertFrom-Json +if ($config.schemaVersion -ne 1 -or $config.sourceStage -ne 'post-midl') { + throw 'Only schema 1 post-MIDL mirror recipes are supported. Apply pre-MIDL changes before compiling their IDL closure.' +} +if (!$SdkPackageRoot) { + $propsPath = "$repoRoot\obj\BuildTools\BuildTools.proj.nuget.g.props" + if (!(Test-Path -LiteralPath $propsPath)) { + throw 'Build BuildTools first to resolve the pinned SDK package.' + } + [xml]$props = Get-Content -LiteralPath $propsPath -Raw + $SdkPackageRoot = $props.SelectSingleNode("//*[local-name()='PkgMicrosoft_Windows_SDK_CPP']").InnerText +} +$SdkPackageRoot = [IO.Path]::GetFullPath($SdkPackageRoot).TrimEnd('\') +Assert-OrdinaryPath $SdkPackageRoot +[xml]$nuspec = Get-Content -LiteralPath "$SdkPackageRoot\microsoft.windows.sdk.cpp.nuspec" -Raw +$version = $nuspec.SelectSingleNode("//*[local-name()='metadata']/*[local-name()='version']").InnerText +if ($version -ne $config.sdkPackageVersion) { + throw "SDK package mismatch: expected $($config.sdkPackageVersion), found $version." +} + +if ($config.sourceGitTree) { + $expectedSource = [IO.Path]::GetFullPath("$repoRoot\generation\WinSDK\RecompiledIdlHeaders").TrimEnd('\') + if ($SourceRoot -ne $expectedSource) { + throw 'A Git-pinned mirror recipe must use this worktree''s RecompiledIdlHeaders.' + } + $tree = & git -C $repoRoot rev-parse 'HEAD:generation/WinSDK/RecompiledIdlHeaders' + if ($LASTEXITCODE -ne 0 -or $tree -ne $config.sourceGitTree) { + throw "Post-MIDL mirror Git identity does not match the recipe: $tree" + } + & git -C $repoRoot diff --quiet HEAD -- 'generation/WinSDK/RecompiledIdlHeaders' + if ($LASTEXITCODE -ne 0) { + throw 'The checked-in SDK mirror has local changes; prepare from the pinned bytes instead.' + } + $extra = & git -C $repoRoot ls-files --others --exclude-standard -- 'generation/WinSDK/RecompiledIdlHeaders' + if ($LASTEXITCODE -ne 0 -or $extra) { + throw 'The checked-in SDK mirror contains untracked files.' + } +} + +$recipeRoot = [IO.Path]::GetDirectoryName($Recipe) +foreach ($header in $config.headers) { + $source = Resolve-Child $SourceRoot $header.path + if ((Get-Sha256 $source) -ne $header.sourceSha256) { + throw "Post-MIDL preimage mismatch: $($header.path)" + } + $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath + if ((Get-Sha256 $sdk) -ne $header.sdkSha256) { + throw "Selected SDK input mismatch: $($header.sdkPath)" + } +} +$patches = @($config.patches | ForEach-Object { + if (!$_.StartsWith('post-midl\', [StringComparison]::Ordinal)) { + throw "Patch is on the wrong side of the MIDL boundary: $_" + } + $path = Resolve-Child $recipeRoot $_ + if (!(Test-Path -LiteralPath $path -PathType Leaf)) { + throw "Missing patch: $path" + } + $text = [IO.File]::ReadAllText($path) + if ($text -match '(?m)^(?:old mode|new mode|new file mode|deleted file mode|rename |copy |GIT binary patch|(?:---|\+\+\+) /dev/null)') { + throw "A header patch must not change file identity or mode: $_" + } + $fileHeaders = [regex]::Matches($text, '(?m)^(---|\+\+\+) ([^\r\n]+)') + if (!$fileHeaders.Count -or $fileHeaders.Count % 2) { + throw "A patch must contain complete old/new header pairs: $_" + } + for ($index = 0; $index -lt $fileHeaders.Count; $index += 2) { + $before = $fileHeaders[$index] + $after = $fileHeaders[$index + 1] + $oldPrefix = 'a/generation/WinSDK/RecompiledIdlHeaders/' + $newPrefix = 'b/generation/WinSDK/RecompiledIdlHeaders/' + if ($before.Groups[1].Value -ne '---' -or $after.Groups[1].Value -ne '+++' -or + !$before.Groups[2].Value.StartsWith($oldPrefix, [StringComparison]::Ordinal) -or + !$after.Groups[2].Value.StartsWith($newPrefix, [StringComparison]::Ordinal)) { + throw "Patch headers are not rooted in the admitted SDK mirror: $_" + } + $oldPath = $before.Groups[2].Value.Substring($oldPrefix.Length) + $newPath = $after.Groups[2].Value.Substring($newPrefix.Length) + if ($oldPath -cne $newPath -or $newPath.Replace('/', '\') -notin @($config.headers.path)) { + throw "A patch must modify one admitted header without changing its identity: $_" + } + } + $statistics = @(& git -C $repoRoot apply -p4 --numstat -- $path) + if ($LASTEXITCODE -ne 0 -or !$statistics.Count) { + throw "Invalid or empty patch: $_" + } + foreach ($statistic in $statistics) { + if ($statistic -notmatch '^\d+\t\d+\t(.+)$' -or + $Matches[1].Replace('/', '\') -notin @($config.headers.path)) { + throw "Patch changes a path outside its reviewed header set: $statistic" + } + } + [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path } +}) +if (@($patches.path | Sort-Object -Unique).Count -ne $patches.Count) { + throw 'A patch is listed more than once.' +} + +[IO.Directory]::CreateDirectory($OutputRoot) | Out-Null +$lock = [IO.File]::Open("$OutputRoot\prepare.lock", [IO.FileMode]::OpenOrCreate, [IO.FileAccess]::ReadWrite, [IO.FileShare]::None) +$staging = $null +try { + $sourceState = Get-DirectoryState $SourceRoot + $identity = Get-TextHash ((Get-Sha256 $Recipe) + (Get-Sha256 $PSCommandPath) + $sourceState.sha256 + + (($patches | ForEach-Object { "$($_.path):$($_.sha256)" }) -join "`n")) + $destination = "$OutputRoot\$identity" + $manifestPath = "$destination\manifest.json" + Assert-OrdinaryPath $manifestPath + Assert-OrdinaryPath "$destination\headers" + if (Test-Path -LiteralPath $destination) { + if (!(Test-Path -LiteralPath $manifestPath -PathType Leaf)) { + throw "Incomplete published header cache: $destination" + } + $manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json + $actual = Get-DirectoryState "$destination\headers" + if ($manifest.identity -ne $identity -or $manifest.preparedSha256 -ne $actual.sha256) { + throw "Published header cache was modified: $destination. Do not repair a tree that a scraper may be reading." + } + return [pscustomobject]@{ IncludeRoot = "$destination\headers"; Manifest = $manifestPath; Identity = $identity; Reused = $true } + } + + $staging = "$OutputRoot\staging-$([Guid]::NewGuid().ToString('N'))" + [IO.Directory]::CreateDirectory("$staging\headers") | Out-Null + foreach ($file in $sourceState.files) { + $target = [IO.Path]::Combine("$staging\headers", $file.path) + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($target)) | Out-Null + [IO.File]::Copy([IO.Path]::Combine($SourceRoot, $file.path), $target) + } + if ((Get-DirectoryState "$staging\headers").sha256 -ne $sourceState.sha256) { + throw 'The source header tree changed while it was being copied.' + } + foreach ($patch in $patches) { + $arguments = @('-C', $repoRoot, 'apply', '--unsafe-paths', '-p4', "--directory=$staging\headers", '--whitespace=error-all') + $output = & git @arguments --check -- $patch.fullPath 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Patch preflight failed for $($patch.path):`n$($output -join "`n")" + } + $output = & git @arguments -- $patch.fullPath 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Patch failed for $($patch.path):`n$($output -join "`n")" + } + } + if ((Get-DirectoryState $SourceRoot).sha256 -ne $sourceState.sha256) { + throw 'The source header tree changed during preparation.' + } + $prepared = Get-DirectoryState "$staging\headers" + $manifest = [ordered]@{ + schemaVersion = 1 + identity = $identity + sdkPackageVersion = $version + sourceStage = $config.sourceStage + sourceGitTree = $config.sourceGitTree + sourceSha256 = $sourceState.sha256 + recipeSha256 = Get-Sha256 $Recipe + preparationSha256 = Get-Sha256 $PSCommandPath + patches = @($patches | Select-Object path, sha256) + preparedSha256 = $prepared.sha256 + files = $prepared.files + } + [IO.File]::WriteAllText("$staging\manifest.json", ($manifest | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) + [IO.Directory]::Move($staging, $destination) + $staging = $null + [pscustomobject]@{ IncludeRoot = "$destination\headers"; Manifest = $manifestPath; Identity = $identity; Reused = $false } +} +finally { + if ($staging -and (Test-Path -LiteralPath $staging)) { + Remove-Item -LiteralPath $staging -Recurse -Force + } + $lock.Dispose() +} diff --git a/sources/WinmdUtils/Program.cs b/sources/WinmdUtils/Program.cs index 74f262eaf..1b2b68ba5 100644 --- a/sources/WinmdUtils/Program.cs +++ b/sources/WinmdUtils/Program.cs @@ -574,7 +574,8 @@ public static int ShowDuplicateConstants(FileInfo winmd, string[] allowItem, ICo bool dupsFound = false; foreach (var pair in nameToOwner) { - if (allowTable.Contains(pair.Key)) + string ownedName = $"{pair.Key}={string.Join(",", pair.Value.OrderBy(owner => owner, StringComparer.Ordinal))}"; + if (allowTable.Contains(pair.Key) || allowTable.Contains(ownedName)) { continue; } diff --git a/tests/MetadataUtils.Tests/WinmdComparisonTests.cs b/tests/MetadataUtils.Tests/WinmdComparisonTests.cs index f995760f7..4ca108359 100644 --- a/tests/MetadataUtils.Tests/WinmdComparisonTests.cs +++ b/tests/MetadataUtils.Tests/WinmdComparisonTests.cs @@ -88,6 +88,27 @@ public void CompareAcceptsIdentityAndReorderedRepeatableAttributes(bool reorder) Assert.Equal(0, WinmdUtilsProgram.Program.CompareWinmds(first, second, null, null, console)); } + [Theory] + [InlineData("SCHEME_HTTP=Alpha.NativeScheme,Beta.NativeScheme", false, 0)] + [InlineData("SCHEME_HTTP=Alpha.NativeScheme,Beta.Other", false, -1)] + [InlineData("SCHEME_HTTP=Alpha.NativeScheme,Beta.NativeScheme", true, -1)] + [InlineData("SCHEME_HTTP", false, 0)] + [InlineData("", false, -1)] + public void DuplicateConstantExceptionsBindTheExactOwnerSet(string allowed, bool thirdOwner, int expected) + { + using var fixture = new ComparisonFixture(); + const string source = @" +namespace Alpha { public enum NativeScheme { SCHEME_HTTP = 1 } } +namespace Beta { public enum NativeScheme { SCHEME_HTTP = 3 } }"; + var image = fixture.Emit("duplicates", source + (thirdOwner + ? "namespace Gamma { public enum NativeScheme { SCHEME_HTTP = 9 } }" + : "")); + var console = new TestConsole(); + Assert.Equal(expected, WinmdUtilsProgram.Program.ShowDuplicateConstants(image, new[] { allowed }, console)); + if (expected != 0) + Assert.Contains("SCHEME_HTTP", console.Out.ToString()); + } + private sealed class ComparisonFixture : IDisposable { private readonly string directory = Path.Combine(Path.GetTempPath(), "WinmdComparisonTests-" + Guid.NewGuid().ToString("N")); diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs new file mode 100644 index 000000000..43b363bdc --- /dev/null +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -0,0 +1,283 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Text; +using System.Text.Json; +using Xunit; + +namespace Win32MetadataScraperTests +{ + public class PreparedSdkHeadersTests + { + [Fact] + public void PreparationPreservesBytesAndReusesAnImmutableCacheFromAnyWorkingDirectory() + { + using var fixture = new Fixture(); + byte[] original = File.ReadAllBytes(fixture.Header); + byte[] unrelated = File.ReadAllBytes(fixture.Unrelated); + var first = fixture.Prepare(); + Assert.False(first.Reused); + Assert.Equal(original, File.ReadAllBytes(fixture.Header)); + Assert.Equal(unrelated, File.ReadAllBytes(Path.Combine(first.IncludeRoot, "shared", "unrelated.h"))); + Assert.Equal(Encoding.ASCII.GetBytes(Fixture.Before.Replace("VALUE 1", "VALUE 2")), + File.ReadAllBytes(Path.Combine(first.IncludeRoot, "um", "sample.h"))); + + var second = fixture.Prepare(Path.Combine(fixture.RepositoryRoot, "generation", "WinSDK")); + Assert.True(second.Reused); + Assert.Equal(first.Identity, second.Identity); + Assert.Equal(first.IncludeRoot, second.IncludeRoot); + + fixture.WritePatch(3); + var changed = fixture.Prepare(); + Assert.False(changed.Reused); + Assert.NotEqual(first.Identity, changed.Identity); + Assert.Contains("VALUE 2", File.ReadAllText(Path.Combine(first.IncludeRoot, "um", "sample.h"))); + Assert.Contains("VALUE 3", File.ReadAllText(Path.Combine(changed.IncludeRoot, "um", "sample.h"))); + } + + [Fact] + public void PublishedCacheTamperingIsRejectedRatherThanRepaired() + { + using var fixture = new Fixture(); + var prepared = fixture.Prepare(); + string header = Path.Combine(prepared.IncludeRoot, "um", "sample.h"); + File.AppendAllText(header, "// changed\r\n"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("Published header cache was modified", result.Error); + Assert.EndsWith("// changed\r\n", File.ReadAllText(header)); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + } + + [Fact] + public void FailedPatchApplicationPublishesNothingAndLeavesTheSourceAlone() + { + using var fixture = new Fixture(); + fixture.WritePatch(2, before: 99); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("Patch preflight failed", result.Error); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Theory] + [InlineData("stage", "MIDL")] + [InlineData("sdk", "SDK package mismatch")] + [InlineData("preimage", "preimage mismatch")] + [InlineData("sdk-header", "Selected SDK input mismatch")] + public void MismatchedInputsFailBeforePublication(string mutation, string diagnostic) + { + using var fixture = new Fixture(); + switch (mutation) + { + case "stage": + fixture.WriteRecipe(stage: "pre-midl"); + break; + case "sdk": + fixture.WriteRecipe(version: "0.0.0.0"); + break; + case "preimage": + File.AppendAllText(fixture.Header, "// changed\r\n"); + break; + case "sdk-header": + File.AppendAllText(fixture.SdkHeader, "// changed\r\n"); + break; + } + + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains(diagnostic, result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Theory] + [InlineData("um/other.h", null)] + [InlineData("../outside.h", null)] + [InlineData("um/sample.h", "new file mode 100644\n")] + [InlineData("um/sample.h", "old mode 100644\nnew mode 100755\n")] + [InlineData("um/sample.h", "rename from sample.h\nrename to other.h\n")] + public void UnadmittedPatchPathsAndFileIdentityChangesAreRejected(string path, string metadata) + { + using var fixture = new Fixture(); + fixture.WritePatch(2, path: path, metadata: metadata); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void DuplicatePatchesAndRecipePathEscapesAreRejected() + { + using var fixture = new Fixture(); + fixture.WriteRecipe(patches: new[] { Fixture.PatchPath, Fixture.PatchPath }); + var duplicate = fixture.Run(); + Assert.NotEqual(0, duplicate.ExitCode); + Assert.Contains("more than once", duplicate.Error); + + fixture.WriteRecipe(patches: new[] { @"post-midl\..\..\outside.patch" }); + var escape = fixture.Run(); + Assert.NotEqual(0, escape.ExitCode); + Assert.Contains("escapes its root", escape.Error); + } + + [Fact] + public void DifferentOldAndNewPatchTargetsAreRejected() + { + using var fixture = new Fixture(); + fixture.WritePatch(2, originalPath: "um/other.h"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("without changing its identity", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + } + + [Fact] + public void ConcurrentPreparationCannotMutateAnotherTransactionsTree() + { + using var fixture = new Fixture(); + using var heldLock = File.Open(Path.Combine(fixture.Output, "prepare.lock"), + FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + } + + private sealed class Fixture : IDisposable + { + internal const string Before = "#ifndef SAMPLE_H\r\n#define SAMPLE_H\r\n#define VALUE 1\r\n#endif\r\n"; + internal const string PatchPath = @"post-midl\um\sample.patch"; + private readonly string root; + private readonly string source; + private readonly string sdk; + private readonly string recipe; + private readonly string patch; + + internal Fixture() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory != null && !File.Exists(Path.Combine(directory.FullName, "scripts", "Prepare-SdkHeaders.ps1"))) + { + directory = directory.Parent; + } + + RepositoryRoot = directory?.FullName ?? throw new InvalidOperationException("Repository scripts were not found."); + this.root = Path.Combine(RepositoryRoot, "artifacts", "prepared-header-tests", Guid.NewGuid().ToString("N")); + this.source = Path.Combine(this.root, "source"); + this.sdk = Path.Combine(this.root, "sdk"); + this.recipe = Path.Combine(this.root, "recipe.json"); + this.patch = Path.Combine(this.root, PatchPath); + Header = Path.Combine(this.source, "um", "sample.h"); + Unrelated = Path.Combine(this.source, "shared", "unrelated.h"); + SdkHeader = Path.Combine(this.sdk, "c", "include", "sample.h"); + Output = Path.Combine(this.root, "output"); + foreach (string path in new[] { Header, Unrelated, SdkHeader, this.patch, Path.Combine(Output, "placeholder") }) + { + Directory.CreateDirectory(Path.GetDirectoryName(path)); + } + + File.WriteAllBytes(Header, Encoding.ASCII.GetBytes(Before)); + File.WriteAllBytes(Unrelated, new byte[] { 0xff, 0xfe, 0x61, 0, 0x0d, 0, 0x0a, 0 }); + File.WriteAllBytes(SdkHeader, Encoding.ASCII.GetBytes(Before)); + File.WriteAllText(Path.Combine(this.sdk, "microsoft.windows.sdk.cpp.nuspec"), + "10.0.26100.7705"); + WritePatch(2); + WriteRecipe(); + } + + internal string RepositoryRoot { get; } + internal string Header { get; } + internal string Unrelated { get; } + internal string SdkHeader { get; } + internal string Output { get; } + + internal void WritePatch(int after, int before = 1, string path = "um/sample.h", string metadata = null, string originalPath = null) + { + string prefix = "generation/WinSDK/RecompiledIdlHeaders/" + path; + string oldPrefix = "generation/WinSDK/RecompiledIdlHeaders/" + (originalPath ?? path); + string text = $"diff --git a/{oldPrefix} b/{prefix}\n{metadata}" + + $"--- a/{oldPrefix}\n+++ b/{prefix}\n@@ -1,4 +1,4 @@\n #ifndef SAMPLE_H\r\n #define SAMPLE_H\r\n" + + $"-#define VALUE {before}\r\n+#define VALUE {after}\r\n #endif\r\n"; + File.WriteAllText(this.patch, text, new UTF8Encoding(false)); + } + + internal void WriteRecipe(string stage = "post-midl", string version = "10.0.26100.7705", string[] patches = null) + { + File.WriteAllText(this.recipe, JsonSerializer.Serialize(new + { + schemaVersion = 1, + sdkPackageVersion = version, + sourceStage = stage, + sourceGitTree = "", + headers = new[] + { + new + { + path = @"um\sample.h", + sourceSha256 = Hash(Encoding.ASCII.GetBytes(Before)), + sdkPath = @"c\include\sample.h", + sdkSha256 = Hash(Encoding.ASCII.GetBytes(Before)), + }, + }, + patches = patches ?? new[] { PatchPath }, + })); + } + + internal PreparationResult Prepare(string workingDirectory = null) + { + var result = Run(workingDirectory); + Assert.True(result.ExitCode == 0, result.Error + result.Output); + return JsonSerializer.Deserialize(result.Output); + } + + internal ProcessResult Run(string workingDirectory = null) + { + static string Quote(string value) => "'" + value.Replace("'", "''") + "'"; + var start = new ProcessStartInfo("pwsh") + { + WorkingDirectory = workingDirectory ?? RepositoryRoot, + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + }; + foreach (string argument in new[] { "-NoLogo", "-NoProfile", "-NonInteractive", "-Command" }) + { + start.ArgumentList.Add(argument); + } + + start.ArgumentList.Add("$ErrorActionPreference = 'Stop'; & " + + Quote(Path.Combine(RepositoryRoot, "scripts", "Prepare-SdkHeaders.ps1")) + + " -Recipe " + Quote(this.recipe) + " -SourceRoot " + Quote(this.source) + + " -SdkPackageRoot " + Quote(this.sdk) + " -OutputRoot " + Quote(Output) + + " | ConvertTo-Json -Compress"); + using var process = Process.Start(start); + var output = process.StandardOutput.ReadToEndAsync(); + var error = process.StandardError.ReadToEndAsync(); + if (!process.WaitForExit(30000)) + { + process.Kill(entireProcessTree: true); + throw new TimeoutException("Header preparation did not terminate."); + } + + return new ProcessResult(process.ExitCode, output.GetAwaiter().GetResult(), error.GetAwaiter().GetResult()); + } + + public void Dispose() => Directory.Delete(this.root, recursive: true); + + private static string Hash(byte[] bytes) => Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(bytes)); + } + + public sealed class PreparationResult + { + public string IncludeRoot { get; set; } + public string Identity { get; set; } + public bool Reused { get; set; } + } + + private sealed record ProcessResult(int ExitCode, string Output, string Error); + } +} diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs new file mode 100644 index 000000000..e16004428 --- /dev/null +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -0,0 +1,600 @@ +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Reflection.Metadata; +using System.Reflection.Metadata.Ecma335; +using System.Reflection.PortableExecutable; +using System.Text.Json; +using Xunit; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace Win32MetadataScraperTests +{ + public class WinHttpMigrationTests + { + internal const string WinHttpNamespace = "Windows.Win32.Networking.WinHttp"; + private const string MetadataNamespace = "Windows.Win32.Foundation.Metadata"; + private readonly ITestOutputHelper output; + private static readonly SignatureNames Signatures = new SignatureNames(); + private static readonly (string Owner, string Member, string Enum, string Native)[] Associations = + { + ("WinHttpOpenRequest", "dwFlags", "WINHTTP_OPEN_REQUEST_FLAGS", "UInt32"), + ("WinHttpOpen", "dwAccessType", "WINHTTP_ACCESS_TYPE", "UInt32"), + ("WinHttpCreateUrl", "dwFlags", "WIN_HTTP_CREATE_URL_FLAGS", "UInt32"), + ("WINHTTP_PROXY_INFO", "dwAccessType", "WINHTTP_ACCESS_TYPE", "UInt32"), + ("WINHTTP_CREDS", "dwAuthScheme", "WINHTTP_CREDS_AUTHSCHEME", "UInt32"), + ("WINHTTP_CREDS_EX", "dwAuthScheme", "WINHTTP_CREDS_AUTHSCHEME", "UInt32"), + ("URL_COMPONENTS", "nScheme", "WINHTTP_INTERNET_SCHEME", "Int32"), + ("WINHTTP_PROXY_RESULT_ENTRY", "ProxyScheme", "WINHTTP_INTERNET_SCHEME", "Int32"), + }; + + public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; + + [MigrationFact] + public void CompleteNewImageClosesConstructorsAndFrozenOldDefectIsExplicit() + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + Assert.Equal(37314, old.Reader.TypeDefinitions.Count); + Assert.Equal(old.Reader.TypeDefinitions.Count, current.Reader.TypeDefinitions.Count); + var defect = Assert.ThrowsAny(() => AssertClosure(old.Reader)); + Assert.Contains("Unresolved local attribute constructor: " + MetadataNamespace + ".SupportedOSPlatformAttribute", defect.Message); + Assert.Contains("definitions: 0|0|1|Void|String", defect.Message); + AssertClosure(current.Reader); + } + + [MigrationFact] + public void FrozenInputToolingControlChangesOnlyMissingConstructorInstanceBits() + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); + Assert.Equal(old.Reader.TypeDefinitions.Count, control.Reader.TypeDefinitions.Count); + AssertClosure(control.Reader); + var before = Types(old.Reader); + var after = Types(control.Reader); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + int corrected = 0, constructors = 0; + foreach (var entry in before) + { + var original = SnapshotType(old.Reader, entry.Value); + var expected = SnapshotType(old.Reader, entry.Value, correctConstructorInstanceBits: true); + Assert.Equal(expected, SnapshotType(control.Reader, after[entry.Key])); + corrected += original == expected ? 0 : 1; + constructors += entry.Value.GetMethods().Select(old.Reader.GetMethodDefinition).Count(method => + old.Reader.GetString(method.Name) == ".ctor" && !method.Attributes.HasFlag(MethodAttributes.Static) && + !method.DecodeSignature(Signatures, null).Header.IsInstance); + } + Assert.Equal(39, constructors); + Assert.Equal(39, corrected); + this.output.WriteLine($"Frozen-input tooling control: {constructors} constructor rows in {corrected} types gain HASTHIS; all other type snapshots are identical."); + } + + [MigrationFact] + public void EveryPhysicalTypeOutsideWinHttpMatchesTheCorrectedToolingControl() + { + using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + var before = Types(control.Reader); + var after = Types(current.Reader); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + int unchanged = 0; + foreach (var entry in before.Where(entry => !entry.Key.StartsWith(WinHttpNamespace + ".", StringComparison.Ordinal))) + { + Assert.Equal(SnapshotType(control.Reader, entry.Value), SnapshotType(current.Reader, after[entry.Key])); + unchanged++; + } + this.output.WriteLine($"Unmigrated physical type snapshots unchanged: {unchanged}."); + } + + [MigrationTheory] + [InlineData(1)] + [InlineData(2)] + [InlineData(4)] + public void HeaderFactsReachEveryPhysicalArchitecture(int architecture) + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + var oldApis = Methods(old.Reader, WinHttpNamespace, "Apis", architecture); + var newApis = Methods(current.Reader, WinHttpNamespace, "Apis", architecture); + Assert.Equal(59, oldApis.Count); + Assert.Equal(oldApis.Keys.OrderBy(name => name), newApis.Keys.OrderBy(name => name)); + int imports = 0, os = 0, lastError = 0; + foreach (var entry in oldApis) + { + var before = entry.Value; + var after = newApis[entry.Key]; + Assert.Equal(before.Attributes, after.Attributes); + Assert.Equal(before.ImplAttributes, after.ImplAttributes); + Assert.Equal(Import(old.Reader, before), Import(current.Reader, after)); + var import = after.GetImport(); + string module = import.Module.IsNil ? "" : current.Reader.GetString(current.Reader.GetModuleReference(import.Module).Name); + imports += module == "WINHTTP.dll" ? 1 : 0; + lastError += import.Attributes.HasFlag(MethodImportAttributes.SetLastError) ? 1 : 0; + Assert.Equal(AttributeValues(old.Reader, before.GetCustomAttributes(), "SupportedOSPlatformAttribute"), + AttributeValues(current.Reader, after.GetCustomAttributes(), "SupportedOSPlatformAttribute")); + os += AttributeValues(current.Reader, after.GetCustomAttributes(), "SupportedOSPlatformAttribute").Length; + Assert.Equal(before.DecodeSignature(Signatures, null).ReturnType, after.DecodeSignature(Signatures, null).ReturnType); + var oldParameters = before.GetParameters().Select(old.Reader.GetParameter).ToDictionary(parameter => parameter.SequenceNumber); + var newParameters = after.GetParameters().Select(current.Reader.GetParameter).ToDictionary(parameter => parameter.SequenceNumber); + Assert.Equal(oldParameters.Keys.OrderBy(value => value), newParameters.Keys.OrderBy(value => value)); + foreach (var parameter in oldParameters) + { + Assert.Equal(old.Reader.GetString(parameter.Value.Name), current.Reader.GetString(newParameters[parameter.Key].Name)); + Assert.Equal(parameter.Value.Attributes, newParameters[parameter.Key].Attributes); + } + } + + Assert.Equal(59, imports); + Assert.Equal(38, os); + Assert.Equal(28, lastError); + foreach (var association in Associations) + { + if (newApis.TryGetValue(association.Owner, out var method)) + { + var parameter = method.GetParameters().Select(current.Reader.GetParameter) + .Single(value => current.Reader.GetString(value.Name) == association.Member); + Assert.Equal(new[] { association.Enum }, AttributeValues(current.Reader, parameter.GetCustomAttributes(), "AssociatedEnumAttribute")); + Assert.Equal(association.Native, method.DecodeSignature(Signatures, null).ParameterTypes[parameter.SequenceNumber - 1]); + } + else + { + var record = Type(current.Reader, association.Owner, architecture); + var field = record.GetFields().Select(current.Reader.GetFieldDefinition) + .Single(value => current.Reader.GetString(value.Name) == association.Member); + Assert.Equal(new[] { association.Enum }, AttributeValues(current.Reader, field.GetCustomAttributes(), "AssociatedEnumAttribute")); + Assert.Equal(association.Native, field.DecodeSignature(Signatures, null)); + var oldRecord = Type(old.Reader, association.Owner, architecture); + Assert.Equal(oldRecord.GetLayout().Size, record.GetLayout().Size); + Assert.Equal(oldRecord.GetLayout().PackingSize, record.GetLayout().PackingSize); + Assert.Equal(oldRecord.Attributes, record.Attributes); + Assert.Equal(oldRecord.GetFields().Select(old.Reader.GetFieldDefinition).Select(value => old.Reader.GetString(value.Name)), + record.GetFields().Select(current.Reader.GetFieldDefinition).Select(value => current.Reader.GetString(value.Name))); + } + } + + var buffer = newApis["WinHttpQueryHeadersEx"].GetParameters().Select(current.Reader.GetParameter) + .Single(parameter => current.Reader.GetString(parameter.Name) == "pBuffer"); + Assert.Single(buffer.GetCustomAttributes().Where(handle => AttributeName(current.Reader, handle) == "ContainsInteriorPointersAttribute")); + Assert.Contains(buffer.GetCustomAttributes(), handle => AttributeName(current.Reader, handle) == "MemorySizeAttribute"); + Assert.True(buffer.Attributes.HasFlag(ParameterAttributes.Out)); + Assert.True(buffer.Attributes.HasFlag(ParameterAttributes.Optional)); + Assert.Equal("Void*", newApis["WinHttpOpen"].DecodeSignature(Signatures, null).ReturnType); + Assert.DoesNotContain(current.Reader.TypeDefinitions, handle => FullName(current.Reader, handle) == WinHttpNamespace + ".HINTERNET"); + Assert.DoesNotContain(current.Reader.TypeDefinitions, handle => FullName(current.Reader, handle) == WinHttpNamespace + ".LPWINHTTP_STATUS_CALLBACK"); + Assert.Equal(SnapshotType(old.Reader, Type(old.Reader, "WINHTTP_STATUS_CALLBACK", architecture)), + SnapshotType(current.Reader, Type(current.Reader, "WINHTTP_STATUS_CALLBACK", architecture))); + } + + [MigrationTheory] + [InlineData(1)] + [InlineData(2)] + [InlineData(4)] + public void HeaderEnumsUseNativeNamesValuesAndUnderlyingTypes(int architecture) + { + using var image = Open("WINHTTP_MIGRATION_NEW"); + var reader = image.Reader; + Check("WINHTTP_OPEN_REQUEST_FLAGS", "UInt32", true, new Dictionary + { + ["WINHTTP_FLAG_BYPASS_PROXY_CACHE"] = 0x100, ["WINHTTP_FLAG_ESCAPE_DISABLE"] = 0x40, + ["WINHTTP_FLAG_ESCAPE_DISABLE_QUERY"] = 0x80, ["WINHTTP_FLAG_ESCAPE_PERCENT"] = 4, + ["WINHTTP_FLAG_NULL_CODEPAGE"] = 8, ["WINHTTP_FLAG_REFRESH"] = 0x100, ["WINHTTP_FLAG_SECURE"] = 0x800000, + }); + Check("WIN_HTTP_CREATE_URL_FLAGS", "UInt32", false, new Dictionary + { + ["ICU_ESCAPE"] = 0x80000000, ["ICU_REJECT_USERPWD"] = 0x4000, ["ICU_DECODE"] = 0x10000000, + }); + Check("WINHTTP_ACCESS_TYPE", "UInt32", false, new Dictionary + { + ["WINHTTP_ACCESS_TYPE_NO_PROXY"] = 1, ["WINHTTP_ACCESS_TYPE_DEFAULT_PROXY"] = 0, + ["WINHTTP_ACCESS_TYPE_NAMED_PROXY"] = 3, ["WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY"] = 4, + }); + Check("WINHTTP_CREDS_AUTHSCHEME", "UInt32", false, new Dictionary + { + ["WINHTTP_AUTH_SCHEME_BASIC"] = 1, ["WINHTTP_AUTH_SCHEME_NTLM"] = 2, ["WINHTTP_AUTH_SCHEME_NEGOTIATE"] = 16, + }); + Check("WINHTTP_INTERNET_SCHEME", "Int32", false, new Dictionary + { + ["INTERNET_SCHEME_HTTP"] = 1, ["INTERNET_SCHEME_HTTPS"] = 2, + ["INTERNET_SCHEME_FTP"] = 3, ["INTERNET_SCHEME_SOCKS"] = 4, + }); + var apis = Type(reader, "Apis", architecture); + foreach (var port in new[] { ("INTERNET_DEFAULT_PORT", 0), ("INTERNET_DEFAULT_HTTP_PORT", 80), ("INTERNET_DEFAULT_HTTPS_PORT", 443) }) + { + var field = apis.GetFields().Select(reader.GetFieldDefinition).Single(value => reader.GetString(value.Name) == port.Item1); + Assert.Equal("UInt16", field.DecodeSignature(Signatures, null)); + Assert.Equal(port.Item2, reader.GetBlobReader(reader.GetConstant(field.GetDefaultValue()).Value).ReadUInt16()); + } + + void Check(string name, string underlying, bool flags, Dictionary expected) + { + var type = Type(reader, name, architecture); + Assert.Equal("System.Enum", FullName(reader, type.BaseType)); + Assert.Equal(flags, type.GetCustomAttributes().Any(handle => AttributeName(reader, handle) == "FlagsAttribute")); + Assert.DoesNotContain(type.GetCustomAttributes(), handle => AttributeName(reader, handle) == "ScopedEnumAttribute"); + var fields = type.GetFields().Select(reader.GetFieldDefinition).ToArray(); + Assert.Equal(underlying, fields.Single(field => reader.GetString(field.Name) == "value__").DecodeSignature(Signatures, null)); + var values = fields.Where(field => !field.GetDefaultValue().IsNil).ToDictionary(field => reader.GetString(field.Name), field => + { + var constant = reader.GetConstant(field.GetDefaultValue()); + var blob = reader.GetBlobReader(constant.Value); + return constant.TypeCode == ConstantTypeCode.UInt32 ? (long)blob.ReadUInt32() : blob.ReadInt32(); + }); + Assert.Equal(expected.OrderBy(value => value.Key), values.OrderBy(value => value.Key)); + } + } + + [MigrationFact] + public void SharedHeaderAndUnmigratedWinInetMetadataStayUnchanged() + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + foreach (string ns in new[] { "Windows.Win32.Networking.HttpServer", "Windows.Win32.Networking.WinInet" }) + { + var before = SnapshotNamespace(old.Reader, ns); + var after = SnapshotNamespace(current.Reader, ns); + Assert.NotEmpty(before); + Assert.Equal(before, after); + } + } + + [MigrationFact] + public void EmittedWinHttpScopeHasNoLegacySemanticFallback() + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + string root = RepositoryRoot; + var names = Methods(old.Reader, WinHttpNamespace, "Apis", 2).Keys.ToHashSet(StringComparer.Ordinal); + foreach (string file in new[] { "libMappings.rsp", "libMappingsManual.rsp", "supportedOS.rsp", "WithSetLastError.rsp", "emitter.settings.rsp" }) + { + foreach (string line in File.ReadLines(Path.Combine(root, "generation", "WinSDK", file))) + { + string target = line.Split('=')[0].Split(new[] { "::" }, StringSplitOptions.None)[0]; + Assert.DoesNotContain(target, names); + } + } + + using var enums = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "enums.json"))); + var definitions = Associations.Select(value => value.Enum).ToHashSet(StringComparer.Ordinal); + foreach (var item in enums.RootElement.GetProperty("items").EnumerateArray()) + { + if (item.TryGetProperty("name", out var name)) + Assert.DoesNotContain(name.GetString(), definitions); + if (item.TryGetProperty("uses", out var uses)) + { + foreach (var use in uses.EnumerateArray()) + { + if (use.TryGetProperty("method", out var method)) + Assert.DoesNotContain(method.GetString(), names); + if (use.TryGetProperty("struct", out var record)) + Assert.DoesNotContain(record.GetString(), Associations.Select(value => value.Owner)); + } + } + } + + string constants = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "ConstantsScraper.settings.rsp")); + foreach (string name in new[] { "INTERNET_DEFAULT_PORT", "INTERNET_DEFAULT_HTTP_PORT", "INTERNET_DEFAULT_HTTPS_PORT", + "INTERNET_SCHEME_HTTP", "INTERNET_SCHEME_HTTPS", "INTERNET_SCHEME_FTP", "INTERNET_SCHEME_SOCKS" }) + Assert.DoesNotContain(name, constants); + Assert.DoesNotContain("LPWINHTTP_STATUS_CALLBACK", + File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "Partitions", "WinHttp", "settings.rsp"))); + } + + [Theory] + [InlineData("valid")] + [InlineData("missing-type")] + [InlineData("missing-constructor")] + [InlineData("missing-instance-bit")] + [InlineData("external-local-type")] + [InlineData("self-assembly-reference")] + public void LocalAttributeClosureMutationControls(string mutation) + { + using var metadata = CreateClosureFixture(mutation); + if (mutation == "valid") + AssertClosure(metadata.GetMetadataReader()); + else + Assert.ThrowsAny(() => AssertClosure(metadata.GetMetadataReader())); + } + + internal static string RepositoryRoot + { + get + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory != null && !File.Exists(Path.Combine(directory.FullName, "generation", "WinSDK", "Windows.Win32.proj"))) + directory = directory.Parent; + return directory?.FullName ?? throw new DirectoryNotFoundException("The SDK project was not found."); + } + } + + internal static void AssertClosure(MetadataReader reader) + { + var definitions = reader.TypeDefinitions.GroupBy(handle => FullName(reader, handle)) + .ToDictionary(group => group.Key, group => group.ToArray(), StringComparer.Ordinal); + foreach (var handle in reader.TypeReferences) + { + var type = reader.GetTypeReference(handle); + Assert.False(type.ResolutionScope.IsNil, FullName(reader, handle)); + if (IsLocal(reader, handle)) + Assert.Contains(FullName(reader, handle), definitions.Keys); + } + if (reader.IsAssembly) + Assert.DoesNotContain(reader.AssemblyReferences, + handle => reader.GetString(reader.GetAssemblyReference(handle).Name) == reader.GetString(reader.GetAssemblyDefinition().Name)); + + foreach (var handle in reader.CustomAttributes) + { + var attribute = reader.GetCustomAttribute(handle); + Assert.DoesNotContain(AttributeName(reader, handle), + new[] { "NativeAnnotationAttribute", "SourceLocationAttribute", "CppAttributeList" }); + if (attribute.Constructor.Kind == HandleKind.MethodDefinition) + { + Assert.Equal(".ctor", reader.GetString(reader.GetMethodDefinition((MethodDefinitionHandle)attribute.Constructor).Name)); + continue; + } + Assert.Equal(HandleKind.MemberReference, attribute.Constructor.Kind); + var constructor = reader.GetMemberReference((MemberReferenceHandle)attribute.Constructor); + Assert.Equal(".ctor", reader.GetString(constructor.Name)); + string typeName = FullName(reader, constructor.Parent); + bool local = constructor.Parent.Kind == HandleKind.TypeDefinition || + (constructor.Parent.Kind == HandleKind.TypeReference && IsLocal(reader, (TypeReferenceHandle)constructor.Parent)); + if (typeName.StartsWith(MetadataNamespace + ".", StringComparison.Ordinal)) + Assert.True(local, "A local metadata attribute was scoped outside this image: " + typeName); + if (local) + { + Assert.True(definitions.TryGetValue(typeName, out var candidates), "Missing attribute type: " + typeName); + string signature = Signature(constructor.DecodeMethodSignature(Signatures, null)); + var constructors = candidates.Select(reader.GetTypeDefinition).SelectMany(type => type.GetMethods()).Select(reader.GetMethodDefinition) + .Where(method => reader.GetString(method.Name) == ".ctor") + .Select(method => Signature(method.DecodeSignature(Signatures, null))).ToArray(); + Assert.True(constructors.Contains(signature), $"Unresolved local attribute constructor: {typeName} {signature}; definitions: " + + string.Join("; ", constructors)); + } + } + } + + internal static string[] SnapshotNamespace(MetadataReader reader, string ns) + => reader.TypeDefinitions.Where(handle => FullName(reader, handle).StartsWith(ns + ".", StringComparison.Ordinal)) + .Select(reader.GetTypeDefinition) + .Select(type => SnapshotType(reader, type)).OrderBy(value => value, StringComparer.Ordinal).ToArray(); + + internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false) + { + string Attributes(CustomAttributeHandleCollection values) => string.Join(",", values.Select(handle => + AttributeTypeName(reader, handle) + ":" + Convert.ToHexString(reader.GetBlobBytes(reader.GetCustomAttribute(handle).Value))) + .OrderBy(value => value, StringComparer.Ordinal)); + string Blob(BlobHandle blob) => blob.IsNil ? "" : Convert.ToHexString(reader.GetBlobBytes(blob)); + var rows = new List + { + reader.GetString(type.Namespace) + "." + reader.GetString(type.Name), + $"{type.Attributes}|{FullName(reader, type.BaseType)}|{type.GetLayout().PackingSize}|{type.GetLayout().Size}|{Attributes(type.GetCustomAttributes())}", + }; + foreach (var handle in type.GetFields()) + { + var field = reader.GetFieldDefinition(handle); + string constant = field.GetDefaultValue().IsNil ? "" : + reader.GetConstant(field.GetDefaultValue()).TypeCode + ":" + Blob(reader.GetConstant(field.GetDefaultValue()).Value); + rows.Add($"F|{reader.GetString(field.Name)}|{field.Attributes}|{field.DecodeSignature(Signatures, null)}|{field.GetOffset()}|" + + $"{constant}|{Blob(field.GetMarshallingDescriptor())}|{Attributes(field.GetCustomAttributes())}"); + } + foreach (var handle in type.GetMethods()) + { + var method = reader.GetMethodDefinition(handle); + var signature = method.DecodeSignature(Signatures, null); + int header = signature.Header.RawValue; + if (correctConstructorInstanceBits && reader.GetString(method.Name) == ".ctor" && + !method.Attributes.HasFlag(MethodAttributes.Static) && !signature.Header.IsInstance) + { + Assert.Equal(0, header); + header |= 0x20; + } + rows.Add($"M|{reader.GetString(method.Name)}|{method.Attributes}|{method.ImplAttributes}|{Signature(signature, header)}|" + + $"{Import(reader, method)}|{Attributes(method.GetCustomAttributes())}"); + foreach (var parameter in method.GetParameters().Select(reader.GetParameter)) + rows.Add($"P|{parameter.SequenceNumber}|{reader.GetString(parameter.Name)}|{parameter.Attributes}|" + + $"{Blob(parameter.GetMarshallingDescriptor())}|{Attributes(parameter.GetCustomAttributes())}"); + } + return string.Join("\n", rows); + } + + private static string Import(MetadataReader reader, MethodDefinition method) + { + var import = method.GetImport(); + return import.Module.IsNil ? "" : + reader.GetString(reader.GetModuleReference(import.Module).Name) + "|" + reader.GetString(import.Name) + "|" + import.Attributes; + } + + private static Dictionary Methods(MetadataReader reader, string ns, string typeName, int architecture) + => reader.TypeDefinitions.Select(reader.GetTypeDefinition) + .Where(type => reader.GetString(type.Namespace) == ns && reader.GetString(type.Name) == typeName && Supports(reader, type.GetCustomAttributes(), architecture)) + .SelectMany(type => type.GetMethods()).Select(reader.GetMethodDefinition) + .Where(method => Supports(reader, method.GetCustomAttributes(), architecture)) + .ToDictionary(method => reader.GetString(method.Name), StringComparer.Ordinal); + + private static Dictionary Types(MetadataReader reader) + => reader.TypeDefinitions.ToDictionary(handle => + { + var type = reader.GetTypeDefinition(handle); + string key = FullName(reader, handle); + while (true) + { + key += "#" + string.Join("", new[] { 1, 2, 4 }.Select(architecture => + Supports(reader, type.GetCustomAttributes(), architecture) ? architecture : 0)); + if (type.GetDeclaringType().IsNil) return key; + type = reader.GetTypeDefinition(type.GetDeclaringType()); + } + }, reader.GetTypeDefinition, StringComparer.Ordinal); + + private static TypeDefinition Type(MetadataReader reader, string name, int architecture) + => reader.TypeDefinitions.Select(reader.GetTypeDefinition).Single(type => reader.GetString(type.Namespace) == WinHttpNamespace && + reader.GetString(type.Name) == name && Supports(reader, type.GetCustomAttributes(), architecture)); + + private static bool Supports(MetadataReader reader, CustomAttributeHandleCollection attributes, int architecture) + { + var matches = attributes.Where(handle => AttributeName(reader, handle) == "SupportedArchitectureAttribute").ToArray(); + if (!matches.Any()) return true; + Assert.Single(matches); + var value = reader.GetBlobReader(reader.GetCustomAttribute(matches[0]).Value); + Assert.Equal(1, value.ReadUInt16()); + int mask = value.ReadInt32(); + Assert.Equal(0, value.ReadUInt16()); + Assert.Equal(0, value.RemainingBytes); + return (mask & architecture) != 0; + } + + private static string[] AttributeValues(MetadataReader reader, CustomAttributeHandleCollection attributes, string name) + => attributes.Where(handle => AttributeName(reader, handle) == name).Select(handle => + { + var value = reader.GetBlobReader(reader.GetCustomAttribute(handle).Value); + Assert.Equal(1, value.ReadUInt16()); + string result = value.ReadSerializedString(); + Assert.Equal(0, value.ReadUInt16()); + Assert.Equal(0, value.RemainingBytes); + return result; + }).ToArray(); + + private static string AttributeName(MetadataReader reader, CustomAttributeHandle handle) + => AttributeTypeName(reader, handle).Split('.').Last(); + + private static string AttributeTypeName(MetadataReader reader, CustomAttributeHandle handle) + { + var constructor = reader.GetCustomAttribute(handle).Constructor; + return FullName(reader, constructor.Kind == HandleKind.MethodDefinition ? + reader.GetMethodDefinition((MethodDefinitionHandle)constructor).GetDeclaringType() : + reader.GetMemberReference((MemberReferenceHandle)constructor).Parent); + } + + private static bool IsLocal(MetadataReader reader, TypeReferenceHandle handle) + { + var scope = reader.GetTypeReference(handle).ResolutionScope; + return scope.Kind == HandleKind.ModuleDefinition || + (scope.Kind == HandleKind.TypeReference && IsLocal(reader, (TypeReferenceHandle)scope)); + } + + private static string FullName(MetadataReader reader, EntityHandle handle) + { + if (handle.IsNil) return ""; + if (handle.Kind == HandleKind.TypeDefinition) + { + var type = reader.GetTypeDefinition((TypeDefinitionHandle)handle); + return type.GetDeclaringType().IsNil ? reader.GetString(type.Namespace) + "." + reader.GetString(type.Name) : + FullName(reader, type.GetDeclaringType()) + "+" + reader.GetString(type.Name); + } + if (handle.Kind == HandleKind.TypeReference) + { + var type = reader.GetTypeReference((TypeReferenceHandle)handle); + return type.ResolutionScope.Kind == HandleKind.TypeReference ? FullName(reader, type.ResolutionScope) + "+" + reader.GetString(type.Name) : + reader.GetString(type.Namespace) + "." + reader.GetString(type.Name); + } + throw new InvalidDataException("Unsupported type handle: " + handle.Kind); + } + + private static string Signature(MethodSignature signature, int? header = null) + => $"{header ?? signature.Header.RawValue}|{signature.GenericParameterCount}|{signature.RequiredParameterCount}|{signature.ReturnType}|" + + string.Join(",", signature.ParameterTypes); + + private static Image Open(string variable) => new Image(Environment.GetEnvironmentVariable(variable)); + + private static MetadataReaderProvider CreateClosureFixture(string mutation) + { + var metadata = new MetadataBuilder(); + metadata.AddModule(0, metadata.GetOrAddString("Fixture.winmd"), metadata.GetOrAddGuid(Guid.NewGuid()), default, default); + metadata.AddAssembly(metadata.GetOrAddString("Fixture"), new Version(1, 0), default, default, 0, AssemblyHashAlgorithm.None); + var runtime = metadata.AddAssemblyReference(metadata.GetOrAddString("System.Runtime"), new Version(8, 0), default, default, 0, default); + if (mutation == "self-assembly-reference") + metadata.AddAssemblyReference(metadata.GetOrAddString("Fixture"), new Version(1, 0), default, default, 0, default); + var attributeBase = metadata.AddTypeReference(runtime, metadata.GetOrAddString("System"), metadata.GetOrAddString("Attribute")); + metadata.AddTypeDefinition(TypeAttributes.NotPublic, default, metadata.GetOrAddString(""), default, + MetadataTokens.FieldDefinitionHandle(1), MetadataTokens.MethodDefinitionHandle(1)); + metadata.AddTypeDefinition(TypeAttributes.Public, metadata.GetOrAddString(MetadataNamespace), + metadata.GetOrAddString(mutation == "missing-type" ? "OtherAttribute" : "ProbeAttribute"), attributeBase, + MetadataTokens.FieldDefinitionHandle(1), MetadataTokens.MethodDefinitionHandle(1)); + var signature = new BlobBuilder(); + new BlobEncoder(signature).MethodSignature(isInstanceMethod: mutation != "missing-instance-bit").Parameters(1, result => result.Void(), + parameters => parameters.AddParameter().Type().Int32()); + metadata.AddMethodDefinition(MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, + MethodImplAttributes.Runtime, metadata.GetOrAddString(".ctor"), metadata.GetOrAddBlob(signature), -1, + MetadataTokens.ParameterHandle(1)); + metadata.AddParameter(0, metadata.GetOrAddString("value"), 1); + var sample = metadata.AddTypeDefinition(TypeAttributes.Public, metadata.GetOrAddString("Pilot"), metadata.GetOrAddString("Sample"), + default, MetadataTokens.FieldDefinitionHandle(1), MetadataTokens.MethodDefinitionHandle(2)); + var attribute = metadata.AddTypeReference(mutation == "external-local-type" ? runtime : MetadataTokens.EntityHandle(1), metadata.GetOrAddString(MetadataNamespace), + metadata.GetOrAddString("ProbeAttribute")); + var referenceSignature = new BlobBuilder(); + new BlobEncoder(referenceSignature).MethodSignature(isInstanceMethod: true).Parameters(1, result => result.Void(), parameters => + { + var parameter = parameters.AddParameter().Type(); + if (mutation == "missing-constructor") parameter.String(); + else parameter.Int32(); + }); + var constructor = metadata.AddMemberReference(attribute, metadata.GetOrAddString(".ctor"), metadata.GetOrAddBlob(referenceSignature)); + var value = new BlobBuilder(); + value.WriteUInt16(1); + if (mutation == "missing-constructor") value.WriteSerializedString("x"); + else value.WriteInt32(3); + value.WriteUInt16(0); + metadata.AddCustomAttribute(sample, constructor, metadata.GetOrAddBlob(value)); + var image = new BlobBuilder(); + new MetadataRootBuilder(metadata).Serialize(image, 0, 0); + return MetadataReaderProvider.FromMetadataImage(image.ToImmutableArray()); + } + + private sealed class Image : IDisposable + { + private readonly Stream stream; + private readonly PEReader pe; + internal Image(string path) + { + this.stream = File.OpenRead(path); + this.pe = new PEReader(this.stream); + Reader = this.pe.GetMetadataReader(MetadataReaderOptions.None); + } + internal MetadataReader Reader { get; } + public void Dispose() { this.pe.Dispose(); this.stream.Dispose(); } + } + + private sealed class SignatureNames : ISignatureTypeProvider + { + public string GetArrayType(string elementType, ArrayShape shape) + => elementType + "[" + shape.Rank + ";" + string.Join(",", shape.Sizes) + ";" + string.Join(",", shape.LowerBounds) + "]"; + public string GetByReferenceType(string elementType) => elementType + "&"; + public string GetFunctionPointerType(MethodSignature signature) => "fnptr:" + Signature(signature); + public string GetGenericInstantiation(string genericType, ImmutableArray typeArguments) => genericType + "<" + string.Join(",", typeArguments) + ">"; + public string GetGenericMethodParameter(object context, int index) => "!!" + index; + public string GetGenericTypeParameter(object context, int index) => "!" + index; + public string GetModifiedType(string modifier, string type, bool required) => type + (required ? " modreq(" : " modopt(") + modifier + ")"; + public string GetPinnedType(string elementType) => elementType + " pinned"; + public string GetPointerType(string elementType) => elementType + "*"; + public string GetPrimitiveType(PrimitiveTypeCode type) => type.ToString(); + public string GetSZArrayType(string elementType) => elementType + "[]"; + public string GetTypeFromDefinition(MetadataReader reader, TypeDefinitionHandle handle, byte kind) => FullName(reader, handle); + public string GetTypeFromReference(MetadataReader reader, TypeReferenceHandle handle, byte kind) => FullName(reader, handle); + public string GetTypeFromSpecification(MetadataReader reader, object context, TypeSpecificationHandle handle, byte kind) + => reader.GetTypeSpecification(handle).DecodeSignature(this, context); + } + } + + public sealed class MigrationFactAttribute : FactAttribute + { + public MigrationFactAttribute() + { + if (Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_OLD") == null || + Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_NEW") == null || + Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_TOOLING_CONTROL") == null) + Skip = "Set WINHTTP_MIGRATION_OLD, WINHTTP_MIGRATION_NEW and WINHTTP_MIGRATION_TOOLING_CONTROL to the pinned full-image fixtures."; + } + } + + public sealed class MigrationTheoryAttribute : TheoryAttribute + { + public MigrationTheoryAttribute() + { + if (Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_OLD") == null || + Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_NEW") == null || + Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_TOOLING_CONTROL") == null) + Skip = "Set WINHTTP_MIGRATION_OLD, WINHTTP_MIGRATION_NEW and WINHTTP_MIGRATION_TOOLING_CONTROL to the pinned full-image fixtures."; + } + } +} diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs new file mode 100644 index 000000000..8e7fdcd02 --- /dev/null +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; +using ClangSharp; +using ClangSharp.Interop; +using Xunit; +using Xunit.Abstractions; + +namespace Win32MetadataScraperTests +{ + public class WinHttpNativeControlTests + { + private readonly ITestOutputHelper output; + + public WinHttpNativeControlTests(ITestOutputHelper output) => this.output = output; + + [NativeMigrationTheory] + [InlineData("WinHttp", "x86", "i686-pc-windows-msvc")] + [InlineData("WinHttp", "x64", "x86_64-pc-windows-msvc")] + [InlineData("WinHttp", "arm64", "aarch64-pc-windows-msvc")] + [InlineData("HttpServer", "x86", "i686-pc-windows-msvc")] + [InlineData("HttpServer", "x64", "x86_64-pc-windows-msvc")] + [InlineData("HttpServer", "arm64", "aarch64-pc-windows-msvc")] + public void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string partition, string architecture, string target) + { + string root = WinHttpMigrationTests.RepositoryRoot; + string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); + string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); + var before = Surface(original); + var after = Surface(prepared); + Assert.Equal(61, before.Count(value => value.StartsWith("function WinHttp", StringComparison.Ordinal))); + Assert.True(before.Count(value => value.StartsWith("field ", StringComparison.Ordinal)) > 50); + Assert.Contains(before, value => value.StartsWith("typedef LPWINHTTP_STATUS_CALLBACK ", StringComparison.Ordinal)); + Assert.Equal(before, after); + this.output.WriteLine($"{partition}/{architecture}: {before.Length} native facts; OLD=NEW SHA256 " + + Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("\n", before))))); + + string[] Surface(string includeRoot) + { + string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); + var arguments = new List + { + "--language=c++", "--std=c++17", "--target=" + target, + "--include-directory=" + Path.Combine(root, "generation", "WinSDK", "inc"), + }; + arguments.AddRange(new[] { "shared", "um", "ucrt", "winrt" } + .Select(directory => "--include-directory=" + Path.Combine(includeRoot, directory))); + arguments.AddRange((Environment.GetEnvironmentVariable("INCLUDE") ?? "").Split(';', StringSplitOptions.RemoveEmptyEntries) + .Select(directory => "--include-directory=" + directory)); + string settings = Path.Combine(root, "sources", "GeneratorSdk", "tools", "assets", "scraper"); + foreach (string path in new[] { Path.Combine(settings, "baseSettings.rsp"), Path.Combine(settings, "baseSettings." + architecture + ".rsp") }) + { + bool additional = false; + foreach (string line in File.ReadLines(path).Select(value => value.Trim()).Where(value => value.Length != 0)) + { + if (line.StartsWith("--", StringComparison.Ordinal)) + additional = line == "--additional"; + else if (additional) + arguments.Add(line); + } + } + Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); + using var index = CXIndex.Create(false, false); + Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), + ReadOnlySpan.Empty, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); + using var unit = TranslationUnit.GetOrCreate(handle); + for (uint i = 0; i < handle.NumDiagnostics; i++) + { + using var diagnostic = handle.GetDiagnostic(i); + Assert.True(diagnostic.Severity < CXDiagnosticSeverity.CXDiagnostic_Error, + diagnostic.Format(CXDiagnostic.DefaultDisplayOptions).ToString()); + } + var result = new List(); + // Clang's anonymous names embed paths and line numbers; retain declaration identity without those incidental coordinates. + var anonymous = new Dictionary(StringComparer.Ordinal); + var ordinals = new Dictionary(StringComparer.Ordinal); + Walk(unit.TranslationUnitDecl, ""); + return result.Select(value => Regex.Replace(value, + @"\((?:anonymous|unnamed) (?:struct|union|enum) at (?[^)]+:\d+:\d+)\)", + match => anonymous[match.Groups["location"].Value.Replace('\\', '/')])) + .OrderBy(value => value, StringComparer.Ordinal).ToArray(); + + void Walk(Cursor cursor, string owner) + { + cursor.Location.GetExpansionLocation(out var file, out var line, out var column, out _); + string header = Path.GetFileName(file.ToString()); + string childOwner = owner; + if (cursor is RecordDecl or EnumDecl) + { + string name = ((NamedDecl)cursor).Name; + if (name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) + { + ordinals.TryGetValue(header, out int ordinal); + ordinals[header] = ordinal + 1; + anonymous[file.ToString().Replace('\\', '/') + ":" + line + ":" + column] = header + ":anonymous#" + ordinal; + } + childOwner = owner + name + "::"; + } + if (header is "winhttp.h" or "httprequest.h" || (partition == "HttpServer" && header == "http.h")) + { + if (cursor is FunctionDecl function) + result.Add("function " + owner + function.Name + " " + function.Type.CanonicalType.AsString); + else if (cursor is FieldDecl field) + result.Add("field " + owner + field.Name + " " + field.Type.CanonicalType.AsString + " " + field.Handle.OffsetOfField); + else if (cursor is RecordDecl record && record.IsCompleteDefinition) + result.Add("record " + owner + record.Name + " " + record.Handle.Type.SizeOf + " " + record.Handle.Type.AlignOf); + else if (cursor is TypedefDecl typedef) + result.Add("typedef " + owner + typedef.Name + " " + typedef.UnderlyingType.CanonicalType.AsString); + else if (cursor is EnumDecl enumeration) + result.Add("enum " + owner + enumeration.Name + " " + enumeration.IntegerType.AsString); + else if (cursor is EnumConstantDecl value) + result.Add("value " + owner + value.Name + " " + value.Handle.EnumConstantDeclValue); + } + foreach (var child in cursor.CursorChildren) + if (child.Handle.IsDeclaration || child.Handle.IsTranslationUnit) + Walk(child, childOwner); + } + } + } + } + + public sealed class NativeMigrationTheoryAttribute : TheoryAttribute + { + public NativeMigrationTheoryAttribute() + { + if (Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS") == null) + Skip = "Set WINHTTP_PREPARED_HEADERS to the pinned private prepared-header tree."; + } + } +} diff --git a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp index 31872b30e..c95df93c1 100644 --- a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp +++ b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp @@ -14,4 +14,8 @@ UNKNOWN EALL NONE NETWORK -RESERVED1 \ No newline at end of file +RESERVED1 +INTERNET_SCHEME_FTP=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_HTTP=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_HTTPS=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_SOCKS=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME \ No newline at end of file From 56795b346b522897f13dc4c93446f14b957c6e24 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 15:18:01 -0700 Subject: [PATCH 02/57] Require repeatable selected SDK scraping before image publication Force a second normal WinHttp and HttpServer scrape with aggregate discoveries present. Require identical native source and pointer-discovery hashes before emitting and recording producer provenance. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 4 +++- scripts/Build-WinHttpMigrationImage.ps1 | 26 ++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 8f06ab65c..c34042c61 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -148,7 +148,9 @@ closure, recomputes constants with all partition inputs, preserves the other partitions' discovered pointer fixes, and emits `Windows.Win32.winmd`. It rejects overwriting an existing consumer-fixture or selection directory. Each image gets a fresh selected scrape so prior aggregate discoveries cannot become configured -remap authority. The frozen discovery inputs must reproduce the pinned complete +remap authority. Before emission it forces a second normal SDK scrape with that +selection's aggregate discovery present, requiring byte-identical selected C# +sources and pointer discoveries. The frozen discovery inputs must reproduce the pinned complete pointer-fixup response file before the selected discoveries are overlaid. `PartitionFilter` alone is not a complete constants/manual/emission closure. diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 42713bf94..611b2d809 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -65,6 +65,14 @@ function Get-PointerReductions([IO.FileInfo[]]$Remaps) { return ,$reduce } +function Get-SelectedInputs([string]$Obj, [string[]]$Overlays) { + $paths = @($Overlays | ForEach-Object { "$Obj\generated\$_" }) + $paths += @(Get-ChildItem "$Obj\scratch" -Recurse -Filter '*.remaps' -File | ForEach-Object { $_.FullName }) + @($paths | Sort-Object -CaseSensitive | ForEach-Object { + [ordered]@{ path = [IO.Path]::GetRelativePath($Obj, $_); sha256 = Get-Sha256 $_ } + }) +} + $provenancePath = "$BaselineDirectory\provenance.json" $baseline = Get-Content -LiteralPath $provenancePath -Raw | ConvertFrom-Json if ($baseline.toolingCommit -ne 'b5b7b26ed09d648766f07449af48c64ef0e99d13' -or @@ -158,16 +166,27 @@ try { return [pscustomobject]@{ Winmd = $winmd; Sha256 = $receipt.newWinmdSha256; Provenance = "$OutputDirectory\provenance.json" } } $selectedObj = "$SelectionDirectory\obj" - Invoke-Dotnet @('build', 'generation\WinSDK', '-c', 'Release', '-t:ScrapeHeaders', + $overlays = @('x86\WinHttp.cs', 'x64\WinHttp.cs', 'arm64\WinHttp.cs', 'common\HttpServer.cs') + $scrapeArguments = @('build', 'generation\WinSDK', '-c', 'Release', '-t:ScrapeHeaders', "-p:ObjDir=$selectedObj", '-p:PartitionFilter=WinHttp%3BHttpServer', '-p:MaxProcessors=2', - '--no-restore', '--verbosity', 'minimal') "$OutputDirectory\scrape.log" + '-p:ScanArch=crossarch', '--no-restore', '--verbosity', 'minimal') + Invoke-Dotnet $scrapeArguments "$OutputDirectory\scrape.log" $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() + $firstInputs = Get-SelectedInputs $selectedObj $overlays + Remove-Item -LiteralPath "$selectedObj\generated\scannedheaders.crossarch.txt" + Invoke-Dotnet $scrapeArguments "$OutputDirectory\repeat-scrape.log" + $repeatedInputs = Get-SelectedInputs $selectedObj $overlays + if (($firstInputs | ConvertTo-Json -Depth 3) -cne ($repeatedInputs | ConvertTo-Json -Depth 3)) { + throw 'A repeated normal SDK scrape changed selected declarations or pointer discoveries.' + } + if ((Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() -cne $includeRoot) { + throw 'The selected scrape changed its pinned prepared-header root.' + } $obj = "$OutputDirectory\obj" [IO.Directory]::CreateDirectory($obj) | Out-Null Copy-Item -LiteralPath $oldGenerated -Destination $obj -Recurse $generated = "$obj\generated" - $overlays = @('x86\WinHttp.cs', 'x64\WinHttp.cs', 'arm64\WinHttp.cs', 'common\HttpServer.cs') foreach ($path in $overlays) { [IO.File]::Copy("$selectedObj\generated\$path", "$generated\$path", $true) } @@ -230,6 +249,7 @@ try { preparedIncludeRoot = $includeRoot preparedManifestSha256 = Get-Sha256 ([IO.Path]::Combine([IO.Path]::GetDirectoryName($includeRoot), 'manifest.json')) overlaidHeaderSources = $overlays + repeatedSelectionInputs = $repeatedInputs sourceCommit = (& git rev-parse HEAD) toolFiles = $toolFiles toolingControl = $ToolingControlDirectory From e1f157b73859b055215e16f3a5ca127785406d6d Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 15:19:19 -0700 Subject: [PATCH 03/57] Allow filtered scrapes without a global completeness marker Filtered SDK scrapes intentionally do not publish the global crossarch marker. Clear it only if present when forcing the selected repeatability control. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- scripts/Build-WinHttpMigrationImage.ps1 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 611b2d809..2f6293bfa 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -173,7 +173,10 @@ try { Invoke-Dotnet $scrapeArguments "$OutputDirectory\scrape.log" $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() $firstInputs = Get-SelectedInputs $selectedObj $overlays - Remove-Item -LiteralPath "$selectedObj\generated\scannedheaders.crossarch.txt" + $scrapeMarker = "$selectedObj\generated\scannedheaders.crossarch.txt" + if (Test-Path -LiteralPath $scrapeMarker) { + Remove-Item -LiteralPath $scrapeMarker + } Invoke-Dotnet $scrapeArguments "$OutputDirectory\repeat-scrape.log" $repeatedInputs = Get-SelectedInputs $selectedObj $overlays if (($firstInputs | ConvertTo-Json -Depth 3) -cne ($repeatedInputs | ConvertTo-Json -Depth 3)) { From d7fedd7a14f9f44ed7099733c3fcf11b3e293fe8 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 15:47:01 -0700 Subject: [PATCH 04/57] Preserve selected scrape inputs for repeatability diagnosis Record first and repeated native-source/discovery hashes and retain the first generated inputs before enforcing the strict gate. Document the exact constructor control and complete SDK diagnostic closure. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 15 +++++++++++++-- scripts/Build-WinHttpMigrationImage.ps1 | 9 +++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index c34042c61..8cba66f89 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -131,6 +131,8 @@ It is retained as OLD evidence, not described as physically valid. The tooling layer corrects this separately. A frozen-input tooling control must prove that only those missing instance bits change and that the corrected image has exact local constructor binding; the NEW image does not receive a waiver. +The physical control requires exactly 39 constructor rows in 39 types to gain +`HASTHIS`, with every other frozen-input type snapshot unchanged. ```powershell dotnet build BuildTools -c Release @@ -150,8 +152,8 @@ overwriting an existing consumer-fixture or selection directory. Each image gets a fresh selected scrape so prior aggregate discoveries cannot become configured remap authority. Before emission it forces a second normal SDK scrape with that selection's aggregate discovery present, requiring byte-identical selected C# -sources and pointer discoveries. The frozen discovery inputs must reproduce the pinned complete -pointer-fixup response file before the selected discoveries are overlaid. +sources and pointer discoveries. The frozen discovery inputs must reproduce the +pinned complete pointer-fixup response file before the selected discoveries are overlaid. `PartitionFilter` alone is not a complete constants/manual/emission closure. ```powershell @@ -180,6 +182,15 @@ associations, enum values/types, ports, callback identity, architecture coverage and local type/attribute-constructor closure, with missing-type/constructor mutation controls. HttpServer and WinInet snapshots must remain unchanged. +The repository SDK integrity suite reads `bin\Windows.Win32.winmd` and the default +`generation\WinSDK\obj\scratch` diagnostic tree. Stage the complete frozen OLD +nonselected diagnostics plus NEW WinHttp/HttpServer diagnostics there, preserving +their architecture-relative paths, and copy the complete NEW winmd to that local +bin path before running `dotnet test tests\Windows.Win32.Tests -c Release`. +`NoSuggestedRemappings` consumes the actual `*.txt` scraper diagnostics, not just +`*.remaps` or an empty scratch directory. The pinned full closure contains 393 +diagnostic files. Do not substitute the selected partition output for that closure. + The full-image decompiler comparison must consume exact symbol/value-scoped expected differences, with no unknown or unused expectations. It complements these narrow SRM checks; neither is presented as a comprehensive typed metadata equivalence diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 2f6293bfa..283febad4 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -173,12 +173,21 @@ try { Invoke-Dotnet $scrapeArguments "$OutputDirectory\scrape.log" $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() $firstInputs = Get-SelectedInputs $selectedObj $overlays + [IO.File]::WriteAllText("$OutputDirectory\first-selection.json", ($firstInputs | ConvertTo-Json -Depth 3), + [Text.UTF8Encoding]::new($false)) + foreach ($entry in $firstInputs) { + $target = "$OutputDirectory\first-selection\$($entry.path)" + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($target)) | Out-Null + [IO.File]::Copy("$selectedObj\$($entry.path)", $target) + } $scrapeMarker = "$selectedObj\generated\scannedheaders.crossarch.txt" if (Test-Path -LiteralPath $scrapeMarker) { Remove-Item -LiteralPath $scrapeMarker } Invoke-Dotnet $scrapeArguments "$OutputDirectory\repeat-scrape.log" $repeatedInputs = Get-SelectedInputs $selectedObj $overlays + [IO.File]::WriteAllText("$OutputDirectory\repeated-selection.json", ($repeatedInputs | ConvertTo-Json -Depth 3), + [Text.UTF8Encoding]::new($false)) if (($firstInputs | ConvertTo-Json -Depth 3) -cne ($repeatedInputs | ConvertTo-Json -Depth 3)) { throw 'A repeated normal SDK scrape changed selected declarations or pointer discoveries.' } From 9faf8a24831e1ef0a44d4ccfe4cd972f380452b3 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 15:55:32 -0700 Subject: [PATCH 05/57] Bind migration image receipts to immutable producer inputs Require committed, unchanged producer inputs and compare normal SDK aggregate response files as well as per-TU discoveries and native sources across repeated scrapes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 4 +++ scripts/Build-WinHttpMigrationImage.ps1 | 34 ++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 8cba66f89..896ba4c99 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -155,6 +155,10 @@ selection's aggregate discovery present, requiring byte-identical selected C# sources and pointer discoveries. The frozen discovery inputs must reproduce the pinned complete pointer-fixup response file before the selected discoveries are overlaid. `PartitionFilter` alone is not a complete constants/manual/emission closure. +Producer inputs must be committed before image generation and remain unchanged +through receipt publication. The receipt distinguishes the frozen baseline tooling +commit from the current producer commit and binds the actual tool, header, generated +source, discovery, and expected-difference hashes. ```powershell . .\scripts\CommonUtils.ps1 diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 283febad4..9b6f2d2cf 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -67,12 +67,33 @@ function Get-PointerReductions([IO.FileInfo[]]$Remaps) { function Get-SelectedInputs([string]$Obj, [string[]]$Overlays) { $paths = @($Overlays | ForEach-Object { "$Obj\generated\$_" }) + $paths += "$Obj\generated\scraper.autoRemaps.generated.rsp", "$Obj\generated\emitter.autoFnPtr.crossarch.generated.rsp" $paths += @(Get-ChildItem "$Obj\scratch" -Recurse -Filter '*.remaps' -File | ForEach-Object { $_.FullName }) @($paths | Sort-Object -CaseSensitive | ForEach-Object { [ordered]@{ path = [IO.Path]::GetRelativePath($Obj, $_); sha256 = Get-Sha256 $_ } }) } +$sourceCommit = & git -C $repo rev-parse HEAD +if ($LASTEXITCODE -ne 0) { + throw 'The producer commit could not be resolved.' +} +function Assert-CommittedProducer { + $currentCommit = & git -C $repo rev-parse HEAD + if ($LASTEXITCODE -ne 0 -or $currentCommit -cne $sourceCommit) { + throw 'The producer commit changed during image generation.' + } + & git -C $repo diff --quiet HEAD + if ($LASTEXITCODE -ne 0) { + throw 'Commit producer inputs before publishing an immutable migration image.' + } + $untracked = & git -C $repo ls-files --others --exclude-standard + if ($LASTEXITCODE -ne 0 -or $untracked) { + throw 'Untracked producer inputs must be committed before image generation.' + } +} +Assert-CommittedProducer + $provenancePath = "$BaselineDirectory\provenance.json" $baseline = Get-Content -LiteralPath $provenancePath -Raw | ConvertFrom-Json if ($baseline.toolingCommit -ne 'b5b7b26ed09d648766f07449af48c64ef0e99d13' -or @@ -149,14 +170,15 @@ try { Invoke-Dotnet $arguments "$OutputDirectory\emit.log" Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd) "$OutputDirectory\comparison.log" + Assert-CommittedProducer $receipt = [ordered]@{ kind = 'tooling-control' - toolingCommit = $baseline.toolingCommit + baselineToolingCommit = $baseline.toolingCommit sdkPackageVersion = $baseline.sdkPackageVersion baselineProvenanceSha256 = Get-Sha256 $provenancePath oldWinmdSha256 = $baseline.winmdSha256 newWinmdSha256 = Get-Sha256 $winmd - sourceCommit = (& git rev-parse HEAD) + sourceCommit = $sourceCommit toolFiles = $toolFiles frozenEmitterInputs = @(Get-ChildItem -LiteralPath $inputs -File | ForEach-Object { [ordered]@{ path = $_.Name; sha256 = Get-Sha256 $_.FullName } @@ -252,8 +274,10 @@ try { Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd, '--knownDiffsFile', "$project\patches\WinHttp.expected-differences.txt") "$OutputDirectory\comparison.log" + Assert-CommittedProducer $receipt = [ordered]@{ - toolingCommit = $baseline.toolingCommit + kind = 'winhttp-migration' + baselineToolingCommit = $baseline.toolingCommit sdkPackageVersion = $baseline.sdkPackageVersion baselineProvenanceSha256 = Get-Sha256 $provenancePath oldWinmdSha256 = $baseline.winmdSha256 @@ -262,12 +286,10 @@ try { preparedManifestSha256 = Get-Sha256 ([IO.Path]::Combine([IO.Path]::GetDirectoryName($includeRoot), 'manifest.json')) overlaidHeaderSources = $overlays repeatedSelectionInputs = $repeatedInputs - sourceCommit = (& git rev-parse HEAD) + sourceCommit = $sourceCommit toolFiles = $toolFiles toolingControl = $ToolingControlDirectory expectedDifferencesSha256 = Get-Sha256 "$project\patches\WinHttp.expected-differences.txt" - sourceDiffSha256 = [Convert]::ToHexString([Security.Cryptography.SHA256]::HashData( - [Text.Encoding]::UTF8.GetBytes((& git diff --binary HEAD | Out-String)))) generatedFiles = @(Get-ChildItem -LiteralPath $generated -Recurse -File | ForEach-Object { [ordered]@{ path = [IO.Path]::GetRelativePath($generated, $_.FullName); sha256 = Get-Sha256 $_.FullName } }) From f216b24f5ab6249b91f5d71aa5e4d6a0b515c04b Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 16:37:01 -0700 Subject: [PATCH 06/57] Isolate SDK ABI walks from in-process generator fixtures Serialize the six SDK-sized native controls against other Clang test collections to avoid a combined-suite concurrency stall. Record immutable full-image inputs, exact metadata/physical grades, and the agreed consumer contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 65 ++++++++++++++++++- .../WinHttpNativeControlTests.cs | 7 ++ 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 896ba4c99..d5167e845 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -181,7 +181,9 @@ transactions, and lock contention. Native controls parse the real WinHttp and HttpServer translation units for x86, x64, and ARM64 with metadata disabled, comparing native signatures, calling conventions, typedef pointer depth, enum values, field offsets, record sizes, and -alignment. Physical readback covers DLL/entrypoint/import flags, attribute targets, +alignment. Their exclusive test collection prevents SDK-sized AST walks from +overlapping the generator fixtures that share the native Clang runtime. +Physical readback covers DLL/entrypoint/import flags, attribute targets, associations, enum values/types, ports, callback identity, architecture coverage, and local type/attribute-constructor closure, with missing-type/constructor mutation controls. HttpServer and WinInet snapshots must remain unchanged. @@ -207,3 +209,64 @@ four genuine scheme member additions and four fabricated-member removals. It does not admit callback renames, import changes, dependent changes, additional constants, or changed values. The image builder applies this grade before publishing its provenance receipt. + +## Pinned pilot evidence + +The complete migrated image was produced by commit +`9faf8a24831e1ef0a44d4ccfe4cd972f380452b3`, above tooling commit +`00ade0afc94c965522ccdbac54a06fc1bcbd01a1`. The supported pins remain +ClangSharp/Interop/PInvokeGenerator `21.1.8.4`, libclang `21.1.8`, and +libClangSharp `21.1.8.2`. + +All three images are `Windows.Win32.winmd` under +`artifacts\winhttp-migration`; none is a selected-partition-only assembly. + +| Image | Directory | SHA256 | +| --- | --- | --- | +| Frozen OLD | `old` | `1361407C2888102CB5161D83503235C09C36F917837C7107CA0A80E5CF4FAC43` | +| Frozen-input corrected-tooling control | `tooling-control-final` | `274A288E622B840552934AE74FE2A33FEC4E7D4E47E3D3454B92A147A13B0CDA` | +| Migrated NEW | `new-final` | `C7AEC280B0CBB19CDAD6B94FFED8473B2B22E4042BF886FCF33DCBDD92274258` | + +The normal SDK first/repeated selection has ten byte-identical inputs: four native +C# files, four per-TU discovery files, and two aggregate response files. The +complete pointer-reduction set contains 155 entries. The declared OLD/NEW grade +admits all 24 expected differences, with no unknown or unused expectations. +NEW has 1,640 C# files / 1,652 generated inputs: the old synthetic +`Networking.WinHttp.enums.cs` and its processed copy are replaced by declarations +in the native header output, not by missing final metadata. +All 38 pilot cases executed without skips, including the six native ABI legs. +The full SDK integrity suite executed and passed all 14 cases using the complete +393-file diagnostic closure. Strict physical readback finds 37,314 TypeDefs and +37,248 unchanged snapshots outside WinHttp; the frozen-input control changes only +the 39 acknowledged constructor instance bits. + +The companion CsWin32 gate requests these APIs/types: + +```text +WinHttpOpen +WinHttpConnect +WinHttpOpenRequest +WinHttpCloseHandle +WinHttpCreateUrl +WinHttpCrackUrl +WinHttpSetStatusCallback +WinHttpQueryHeadersEx +WinHttpReadData +WinHttpGetProxyForUrl +WinHttpCreateProxyResolver +WINHTTP_CREDS +WINHTTP_CREDS_EX +WINHTTP_PROXY_RESULT_ENTRY +WINHTTP_PROXY_INFO +URL_COMPONENTS +``` + +The pinned compilation context is x64, `net8.0-windows`, C# 12, unsafe, public +visibility, `useSafeHandles=true`, and `emitSingleFile=true`. Run both +`allowMarshaling=true` and `false`, with the same unchanged caller source per leg. +Compare OLD + baseline consumer, OLD + proposed consumer, and NEW + proposed +consumer, pinning both consumer revisions explicitly. Public-surface comparison +and actual caller compilation are required; generated text alone is not the gate. +The four old `WINHTTP_INTERNET_SCHEME_*` member spellings remain a specific +source-break candidate until those unchanged callers are compiled. The metadata +does not add compatibility aliases or automatic `HINTERNET` ownership to hide it. diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 8e7fdcd02..8e86bfe4d 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -12,6 +12,7 @@ namespace Win32MetadataScraperTests { + [Collection(nameof(WinHttpNativeControlCollection))] public class WinHttpNativeControlTests { private readonly ITestOutputHelper output; @@ -123,6 +124,12 @@ void Walk(Cursor cursor, string owner) } } + // SDK-sized AST walks must not overlap the generator fixtures sharing the native Clang runtime. + [CollectionDefinition(nameof(WinHttpNativeControlCollection), DisableParallelization = true)] + public sealed class WinHttpNativeControlCollection + { + } + public sealed class NativeMigrationTheoryAttribute : TheoryAttribute { public NativeMigrationTheoryAttribute() From 1df9435372bb6988f90da5687ef8685760701e69 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 16:57:23 -0700 Subject: [PATCH 07/57] Own raw SDK ABI cursors and record measured consumer compatibility Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 72 +++++++++++++++++-- .../Win32MetadataScraperTests.csproj | 1 + .../WinHttpNativeControlTests.cs | 70 ++++++++++++------ 3 files changed, 113 insertions(+), 30 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index d5167e845..35da5290c 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -98,7 +98,12 @@ was not emitted. The new group preserves the three actually emitted members; genuine `WINHTTP_AUTH_SCHEME_DIGEST` remains a loose constant. The scheme group uses the actual SDK's `INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS`, not fabricated `WINHTTP_INTERNET_SCHEME_*` names. These four old member spellings are an explicit -consumer source-compatibility concern, not a reason to falsify native declarations. +measured source break. The candidate follows the specification's native-member +spelling rule; the rename is not an integer ABI necessity. A metadata-only logical +enum could retain the old labels while deriving values from genuine native macros +and leaving native use-site types intact. That naming-policy exception and the +representation of the genuine constants need review before changing this candidate. +The four renames are not accepted as unavoidable. CsWin32 generated-source compatibility is the primary acceptance gate. A metadata declaration diff is supporting evidence, not a substitute for generating both @@ -181,8 +186,11 @@ transactions, and lock contention. Native controls parse the real WinHttp and HttpServer translation units for x86, x64, and ARM64 with metadata disabled, comparing native signatures, calling conventions, typedef pointer depth, enum values, field offsets, record sizes, and -alignment. Their exclusive test collection prevents SDK-sized AST walks from -overlapping the generator fixtures that share the native Clang runtime. +alignment. Each control owns its raw Clang translation unit and cursors rather +than reusing managed AST wrappers from earlier generator fixtures. Exact fact +counts and hashes are pinned: 969 facts for WinHttp and 3,669 for HttpServer per +architecture. An exclusive test collection also keeps these SDK-sized AST walks +separate from the generator fixtures that share the native Clang runtime. Physical readback covers DLL/entrypoint/import flags, attribute targets, associations, enum values/types, ports, callback identity, architecture coverage, and local type/attribute-constructor closure, with missing-type/constructor mutation @@ -234,7 +242,9 @@ admits all 24 expected differences, with no unknown or unused expectations. NEW has 1,640 C# files / 1,652 generated inputs: the old synthetic `Networking.WinHttp.enums.cs` and its processed copy are replaced by declarations in the native header output, not by missing final metadata. -All 38 pilot cases executed without skips, including the six native ABI legs. +The complete scraper suite executed all 191 cases without skips: 153 inherited +tooling cases and 38 pilot cases, including all six native ABI legs in the same +test host. The emitter and utility suites passed 46 and 37 cases respectively. The full SDK integrity suite executed and passed all 14 cases using the complete 393-file diagnostic closure. Strict physical readback finds 37,314 TypeDefs and 37,248 unchanged snapshots outside WinHttp; the frozen-input control changes only @@ -267,6 +277,54 @@ visibility, `useSafeHandles=true`, and `emitSingleFile=true`. Run both Compare OLD + baseline consumer, OLD + proposed consumer, and NEW + proposed consumer, pinning both consumer revisions explicitly. Public-surface comparison and actual caller compilation are required; generated text alone is not the gate. -The four old `WINHTTP_INTERNET_SCHEME_*` member spellings remain a specific -source-break candidate until those unchanged callers are compiled. The metadata -does not add compatibility aliases or automatic `HINTERNET` ownership to hide it. + +### Measured consumer prototype + +The three-way consumer proof pins baseline CsWin32 commit +`f3f5a69aa4823466ef7b55bbdc8e5ba41ec021e6` and prototype commit +`41ffdb9f4cf445d224d4477ec674a4039308c724`, using Roslyn `5.9.0.0`. +Both generator assemblies report version `0.3.0+D`; their immutable commit/binary +pins, not that shared development-version label, identify the implementations. + +| Consumer assembly | SHA256 | +| --- | --- | +| Baseline | `8DD41E7CEB160F2B2C89A20848831C58EE91D42C84787B9103D80CF06D88B9FA` | +| Prototype | `7F42F29E63541A9E238A66131ED3D0797C187072BA828B8F6762BA1A4BA98972` | + +OLD + prototype generates identical code to OLD + baseline in both marshaling +modes, with the unchanged caller compiling successfully. NEW + prototype has the +same public-symbol counts (187 with marshaling, 186 without); the only public and +generated-code deltas are the four scheme member names below. Signatures, direct +enum fields and `ref` field use, callbacks, buffers, and raw `void*` handles otherwise +match the baseline. + +In both modes the unchanged caller fails with exactly four `CS0117` errors: + +| Unchanged caller location | Missing member of `WINHTTP_INTERNET_SCHEME` | Current NEW member | Value | +| --- | --- | --- | --- | +| `(16,47)` | `WINHTTP_INTERNET_SCHEME_HTTP` | `INTERNET_SCHEME_HTTP` | 1 | +| `(17,47)` | `WINHTTP_INTERNET_SCHEME_HTTPS` | `INTERNET_SCHEME_HTTPS` | 2 | +| `(18,53)` | `WINHTTP_INTERNET_SCHEME_FTP` | `INTERNET_SCHEME_FTP` | 3 | +| `(19,53)` | `WINHTTP_INTERNET_SCHEME_SOCKS` | `INTERNET_SCHEME_SOCKS` | 4 | + +A separate adjusted-caller check compiles in both modes after only these four +member substitutions. It is not substituted for the mandatory unchanged-caller +result. The consumer evidence comprises 41 compatibility checks and two targeted +mutation controls, all executed without skips. An evidence-only follow-up at +`a47f3d6744275382234f60beddb2b04664a80242` verifies the exact public/text delta and +adjusted-caller result without changing projection behavior. + +Frozen copies of the prototype reports are kept under the private +`artifacts\winhttp-migration\consumer-prototype-41ff` directory: + +| Report | SHA256 | +| --- | --- | +| `winhttp-marshaling.json` | `264D34F24456D3782F76FA754DAD6A78A1BD733076286CA1CE554A0E8C0B8936` | +| `winhttp-no-marshaling.json` | `9FEC77BF7799D6F2BE89678BDB8487D48CCFDB424D5E8635BADC17A07959F60E` | + +This is scoped prototype evidence for the 16 requests, not approved shipping +consumer support, runtime/network testing, or general fabricated-handle migration +coverage. Enabling `useSafeHandles` does not invent ownership for this scope. +The current image and header member names remain unchanged pending the naming +decision. The patch migration is reviewable; source-compatibility acceptance is +still blocked on those four measured breaks and review of the consumer prototype. diff --git a/tests/Win32MetadataScraperTests/Win32MetadataScraperTests.csproj b/tests/Win32MetadataScraperTests/Win32MetadataScraperTests.csproj index e34828b13..b855f8c10 100644 --- a/tests/Win32MetadataScraperTests/Win32MetadataScraperTests.csproj +++ b/tests/Win32MetadataScraperTests/Win32MetadataScraperTests.csproj @@ -5,6 +5,7 @@ $(NETCoreSdkRuntimeIdentifier) false false + true diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 8e86bfe4d..8630f1685 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -5,7 +5,6 @@ using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; -using ClangSharp; using ClangSharp.Interop; using Xunit; using Xunit.Abstractions; @@ -26,7 +25,7 @@ public class WinHttpNativeControlTests [InlineData("HttpServer", "x86", "i686-pc-windows-msvc")] [InlineData("HttpServer", "x64", "x86_64-pc-windows-msvc")] [InlineData("HttpServer", "arm64", "aarch64-pc-windows-msvc")] - public void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string partition, string architecture, string target) + public unsafe void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string partition, string architecture, string target) { string root = WinHttpMigrationTests.RepositoryRoot; string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); @@ -37,8 +36,19 @@ public void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string partitio Assert.True(before.Count(value => value.StartsWith("field ", StringComparison.Ordinal)) > 50); Assert.Contains(before, value => value.StartsWith("typedef LPWINHTTP_STATUS_CALLBACK ", StringComparison.Ordinal)); Assert.Equal(before, after); + Assert.Equal(partition == "WinHttp" ? 969 : 3669, before.Length); + string hash = Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("\n", before)))); + string expectedHash = (partition, architecture) switch + { + ("WinHttp", "x86") => "2EBA4C00D2659F0483069DEDD1E6713E667DAD712033EBACC10A8B439D0CAE70", + ("WinHttp", _) => "65657F305A625A871548097056B261FA9C0CF614BD2F239CB5F1AA45F65F8999", + ("HttpServer", "x86") => "ED7B558D353ABE4804EA02499E0215E6F14E2505A7D9327B981C978F60444FFA", + ("HttpServer", _) => "00AB5370D2F85FCE39CF33FB98168A7E6861B5DE57A9E8EF08EFB76CB3411CB0", + _ => throw new ArgumentException("Unknown native control partition.", nameof(partition)), + }; + Assert.Equal(expectedHash, hash); this.output.WriteLine($"{partition}/{architecture}: {before.Length} native facts; OLD=NEW SHA256 " + - Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("\n", before))))); + hash); string[] Surface(string includeRoot) { @@ -68,7 +78,8 @@ string[] Surface(string includeRoot) using var index = CXIndex.Create(false, false); Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), ReadOnlySpan.Empty, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); - using var unit = TranslationUnit.GetOrCreate(handle); + // Own raw cursors so earlier generator fixtures cannot supply a cached managed AST wrapper. + using var unit = handle; for (uint i = 0; i < handle.NumDiagnostics; i++) { using var diagnostic = handle.GetDiagnostic(i); @@ -79,20 +90,23 @@ string[] Surface(string includeRoot) // Clang's anonymous names embed paths and line numbers; retain declaration identity without those incidental coordinates. var anonymous = new Dictionary(StringComparer.Ordinal); var ordinals = new Dictionary(StringComparer.Ordinal); - Walk(unit.TranslationUnitDecl, ""); + Walk(unit.Cursor, ""); return result.Select(value => Regex.Replace(value, @"\((?:anonymous|unnamed) (?:struct|union|enum) at (?[^)]+:\d+:\d+)\)", match => anonymous[match.Groups["location"].Value.Replace('\\', '/')])) .OrderBy(value => value, StringComparer.Ordinal).ToArray(); - void Walk(Cursor cursor, string owner) + void Walk(CXCursor cursor, string owner) { cursor.Location.GetExpansionLocation(out var file, out var line, out var column, out _); string header = Path.GetFileName(file.ToString()); string childOwner = owner; - if (cursor is RecordDecl or EnumDecl) + var kind = cursor.DeclKind; + bool record = kind is CX_DeclKind.CX_DeclKind_Record or CX_DeclKind.CX_DeclKind_CXXRecord; + bool enumeration = kind == CX_DeclKind.CX_DeclKind_Enum; + string name = Text(cursor.Spelling); + if (record || enumeration) { - string name = ((NamedDecl)cursor).Name; if (name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) { ordinals.TryGetValue(header, out int ordinal); @@ -103,28 +117,38 @@ void Walk(Cursor cursor, string owner) } if (header is "winhttp.h" or "httprequest.h" || (partition == "HttpServer" && header == "http.h")) { - if (cursor is FunctionDecl function) - result.Add("function " + owner + function.Name + " " + function.Type.CanonicalType.AsString); - else if (cursor is FieldDecl field) - result.Add("field " + owner + field.Name + " " + field.Type.CanonicalType.AsString + " " + field.Handle.OffsetOfField); - else if (cursor is RecordDecl record && record.IsCompleteDefinition) - result.Add("record " + owner + record.Name + " " + record.Handle.Type.SizeOf + " " + record.Handle.Type.AlignOf); - else if (cursor is TypedefDecl typedef) - result.Add("typedef " + owner + typedef.Name + " " + typedef.UnderlyingType.CanonicalType.AsString); - else if (cursor is EnumDecl enumeration) - result.Add("enum " + owner + enumeration.Name + " " + enumeration.IntegerType.AsString); - else if (cursor is EnumConstantDecl value) - result.Add("value " + owner + value.Name + " " + value.Handle.EnumConstantDeclValue); + if (kind is CX_DeclKind.CX_DeclKind_Function or CX_DeclKind.CX_DeclKind_CXXMethod or + CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor or + CX_DeclKind.CX_DeclKind_CXXConversion or CX_DeclKind.CX_DeclKind_CXXDeductionGuide) + result.Add("function " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling)); + else if (kind is CX_DeclKind.CX_DeclKind_Field or CX_DeclKind.CX_DeclKind_ObjCAtDefsField) + result.Add("field " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling) + " " + cursor.OffsetOfField); + else if (record && cursor.IsCompleteDefinition) + result.Add("record " + owner + name + " " + cursor.Type.SizeOf + " " + cursor.Type.AlignOf); + else if (kind == CX_DeclKind.CX_DeclKind_Typedef) + result.Add("typedef " + owner + name + " " + Text(cursor.TypedefDeclUnderlyingType.CanonicalType.Spelling)); + else if (enumeration) + result.Add("enum " + owner + name + " " + Text(cursor.EnumDecl_IntegerType.Spelling)); + else if (kind == CX_DeclKind.CX_DeclKind_EnumConstant) + result.Add("value " + owner + name + " " + cursor.EnumConstantDeclValue); } - foreach (var child in cursor.CursorChildren) - if (child.Handle.IsDeclaration || child.Handle.IsTranslationUnit) + cursor.VisitChildren((child, parent, data) => + { + if (child.IsDeclaration || child.IsTranslationUnit) Walk(child, childOwner); + return CXChildVisitResult.CXChildVisit_Continue; + }, default); } } + + static string Text(CXString text) + { + using (text) return text.ToString(); + } } } - // SDK-sized AST walks must not overlap the generator fixtures sharing the native Clang runtime. + // Keep SDK-sized AST ownership separate from the generator fixtures. [CollectionDefinition(nameof(WinHttpNativeControlCollection), DisableParallelization = true)] public sealed class WinHttpNativeControlCollection { From 3d62ae750f7cd0079f39b14447c6a9af2b18d03c Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 17:23:53 -0700 Subject: [PATCH 08/57] Preserve existing WinHttp logical scheme member names in headers Keep genuine native scheme macros and emitted constants distinct, with exact owner/value checks and no semantic fallback. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 89 +++++++++++++------ .../patches/WinHttp.expected-differences.txt | 14 ++- .../post-midl/um/winhttp.logical-enums.patch | 22 ++--- .../WinmdComparisonTests.cs | 19 ++++ .../WinHttpMigrationTests.cs | 19 +++- .../WinHttpNativeControlTests.cs | 8 +- .../assets/duplicateConstantsAllowList.rsp | 8 +- 7 files changed, 116 insertions(+), 63 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 35da5290c..719e29be4 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -49,7 +49,7 @@ WinHttp library-map candidates are outside the emitted scope and remain unmigrat | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | | Five logical enums, 21 emitted members, eight uses | Guarded native enums plus `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | | Three port constant types | Guarded `constexpr INTERNET_PORT` declarations | Three `ushort` constant overrides | -| Four scheme constant spellings | Genuine `INTERNET_SCHEME_*` members | Four constants-scraper exclusions | +| Four native scheme constants | Untouched `INTERNET_SCHEME_*` macros emitted as loose constants | Four constants-scraper exclusions | | One pointer-adding callback alias | Metadata-only guard around `LPWINHTTP_STATUS_CALLBACK` | Partition callback exclusion | All 59 bindings independently match the selected SDK's x64 `winhttp.lib` @@ -95,15 +95,18 @@ unmigrated WinInet `addUsesTo` relationships, not another definition. The old authentication JSON's `INHTTP_AUTH_SCHEME_DIGEST` is a nonexistent typo and was not emitted. The new group preserves the three actually emitted members; -genuine `WINHTTP_AUTH_SCHEME_DIGEST` remains a loose constant. The scheme group uses -the actual SDK's `INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS`, not fabricated -`WINHTTP_INTERNET_SCHEME_*` names. These four old member spellings are an explicit -measured source break. The candidate follows the specification's native-member -spelling rule; the rename is not an integer ABI necessity. A metadata-only logical -enum could retain the old labels while deriving values from genuine native macros -and leaving native use-site types intact. That naming-policy exception and the -representation of the genuine constants need review before changing this candidate. -The four renames are not accepted as unavoidable. +genuine `WINHTTP_AUTH_SCHEME_DIGEST` remains a loose constant. + +The user-selected naming policy preserves the existing C# members +`WINHTTP_INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS` in the metadata-only logical enum. +Each initializer references its genuine `INTERNET_SCHEME_*` macro, yielding +1/2/3/4 respectively. Those macros are neither undefined nor renamed; ordinary +native declarations and integer ABI stay intact. The four genuine constants are +also emitted independently on WinHttp `Apis`, not hidden or replaced by aliases. +This is a bounded header-side exception to the specification's native-member +spelling rule for these four existing logical members, not a general renaming rule. +No semantic sidecar, consumer alias, WinHttp-specific consumer behavior, or +fabricated handle is introduced to preserve source compatibility. CsWin32 generated-source compatibility is the primary acceptance gate. A metadata declaration diff is supporting evidence, not a substitute for generating both @@ -117,7 +120,7 @@ this pilot has one consistent underlying type across all its use sites. The genuine scheme spellings are also present in the distinct WinInet native enum, with different values. The duplicate-constant gate admits only the exact -WinHttp/WinInet owner pair for each of these four names, not unqualified name-wide +WinHttp `Apis`/WinInet native-enum owner pair for each of these four names, not unqualified name-wide exceptions. Its mutation controls reject a wrong owner and an additional owner; the physical enum checks still require the exact WinHttp values. @@ -142,11 +145,11 @@ The physical control requires exactly 39 constructor rows in 39 types to gain ```powershell dotnet build BuildTools -c Release .\scripts\Build-WinHttpMigrationImage.ps1 -ToolingControl ` - -OutputDirectory .\artifacts\winhttp-migration\tooling-control + -OutputDirectory .\artifacts\winhttp-migration\tooling-control-preserved-names .\scripts\Build-WinHttpMigrationImage.ps1 ` -BaselineDirectory .\artifacts\winhttp-migration\old ` - -OutputDirectory .\artifacts\winhttp-migration\new ` - -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control + -OutputDirectory .\artifacts\winhttp-migration\new-preserved-names ` + -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control-preserved-names ``` The image builder verifies the frozen inputs and tools, scrapes only WinHttp and @@ -169,9 +172,9 @@ source, discovery, and expected-difference hashes. . .\scripts\CommonUtils.ps1 Install-VsDevShell $env:WINHTTP_MIGRATION_OLD = (Resolve-Path .\artifacts\winhttp-migration\old\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control\Windows.Win32.winmd).Path -$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new\selection\obj\prepared-sdk.txt -Raw).Trim() +$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new-preserved-names\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control-preserved-names\Windows.Win32.winmd).Path +$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new-preserved-names\selection\obj\prepared-sdk.txt -Raw).Trim() dotnet test tests\Win32MetadataScraperTests -c Release ` --filter "FullyQualifiedName~PreparedSdkHeadersTests|FullyQualifiedName~WinHttpMigrationTests|FullyQualifiedName~WinHttpNativeControlTests" ` --logger "console;verbosity=normal" @@ -186,7 +189,8 @@ transactions, and lock contention. Native controls parse the real WinHttp and HttpServer translation units for x86, x64, and ARM64 with metadata disabled, comparing native signatures, calling conventions, typedef pointer depth, enum values, field offsets, record sizes, and -alignment. Each control owns its raw Clang translation unit and cursors rather +alignment. They also compile explicit assertions for the four original native +scheme macro values. Each control owns its raw Clang translation unit and cursors rather than reusing managed AST wrappers from earlier generator fixtures. Exact fact counts and hashes are pinned: 969 facts for WinHttp and 3,669 for HttpServer per architecture. An exclusive test collection also keeps these SDK-sized AST walks @@ -211,16 +215,17 @@ SRM checks; neither is presented as a comprehensive typed metadata equivalence oracle. The ten approved Printing fixes belong to the tooling OLD baseline and must not appear as new WinHttp migration differences. -`patches\WinHttp.expected-differences.txt` admits exactly 24 declaration differences: +`patches\WinHttp.expected-differences.txt` admits exactly 20 declaration differences: native integer types and `AssociatedEnum` at eight sites (16 differences), plus -four genuine scheme member additions and four fabricated-member removals. It +four genuine native scheme constants on `Apis`. Existing logical enum member +names and values are preserved. It does not admit callback renames, import changes, dependent changes, additional constants, or changed values. The image builder applies this grade before publishing its provenance receipt. -## Pinned pilot evidence +## Original native-name candidate (immutable) -The complete migrated image was produced by commit +The original complete migrated image was produced by commit `9faf8a24831e1ef0a44d4ccfe4cd972f380452b3`, above tooling commit `00ade0afc94c965522ccdbac54a06fc1bcbd01a1`. The supported pins remain ClangSharp/Interop/PInvokeGenerator `21.1.8.4`, libclang `21.1.8`, and @@ -233,7 +238,7 @@ All three images are `Windows.Win32.winmd` under | --- | --- | --- | | Frozen OLD | `old` | `1361407C2888102CB5161D83503235C09C36F917837C7107CA0A80E5CF4FAC43` | | Frozen-input corrected-tooling control | `tooling-control-final` | `274A288E622B840552934AE74FE2A33FEC4E7D4E47E3D3454B92A147A13B0CDA` | -| Migrated NEW | `new-final` | `C7AEC280B0CBB19CDAD6B94FFED8473B2B22E4042BF886FCF33DCBDD92274258` | +| Original native-name NEW | `new-final` | `C7AEC280B0CBB19CDAD6B94FFED8473B2B22E4042BF886FCF33DCBDD92274258` | The normal SDK first/repeated selection has ten byte-identical inputs: four native C# files, four per-TU discovery files, and two aggregate response files. The @@ -278,7 +283,7 @@ Compare OLD + baseline consumer, OLD + proposed consumer, and NEW + proposed consumer, pinning both consumer revisions explicitly. Public-surface comparison and actual caller compilation are required; generated text alone is not the gate. -### Measured consumer prototype +### Measured consumer prototype for the original candidate The three-way consumer proof pins baseline CsWin32 commit `f3f5a69aa4823466ef7b55bbdc8e5ba41ec021e6` and prototype commit @@ -291,7 +296,7 @@ pins, not that shared development-version label, identify the implementations. | Baseline | `8DD41E7CEB160F2B2C89A20848831C58EE91D42C84787B9103D80CF06D88B9FA` | | Prototype | `7F42F29E63541A9E238A66131ED3D0797C187072BA828B8F6762BA1A4BA98972` | -OLD + prototype generates identical code to OLD + baseline in both marshaling +For the original image, OLD + prototype generates identical code to OLD + baseline in both marshaling modes, with the unchanged caller compiling successfully. NEW + prototype has the same public-symbol counts (187 with marshaling, 186 without); the only public and generated-code deltas are the four scheme member names below. Signatures, direct @@ -300,7 +305,7 @@ match the baseline. In both modes the unchanged caller fails with exactly four `CS0117` errors: -| Unchanged caller location | Missing member of `WINHTTP_INTERNET_SCHEME` | Current NEW member | Value | +| Unchanged caller location | Missing member of `WINHTTP_INTERNET_SCHEME` | Original NEW member | Value | | --- | --- | --- | --- | | `(16,47)` | `WINHTTP_INTERNET_SCHEME_HTTP` | `INTERNET_SCHEME_HTTP` | 1 | | `(17,47)` | `WINHTTP_INTERNET_SCHEME_HTTPS` | `INTERNET_SCHEME_HTTPS` | 2 | @@ -325,6 +330,32 @@ Frozen copies of the prototype reports are kept under the private This is scoped prototype evidence for the 16 requests, not approved shipping consumer support, runtime/network testing, or general fabricated-handle migration coverage. Enabling `useSafeHandles` does not invent ownership for this scope. -The current image and header member names remain unchanged pending the naming -decision. The patch migration is reviewable; source-compatibility acceptance is -still blocked on those four measured breaks and review of the consumer prototype. +The original image and receipts remain unchanged as historical evidence; its +four renames are not carried into the naming-preserved candidate. + +## Naming-preserved candidate + +The fresh candidate is named `new-preserved-names`, with a separately emitted +`tooling-control-preserved-names`. Its `provenance.json` must bind the committed +producer, prepared-header manifest, exact 20-difference grade, complete generated +closure, and first/repeated selected inputs. These outputs do not overwrite +`new-final` or any original consumer receipts. The original patch, expectations, +and owner exceptions are also frozen privately in `original-C7AEC280-inputs`. + +The original three-way consumer reports do not prove this fresh image. Replaying +them requires the existing pinned consumer binaries copied read-only to isolated +migration artifacts, both marshaling modes, and the same unchanged callers. +The original TRX's test-output path no longer contains the pinned 41ff prototype +assembly. The separate a47 follow-up does match the currently available prototype +binary, but its recorded baseline does not match the adjacent baseline file: + +| a47 replay input | Recorded SHA256 | Available SHA256 | +| --- | --- | --- | +| Prototype | `C239B5F8ACED3A68FCB2AD373A244F064D25E2E9DCD031013C4CCB13E9BDAF38` | `C239B5F8ACED3A68FCB2AD373A244F064D25E2E9DCD031013C4CCB13E9BDAF38` | +| Baseline | `C3DD28F89F38A94CD877A29572A1E3648BAB2EF2D07F13C50FC1133EFD792424` | `CCA02C2360C452E19654800F3B27F763FD30E7BAAE5F0BB7842218E7A7F8B5AB` | + +The a47 reports and this mismatch are frozen privately in +`consumer-prototype-a47-evidence`. Changed live outputs must not be substituted +for the recorded runtime closure or relabeled as 41ff. The CsWin32 cleanup +checkout is not modified or rebuilt for this proof. Fresh unchanged-caller +acceptance remains pending an available immutable matching prototype closure. diff --git a/generation/WinSDK/patches/WinHttp.expected-differences.txt b/generation/WinSDK/patches/WinHttp.expected-differences.txt index 83615e38f..c411ec6bb 100644 --- a/generation/WinSDK/patches/WinHttp.expected-differences.txt +++ b/generation/WinSDK/patches/WinHttp.expected-differences.txt @@ -1,7 +1,11 @@ # Same-SDK b5b7b26 OLD to the complete WinHttp header-annotation NEW. # Native integer ABI plus eight authored logical-enum relationships. -# Four genuine SDK scheme spellings replace fabricated old enum member names. +# Preserve OLD logical scheme members; add the four genuine native constants. # No import, OS, last-error, callback, port, dependent-partition, or value changes. +Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_FTP added +Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_HTTP added +Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_HTTPS added +Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_SOCKS added Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags) : [In] => [AssociatedEnum(WIN_HTTP_CREATE_URL_FLAGS),In] Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags)...Windows.Win32.Networking.WinHttp.WIN_HTTP_CREATE_URL_FLAGS => System.UInt32 Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType) : [In] => [AssociatedEnum(WINHTTP_ACCESS_TYPE),In] @@ -14,14 +18,6 @@ Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme : => [Associated Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme : => [AssociatedEnum(WINHTTP_CREDS_AUTHSCHEME)] Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_FTP added -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_HTTP added -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_HTTPS added -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.INTERNET_SCHEME_SOCKS added -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_FTP removed -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_HTTP removed -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_HTTPS removed -Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME.WINHTTP_INTERNET_SCHEME_SOCKS removed Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType : => [AssociatedEnum(WINHTTP_ACCESS_TYPE)] Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch index ad3fe3401..7dd0d4c52 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch @@ -73,7 +73,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi ); _Win32_ImportLibrary_("WINHTTP.dll") -@@ -2653,6 +2653,114 @@ +@@ -2653,6 +2653,102 @@ #endif @@ -162,25 +162,13 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi +#pragma pop_macro("WINHTTP_AUTH_SCHEME_NTLM") +#pragma pop_macro("WINHTTP_AUTH_SCHEME_BASIC") + -+#pragma push_macro("INTERNET_SCHEME_HTTP") -+#undef INTERNET_SCHEME_HTTP -+#pragma push_macro("INTERNET_SCHEME_HTTPS") -+#undef INTERNET_SCHEME_HTTPS -+#pragma push_macro("INTERNET_SCHEME_FTP") -+#undef INTERNET_SCHEME_FTP -+#pragma push_macro("INTERNET_SCHEME_SOCKS") -+#undef INTERNET_SCHEME_SOCKS +enum WINHTTP_INTERNET_SCHEME : INTERNET_SCHEME +{ -+ INTERNET_SCHEME_HTTP = (1), -+ INTERNET_SCHEME_HTTPS = (2), -+ INTERNET_SCHEME_FTP = (3), -+ INTERNET_SCHEME_SOCKS = (4), ++ WINHTTP_INTERNET_SCHEME_HTTP = INTERNET_SCHEME_HTTP, ++ WINHTTP_INTERNET_SCHEME_HTTPS = INTERNET_SCHEME_HTTPS, ++ WINHTTP_INTERNET_SCHEME_FTP = INTERNET_SCHEME_FTP, ++ WINHTTP_INTERNET_SCHEME_SOCKS = INTERNET_SCHEME_SOCKS, +}; -+#pragma pop_macro("INTERNET_SCHEME_SOCKS") -+#pragma pop_macro("INTERNET_SCHEME_FTP") -+#pragma pop_macro("INTERNET_SCHEME_HTTPS") -+#pragma pop_macro("INTERNET_SCHEME_HTTP") + +#endif + diff --git a/tests/MetadataUtils.Tests/WinmdComparisonTests.cs b/tests/MetadataUtils.Tests/WinmdComparisonTests.cs index 4ca108359..aee8289c0 100644 --- a/tests/MetadataUtils.Tests/WinmdComparisonTests.cs +++ b/tests/MetadataUtils.Tests/WinmdComparisonTests.cs @@ -109,6 +109,25 @@ namespace Beta { public enum NativeScheme { SCHEME_HTTP = 3 } }"; Assert.Contains("SCHEME_HTTP", console.Out.ToString()); } + [Theory] + [InlineData("SCHEME_HTTP=Alpha.Apis,Beta.NativeScheme", false, 0)] + [InlineData("SCHEME_HTTP=Alpha.NativeScheme,Beta.NativeScheme", false, -1)] + [InlineData("SCHEME_HTTP=Alpha.Apis,Beta.NativeScheme", true, -1)] + public void NativeConstantExceptionsDoNotAdmitTheOldLogicalEnumOwner(string allowed, bool thirdOwner, int expected) + { + using var fixture = new ComparisonFixture(); + const string source = @" +namespace Alpha { public static class Apis { public const uint SCHEME_HTTP = 1; } } +namespace Beta { public enum NativeScheme { SCHEME_HTTP = 3 } }"; + var image = fixture.Emit("native-duplicates", source + (thirdOwner + ? "namespace Gamma { public enum NativeScheme { SCHEME_HTTP = 9 } }" + : "")); + var console = new TestConsole(); + Assert.Equal(expected, WinmdUtilsProgram.Program.ShowDuplicateConstants(image, new[] { allowed }, console)); + if (expected != 0) + Assert.Contains("SCHEME_HTTP", console.Out.ToString()); + } + private sealed class ComparisonFixture : IDisposable { private readonly string directory = Path.Combine(Path.GetTempPath(), "WinmdComparisonTests-" + Guid.NewGuid().ToString("N")); diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index e16004428..15ee05fbf 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -173,7 +173,7 @@ public void HeaderFactsReachEveryPhysicalArchitecture(int architecture) [InlineData(1)] [InlineData(2)] [InlineData(4)] - public void HeaderEnumsUseNativeNamesValuesAndUnderlyingTypes(int architecture) + public void HeaderEnumsPreserveLogicalNamesNativeValuesAndUnderlyingTypes(int architecture) { using var image = Open("WINHTTP_MIGRATION_NEW"); var reader = image.Reader; @@ -198,10 +198,23 @@ public void HeaderEnumsUseNativeNamesValuesAndUnderlyingTypes(int architecture) }); Check("WINHTTP_INTERNET_SCHEME", "Int32", false, new Dictionary { - ["INTERNET_SCHEME_HTTP"] = 1, ["INTERNET_SCHEME_HTTPS"] = 2, - ["INTERNET_SCHEME_FTP"] = 3, ["INTERNET_SCHEME_SOCKS"] = 4, + ["WINHTTP_INTERNET_SCHEME_HTTP"] = 1, ["WINHTTP_INTERNET_SCHEME_HTTPS"] = 2, + ["WINHTTP_INTERNET_SCHEME_FTP"] = 3, ["WINHTTP_INTERNET_SCHEME_SOCKS"] = 4, }); var apis = Type(reader, "Apis", architecture); + foreach (var scheme in new[] { ("HTTP", 1u), ("HTTPS", 2u), ("FTP", 3u), ("SOCKS", 4u) }) + { + string name = "INTERNET_SCHEME_" + scheme.Item1; + var field = apis.GetFields().Select(reader.GetFieldDefinition).Single(value => reader.GetString(value.Name) == name); + Assert.Equal("UInt32", field.DecodeSignature(Signatures, null)); + var constant = reader.GetConstant(field.GetDefaultValue()); + Assert.Equal(ConstantTypeCode.UInt32, constant.TypeCode); + Assert.Equal(scheme.Item2, reader.GetBlobReader(constant.Value).ReadUInt32()); + var owners = reader.TypeDefinitions.Where(handle => reader.GetTypeDefinition(handle).GetFields() + .Select(reader.GetFieldDefinition).Any(value => reader.GetString(value.Name) == name)) + .Select(handle => FullName(reader, handle)).Distinct().OrderBy(value => value, StringComparer.Ordinal); + Assert.Equal(new[] { WinHttpNamespace + ".Apis", "Windows.Win32.Networking.WinInet.INTERNET_SCHEME" }, owners); + } foreach (var port in new[] { ("INTERNET_DEFAULT_PORT", 0), ("INTERNET_DEFAULT_HTTP_PORT", 80), ("INTERNET_DEFAULT_HTTPS_PORT", 443) }) { var field = apis.GetFields().Select(reader.GetFieldDefinition).Single(value => reader.GetString(value.Name) == port.Item1); diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 8630f1685..ee31f3add 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -75,9 +75,15 @@ string[] Surface(string includeRoot) } } Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); + using var unsaved = CXUnsavedFile.Create(source, File.ReadAllText(source) + @" +static_assert(INTERNET_SCHEME_HTTP == 1); +static_assert(INTERNET_SCHEME_HTTPS == 2); +static_assert(INTERNET_SCHEME_FTP == 3); +static_assert(INTERNET_SCHEME_SOCKS == 4); +"); using var index = CXIndex.Create(false, false); Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), - ReadOnlySpan.Empty, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); + new[] { unsaved }, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); // Own raw cursors so earlier generator fixtures cannot supply a cached managed AST wrapper. using var unit = handle; for (uint i = 0; i < handle.NumDiagnostics; i++) diff --git a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp index c95df93c1..d690b1df1 100644 --- a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp +++ b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp @@ -15,7 +15,7 @@ EALL NONE NETWORK RESERVED1 -INTERNET_SCHEME_FTP=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_HTTP=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_HTTPS=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_SOCKS=Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME,Windows.Win32.Networking.WinInet.INTERNET_SCHEME \ No newline at end of file +INTERNET_SCHEME_FTP=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_HTTP=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_HTTPS=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME +INTERNET_SCHEME_SOCKS=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME \ No newline at end of file From d3c2c0a1a88229c191540955bffecf7eb6da12aa Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 17:56:26 -0700 Subject: [PATCH 09/57] Keep WinHttp metadata delta to native signatures and associations Preserve all OLD enum identities, names and values; reject extra APIs and document the bounded partition review playbook. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 64 +++++++++++++++---- .../patches/WinHttp.expected-differences.txt | 6 +- .../WinHttpMigrationTests.cs | 20 +++--- .../assets/duplicateConstantsAllowList.rsp | 6 +- 4 files changed, 65 insertions(+), 31 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 719e29be4..947a16a4d 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -5,6 +5,29 @@ retaining the C# scraper/emitter and the matched ClangSharp 21 stack. It is a se migration layer above the tooling PR, not a replacement for that tooling. No other partition is migrated. +## Partition review playbook + +Review the patch and matching legacy removals first, then distinguish actual +signature changes from relocated facts. Bind OLD and the candidate to one SDK; +run the prepared-header scrape/emission and exact diagnostic grade; separately +report the consumer experience as measured or unverified. A known-difference +entry is not authorization to add an API, enum family, or enum member. + +At a design boundary, capture one bounded reproducer, name the owner and smallest +decision, and ask the user before expanding scope. Do not turn a partition pilot +into parser work, consumer implementation, or new test infrastructure. For this +pilot the user chose to preserve existing logical member names and minimize the +winmd delta; fresh consumer replay is unverified, not an invitation to rebuild +another owner's checkout. + +| Current OLD-to-candidate review delta | Meaning | +| --- | --- | +| Three method parameters and five struct fields use native integers | For example, `WinHttpOpenRequest::dwFlags` changes from `WINHTTP_OPEN_REQUEST_FLAGS` to `UInt32`; `URL_COMPONENTS::nScheme` changes from `WINHTTP_INTERNET_SCHEME` to `Int32`. Native width, calling convention, and layout are unchanged. | +| Eight `AssociatedEnum` additions at those same sites | Preserve the logical relationship for a capable consumer; not eight additional APIs. | +| Import, OS, last-error, buffer, port, and callback facts relocated | Existing final contracts stay unchanged; the matching legacy semantics are removed. | +| Zero added/removed enum types, members, or API symbols | The five logical groups already exist in OLD. Native scheme macros remain in the ordinary header, not as newly manufactured WinHttp winmd constants. | +| Fresh CsWin32 experience: unverified | The original C7 prototype measured four scheme-name breaks; this candidate restores the old names, but has not been regenerated against a complete matching frozen consumer closure. | + ## Inputs and ownership `generation\WinSDK\patches\WinHttp.json` pins SDK CPP `10.0.26100.7705`, the @@ -49,7 +72,7 @@ WinHttp library-map candidates are outside the emitted scope and remain unmigrat | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | | Five logical enums, 21 emitted members, eight uses | Guarded native enums plus `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | | Three port constant types | Guarded `constexpr INTERNET_PORT` declarations | Three `ushort` constant overrides | -| Four native scheme constants | Untouched `INTERNET_SCHEME_*` macros emitted as loose constants | Four constants-scraper exclusions | +| Four native scheme macros | Untouched native macros initialize the preserved logical members | Four constants-scraper exclusions; no new winmd constants | | One pointer-adding callback alias | Metadata-only guard around `LPWINHTTP_STATUS_CALLBACK` | Partition callback exclusion | All 59 bindings independently match the selected SDK's x64 `winhttp.lib` @@ -101,8 +124,8 @@ The user-selected naming policy preserves the existing C# members `WINHTTP_INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS` in the metadata-only logical enum. Each initializer references its genuine `INTERNET_SCHEME_*` macro, yielding 1/2/3/4 respectively. Those macros are neither undefined nor renamed; ordinary -native declarations and integer ABI stay intact. The four genuine constants are -also emitted independently on WinHttp `Apis`, not hidden or replaced by aliases. +native declarations and integer ABI stay intact. There are no new loose WinHttp +winmd constants: ordinary native macros are not the same as added metadata symbols. This is a bounded header-side exception to the specification's native-member spelling rule for these four existing logical members, not a general renaming rule. No semantic sidecar, consumer alias, WinHttp-specific consumer behavior, or @@ -118,11 +141,19 @@ fields, matching OLD synthetic-enum C#. It does not request an enum-valued prope an interface-property shim, or a legacy projection mode. Each associated group in this pilot has one consistent underlying type across all its use sites. -The genuine scheme spellings are also present in the distinct WinInet native enum, -with different values. The duplicate-constant gate admits only the exact -WinHttp `Apis`/WinInet native-enum owner pair for each of these four names, not unqualified name-wide -exceptions. Its mutation controls reject a wrong owner and an additional owner; -the physical enum checks still require the exact WinHttp values. +The genuine scheme spellings remain present in the distinct WinInet native enum, +with different values. The candidate adds no duplicate owner and needs no +WinHttp/WinInet duplicate-constant exceptions. Physical checks require the exact +OLD WinHttp enum identities, names, values, and attributes, and the existing +WinInet owner set stays unchanged. + +For example, OLD `enums.json` defines `WINHTTP_ACCESS_TYPE` with +`WINHTTP_ACCESS_TYPE_DEFAULT_PROXY=0`, `WINHTTP_ACCESS_TYPE_NO_PROXY=1`, +`WINHTTP_ACCESS_TYPE_NAMED_PROXY=3`, and +`WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY=4`. The guarded header enum declares those +same four members and values; `WinHttpOpen::dwAccessType` keeps native `DWORD` +plus `AssociatedEnum(WINHTTP_ACCESS_TYPE)`. This relocates existing membership, +not a demonstrated fix for a missing `NONE` member or an earlier required cast. ## Reproducing the image and controls @@ -215,10 +246,10 @@ SRM checks; neither is presented as a comprehensive typed metadata equivalence oracle. The ten approved Printing fixes belong to the tooling OLD baseline and must not appear as new WinHttp migration differences. -`patches\WinHttp.expected-differences.txt` admits exactly 20 declaration differences: -native integer types and `AssociatedEnum` at eight sites (16 differences), plus -four genuine native scheme constants on `Apis`. Existing logical enum member -names and values are preserved. It +`patches\WinHttp.expected-differences.txt` admits exactly 16 declaration differences: +eight native integer use-site types and eight corresponding `AssociatedEnum` +additions. Existing logical enum identities, member names, and values are +preserved. It does not admit callback renames, import changes, dependent changes, additional constants, or changed values. The image builder applies this grade before publishing its provenance receipt. @@ -337,11 +368,18 @@ four renames are not carried into the naming-preserved candidate. The fresh candidate is named `new-preserved-names`, with a separately emitted `tooling-control-preserved-names`. Its `provenance.json` must bind the committed -producer, prepared-header manifest, exact 20-difference grade, complete generated +producer, prepared-header manifest, exact 16-difference grade, complete generated closure, and first/repeated selected inputs. These outputs do not overwrite `new-final` or any original consumer receipts. The original patch, expectations, and owner exceptions are also frozen privately in `original-C7AEC280-inputs`. +The first strict comparison rejected four unused expectations for extra loose +WinHttp constants. The emitted image did not contain those symbols. The user's +minimal-delta decision removes those expectations and their obsolete owner +exceptions, rather than changing the producer to manufacture additions. +Emission and final grading commits are recorded separately; correcting the +diagnostic policy does not require regenerating unchanged metadata. + The original three-way consumer reports do not prove this fresh image. Replaying them requires the existing pinned consumer binaries copied read-only to isolated migration artifacts, both marshaling modes, and the same unchanged callers. diff --git a/generation/WinSDK/patches/WinHttp.expected-differences.txt b/generation/WinSDK/patches/WinHttp.expected-differences.txt index c411ec6bb..295b0a2ff 100644 --- a/generation/WinSDK/patches/WinHttp.expected-differences.txt +++ b/generation/WinSDK/patches/WinHttp.expected-differences.txt @@ -1,11 +1,7 @@ # Same-SDK b5b7b26 OLD to the complete WinHttp header-annotation NEW. # Native integer ABI plus eight authored logical-enum relationships. -# Preserve OLD logical scheme members; add the four genuine native constants. +# Preserve OLD logical scheme members and ordinary native constants. # No import, OS, last-error, callback, port, dependent-partition, or value changes. -Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_FTP added -Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_HTTP added -Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_HTTPS added -Windows.Win32.Networking.WinHttp.Apis.INTERNET_SCHEME_SOCKS added Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags) : [In] => [AssociatedEnum(WIN_HTTP_CREATE_URL_FLAGS),In] Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags)...Windows.Win32.Networking.WinHttp.WIN_HTTP_CREATE_URL_FLAGS => System.UInt32 Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType) : [In] => [AssociatedEnum(WINHTTP_ACCESS_TYPE),In] diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 15ee05fbf..f7275ae3c 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -41,10 +41,17 @@ public void CompleteNewImageClosesConstructorsAndFrozenOldDefectIsExplicit() using var current = Open("WINHTTP_MIGRATION_NEW"); Assert.Equal(37314, old.Reader.TypeDefinitions.Count); Assert.Equal(old.Reader.TypeDefinitions.Count, current.Reader.TypeDefinitions.Count); + string[] beforeEnums = EnumIdentities(old.Reader); + Assert.Equal(beforeEnums, EnumIdentities(current.Reader)); + this.output.WriteLine($"Complete enum identity set unchanged: {beforeEnums.Length}; added 0, removed 0."); var defect = Assert.ThrowsAny(() => AssertClosure(old.Reader)); Assert.Contains("Unresolved local attribute constructor: " + MetadataNamespace + ".SupportedOSPlatformAttribute", defect.Message); Assert.Contains("definitions: 0|0|1|Void|String", defect.Message); AssertClosure(current.Reader); + + static string[] EnumIdentities(MetadataReader reader) => Types(reader) + .Where(entry => !entry.Value.BaseType.IsNil && FullName(reader, entry.Value.BaseType) == "System.Enum") + .Select(entry => entry.Key).OrderBy(value => value, StringComparer.Ordinal).ToArray(); } [MigrationFact] @@ -175,6 +182,7 @@ public void HeaderFactsReachEveryPhysicalArchitecture(int architecture) [InlineData(4)] public void HeaderEnumsPreserveLogicalNamesNativeValuesAndUnderlyingTypes(int architecture) { + using var old = Open("WINHTTP_MIGRATION_OLD"); using var image = Open("WINHTTP_MIGRATION_NEW"); var reader = image.Reader; Check("WINHTTP_OPEN_REQUEST_FLAGS", "UInt32", true, new Dictionary @@ -202,18 +210,13 @@ public void HeaderEnumsPreserveLogicalNamesNativeValuesAndUnderlyingTypes(int ar ["WINHTTP_INTERNET_SCHEME_FTP"] = 3, ["WINHTTP_INTERNET_SCHEME_SOCKS"] = 4, }); var apis = Type(reader, "Apis", architecture); - foreach (var scheme in new[] { ("HTTP", 1u), ("HTTPS", 2u), ("FTP", 3u), ("SOCKS", 4u) }) + foreach (string name in new[] { "INTERNET_SCHEME_HTTP", "INTERNET_SCHEME_HTTPS", "INTERNET_SCHEME_FTP", "INTERNET_SCHEME_SOCKS" }) { - string name = "INTERNET_SCHEME_" + scheme.Item1; - var field = apis.GetFields().Select(reader.GetFieldDefinition).Single(value => reader.GetString(value.Name) == name); - Assert.Equal("UInt32", field.DecodeSignature(Signatures, null)); - var constant = reader.GetConstant(field.GetDefaultValue()); - Assert.Equal(ConstantTypeCode.UInt32, constant.TypeCode); - Assert.Equal(scheme.Item2, reader.GetBlobReader(constant.Value).ReadUInt32()); + Assert.DoesNotContain(apis.GetFields().Select(reader.GetFieldDefinition), value => reader.GetString(value.Name) == name); var owners = reader.TypeDefinitions.Where(handle => reader.GetTypeDefinition(handle).GetFields() .Select(reader.GetFieldDefinition).Any(value => reader.GetString(value.Name) == name)) .Select(handle => FullName(reader, handle)).Distinct().OrderBy(value => value, StringComparer.Ordinal); - Assert.Equal(new[] { WinHttpNamespace + ".Apis", "Windows.Win32.Networking.WinInet.INTERNET_SCHEME" }, owners); + Assert.Equal(new[] { "Windows.Win32.Networking.WinInet.INTERNET_SCHEME" }, owners); } foreach (var port in new[] { ("INTERNET_DEFAULT_PORT", 0), ("INTERNET_DEFAULT_HTTP_PORT", 80), ("INTERNET_DEFAULT_HTTPS_PORT", 443) }) { @@ -225,6 +228,7 @@ public void HeaderEnumsPreserveLogicalNamesNativeValuesAndUnderlyingTypes(int ar void Check(string name, string underlying, bool flags, Dictionary expected) { var type = Type(reader, name, architecture); + Assert.Equal(SnapshotType(old.Reader, Type(old.Reader, name, architecture)), SnapshotType(reader, type)); Assert.Equal("System.Enum", FullName(reader, type.BaseType)); Assert.Equal(flags, type.GetCustomAttributes().Any(handle => AttributeName(reader, handle) == "FlagsAttribute")); Assert.DoesNotContain(type.GetCustomAttributes(), handle => AttributeName(reader, handle) == "ScopedEnumAttribute"); diff --git a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp index d690b1df1..31872b30e 100644 --- a/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp +++ b/tests/Windows.Win32.Tests/assets/duplicateConstantsAllowList.rsp @@ -14,8 +14,4 @@ UNKNOWN EALL NONE NETWORK -RESERVED1 -INTERNET_SCHEME_FTP=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_HTTP=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_HTTPS=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME -INTERNET_SCHEME_SOCKS=Windows.Win32.Networking.WinHttp.Apis,Windows.Win32.Networking.WinInet.INTERNET_SCHEME \ No newline at end of file +RESERVED1 \ No newline at end of file From 400231d5a618ed39a68f633017f7eab31ef64a44 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 18:04:07 -0700 Subject: [PATCH 10/57] Record minimal WinHttp partition review delta and verified candidate Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 33 ++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 947a16a4d..9448b366a 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -147,7 +147,8 @@ WinHttp/WinInet duplicate-constant exceptions. Physical checks require the exact OLD WinHttp enum identities, names, values, and attributes, and the existing WinInet owner set stays unchanged. -For example, OLD `enums.json` defines `WINHTTP_ACCESS_TYPE` with +For example, OLD `enums.json` lists the four `WINHTTP_ACCESS_TYPE` members; the +same-SDK macros and frozen OLD metadata give their values: `WINHTTP_ACCESS_TYPE_DEFAULT_PROXY=0`, `WINHTTP_ACCESS_TYPE_NO_PROXY=1`, `WINHTTP_ACCESS_TYPE_NAMED_PROXY=3`, and `WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY=4`. The guarded header enum declares those @@ -367,7 +368,7 @@ four renames are not carried into the naming-preserved candidate. ## Naming-preserved candidate The fresh candidate is named `new-preserved-names`, with a separately emitted -`tooling-control-preserved-names`. Its `provenance.json` must bind the committed +`tooling-control-preserved-names`. Its `provenance.json` binds the committed producer, prepared-header manifest, exact 16-difference grade, complete generated closure, and first/repeated selected inputs. These outputs do not overwrite `new-final` or any original consumer receipts. The original patch, expectations, @@ -380,6 +381,29 @@ exceptions, rather than changing the producer to manufacture additions. Emission and final grading commits are recorded separately; correcting the diagnostic policy does not require regenerating unchanged metadata. +| Current evidence | Identity | +| --- | --- | +| Naming-preserved NEW | `368ECA3E68D89BBCAABC0696FAA32E13CBB04F7C92F51C5046440D506A9341B4` | +| Matching frozen-input tooling control | `9E6D95E42197BE2409807B8F93A27950192D57F455906A8F70F257B1CA6D932B` | +| Emission producer commit | `3d62ae750f7cd0079f39b14447c6a9af2b18d03c` | +| Final diagnostic-policy/grading commit | `d3c2c0a1a88229c191540955bffecf7eb6da12aa` | +| Provenance SHA256 | `A50A2B9AD1A3306E04C34A388AB7748358E24738A784298D417D38E57BD8D8A1` | + +The split receipt verifies that only documentation, tests, and diagnostic +expectations changed between emission and grading; header patches, emitter +inputs, and controlled tool binaries did not change. The strict final grade +uses all 16 expected differences with zero unknown or unused entries. +There are zero added API symbols, enum types, or enum members; all 7,791 complete +enum identities match OLD, including the five migrated logical groups and their +21 unchanged members. All 37,248 non-WinHttp physical snapshots remain unchanged. +First/repeated normal SDK scraping retains ten byte-identical inputs and 155 +complete pointer reductions. + +The final existing suites passed 191 scraper/pilot, 46 emitter, 40 utilities, and +14 SDK integrity cases, without skips. The native legs retain all original ABI +hashes and compile explicit native scheme macro assertions on x86/x64/ARM64. +No in-scope semantic fallback or additional duplicate-constant exception is used. + The original three-way consumer reports do not prove this fresh image. Replaying them requires the existing pinned consumer binaries copied read-only to isolated migration artifacts, both marshaling modes, and the same unchanged callers. @@ -397,3 +421,8 @@ The a47 reports and this mismatch are frozen privately in for the recorded runtime closure or relabeled as 41ff. The CsWin32 cleanup checkout is not modified or rebuilt for this proof. Fresh unchanged-caller acceptance remains pending an available immutable matching prototype closure. +No further consumer search, rebuild, or implementation is part of this pilot. +The next review decision belongs to the consumer owner: verify generic +`AssociatedEnum` projection separately when an agreed runnable consumer is +available. A missing-member improvement would likewise require a separate, +demonstrated OLD caller case and user approval; this migration adds no membership. From bb83dc967aacb82906d25e898338e703602502a1 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 21:39:14 -0700 Subject: [PATCH 11/57] Use SDK-scanned imports and one shared header preparation stage Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 55 +- generation/WinSDK/Windows.Win32.proj | 15 +- generation/WinSDK/libMappings.rsp | 59 +++ .../patches/{WinHttp.json => SdkHeaders.json} | 1 - .../post-midl/um/winhttp.imports.patch | 472 ------------------ .../um/winhttp.interior-pointers.patch | 2 +- .../post-midl/um/winhttp.last-error.patch | 106 ++-- .../post-midl/um/winhttp.logical-enums.patch | 10 +- .../um/winhttp.port-constant-types.patch | 2 +- .../post-midl/um/winhttp.supported-os.patch | 154 +++--- scripts/Prepare-SdkHeaders.ps1 | 3 +- .../PreparedSdkHeadersTests.cs | 91 +++- .../WinHttpMigrationTests.cs | 16 +- 13 files changed, 352 insertions(+), 634 deletions(-) rename generation/WinSDK/patches/{WinHttp.json => SdkHeaders.json} (96%) delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.imports.patch diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 9448b366a..6657e10c2 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -1,6 +1,6 @@ # WinHttp header annotations -This pilot moves the functional WinHttp sidecars into reviewed header patches while +This pilot moves authored functional WinHttp sidecars into reviewed header patches while retaining the C# scraper/emitter and the matched ClangSharp 21 stack. It is a separate migration layer above the tooling PR, not a replacement for that tooling. No other partition is migrated. @@ -24,13 +24,13 @@ another owner's checkout. | --- | --- | | Three method parameters and five struct fields use native integers | For example, `WinHttpOpenRequest::dwFlags` changes from `WINHTTP_OPEN_REQUEST_FLAGS` to `UInt32`; `URL_COMPONENTS::nScheme` changes from `WINHTTP_INTERNET_SCHEME` to `Int32`. Native width, calling convention, and layout are unchanged. | | Eight `AssociatedEnum` additions at those same sites | Preserve the logical relationship for a capable consumer; not eight additional APIs. | -| Import, OS, last-error, buffer, port, and callback facts relocated | Existing final contracts stay unchanged; the matching legacy semantics are removed. | +| OS, last-error, buffer, port, and callback facts relocated | Existing final contracts stay unchanged; the matching authored legacy semantics are removed. SDK-scanned import bindings remain derived inputs. | | Zero added/removed enum types, members, or API symbols | The five logical groups already exist in OLD. Native scheme macros remain in the ordinary header, not as newly manufactured WinHttp winmd constants. | | Fresh CsWin32 experience: unverified | The original C7 prototype measured four scheme-name breaks; this candidate restores the old names, but has not been regenerated against a complete matching frozen consumer closure. | ## Inputs and ownership -`generation\WinSDK\patches\WinHttp.json` pins SDK CPP `10.0.26100.7705`, the +`generation\WinSDK\patches\SdkHeaders.json` pins SDK CPP `10.0.26100.7705`, the post-MIDL mirror Git tree, exact header preimages, their selected-SDK inputs, and patch order. `winhttp.h` is byte-identical to the selected package. The package supplies `httprequest.idl`, not `httprequest.h`; the recipe separately pins the @@ -44,7 +44,13 @@ direct or transitive includes of these headers. WinInet is a semantic dependent: its two existing create-URL flag uses refer to the WinHttp-owned enum, and its existing `HTTP_VERSION_INFO` exclusion preserves that type's WinHttp ownership. -`Prepare-SdkHeaders.ps1` copies the complete mirror into a private, +The single project-wide `PrepareSdkHeaders` stage runs before native toolchain +consumption, including the first `CompileIdls` dependency. Both ordinary and +partition-filtered direct SDK builds use this same stage; constants depend on +header scraping and consume the same private root. The orchestration has no +partition hook or WinHttp default recipe. The project supplies the SDK-wide +recipe explicitly to the generic `Prepare-SdkHeaders.ps1` script, which copies +the complete mirror into a private, content-addressed include tree and applies the ordered post-MIDL patches there. It checks SDK/preimage identity, admitted patch targets, source/cache hashes, ordinary paths, patch ordering, and strict patch applicability. Publication is @@ -52,8 +58,9 @@ transactional and serialized; a modified published cache is rejected, not repair while a scraper might be reading it. Unmodified files retain their exact bytes. The tracked SDK mirror is never an output. -The repository project prepares this tree before scraping and uses the same root -for constants. Changing its identity invalidates both scrape markers. Namespace, +Changing its identity invalidates the constants marker and every architecture's +header-scrape marker before any consumer runs. An unchanged identity retains the +markers. Namespace, traversal, architecture, schema, and cross-partition declaration-ownership configuration remain build inputs, not replacements for functional annotations. @@ -62,11 +69,12 @@ configuration remain build inputs, not replacements for functional annotations. The scraper sees 61 native WinHttp functions; the final OLD winmd emits 59 API methods. The other two native declarations lack an import binding and are not emitted as APIs. Import-library names alone are not declarations: 20 additional -WinHttp library-map candidates are outside the emitted scope and remain unmigrated. +WinHttp library-map candidates are outside the emitted scope. Their SDK-derived +entries remain in the generated mapping. -| Functional fact | Migrated source | Legacy input removed | +| Functional fact | Current authority | Authored legacy input removed | | --- | --- | --- | -| 59 DLL bindings | `_Win32_ImportLibrary_("WINHTTP.dll")` | 59 emitted-function `libMappings.rsp` rows | +| 59 DLL bindings | SDK `.lib` scan in generated `libMappings.rsp` | None: derived scan entries remain; there is no WinHttp header override | | 38 OS floors: 27 XP, 11 Windows 8 | Fixed `_Windows_SupportedOS_*_` macros | All 38 WinHttp `supportedOS.rsp` rows | | 28 thread-last-error contracts | `_Win32_SetLastError_` | All 28 WinHttp `WithSetLastError.rsp` rows | | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | @@ -77,6 +85,13 @@ WinHttp library-map candidates are outside the emitted scope and remain unmigrat All 59 bindings independently match the selected SDK's x64 `winhttp.lib` (`SHA256 6873F0B8893E8E7BD86CB7A8310631B3FCDE99A85486196FE61CE9F1A352906A`). +`scripts\CreateProcLibMappingForAllLibs.ps1` generates `libMappings.rsp` from SDK +libraries. Library scanning is the default import authority, not an authored +semantic fallback. `_Win32_ImportLibrary_` is reserved for necessary corrections +to missing/incorrect scan data; none is needed for these 59 APIs. Generic parser +support and override controls remain unchanged. The six header patches contain +no `ImportLibrary` annotations, and import entrypoint/module/flags checks remain +mandatory on all three architectures. `WinHttpIsHostInProxyBypassList` and `WinHttpQueryAuthParams` have native declarations but no binding in that library or OLD metadata; neither is a final-winmd API, and the migration does not invent a binding or synthetic declaration. @@ -177,11 +192,11 @@ The physical control requires exactly 39 constructor rows in 39 types to gain ```powershell dotnet build BuildTools -c Release .\scripts\Build-WinHttpMigrationImage.ps1 -ToolingControl ` - -OutputDirectory .\artifacts\winhttp-migration\tooling-control-preserved-names + -OutputDirectory .\artifacts\winhttp-migration\tooling-control-review-cleanup .\scripts\Build-WinHttpMigrationImage.ps1 ` -BaselineDirectory .\artifacts\winhttp-migration\old ` - -OutputDirectory .\artifacts\winhttp-migration\new-preserved-names ` - -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control-preserved-names + -OutputDirectory .\artifacts\winhttp-migration\new-review-cleanup ` + -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control-review-cleanup ``` The image builder verifies the frozen inputs and tools, scrapes only WinHttp and @@ -204,9 +219,9 @@ source, discovery, and expected-difference hashes. . .\scripts\CommonUtils.ps1 Install-VsDevShell $env:WINHTTP_MIGRATION_OLD = (Resolve-Path .\artifacts\winhttp-migration\old\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new-preserved-names\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control-preserved-names\Windows.Win32.winmd).Path -$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new-preserved-names\selection\obj\prepared-sdk.txt -Raw).Trim() +$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new-review-cleanup\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control-review-cleanup\Windows.Win32.winmd).Path +$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new-review-cleanup\selection\obj\prepared-sdk.txt -Raw).Trim() dotnet test tests\Win32MetadataScraperTests -c Release ` --filter "FullyQualifiedName~PreparedSdkHeadersTests|FullyQualifiedName~WinHttpMigrationTests|FullyQualifiedName~WinHttpNativeControlTests" ` --logger "console;verbosity=normal" @@ -217,6 +232,10 @@ are not acceptance. Record nonzero executed counts and require no skipped pilot legs. Preparation controls cover cache reuse/tampering, preimage/SDK/MIDL mismatch, path escapes, unadmitted targets, mode/identity changes, duplicate patches, failed transactions, and lock contention. +SDK-stage controls import the actual project and exercise direct headers/constants, +with and without a partition filter. Each invocation prepares exactly once before +the consumers, all consumers observe the same root, cache reuse retains markers, +and a changed patch invalidates every architecture's marker. Native controls parse the real WinHttp and HttpServer translation units for x86, x64, and ARM64 with metadata disabled, comparing native signatures, calling @@ -365,9 +384,9 @@ coverage. Enabling `useSafeHandles` does not invent ownership for this scope. The original image and receipts remain unchanged as historical evidence; its four renames are not carried into the naming-preserved candidate. -## Naming-preserved candidate +## Naming-preserved candidate before review cleanup (immutable) -The fresh candidate is named `new-preserved-names`, with a separately emitted +The pre-cleanup candidate is named `new-preserved-names`, with a separately emitted `tooling-control-preserved-names`. Its `provenance.json` binds the committed producer, prepared-header manifest, exact 16-difference grade, complete generated closure, and first/repeated selected inputs. These outputs do not overwrite @@ -381,7 +400,7 @@ exceptions, rather than changing the producer to manufacture additions. Emission and final grading commits are recorded separately; correcting the diagnostic policy does not require regenerating unchanged metadata. -| Current evidence | Identity | +| Pre-cleanup evidence | Identity | | --- | --- | | Naming-preserved NEW | `368ECA3E68D89BBCAABC0696FAA32E13CBB04F7C92F51C5046440D506A9341B4` | | Matching frozen-input tooling control | `9E6D95E42197BE2409807B8F93A27950192D57F455906A8F70F257B1CA6D932B` | diff --git a/generation/WinSDK/Windows.Win32.proj b/generation/WinSDK/Windows.Win32.proj index aea79b813..ddc4fc320 100644 --- a/generation/WinSDK/Windows.Win32.proj +++ b/generation/WinSDK/Windows.Win32.proj @@ -46,6 +46,9 @@ $(MSBuildThisFileDirectory)RecompiledIdlHeaders + $(MSBuildThisFileDirectory)patches\SdkHeaders.json + $(SdkIncRoot) + $(RepoRootPath)artifacts\prepared-sdk $(MSBuildProjectDirectory)\inc true @@ -66,8 +69,9 @@ - - + + @@ -81,8 +85,11 @@ - + + <_StaleSdkScrapeMarker Include="$(GeneratedDir)\scannedheaders.*.txt;$(ScrapedConstantsMarker)" /> + + + diff --git a/generation/WinSDK/libMappings.rsp b/generation/WinSDK/libMappings.rsp index 7ac5b4e4e..f1cfa83ea 100644 --- a/generation/WinSDK/libMappings.rsp +++ b/generation/WinSDK/libMappings.rsp @@ -692,11 +692,65 @@ auxGetVolume=WINMM.dll auxGetNumDevs=WINMM.dll auxGetDevCapsW=WINMM.dll auxGetDevCapsA=WINMM.dll +WinHttpWriteProxySettings=WINHTTP.dll +WinHttpWriteData=WINHTTP.dll +WinHttpWebSocketShutdown=WINHTTP.dll +WinHttpWebSocketSend=WINHTTP.dll +WinHttpWebSocketReceive=WINHTTP.dll +WinHttpWebSocketQueryCloseStatus=WINHTTP.dll +WinHttpWebSocketCompleteUpgrade=WINHTTP.dll +WinHttpWebSocketClose=WINHTTP.dll +WinHttpUnregisterProxyChangeNotification=WINHTTP.dll +WinHttpTimeToSystemTime=WINHTTP.dll +WinHttpTimeFromSystemTime=WINHTTP.dll +WinHttpSetTimeouts=WINHTTP.dll +WinHttpSetStatusCallback=WINHTTP.dll +WinHttpSetProxySettingsPerUser=WINHTTP.dll +WinHttpSetOption=WINHTTP.dll +WinHttpSetDefaultProxyConfiguration=WINHTTP.dll +WinHttpSetCredentials=WINHTTP.dll +WinHttpSendRequest=WINHTTP.dll WinHttpSaveProxyCredentials=WINHTTP.dll +WinHttpResetAutoProxy=WINHTTP.dll +WinHttpRegisterProxyChangeNotification=WINHTTP.dll +WinHttpReceiveResponse=WINHTTP.dll WinHttpReadProxySettingsHvsi=WINHTTP.dll +WinHttpReadProxySettings=WINHTTP.dll +WinHttpReadDataEx=WINHTTP.dll +WinHttpReadData=WINHTTP.dll +WinHttpQueryOption=WINHTTP.dll +WinHttpQueryHeadersEx=WINHTTP.dll +WinHttpQueryHeaders=WINHTTP.dll +WinHttpQueryDataAvailable=WINHTTP.dll +WinHttpQueryConnectionGroup=WINHTTP.dll +WinHttpQueryAuthSchemes=WINHTTP.dll +WinHttpProtocolSend=WINHTTP.dll +WinHttpProtocolReceive=WINHTTP.dll +WinHttpProtocolCompleteUpgrade=WINHTTP.dll WinHttpProbeConnectivity=WINHTTP.dll +WinHttpOpenRequest=WINHTTP.dll +WinHttpOpen=WINHTTP.dll WinHttpGetTunnelSocket=WINHTTP.dll +WinHttpGetProxySettingsVersion=WINHTTP.dll +WinHttpGetProxySettingsResultEx=WINHTTP.dll +WinHttpGetProxySettingsEx=WINHTTP.dll +WinHttpGetProxyResultEx=WINHTTP.dll +WinHttpGetProxyResult=WINHTTP.dll WinHttpGetProxyForUrlHvsi=WINHTTP.dll +WinHttpGetProxyForUrlEx2=WINHTTP.dll +WinHttpGetProxyForUrlEx=WINHTTP.dll +WinHttpGetProxyForUrl=WINHTTP.dll +WinHttpGetIEProxyConfigForCurrentUser=WINHTTP.dll +WinHttpGetDefaultProxyConfiguration=WINHTTP.dll +WinHttpFreeQueryConnectionGroupResult=WINHTTP.dll +WinHttpFreeProxySettingsEx=WINHTTP.dll +WinHttpFreeProxySettings=WINHTTP.dll +WinHttpFreeProxyResultEx=WINHTTP.dll +WinHttpFreeProxyResult=WINHTTP.dll +WinHttpDetectAutoProxyConfigUrl=WINHTTP.dll +WinHttpCreateUrl=WINHTTP.dll +WinHttpCreateProxyResolver=WINHTTP.dll +WinHttpCrackUrl=WINHTTP.dll WinHttpConnectionUpdateIfIndexTable=WINHTTP.dll WinHttpConnectionSetProxyInfo=WINHTTP.dll WinHttpConnectionSetPolicyEntries=WINHTTP.dll @@ -711,7 +765,12 @@ WinHttpConnectionFreeProxyInfo=WINHTTP.dll WinHttpConnectionFreeNameList=WINHTTP.dll WinHttpConnectionDeleteProxyInfo=WINHTTP.dll WinHttpConnectionDeletePolicyEntries=WINHTTP.dll +WinHttpConnect=WINHTTP.dll +WinHttpCloseHandle=WINHTTP.dll +WinHttpCheckPlatform=WINHTTP.dll WinHttpAutoProxySvcMain=WINHTTP.dll +WinHttpAddRequestHeadersEx=WINHTTP.dll +WinHttpAddRequestHeaders=WINHTTP.dll WICSetEncoderFormat_Proxy=WindowsCodecs.dll WICSerializeMetadataContent=WindowsCodecs.dll WICMatchMetadataContent=WindowsCodecs.dll diff --git a/generation/WinSDK/patches/WinHttp.json b/generation/WinSDK/patches/SdkHeaders.json similarity index 96% rename from generation/WinSDK/patches/WinHttp.json rename to generation/WinSDK/patches/SdkHeaders.json index 4a8cb484b..f89748f52 100644 --- a/generation/WinSDK/patches/WinHttp.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -22,7 +22,6 @@ "HttpServer" ], "patches": [ - "post-midl\\um\\winhttp.imports.patch", "post-midl\\um\\winhttp.supported-os.patch", "post-midl\\um\\winhttp.last-error.patch", "post-midl\\um\\winhttp.callback-alias.patch", diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch b/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch deleted file mode 100644 index 76ab4841e..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.imports.patch +++ /dev/null @@ -1,472 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -16,6 +16,7 @@ - #define _WINHTTPX_ - - #include -+#include - - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -1584,6 +1585,7 @@ - // prototypes - // - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - WINHTTP_STATUS_CALLBACK - WINAPI -@@ -1595,6 +1597,7 @@ - IN DWORD_PTR dwReserved - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1604,6 +1607,7 @@ - _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1613,6 +1617,7 @@ - _Out_ SYSTEMTIME *pst // output in GMT time - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1625,6 +1630,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1642,9 +1648,12 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -1653,6 +1662,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - HINTERNET - WINAPI -@@ -1665,6 +1675,7 @@ - _In_ DWORD dwFlags - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1673,6 +1684,7 @@ - IN HINTERNET hInternet - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - HINTERNET - WINAPI -@@ -1684,6 +1696,7 @@ - IN DWORD dwReserved - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1695,6 +1708,7 @@ - OUT LPDWORD lpdwNumberOfBytesRead - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -1709,6 +1723,7 @@ - _In_reads_bytes_opt_(cbProperty) PVOID pvProperty - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1720,6 +1735,7 @@ - OUT LPDWORD lpdwNumberOfBytesWritten - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1730,6 +1746,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1741,6 +1758,7 @@ - IN OUT LPDWORD lpdwBufferLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1767,6 +1785,7 @@ - _In_ DWORD dwBufferLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1807,6 +1826,7 @@ - // prototypes - // - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - HINTERNET - WINAPI -@@ -1821,6 +1841,7 @@ - IN DWORD dwFlags - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1834,6 +1855,7 @@ - IN DWORD dwModifiers - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -1847,6 +1869,7 @@ - _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1861,6 +1884,7 @@ - IN DWORD_PTR dwContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1881,6 +1905,7 @@ - IN LPVOID pAuthParams - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1914,6 +1939,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1924,6 +1950,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1937,6 +1964,7 @@ - IN OUT LPDWORD lpdwIndex OPTIONAL - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -1954,6 +1982,7 @@ - _Out_ PDWORD pdwHeadersCount - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -1965,6 +1994,7 @@ - _Inout_ PWINHTTP_QUERY_CONNECTION_GROUP_RESULT *ppResult - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - VOID - WINAPI -@@ -1979,6 +2009,7 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1988,6 +2019,7 @@ - _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -1999,6 +2031,7 @@ - OUT WINHTTP_PROXY_INFO * pProxyInfo - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2008,6 +2041,7 @@ - _Out_ HINTERNET *phResolver - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2019,6 +2053,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2032,6 +2067,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2041,6 +2077,7 @@ - _Out_ WINHTTP_PROXY_RESULT *pProxyResult - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2050,6 +2087,7 @@ - _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - VOID - WINAPI -@@ -2058,6 +2096,7 @@ - _Inout_ WINHTTP_PROXY_RESULT *pProxyResult - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - VOID - WINAPI -@@ -2066,6 +2105,7 @@ - _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2075,6 +2115,7 @@ - _In_ DWORD dwFlags - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - BOOL - WINAPI -@@ -2083,6 +2124,7 @@ - IN OUT WINHTTP_CURRENT_USER_IE_PROXY_CONFIG * pProxyConfig - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2092,6 +2134,7 @@ - _In_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2105,6 +2148,7 @@ - _Out_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - VOID - WINAPI -@@ -2112,6 +2156,7 @@ - _In_ WINHTTP_PROXY_SETTINGS *pWinHttpProxySettings - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2120,6 +2165,7 @@ - _Out_ DWORD *pdwProxySettingsVersion - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2181,6 +2227,7 @@ - #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 - #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - HINTERNET - WINAPI -@@ -2190,6 +2237,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2201,6 +2249,7 @@ - _In_ DWORD dwBufferLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2213,6 +2262,7 @@ - _Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2224,6 +2274,7 @@ - _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2235,6 +2286,7 @@ - _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2259,6 +2311,7 @@ - WINHTTP_PROTOCOL_OPERATION Operation; - } WINHTTP_PROTOCOL_ASYNC_RESULT; - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - HINTERNET - WINAPI -@@ -2268,6 +2321,7 @@ - _In_opt_ DWORD_PTR dwContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2279,6 +2333,7 @@ - _In_ DWORD dwBufferLength - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2307,6 +2362,7 @@ - - #define WINHTTP_PROXY_NOTIFY_CHANGE 0x0001 - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2317,6 +2373,7 @@ - _Out_ WINHTTP_PROXY_CHANGE_REGISTRATION_HANDLE *hRegistration - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2361,6 +2418,7 @@ - PCWSTR pcwszProbeHost; - } WINHTTP_PROXY_SETTINGS_PARAM, *PWINHTTP_PROXY_SETTINGS_PARAM; - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2371,6 +2429,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI -@@ -2379,6 +2438,7 @@ - _Out_ PVOID pProxySettingsEx - ); - -+_Win32_ImportLibrary_("WINHTTP.dll") - WINHTTPAPI - DWORD - WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch index c7660889c..ec89f45ff 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch @@ -1,7 +1,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -2026,7 +2026,7 @@ +@@ -1999,7 +1999,7 @@ _In_ UINT uiCodePage, _Inout_opt_ PDWORD pdwIndex, _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch index 5b6caf359..a9e18f2ad 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch @@ -1,218 +1,216 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1587,6 +1587,7 @@ +@@ -1586,6 +1586,7 @@ + // - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1600,6 +1601,7 @@ +@@ -1598,6 +1599,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1611,6 +1613,7 @@ +@@ -1608,6 +1610,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1622,6 +1625,7 @@ +@@ -1618,6 +1621,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1636,6 +1640,7 @@ +@@ -1631,6 +1635,7 @@ + _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1655,13 +1660,16 @@ +@@ -1649,11 +1654,14 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -1672,6 +1680,7 @@ +@@ -1663,6 +1671,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1686,6 +1695,7 @@ +@@ -1676,6 +1685,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1696,6 +1706,7 @@ +@@ -1685,6 +1695,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1709,6 +1720,7 @@ +@@ -1697,6 +1708,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1737,6 +1749,7 @@ +@@ -1723,6 +1735,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1750,6 +1763,7 @@ +@@ -1735,6 +1748,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1762,6 +1776,7 @@ +@@ -1746,6 +1760,7 @@ + _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1775,6 +1790,7 @@ +@@ -1758,6 +1773,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1803,6 +1819,7 @@ +@@ -1785,6 +1801,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1845,6 +1862,7 @@ +@@ -1826,6 +1843,7 @@ + // - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1861,6 +1879,7 @@ +@@ -1841,6 +1859,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1890,6 +1909,7 @@ +@@ -1868,6 +1887,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1906,6 +1926,7 @@ +@@ -1883,6 +1903,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1928,6 +1949,7 @@ +@@ -1904,6 +1925,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1963,6 +1985,7 @@ +@@ -1938,6 +1960,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1975,6 +1998,7 @@ +@@ -1949,6 +1972,7 @@ + _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2035,6 +2059,7 @@ +@@ -2005,6 +2029,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2046,6 +2071,7 @@ +@@ -2015,6 +2040,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2148,6 +2174,7 @@ +@@ -2108,6 +2134,7 @@ + ); - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2261,6 +2288,7 @@ +@@ -2215,6 +2242,7 @@ + #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - _Win32_ImportLibrary_("WINHTTP.dll") _Windows_SupportedOS_Windows8_ +_Win32_SetLastError_ WINHTTPAPI diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch index 7dd0d4c52..6b2fe86db 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch @@ -46,7 +46,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi LPSTR lpszHostName; DWORD dwPort; LPSTR lpszUrl; -@@ -1649,7 +1649,7 @@ +@@ -1644,7 +1644,7 @@ WinHttpCreateUrl ( _In_ LPURL_COMPONENTS lpUrlComponents, @@ -55,7 +55,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, _Inout_ LPDWORD pdwUrlLength ); -@@ -1689,7 +1689,7 @@ +@@ -1680,7 +1680,7 @@ WinHttpOpen ( _In_opt_z_ LPCWSTR pszAgentW, @@ -64,7 +64,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_opt_z_ LPCWSTR pszProxyW, _In_opt_z_ LPCWSTR pszProxyBypassW, _In_ DWORD dwFlags -@@ -1876,7 +1876,7 @@ +@@ -1857,7 +1857,7 @@ IN LPCWSTR pwszVersion, IN LPCWSTR pwszReferrer OPTIONAL, IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, @@ -72,8 +72,8 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi + IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags ); - _Win32_ImportLibrary_("WINHTTP.dll") -@@ -2653,6 +2653,102 @@ + _Windows_SupportedOS_WindowsXP_ +@@ -2594,6 +2594,102 @@ #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch index ed6467092..616782821 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch @@ -1,7 +1,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -2637,6 +2637,22 @@ +@@ -2578,6 +2578,22 @@ diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch index b20a7fe79..540effe4d 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch @@ -1,297 +1,303 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1586,6 +1586,7 @@ +@@ -16,6 +16,7 @@ + #define _WINHTTPX_ + + #include ++#include + + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +@@ -1584,6 +1585,7 @@ + // prototypes // - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1598,6 +1599,7 @@ +@@ -1595,6 +1597,7 @@ + IN DWORD_PTR dwReserved ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1608,6 +1610,7 @@ +@@ -1604,6 +1607,7 @@ + _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1618,6 +1621,7 @@ +@@ -1613,6 +1617,7 @@ + _Out_ SYSTEMTIME *pst // output in GMT time ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1631,6 +1635,7 @@ +@@ -1625,6 +1630,7 @@ + ); _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1649,11 +1654,14 @@ +@@ -1642,9 +1648,12 @@ + #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -1663,6 +1671,7 @@ +@@ -1653,6 +1662,7 @@ + #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI -@@ -1676,6 +1685,7 @@ +@@ -1665,6 +1675,7 @@ + _In_ DWORD dwFlags ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1685,6 +1695,7 @@ +@@ -1673,6 +1684,7 @@ + IN HINTERNET hInternet ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI -@@ -1697,6 +1708,7 @@ +@@ -1684,6 +1696,7 @@ + IN DWORD dwReserved ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1724,6 +1736,7 @@ +@@ -1709,6 +1722,7 @@ + _In_reads_bytes_opt_(cbProperty) PVOID pvProperty ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1736,6 +1749,7 @@ +@@ -1720,6 +1734,7 @@ + OUT LPDWORD lpdwNumberOfBytesWritten ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1747,6 +1761,7 @@ +@@ -1730,6 +1745,7 @@ + ); _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1759,6 +1774,7 @@ +@@ -1741,6 +1757,7 @@ + IN OUT LPDWORD lpdwBufferLength ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1786,6 +1802,7 @@ +@@ -1767,6 +1784,7 @@ + _In_ DWORD dwBufferLength ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1827,6 +1844,7 @@ +@@ -1807,6 +1825,7 @@ + // prototypes // - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI -@@ -1842,6 +1860,7 @@ +@@ -1821,6 +1840,7 @@ + IN DWORD dwFlags ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1870,6 +1889,7 @@ +@@ -1847,6 +1867,7 @@ + _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1885,6 +1905,7 @@ +@@ -1861,6 +1882,7 @@ + IN DWORD_PTR dwContext ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1906,6 +1927,7 @@ +@@ -1881,6 +1903,7 @@ + IN LPVOID pAuthParams ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1940,6 +1962,7 @@ +@@ -1914,6 +1937,7 @@ + #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -1951,6 +1974,7 @@ +@@ -1924,6 +1948,7 @@ + ); _Success_(return != FALSE) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -2010,6 +2034,7 @@ +@@ -1979,6 +2004,7 @@ + #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -2020,6 +2045,7 @@ +@@ -1988,6 +2014,7 @@ + _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -2032,6 +2058,7 @@ +@@ -1999,6 +2026,7 @@ + OUT WINHTTP_PROXY_INFO * pProxyInfo ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2042,6 +2069,7 @@ +@@ -2008,6 +2036,7 @@ + _Out_ HINTERNET *phResolver ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2068,6 +2096,7 @@ +@@ -2032,6 +2061,7 @@ + _In_opt_ DWORD_PTR pContext ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2088,6 +2117,7 @@ +@@ -2050,6 +2080,7 @@ + _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI VOID WINAPI -@@ -2106,6 +2136,7 @@ +@@ -2066,6 +2097,7 @@ + _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2116,6 +2147,7 @@ +@@ -2075,6 +2107,7 @@ + _In_ DWORD dwFlags ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI -@@ -2228,6 +2260,7 @@ +@@ -2181,6 +2214,7 @@ + #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI HINTERNET WINAPI -@@ -2238,6 +2271,7 @@ +@@ -2190,6 +2224,7 @@ + _In_opt_ DWORD_PTR pContext ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2250,6 +2284,7 @@ +@@ -2201,6 +2236,7 @@ + _In_ DWORD dwBufferLength ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2263,6 +2298,7 @@ +@@ -2213,6 +2249,7 @@ + _Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2275,6 +2311,7 @@ +@@ -2224,6 +2261,7 @@ + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI -@@ -2287,6 +2324,7 @@ +@@ -2235,6 +2273,7 @@ + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength ); - _Win32_ImportLibrary_("WINHTTP.dll") +_Windows_SupportedOS_Windows8_ WINHTTPAPI DWORD diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index 2be332d04..d369da988 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -2,7 +2,8 @@ [CmdletBinding()] param( - [string]$Recipe = "$PSScriptRoot\..\generation\WinSDK\patches\WinHttp.json", + [Parameter(Mandatory)] + [string]$Recipe, [string]$SourceRoot = "$PSScriptRoot\..\generation\WinSDK\RecompiledIdlHeaders", [string]$SdkPackageRoot, [string]$OutputRoot = "$PSScriptRoot\..\artifacts\prepared-sdk" diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 43b363bdc..38cc911c9 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -1,8 +1,10 @@ using System; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text; using System.Text.Json; +using System.Xml.Linq; using Xunit; namespace Win32MetadataScraperTests @@ -146,6 +148,44 @@ public void ConcurrentPreparationCannotMutateAnotherTransactionsTree() Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); } + [Theory] + [InlineData("ScrapeHeaders", "")] + [InlineData("ScrapeHeaders", "Sample")] + [InlineData("ScrapeConstants", "")] + [InlineData("ScrapeConstants", "Sample")] + public void OneSdkPreparationPrecedesAllConsumersAndInvalidatesEveryArchitecture(string target, string filter) + { + using var fixture = new Fixture(); + string previous = null; + for (int pass = 0; pass < 3; pass++) + { + foreach (string marker in fixture.ScrapeMarkers) + { + Directory.CreateDirectory(Path.GetDirectoryName(marker)); + File.WriteAllText(marker, "old marker"); + } + if (pass == 2) + fixture.WritePatch(3); + + var result = fixture.RunSdkBuild(target, filter); + Assert.True(result.ExitCode == 0, result.Error + result.Output); + string[][] events = File.ReadAllLines(fixture.BuildEvents).Select(line => line.Split('|')).ToArray(); + Assert.Equal(target == "ScrapeConstants" ? new[] { "prepare", "idl", "headers", "constants" } : + new[] { "prepare", "idl", "headers" }, events.Select(entry => entry[0])); + string includeRoot = events[0][1]; + Assert.All(events, entry => Assert.Equal(includeRoot, entry[1])); + Assert.NotEqual(Path.GetDirectoryName(Path.GetDirectoryName(fixture.Header)), includeRoot); + Assert.Contains(pass == 2 ? "VALUE 3" : "VALUE 2", + File.ReadAllText(Path.Combine(includeRoot, "um", "sample.h"))); + Assert.All(fixture.ScrapeMarkers, marker => Assert.Equal(pass == 1, File.Exists(marker))); + if (pass == 1) + Assert.Equal(previous, includeRoot); + if (pass == 2) + Assert.NotEqual(previous, includeRoot); + previous = includeRoot; + } + } + private sealed class Fixture : IDisposable { internal const string Before = "#ifndef SAMPLE_H\r\n#define SAMPLE_H\r\n#define VALUE 1\r\n#endif\r\n"; @@ -193,6 +233,10 @@ internal Fixture() internal string Unrelated { get; } internal string SdkHeader { get; } internal string Output { get; } + internal string BuildEvents => Path.Combine(this.root, "build-events.txt"); + internal string[] ScrapeMarkers => new[] { "scannedheaders.crossarch.txt", "scannedheaders.x86.txt", + "scannedheaders.x64.txt", "scannedheaders.arm64.txt", "constants.scraped.txt" } + .Select(name => Path.Combine(this.root, "obj", "generated", name)).ToArray(); internal void WritePatch(int after, int before = 1, string path = "um/sample.h", string metadata = null, string originalPath = null) { @@ -254,13 +298,58 @@ internal ProcessResult Run(string workingDirectory = null) " -Recipe " + Quote(this.recipe) + " -SourceRoot " + Quote(this.source) + " -SdkPackageRoot " + Quote(this.sdk) + " -OutputRoot " + Quote(Output) + " | ConvertTo-Json -Compress"); + return Execute(start); + } + + internal ProcessResult RunSdkBuild(string target, string filter) + { + File.Delete(BuildEvents); + string project = Path.Combine(this.root, "fixture.proj"); + new XDocument(new XElement("Project", + new XElement("PropertyGroup", + new XElement("RepoRootPath", RepositoryRoot + Path.DirectorySeparatorChar), + new XElement("ObjDir", Path.Combine(this.root, "obj"))), + new XElement("Import", new XAttribute("Project", + Path.Combine(RepositoryRoot, "generation", "WinSDK", "Windows.Win32.proj"))), + new XElement("PropertyGroup", + new XElement("SdkHeaderRecipe", this.recipe), + new XElement("SdkHeaderSourceRoot", this.source), + new XElement("SdkHeaderOutputRoot", Output), + new XElement("SdkHeaderSdkPackageRoot", this.sdk)), + Consumer("CompileIdls", "idl"), + Consumer("ScrapeHeaders", "headers", "CompileIdls"), + Consumer("ScrapeConstants", "constants", "ScrapeHeaders"), + new XElement("Target", new XAttribute("Name", "RecordPreparation"), + new XAttribute("AfterTargets", "PrepareSdkHeaders"), Record("prepare")))).Save(project); + var start = new ProcessStartInfo("dotnet") + { + WorkingDirectory = RepositoryRoot, + UseShellExecute = false, + CreateNoWindow = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + }; + foreach (string argument in new[] { "msbuild", project, "-nologo", "-v:minimal", "-t:" + target, + "-p:PartitionFilter=" + filter }) + start.ArgumentList.Add(argument); + return Execute(start); + + XElement Record(string name) => new XElement("WriteLinesToFile", + new XAttribute("File", BuildEvents), new XAttribute("Lines", name + "|$(SdkIncRoot)")); + + XElement Consumer(string name, string label, string dependencies = "") => new XElement("Target", + new XAttribute("Name", name), new XAttribute("DependsOnTargets", dependencies), Record(label)); + } + + private static ProcessResult Execute(ProcessStartInfo start) + { using var process = Process.Start(start); var output = process.StandardOutput.ReadToEndAsync(); var error = process.StandardError.ReadToEndAsync(); if (!process.WaitForExit(30000)) { process.Kill(entireProcessTree: true); - throw new TimeoutException("Header preparation did not terminate."); + throw new TimeoutException("Header preparation/build did not terminate."); } return new ProcessResult(process.ExitCode, output.GetAwaiter().GetResult(), error.GetAwaiter().GetResult()); diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index f7275ae3c..ab3fe997f 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -259,12 +259,24 @@ public void SharedHeaderAndUnmigratedWinInetMetadataStayUnchanged() } [MigrationFact] - public void EmittedWinHttpScopeHasNoLegacySemanticFallback() + public void EmittedWinHttpScopeUsesSdkBindingsWithoutAuthoredSemanticFallback() { using var old = Open("WINHTTP_MIGRATION_OLD"); string root = RepositoryRoot; var names = Methods(old.Reader, WinHttpNamespace, "Apis", 2).Keys.ToHashSet(StringComparer.Ordinal); - foreach (string file in new[] { "libMappings.rsp", "libMappingsManual.rsp", "supportedOS.rsp", "WithSetLastError.rsp", "emitter.settings.rsp" }) + var bindings = File.ReadLines(Path.Combine(root, "generation", "WinSDK", "libMappings.rsp")) + .Where(line => line.Contains('=')).Select(line => line.Split('=')) + .ToDictionary(parts => parts[0], parts => parts[1], StringComparer.Ordinal); + Assert.Equal(59, names.Count); + foreach (string name in names) + Assert.Equal("WINHTTP.dll", bindings[name]); + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "SdkHeaders.json"))); + var patches = recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString()) + .Where(path => Path.GetFileName(path).StartsWith("winhttp.", StringComparison.Ordinal)).ToArray(); + Assert.Equal(6, patches.Length); + foreach (string patch in patches) + Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", patch))); + foreach (string file in new[] { "libMappingsManual.rsp", "supportedOS.rsp", "WithSetLastError.rsp", "emitter.settings.rsp" }) { foreach (string line in File.ReadLines(Path.Combine(root, "generation", "WinSDK", file))) { From 5bef3c52a7946407e762c7f124833c352d1e29ef Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 21:57:43 -0700 Subject: [PATCH 12/57] Record bounded WinHttp review cleanup evidence Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 6657e10c2..4c34cbdeb 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -28,6 +28,9 @@ another owner's checkout. | Zero added/removed enum types, members, or API symbols | The five logical groups already exist in OLD. Native scheme macros remain in the ordinary header, not as newly manufactured WinHttp winmd constants. | | Fresh CsWin32 experience: unverified | The original C7 prototype measured four scheme-name breaks; this candidate restores the old names, but has not been regenerated against a complete matching frozen consumer closure. | +The current producer is the [review-cleanup candidate](#review-cleanup-candidate). +Earlier images and receipts below are immutable historical evidence. + ## Inputs and ownership `generation\WinSDK\patches\SdkHeaders.json` pins SDK CPP `10.0.26100.7705`, the @@ -445,3 +448,39 @@ The next review decision belongs to the consumer owner: verify generic `AssociatedEnum` projection separately when an agreed runnable consumer is available. A missing-member improvement would likewise require a separate, demonstrated OLD caller case and user approval; this migration adds no membership. + +## Review-cleanup candidate + +`new-review-cleanup` removes the redundant import patch and all 59 WinHttp +`ImportLibrary` annotations. The restored `libMappings.rsp` is byte-identical to +the tooling parent's generated file. A fresh SDK `winhttp.lib` scan independently +reproduces all 79 retained WinHttp mappings, including the 59 emitted methods; +this does not add a handwritten map or waive physical import checks. + +Header preparation is one generic SDK stage with the explicit `SdkHeaders.json` +recipe, before native toolchain consumption. Ordinary/selected header scraping +and constants share one private root. Four actual-project controls cover +once-before-consumers ordering, cache reuse, and stale-marker invalidation for +every architecture. + +| Current cleanup evidence | Identity | +| --- | --- | +| Full image | `artifacts\winhttp-migration\new-review-cleanup\Windows.Win32.winmd` | +| Image SHA256 | `C81BECE2DFE770979BEA3EE805E5B0CDD31EFAE6CD42546A5E1B632D1F8D389E` | +| Emission producer commit | `bb83dc967aacb82906d25e898338e703602502a1` | +| Adjacent provenance SHA256 | `37F2F002F5FDE4D0232CCD3E485D45C8EBA63B321C2F177D14865A20B1BC1CF7` | +| Reused unchanged-tool control | `9E6D95E42197BE2409807B8F93A27950192D57F455906A8F70F257B1CA6D932B` | + +The unchanged tool-binary hashes permit reuse of the prior frozen-input control. +The fresh image has no declared differences from `new-preserved-names` and uses +exactly the same 16 OLD-to-NEW expectations, with zero unknown/unused entries and +no new APIs, enums, or members. First/repeated normal SDK scraping retains ten +identical inputs and the complete 155 pointer reductions. + +Focused local checks passed 119 preparation/generic-annotation controls, six +native ABI legs, 17 physical/no-authored-fallback cases, and all 14 SDK integrity +cases, without skips. The SDK input closure is 393 actual diagnostics plus 393 +remap files (389 frozen nonselected and four new selected files per extension). +The original C7 and naming-preserved images and receipts remain unchanged. +Fresh CsWin32 verification is still explicitly unverified; no consumer work is +part of this cleanup. CI must be checked separately on the final published head. From d816bcc62e859106dd5ebd2e70948e23f33bdfbc Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 22:09:03 -0700 Subject: [PATCH 13/57] Document the reviewed header-annotation migration playbook Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 131 +++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 docs/header-annotation-migration-playbook.md diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md new file mode 100644 index 000000000..dba976563 --- /dev/null +++ b/docs/header-annotation-migration-playbook.md @@ -0,0 +1,131 @@ +# Header-annotation migration playbook + +Move authored semantic facts to reviewed header patches without changing native +contracts. Keep the C# scraper/emitter, matched ClangSharp stack and selected SDK. +The [annotation specification](copilot/plans/shift-left-annotation-spec.md) defines +the vocabulary; the [WinHttp pilot](winhttp-header-annotations.md) records one +complete example and its immutable evidence. + +## 1. Bound the partition and its authorities + +Inventory the actual same-SDK OLD metadata, native declarations and every applicable +sidecar, including non-prefix names, enum uses, callbacks, handles, manual code and +documentation mappings. Count emitted symbols, not just library-map rows. + +| Input | Treatment | +| --- | --- | +| SDK import-library scan / generated `libMappings.rsp` | Retain as derived binding data. Do not copy correct scan results into header annotations. | +| Native declarations, SAL and MIDL | Retain as native authority; do not duplicate direction, size, string or optionality information. | +| Current-TU discovery and derived aggregate remaps | Retain discovery, with the tooling's annotated/legacy precedence. Do not turn cached discoveries into authored facts. | +| Authored OS/error, logical-enum, ownership, callback and buffer overrides | Review each contract, migrate supported facts, and remove only the matching authored fallback. | +| Manual import overrides | Use `ImportLibrary` only for demonstrated missing/incorrect scan data; retain generic override support. | +| Namespace/traversal/architecture/schema configuration and documentation tooling | Keep separate from functional semantic migration. | + +Bind each physical header to one owner. Include all physical-header and semantic +dependents in the validation closure, without migrating their unrelated facts. +An API absent from the selected SDK must not be recreated as a fake declaration. + +## 2. Prepare headers once before toolchain consumption + +Add reviewed deltas to the SDK-wide `generation\WinSDK\patches\SdkHeaders.json` +recipe, with explicit patch order, admitted headers, SDK package identity, +preimages and post-MIDL source identity. Keep physical-header ownership and +dependencies explicit. The tracked SDK mirror is never an output. + +The single generic `PrepareSdkHeaders` stage supplies an explicit recipe to +`Prepare-SdkHeaders.ps1` before native toolchain consumption. Ordinary builds, +selected scraping and constants use the same private include root. Do not add +partition hooks or partition-default recipes to orchestration. + +Preserve byte encodings and line endings, transactional publication, deterministic +caching, path/preimage checks and rejection of modified caches. A changed root +invalidates constants and every architecture's header marker; an unchanged root +retains them. Prove this with the existing preparation controls. + +Respect the MIDL boundary. The current preparation script admits post-MIDL +recipes; it is not permission to rerun broad SDK/IDL update scripts or silently +introduce a pre-MIDL pipeline. Surface a bounded blocker if that is required. + +## 3. Admit only the approved representation changes + +| Change | Required grade | +| --- | --- | +| Existing enum use site becomes its native type plus `AssociatedEnum` | Exact owning parameter/field, native width/signedness and existing enum identity/member/value checks. | +| Justified fabricated-handle removal and producer return/output ownership relocation | Exact removed type and affected signatures, cleanup API, invalid values and attribute targets; no invented ownership for borrowed handles. | +| All other migrated facts | Same signatures, layouts, callback identity, imports, OS floors, last-error and SAL contracts. | + +No new enum types, enum members, loose constants, API families, compatibility +aliases or broad difference/duplicate allowlists. Preserve existing logical +member names and values while leaving native macros intact. Document any +user-approved metadata-only naming exception at the header boundary. + +Remove matching authored fallback rather than annotating on top of it. +SDK-derived bindings and discoveries are not semantic fallback. Keep import +module/entrypoint/flags checks even when no header import override is needed. + +## 4. Pin OLD, tooling control and NEW separately + +Freeze a complete OLD image and generated-source/discovery closure from one SDK +and an exact tooling commit. Emit a matched frozen-input tooling control when +tool binaries change. Attribute tooling-only differences to that control, not to +the partition migration; never waive a known OLD defect on NEW. + +Commit producer inputs before publishing a fresh named NEW artifact. Record SDK, +producer/tooling commits, binary hashes, recipe/prepared-header identity, complete +source/reference closure and expected-difference hashes. Do not overwrite previous +images or receipts. + +Use the existing selected scrape/full-source overlay loop where appropriate. +`PartitionFilter` alone does not narrow constants, manual files or emission +closure. Recompute complete constants and pointer discoveries, retaining +unselected inputs. Reject success-shaped partial images with dangling references. + +## 5. Validate the actual output, not a proxy + +- Compile metadata-disabled native owner/dependent translation units on x86, + x64 and ARM64; check signatures, calling conventions, pointer levels, constants + and record layout. +- Read the final full winmd for imports, attribute targets/constructors, + associations, ownership, enum identities/membership, signatures, layout, + callbacks, architecture coverage and reference closure. Preserve unrelated + physical snapshots and existing mutation controls. +- Compare OLD/control/NEW with exact symbol-scoped expectations: zero unknown + differences and zero unused expectations. Investigate any unapproved category + before admitting the candidate. A declaration comparer plus scoped physical + checks is not a comprehensive typed-equivalence oracle. +- Repeat the normal SDK build with prior discoveries present. Require identical + selected source/discovery inputs, shared prepared roots and complete SDK + diagnostic inputs. +- Run the smallest affected existing suites and full-SDK integrity checks. + Verify nonzero executed counts and no skipped acceptance legs. Build tools + before emission; never rebuild DLLs while an emitter is using them. + +## 6. Report consumer compatibility independently + +CsWin32 source compatibility is the primary consumer gate, not identical winmd +encoding. When an agreed immutable consumer is available, pin its version, +requests, options, target framework and unchanged caller source; compare public +surfaces and compile both OLD and NEW callers in both marshaling modes. + +Separate identical output, source-compatible differences and exact source breaks. +Do not infer compatibility from a producer comparison. If the consumer cannot be +run under the agreed ownership constraints, report **unverified**. Do not search, +rebuild or modify another owner's consumer checkout to manufacture proof. + +## 7. Publish a reviewable checkpoint + +Keep the migration separate from the independently reviewable tooling layer. +Use the owning branch and existing draft PR, with a short WHAT/WHY description, +the current approved delta and links to durable details. Do not merge or change +native stack metadata. + +Require full CI green on the final exact head of both tooling and migration PRs; +record check/run links and SHAs. Earlier successful heads and local tests do not +substitute. Do not skip checks or weaken gates to obtain green. + +For a correctness/design problem, capture one bounded reproducer and correct it +within established patterns. Otherwise report the exact blocker, owner and +smallest decision, or replace the candidate through the agreed selection process. +Do not expand into parser frameworks, consumer features or prolonged speculative +investigations. Summarize each partition as relocated facts, exact representation +changes, unchanged native/dependent contracts, and an honest consumer grade. From 0a01605e37ace4128c8cc01cd6efadb1add02525 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 22:41:36 -0700 Subject: [PATCH 14/57] Migrate CEIP and ApplicationVerifier header facts Preserve SDK-derived bindings and exact OLD enum identities; include Base and FileHistory in the shared-header closure and grade only the reviewed use-site representation changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 28 +++ docs/winhttp-header-annotations.md | 2 +- .../ApplicationVerifier/settings.rsp | 2 + .../WinSDK/Partitions/CEIP/settings.rsp | 2 + generation/WinSDK/emitter.settings.rsp | 1 - generation/WinSDK/enums.json | 18 -- ...eaderAnnotations.expected-differences.txt} | 6 +- generation/WinSDK/patches/SdkHeaders.json | 22 +- .../post-midl/um/avrfsdk.annotations.patch | 41 ++++ .../um/windowsceip.annotations.patch | 19 ++ generation/WinSDK/scraper.settings.rsp | 2 - generation/WinSDK/supportedOS.rsp | 1 - scripts/Build-WinHttpMigrationImage.ps1 | 41 +++- .../WinHttpMigrationTests.cs | 162 +++++++++++--- .../WinHttpNativeControlTests.cs | 211 +++++++++++------- 15 files changed, 413 insertions(+), 145 deletions(-) rename generation/WinSDK/patches/{WinHttp.expected-differences.txt => HeaderAnnotations.expected-differences.txt} (82%) create mode 100644 generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index dba976563..214b2d2ca 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -129,3 +129,31 @@ smallest decision, or replace the candidate through the agreed selection process Do not expand into parser frameworks, consumer features or prolonged speculative investigations. Summarize each partition as relocated facts, exact representation changes, unchanged native/dependent contracts, and an honest consumer grade. + +## Selected follow-on partitions + +The bounded follow-on to WinHttp uses these batches in the same migration PR. +Each batch must pass the preceding producer gates before the next is admitted. + +| Batch | Owners | Physical headers | +| --- | --- | --- | +| 1 | CEIP, ApplicationVerifier | `windowsceip.h`, `avrfsdk.h` | +| 2 | MagApi, PsApi1, Time, Ual | `magnification.h`, `psapi.h`, `timezoneapi.h`, `timeprov.h`, `ual.h` | +| 3 | ToolHelp, UpdateAssessment, SecurityCenter, WinSat | `tlhelp32.h`, `waasapi.h`, `waasapitypes.h`, `iwscapi.h`, `wscapi.h`, `winsatcominterfacei.h` | + +The image helper reads the recipe's complete owner/dependent partition list and +overlays the sources actually produced for those partitions. `Base` and +`FileHistory` also include batch-1 headers; they remain unconverted dependents. +`PsApi2` shares `psapi.h` with `PsApi1` and must remain unchanged. A shared +namespace is not evidence of shared semantic ownership. + +Batch 1 relocates the emitted `CeipIsOptedIn` Windows 8.1 floor, independently +confirmed by its published requirements, while retaining its SDK-derived +`KERNEL32.dll` binding. `VerifierEnumerateResource` relocates its genuine +`verifier.dll` override and existing `ResourceType` association; its existing +`VERIFIER_ENUM_RESOURCE_FLAGS` group retains both names, values, order and +unsigned 32-bit storage, with `Flags` becoming native `ULONG` plus +`AssociatedEnum`. That is two additional declaration differences, not a new enum. +A complete selected-SDK import-library scan found neither verifier entrypoint. +`VerifierIsPerUserSettingsEnabled` is absent from compiled OLD, so its unused OS +row is explicitly outside emitted-owner migration accounting and is retained. diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 4c34cbdeb..62144e70f 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -269,7 +269,7 @@ SRM checks; neither is presented as a comprehensive typed metadata equivalence oracle. The ten approved Printing fixes belong to the tooling OLD baseline and must not appear as new WinHttp migration differences. -`patches\WinHttp.expected-differences.txt` admits exactly 16 declaration differences: +The WinHttp entries in `patches\HeaderAnnotations.expected-differences.txt` admit exactly 16 declaration differences: eight native integer use-site types and eight corresponding `AssociatedEnum` additions. Existing logical enum identities, member names, and values are preserved. It diff --git a/generation/WinSDK/Partitions/ApplicationVerifier/settings.rsp b/generation/WinSDK/Partitions/ApplicationVerifier/settings.rsp index 7905824e2..8ef3fb0e8 100644 --- a/generation/WinSDK/Partitions/ApplicationVerifier/settings.rsp +++ b/generation/WinSDK/Partitions/ApplicationVerifier/settings.rsp @@ -2,3 +2,5 @@ /um/avrfsdk.h --namespace Windows.Win32.System.ApplicationVerifier +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/CEIP/settings.rsp b/generation/WinSDK/Partitions/CEIP/settings.rsp index 0f1494124..97d8afe85 100644 --- a/generation/WinSDK/Partitions/CEIP/settings.rsp +++ b/generation/WinSDK/Partitions/CEIP/settings.rsp @@ -2,3 +2,5 @@ /um/windowsceip.h --namespace Windows.Win32.System.Diagnostics.Ceip +--config +parse-win32-annotations diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp index 5a0168020..e70216580 100644 --- a/generation/WinSDK/emitter.settings.rsp +++ b/generation/WinSDK/emitter.settings.rsp @@ -1602,7 +1602,6 @@ SymGetHomeDirectory::type=[AssociatedEnum("IMAGEHLP_HD_TYPE")] SymGetHomeDirectoryW::type=[AssociatedEnum("IMAGEHLP_HD_TYPE")] SymGetSymbolFile::Type=[AssociatedEnum("IMAGEHLP_SF_TYPE")] SymGetSymbolFileW::Type=[AssociatedEnum("IMAGEHLP_SF_TYPE")] -VerifierEnumerateResource::ResourceType=[AssociatedEnum("eAvrfResourceTypes")] VS_FIXEDFILEINFO::dwFileSubtype=[AssociatedEnum("VS_FIXEDFILEINFO_FILE_SUBTYPE")] VS_FIXEDFILEINFO::dwFileType=[AssociatedEnum("VS_FIXEDFILEINFO_FILE_TYPE")] WINDOWPLACEMENT::showCmd=[AssociatedEnum("SHOW_WINDOW_CMD")] diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index dd2c70395..9d621c6d3 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -6340,24 +6340,6 @@ } ] }, - { - "name": "VERIFIER_ENUM_RESOURCE_FLAGS", - "flags": true, - "members": [ - { - "name": "AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES" - }, - { - "name": "AVRF_ENUM_RESOURCES_FLAGS_SUSPEND" - } - ], - "uses": [ - { - "method": "VerifierEnumerateResource", - "parameter": "Flags" - } - ] - }, { "name": "CACHE_CONFIG", "members": [ diff --git a/generation/WinSDK/patches/WinHttp.expected-differences.txt b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt similarity index 82% rename from generation/WinSDK/patches/WinHttp.expected-differences.txt rename to generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt index 295b0a2ff..4b688f8b0 100644 --- a/generation/WinSDK/patches/WinHttp.expected-differences.txt +++ b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt @@ -1,5 +1,5 @@ -# Same-SDK b5b7b26 OLD to the complete WinHttp header-annotation NEW. -# Native integer ABI plus eight authored logical-enum relationships. +# Same-SDK b5b7b26 OLD to the complete header-annotation NEW. +# Only existing logical-enum use sites become native integers plus AssociatedEnum. # Preserve OLD logical scheme members and ordinary native constants. # No import, OS, last-error, callback, port, dependent-partition, or value changes. Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags) : [In] => [AssociatedEnum(WIN_HTTP_CREATE_URL_FLAGS),In] @@ -18,3 +18,5 @@ Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType : => [Associat Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 +Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags) : [In] => [AssociatedEnum(VERIFIER_ENUM_RESOURCE_FLAGS),In] +Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags)...Windows.Win32.System.ApplicationVerifier.VERIFIER_ENUM_RESOURCE_FLAGS => System.UInt32 diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index f89748f52..21083e246 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -15,11 +15,27 @@ "sourceSha256": "84D9B00F3AC18FAC5A97DB772FE486CA80BF80BDCF6F46F98CA31D3FD1636F93", "sdkPath": "c\\include\\10.0.26100.0\\um\\httprequest.idl", "sdkSha256": "671F997E30FF1108FF4C7FB03631B3E4B1CABF05B8A31D14F5E4802D6FA997AE" + }, + { + "path": "um\\windowsceip.h", + "sourceSha256": "E36C721AC6CFB49C05C88380C3A9557C75A7E564DB52C5E039565FE0FEC8E98A", + "sdkPath": "c\\include\\10.0.26100.0\\um\\windowsceip.h", + "sdkSha256": "E36C721AC6CFB49C05C88380C3A9557C75A7E564DB52C5E039565FE0FEC8E98A" + }, + { + "path": "um\\avrfsdk.h", + "sourceSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8", + "sdkPath": "c\\include\\10.0.26100.0\\um\\avrfsdk.h", + "sdkSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8" } ], "partitions": [ "WinHttp", - "HttpServer" + "HttpServer", + "CEIP", + "ApplicationVerifier", + "Base", + "FileHistory" ], "patches": [ "post-midl\\um\\winhttp.supported-os.patch", @@ -27,6 +43,8 @@ "post-midl\\um\\winhttp.callback-alias.patch", "post-midl\\um\\winhttp.interior-pointers.patch", "post-midl\\um\\winhttp.port-constant-types.patch", - "post-midl\\um\\winhttp.logical-enums.patch" + "post-midl\\um\\winhttp.logical-enums.patch", + "post-midl\\um\\windowsceip.annotations.patch", + "post-midl\\um\\avrfsdk.annotations.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch b/generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch new file mode 100644 index 000000000..9b0413801 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch @@ -0,0 +1,41 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h b/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h +@@ -24,6 +24,7 @@ + #ifndef _AVRFSDK_ + #define _AVRFSDK_ + #include ++#include + + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +@@ -140,11 +141,27 @@ + #define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x00000001 + #define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x00000002 + ++ ++#ifdef WIN32METADATA ++#pragma push_macro("AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES") ++#undef AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES ++#pragma push_macro("AVRF_ENUM_RESOURCES_FLAGS_SUSPEND") ++#undef AVRF_ENUM_RESOURCES_FLAGS_SUSPEND ++enum [[clang::flag_enum]] VERIFIER_ENUM_RESOURCE_FLAGS : ULONG ++{ ++ AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES = 0x00000002, ++ AVRF_ENUM_RESOURCES_FLAGS_SUSPEND = 0x00000001, ++}; ++#pragma pop_macro("AVRF_ENUM_RESOURCES_FLAGS_SUSPEND") ++#pragma pop_macro("AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES") ++#endif ++ ++_Win32_ImportLibrary_("verifier.dll") + ULONG NTAPI + VerifierEnumerateResource( + HANDLE Process, +- ULONG Flags, +- ULONG ResourceType, ++ _Win32_AssociatedEnum_(VERIFIER_ENUM_RESOURCE_FLAGS) ULONG Flags, ++ _Win32_AssociatedEnum_(eAvrfResourceTypes) ULONG ResourceType, + AVRF_RESOURCE_ENUMERATE_CALLBACK ResourceCallback, + PVOID EnumerationContext + ); diff --git a/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch b/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch new file mode 100644 index 000000000..98b272d72 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch @@ -0,0 +1,19 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h b/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h +@@ -17,6 +17,7 @@ + #endif // _MSC_VER + + #include ++#include + + #ifdef __cplusplus + extern "C" { +@@ -27,6 +28,7 @@ + + #if (NTDDI_VERSION >= NTDDI_WIN8) + ++_Windows_SupportedOS_Windows81_ + BOOL + WINAPI + CeipIsOptedIn(); diff --git a/generation/WinSDK/scraper.settings.rsp b/generation/WinSDK/scraper.settings.rsp index cae95b12e..95b5ca5e6 100644 --- a/generation/WinSDK/scraper.settings.rsp +++ b/generation/WinSDK/scraper.settings.rsp @@ -1,7 +1,5 @@ --config exclude-empty-records ---with-librarypath -VerifierEnumerateResource=verifier.dll --with-type AutoSvcs_Error_Constants=uint MF_CAPTURE_ENGINE_SOURCE=uint diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index fbc6263f7..2610babce 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -14061,7 +14061,6 @@ DnsValidateName=SupportedOSPlatform("windows5.0") DnsValidateServerStatus=SupportedOSPlatform("windows6.1") DnsWriteQuestionToBuffer_UTF8=SupportedOSPlatform("windows5.0") DnsWriteQuestionToBuffer_W=SupportedOSPlatform("windows5.0") -CeipIsOptedIn=SupportedOSPlatform("windows8.1") WDEnable=SupportedOSPlatform("windows6.0.6000") WDStatus=SupportedOSPlatform("windows6.0.6000") IOplockBreakingHandler=SupportedOSPlatform("windows10.0.10240") diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 9b6f2d2cf..c54b2b768 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -5,6 +5,7 @@ param( [string]$BaselineDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\old", [string]$OutputDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\new", [string]$SelectionDirectory, + [string]$ExpectedDifferencesFile = "$PSScriptRoot\..\generation\WinSDK\patches\HeaderAnnotations.expected-differences.txt", [switch]$ToolingControl, [string]$ToolingControlDirectory ) @@ -14,6 +15,7 @@ Set-StrictMode -Version Latest $repo = [IO.Path]::GetFullPath("$PSScriptRoot\..").TrimEnd('\') $BaselineDirectory = [IO.Path]::GetFullPath($BaselineDirectory).TrimEnd('\') $OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory).TrimEnd('\') +$ExpectedDifferencesFile = [IO.Path]::GetFullPath($ExpectedDifferencesFile) if (!$SelectionDirectory) { $SelectionDirectory = "$OutputDirectory\selection" } @@ -187,12 +189,36 @@ try { [IO.File]::WriteAllText("$OutputDirectory\provenance.json", ($receipt | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) return [pscustomobject]@{ Winmd = $winmd; Sha256 = $receipt.newWinmdSha256; Provenance = "$OutputDirectory\provenance.json" } } + $project = "$repo\generation\WinSDK" + $recipePath = "$project\patches\SdkHeaders.json" + $recipe = Get-Content -LiteralPath $recipePath -Raw | ConvertFrom-Json + $partitions = @($recipe.partitions) + if (!$partitions.Count -or @($partitions | Sort-Object -Unique).Count -ne $partitions.Count) { + throw 'The preparation recipe must list each owner and affected dependent exactly once.' + } + foreach ($partition in $partitions) { + if ($partition -cnotmatch '^[A-Za-z0-9_.]+$' -or !(Test-Path -LiteralPath "$project\Partitions\$partition\main.cpp")) { + throw "Invalid selected partition in the preparation recipe: $partition" + } + } $selectedObj = "$SelectionDirectory\obj" - $overlays = @('x86\WinHttp.cs', 'x64\WinHttp.cs', 'arm64\WinHttp.cs', 'common\HttpServer.cs') $scrapeArguments = @('build', 'generation\WinSDK', '-c', 'Release', '-t:ScrapeHeaders', - "-p:ObjDir=$selectedObj", '-p:PartitionFilter=WinHttp%3BHttpServer', '-p:MaxProcessors=2', + "-p:ObjDir=$selectedObj", "-p:PartitionFilter=$($partitions -join '%3B')", '-p:MaxProcessors=2', '-p:ScanArch=crossarch', '--no-restore', '--verbosity', 'minimal') Invoke-Dotnet $scrapeArguments "$OutputDirectory\scrape.log" + $overlays = @($partitions | ForEach-Object { + $partition = $_ + $sources = @(foreach ($architecture in @('common', 'x86', 'x64', 'arm64')) { + $relative = "$architecture\$partition.cs" + if (Test-Path -LiteralPath "$selectedObj\generated\$relative") { + $relative + } + }) + if (!$sources.Count) { + throw "The selected scrape produced no source for $partition." + } + $sources + }) $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() $firstInputs = Get-SelectedInputs $selectedObj $overlays [IO.File]::WriteAllText("$OutputDirectory\first-selection.json", ($firstInputs | ConvertTo-Json -Depth 3), @@ -240,7 +266,7 @@ try { !$baselineReductions.SetEquals([string[]]($frozenReductions | Select-Object -Skip 1))) { throw 'The baseline discovery inputs do not reproduce the frozen complete pointer-fixup response file.' } - $remaps = @($baselineRemaps | Where-Object { $_.BaseName -notin @('WinHttp', 'HttpServer') }) + $remaps = @($baselineRemaps | Where-Object { $_.BaseName -notin $partitions }) $remaps += @(Get-ChildItem "$selectedObj\scratch" -Recurse -Filter '*.remaps' -File) $reduce = Get-PointerReductions $remaps [IO.File]::WriteAllLines("$generated\emitter.autoFnPtr.crossarch.generated.rsp", @@ -253,7 +279,6 @@ try { } [IO.File]::WriteAllText("$generated\traversedFileToNamespace.rsp", $mapping.Replace($oldRoot, $includeRoot), [Text.UTF8Encoding]::new($false)) - $project = "$repo\generation\WinSDK" $constantArguments = @("$repo\bin\Release\net10.0\ConstantsScraper.dll", '--headerTextFile', "$generated\ConstantsScraper.header.generated.txt", '--scraperOutputDir', $generated, @@ -273,10 +298,10 @@ try { '--no-restore', '--verbosity', 'minimal') "$OutputDirectory\emit.log" Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd, - '--knownDiffsFile', "$project\patches\WinHttp.expected-differences.txt") "$OutputDirectory\comparison.log" + '--knownDiffsFile', $ExpectedDifferencesFile) "$OutputDirectory\comparison.log" Assert-CommittedProducer $receipt = [ordered]@{ - kind = 'winhttp-migration' + kind = 'header-annotation-migration' baselineToolingCommit = $baseline.toolingCommit sdkPackageVersion = $baseline.sdkPackageVersion baselineProvenanceSha256 = Get-Sha256 $provenancePath @@ -284,12 +309,14 @@ try { newWinmdSha256 = Get-Sha256 $winmd preparedIncludeRoot = $includeRoot preparedManifestSha256 = Get-Sha256 ([IO.Path]::Combine([IO.Path]::GetDirectoryName($includeRoot), 'manifest.json')) + preparationRecipeSha256 = Get-Sha256 $recipePath + selectedPartitions = $partitions overlaidHeaderSources = $overlays repeatedSelectionInputs = $repeatedInputs sourceCommit = $sourceCommit toolFiles = $toolFiles toolingControl = $ToolingControlDirectory - expectedDifferencesSha256 = Get-Sha256 "$project\patches\WinHttp.expected-differences.txt" + expectedDifferencesSha256 = Get-Sha256 $ExpectedDifferencesFile generatedFiles = @(Get-ChildItem -LiteralPath $generated -Recurse -File | ForEach-Object { [ordered]@{ path = [IO.Path]::GetRelativePath($generated, $_.FullName); sha256 = Get-Sha256 $_.FullName } }) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index ab3fe997f..76c810184 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -31,6 +31,18 @@ private static readonly (string Owner, string Member, string Enum, string Native ("URL_COMPONENTS", "nScheme", "WINHTTP_INTERNET_SCHEME", "Int32"), ("WINHTTP_PROXY_RESULT_ENTRY", "ProxyScheme", "WINHTTP_INTERNET_SCHEME", "Int32"), }; + private static readonly EnumUse[] ReviewedEnumUses = Associations + .Select(value => new EnumUse(WinHttpNamespace, value.Owner, value.Member, value.Enum, value.Native)) + .Concat(new[] + { + new EnumUse("Windows.Win32.System.ApplicationVerifier", "VerifierEnumerateResource", "Flags", "VERIFIER_ENUM_RESOURCE_FLAGS", "UInt32"), + }).ToArray(); + private static readonly string[] AdditionalOwnedMethods = + { + "CeipIsOptedIn", + "VerifierEnumerateResource", + }; + private static readonly string[] AdditionalLogicalEnums = { "VERIFIER_ENUM_RESOURCE_FLAGS" }; public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; @@ -81,20 +93,24 @@ public void FrozenInputToolingControlChangesOnlyMissingConstructorInstanceBits() } [MigrationFact] - public void EveryPhysicalTypeOutsideWinHttpMatchesTheCorrectedToolingControl() + public void EveryPhysicalTypeHasOnlyReviewedEnumUseSiteChanges() { using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); using var current = Open("WINHTTP_MIGRATION_NEW"); var before = Types(control.Reader); var after = Types(current.Reader); Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + var used = new HashSet(StringComparer.Ordinal); int unchanged = 0; - foreach (var entry in before.Where(entry => !entry.Key.StartsWith(WinHttpNamespace + ".", StringComparison.Ordinal))) + foreach (var entry in before) { - Assert.Equal(SnapshotType(control.Reader, entry.Value), SnapshotType(current.Reader, after[entry.Key])); - unchanged++; + string expected = SnapshotType(control.Reader, entry.Value, normalizeReviewedEnumUses: true, usedEnumSites: used); + string actual = SnapshotType(current.Reader, after[entry.Key]); + Assert.True(expected == actual, $"Unexpected physical metadata change in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); + unchanged += SnapshotType(control.Reader, entry.Value) == actual ? 1 : 0; } - this.output.WriteLine($"Unmigrated physical type snapshots unchanged: {unchanged}."); + Assert.Equal(ReviewedEnumUses.Select(value => value.Site).OrderBy(value => value), used.OrderBy(value => value)); + this.output.WriteLine($"All {before.Count} physical types graded: {unchanged} unchanged; only {used.Count} exact native-type/AssociatedEnum sites normalized."); } [MigrationTheory] @@ -187,27 +203,39 @@ public void HeaderEnumsPreserveLogicalNamesNativeValuesAndUnderlyingTypes(int ar var reader = image.Reader; Check("WINHTTP_OPEN_REQUEST_FLAGS", "UInt32", true, new Dictionary { - ["WINHTTP_FLAG_BYPASS_PROXY_CACHE"] = 0x100, ["WINHTTP_FLAG_ESCAPE_DISABLE"] = 0x40, - ["WINHTTP_FLAG_ESCAPE_DISABLE_QUERY"] = 0x80, ["WINHTTP_FLAG_ESCAPE_PERCENT"] = 4, - ["WINHTTP_FLAG_NULL_CODEPAGE"] = 8, ["WINHTTP_FLAG_REFRESH"] = 0x100, ["WINHTTP_FLAG_SECURE"] = 0x800000, + ["WINHTTP_FLAG_BYPASS_PROXY_CACHE"] = 0x100, + ["WINHTTP_FLAG_ESCAPE_DISABLE"] = 0x40, + ["WINHTTP_FLAG_ESCAPE_DISABLE_QUERY"] = 0x80, + ["WINHTTP_FLAG_ESCAPE_PERCENT"] = 4, + ["WINHTTP_FLAG_NULL_CODEPAGE"] = 8, + ["WINHTTP_FLAG_REFRESH"] = 0x100, + ["WINHTTP_FLAG_SECURE"] = 0x800000, }); Check("WIN_HTTP_CREATE_URL_FLAGS", "UInt32", false, new Dictionary { - ["ICU_ESCAPE"] = 0x80000000, ["ICU_REJECT_USERPWD"] = 0x4000, ["ICU_DECODE"] = 0x10000000, + ["ICU_ESCAPE"] = 0x80000000, + ["ICU_REJECT_USERPWD"] = 0x4000, + ["ICU_DECODE"] = 0x10000000, }); Check("WINHTTP_ACCESS_TYPE", "UInt32", false, new Dictionary { - ["WINHTTP_ACCESS_TYPE_NO_PROXY"] = 1, ["WINHTTP_ACCESS_TYPE_DEFAULT_PROXY"] = 0, - ["WINHTTP_ACCESS_TYPE_NAMED_PROXY"] = 3, ["WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY"] = 4, + ["WINHTTP_ACCESS_TYPE_NO_PROXY"] = 1, + ["WINHTTP_ACCESS_TYPE_DEFAULT_PROXY"] = 0, + ["WINHTTP_ACCESS_TYPE_NAMED_PROXY"] = 3, + ["WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY"] = 4, }); Check("WINHTTP_CREDS_AUTHSCHEME", "UInt32", false, new Dictionary { - ["WINHTTP_AUTH_SCHEME_BASIC"] = 1, ["WINHTTP_AUTH_SCHEME_NTLM"] = 2, ["WINHTTP_AUTH_SCHEME_NEGOTIATE"] = 16, + ["WINHTTP_AUTH_SCHEME_BASIC"] = 1, + ["WINHTTP_AUTH_SCHEME_NTLM"] = 2, + ["WINHTTP_AUTH_SCHEME_NEGOTIATE"] = 16, }); Check("WINHTTP_INTERNET_SCHEME", "Int32", false, new Dictionary { - ["WINHTTP_INTERNET_SCHEME_HTTP"] = 1, ["WINHTTP_INTERNET_SCHEME_HTTPS"] = 2, - ["WINHTTP_INTERNET_SCHEME_FTP"] = 3, ["WINHTTP_INTERNET_SCHEME_SOCKS"] = 4, + ["WINHTTP_INTERNET_SCHEME_HTTP"] = 1, + ["WINHTTP_INTERNET_SCHEME_HTTPS"] = 2, + ["WINHTTP_INTERNET_SCHEME_FTP"] = 3, + ["WINHTTP_INTERNET_SCHEME_SOCKS"] = 4, }); var apis = Type(reader, "Apis", architecture); foreach (string name in new[] { "INTERNET_SCHEME_HTTP", "INTERNET_SCHEME_HTTPS", "INTERNET_SCHEME_FTP", "INTERNET_SCHEME_SOCKS" }) @@ -311,6 +339,44 @@ public void EmittedWinHttpScopeUsesSdkBindingsWithoutAuthoredSemanticFallback() File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "Partitions", "WinHttp", "settings.rsp"))); } + [MigrationFact] + public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + var emitted = old.Reader.MethodDefinitions.Select(old.Reader.GetMethodDefinition) + .Select(method => old.Reader.GetString(method.Name)).ToHashSet(StringComparer.Ordinal); + Assert.All(AdditionalOwnedMethods, name => Assert.Contains(name, emitted)); + Assert.DoesNotContain("VerifierIsPerUserSettingsEnabled", emitted); + string project = Path.Combine(RepositoryRoot, "generation", "WinSDK"); + foreach (string file in new[] { "libMappingsManual.rsp", "scraper.settings.rsp", "supportedOS.rsp", + "WithSetLastError.rsp", "emitter.settings.rsp", "ConstantsScraper.settings.rsp" }) + { + foreach (string line in File.ReadLines(Path.Combine(project, file))) + { + string target = line.Split('=')[0].Split(new[] { "::" }, StringSplitOptions.None)[0]; + Assert.DoesNotContain(target, AdditionalOwnedMethods); + Assert.DoesNotContain(target, AdditionalLogicalEnums); + } + } + using var enums = JsonDocument.Parse(File.ReadAllText(Path.Combine(project, "enums.json"))); + foreach (var item in enums.RootElement.GetProperty("items").EnumerateArray()) + { + if (item.TryGetProperty("name", out var name)) + Assert.DoesNotContain(name.GetString(), AdditionalLogicalEnums); + if (item.TryGetProperty("uses", out var uses)) + foreach (var use in uses.EnumerateArray()) + if (use.TryGetProperty("method", out var method)) + Assert.DoesNotContain(method.GetString(), AdditionalOwnedMethods); + } + string bindings = File.ReadAllText(Path.Combine(project, "libMappings.rsp")); + Assert.Contains("CeipIsOptedIn=KERNEL32.dll", bindings); + Assert.DoesNotContain("VerifierEnumerateResource=", bindings); + Assert.Contains("VerifierIsPerUserSettingsEnabled=SupportedOSPlatform(\"windows6.0.6000\")", + File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); + foreach (string partition in new[] { "CEIP", "ApplicationVerifier" }) + Assert.Contains("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); + } + [Theory] [InlineData("valid")] [InlineData("missing-type")] @@ -389,12 +455,28 @@ internal static string[] SnapshotNamespace(MetadataReader reader, string ns) .Select(reader.GetTypeDefinition) .Select(type => SnapshotType(reader, type)).OrderBy(value => value, StringComparer.Ordinal).ToArray(); - internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false) + internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false, + bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null) { - string Attributes(CustomAttributeHandleCollection values) => string.Join(",", values.Select(handle => - AttributeTypeName(reader, handle) + ":" + Convert.ToHexString(reader.GetBlobBytes(reader.GetCustomAttribute(handle).Value))) - .OrderBy(value => value, StringComparer.Ordinal)); + string Attributes(CustomAttributeHandleCollection values, string associatedEnum = null) + { + var attributes = values.Select(handle => AttributeTypeName(reader, handle) + ":" + + Convert.ToHexString(reader.GetBlobBytes(reader.GetCustomAttribute(handle).Value))).ToList(); + if (associatedEnum != null) + { + Assert.DoesNotContain(values, handle => AttributeName(reader, handle) == "AssociatedEnumAttribute"); + var value = new BlobBuilder(); + value.WriteUInt16(1); + value.WriteSerializedString(associatedEnum); + value.WriteUInt16(0); + attributes.Add(MetadataNamespace + ".AssociatedEnumAttribute:" + Convert.ToHexString(value.ToArray())); + } + return string.Join(",", attributes.OrderBy(value => value, StringComparer.Ordinal)); + } string Blob(BlobHandle blob) => blob.IsNil ? "" : Convert.ToHexString(reader.GetBlobBytes(blob)); + string ns = reader.GetString(type.Namespace); + string typeName = reader.GetString(type.Name); + var uses = normalizeReviewedEnumUses ? ReviewedEnumUses.Where(value => value.Namespace == ns).ToArray() : Array.Empty(); var rows = new List { reader.GetString(type.Namespace) + "." + reader.GetString(type.Name), @@ -403,15 +485,37 @@ string Attributes(CustomAttributeHandleCollection values) => string.Join(",", va foreach (var handle in type.GetFields()) { var field = reader.GetFieldDefinition(handle); + string name = reader.GetString(field.Name); + string fieldType = field.DecodeSignature(Signatures, null); + var use = uses.SingleOrDefault(value => value.Owner == typeName && value.Member == name); + if (use != null) + { + Assert.Equal(use.Namespace + "." + use.Enum, fieldType); + fieldType = use.Native; + usedEnumSites?.Add(use.Site); + } string constant = field.GetDefaultValue().IsNil ? "" : reader.GetConstant(field.GetDefaultValue()).TypeCode + ":" + Blob(reader.GetConstant(field.GetDefaultValue()).Value); - rows.Add($"F|{reader.GetString(field.Name)}|{field.Attributes}|{field.DecodeSignature(Signatures, null)}|{field.GetOffset()}|" + - $"{constant}|{Blob(field.GetMarshallingDescriptor())}|{Attributes(field.GetCustomAttributes())}"); + rows.Add($"F|{name}|{field.Attributes}|{fieldType}|{field.GetOffset()}|" + + $"{constant}|{Blob(field.GetMarshallingDescriptor())}|{Attributes(field.GetCustomAttributes(), use?.Enum)}"); } foreach (var handle in type.GetMethods()) { var method = reader.GetMethodDefinition(handle); var signature = method.DecodeSignature(Signatures, null); + string methodName = reader.GetString(method.Name); + var parameters = method.GetParameters().Select(reader.GetParameter).ToArray(); + var parameterTypes = signature.ParameterTypes.ToArray(); + var parameterEnums = new Dictionary(); + foreach (var use in uses.Where(value => typeName == "Apis" && value.Owner == methodName)) + { + var parameter = parameters.Single(value => reader.GetString(value.Name) == use.Member); + Assert.True(parameter.SequenceNumber > 0); + Assert.Equal(use.Namespace + "." + use.Enum, parameterTypes[parameter.SequenceNumber - 1]); + parameterTypes[parameter.SequenceNumber - 1] = use.Native; + parameterEnums.Add(parameter.SequenceNumber, use.Enum); + usedEnumSites?.Add(use.Site); + } int header = signature.Header.RawValue; if (correctConstructorInstanceBits && reader.GetString(method.Name) == ".ctor" && !method.Attributes.HasFlag(MethodAttributes.Static) && !signature.Header.IsInstance) @@ -419,11 +523,14 @@ string Attributes(CustomAttributeHandleCollection values) => string.Join(",", va Assert.Equal(0, header); header |= 0x20; } - rows.Add($"M|{reader.GetString(method.Name)}|{method.Attributes}|{method.ImplAttributes}|{Signature(signature, header)}|" + + rows.Add($"M|{methodName}|{method.Attributes}|{method.ImplAttributes}|{Signature(signature, header, parameterTypes)}|" + $"{Import(reader, method)}|{Attributes(method.GetCustomAttributes())}"); - foreach (var parameter in method.GetParameters().Select(reader.GetParameter)) + foreach (var parameter in parameters) + { + string attributes = Attributes(parameter.GetCustomAttributes(), parameterEnums.GetValueOrDefault(parameter.SequenceNumber)); rows.Add($"P|{parameter.SequenceNumber}|{reader.GetString(parameter.Name)}|{parameter.Attributes}|" + - $"{Blob(parameter.GetMarshallingDescriptor())}|{Attributes(parameter.GetCustomAttributes())}"); + $"{Blob(parameter.GetMarshallingDescriptor())}|{attributes}"); + } } return string.Join("\n", rows); } @@ -520,9 +627,14 @@ private static string FullName(MetadataReader reader, EntityHandle handle) throw new InvalidDataException("Unsupported type handle: " + handle.Kind); } - private static string Signature(MethodSignature signature, int? header = null) + private static string Signature(MethodSignature signature, int? header = null, IEnumerable parameterTypes = null) => $"{header ?? signature.Header.RawValue}|{signature.GenericParameterCount}|{signature.RequiredParameterCount}|{signature.ReturnType}|" + - string.Join(",", signature.ParameterTypes); + string.Join(",", parameterTypes ?? signature.ParameterTypes); + + private sealed record EnumUse(string Namespace, string Owner, string Member, string Enum, string Native) + { + internal string Site => Namespace + "." + Owner + "::" + Member; + } private static Image Open(string variable) => new Image(Environment.GetEnvironmentVariable(variable)); diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index ee31f3add..dbcb39834 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Security.Cryptography; using System.Text; +using System.Text.Json; using System.Text.RegularExpressions; using ClangSharp.Interop; using Xunit; @@ -30,8 +31,15 @@ public unsafe void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string p string root = WinHttpMigrationTests.RepositoryRoot; string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); - var before = Surface(original); - var after = Surface(prepared); + string[] headers = partition == "WinHttp" ? new[] { "winhttp.h", "httprequest.h" } : new[] { "winhttp.h", "httprequest.h", "http.h" }; + const string checks = @" +static_assert(INTERNET_SCHEME_HTTP == 1); +static_assert(INTERNET_SCHEME_HTTPS == 2); +static_assert(INTERNET_SCHEME_FTP == 3); +static_assert(INTERNET_SCHEME_SOCKS == 4); +"; + var before = Surface(root, original, partition, architecture, target, headers, checks); + var after = Surface(root, prepared, partition, architecture, target, headers, checks); Assert.Equal(61, before.Count(value => value.StartsWith("function WinHttp", StringComparison.Ordinal))); Assert.True(before.Count(value => value.StartsWith("field ", StringComparison.Ordinal)) > 50); Assert.Contains(before, value => value.StartsWith("typedef LPWINHTTP_STATUS_CALLBACK ", StringComparison.Ordinal)); @@ -49,104 +57,135 @@ public unsafe void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string p Assert.Equal(expectedHash, hash); this.output.WriteLine($"{partition}/{architecture}: {before.Length} native facts; OLD=NEW SHA256 " + hash); + } + + [NativeMigrationTheory] + [MemberData(nameof(AdditionalPartitions))] + public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, string architecture, string target) + { + string root = WinHttpMigrationTests.RepositoryRoot; + string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); + string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "SdkHeaders.json"))); + var patched = recipe.RootElement.GetProperty("headers").EnumerateArray() + .Select(value => Path.GetFileName(value.GetProperty("path").GetString())); + var headers = File.ReadLines(Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "settings.rsp")) + .Where(line => line.StartsWith("/", StringComparison.Ordinal)) + .Select(line => Path.GetFileName(line.Replace('/', '\\'))).Concat(patched).Distinct(StringComparer.OrdinalIgnoreCase).ToArray(); + Assert.NotEmpty(headers); + var before = Surface(root, original, partition, architecture, target, headers, ""); + var after = Surface(root, prepared, partition, architecture, target, headers, ""); + Assert.NotEmpty(before); + Assert.Contains(before, value => value.StartsWith("function ", StringComparison.Ordinal) || value.StartsWith("record ", StringComparison.Ordinal)); + Assert.Equal(before, after); + this.output.WriteLine($"{partition}/{architecture}: {before.Length} native facts; OLD=NEW SHA256 " + + Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("\n", before))))); + } - string[] Surface(string includeRoot) + public static IEnumerable AdditionalPartitions() + { + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(WinHttpMigrationTests.RepositoryRoot, + "generation", "WinSDK", "patches", "SdkHeaders.json"))); + foreach (string partition in recipe.RootElement.GetProperty("partitions").EnumerateArray().Select(value => value.GetString()) + .Where(value => value != "WinHttp" && value != "HttpServer")) { - string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); - var arguments = new List + yield return new object[] { partition, "x86", "i686-pc-windows-msvc" }; + yield return new object[] { partition, "x64", "x86_64-pc-windows-msvc" }; + yield return new object[] { partition, "arm64", "aarch64-pc-windows-msvc" }; + } + } + + private static unsafe string[] Surface(string root, string includeRoot, string partition, string architecture, + string target, string[] headers, string checks) + { + string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); + var arguments = new List { "--language=c++", "--std=c++17", "--target=" + target, "--include-directory=" + Path.Combine(root, "generation", "WinSDK", "inc"), }; - arguments.AddRange(new[] { "shared", "um", "ucrt", "winrt" } - .Select(directory => "--include-directory=" + Path.Combine(includeRoot, directory))); - arguments.AddRange((Environment.GetEnvironmentVariable("INCLUDE") ?? "").Split(';', StringSplitOptions.RemoveEmptyEntries) - .Select(directory => "--include-directory=" + directory)); - string settings = Path.Combine(root, "sources", "GeneratorSdk", "tools", "assets", "scraper"); - foreach (string path in new[] { Path.Combine(settings, "baseSettings.rsp"), Path.Combine(settings, "baseSettings." + architecture + ".rsp") }) - { - bool additional = false; - foreach (string line in File.ReadLines(path).Select(value => value.Trim()).Where(value => value.Length != 0)) - { - if (line.StartsWith("--", StringComparison.Ordinal)) - additional = line == "--additional"; - else if (additional) - arguments.Add(line); - } - } - Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); - using var unsaved = CXUnsavedFile.Create(source, File.ReadAllText(source) + @" -static_assert(INTERNET_SCHEME_HTTP == 1); -static_assert(INTERNET_SCHEME_HTTPS == 2); -static_assert(INTERNET_SCHEME_FTP == 3); -static_assert(INTERNET_SCHEME_SOCKS == 4); -"); - using var index = CXIndex.Create(false, false); - Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), - new[] { unsaved }, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); - // Own raw cursors so earlier generator fixtures cannot supply a cached managed AST wrapper. - using var unit = handle; - for (uint i = 0; i < handle.NumDiagnostics; i++) + arguments.AddRange(new[] { "shared", "um", "ucrt", "winrt" } + .Select(directory => "--include-directory=" + Path.Combine(includeRoot, directory))); + arguments.AddRange((Environment.GetEnvironmentVariable("INCLUDE") ?? "").Split(';', StringSplitOptions.RemoveEmptyEntries) + .Select(directory => "--include-directory=" + directory)); + string settings = Path.Combine(root, "sources", "GeneratorSdk", "tools", "assets", "scraper"); + foreach (string path in new[] { Path.Combine(settings, "baseSettings.rsp"), Path.Combine(settings, "baseSettings." + architecture + ".rsp") }) + { + bool additional = false; + foreach (string line in File.ReadLines(path).Select(value => value.Trim()).Where(value => value.Length != 0)) { - using var diagnostic = handle.GetDiagnostic(i); - Assert.True(diagnostic.Severity < CXDiagnosticSeverity.CXDiagnostic_Error, - diagnostic.Format(CXDiagnostic.DefaultDisplayOptions).ToString()); + if (line.StartsWith("--", StringComparison.Ordinal)) + additional = line == "--additional"; + else if (additional) + arguments.Add(line); } - var result = new List(); - // Clang's anonymous names embed paths and line numbers; retain declaration identity without those incidental coordinates. - var anonymous = new Dictionary(StringComparer.Ordinal); - var ordinals = new Dictionary(StringComparer.Ordinal); - Walk(unit.Cursor, ""); - return result.Select(value => Regex.Replace(value, - @"\((?:anonymous|unnamed) (?:struct|union|enum) at (?[^)]+:\d+:\d+)\)", - match => anonymous[match.Groups["location"].Value.Replace('\\', '/')])) - .OrderBy(value => value, StringComparer.Ordinal).ToArray(); + } + Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); + using var unsaved = CXUnsavedFile.Create(source, File.ReadAllText(source) + checks); + using var index = CXIndex.Create(false, false); + Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), + new[] { unsaved }, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); + // Own raw cursors so earlier generator fixtures cannot supply a cached managed AST wrapper. + using var unit = handle; + for (uint i = 0; i < handle.NumDiagnostics; i++) + { + using var diagnostic = handle.GetDiagnostic(i); + Assert.True(diagnostic.Severity < CXDiagnosticSeverity.CXDiagnostic_Error, + diagnostic.Format(CXDiagnostic.DefaultDisplayOptions).ToString()); + } + var result = new List(); + // Clang's anonymous names embed paths and line numbers; retain declaration identity without those incidental coordinates. + var anonymous = new Dictionary(StringComparer.Ordinal); + var ordinals = new Dictionary(StringComparer.Ordinal); + Walk(unit.Cursor, ""); + return result.Select(value => Regex.Replace(value, + @"\((?:anonymous|unnamed) (?:struct|union|enum) at (?[^)]+:\d+:\d+)\)", + match => anonymous[match.Groups["location"].Value.Replace('\\', '/')])) + .OrderBy(value => value, StringComparer.Ordinal).ToArray(); - void Walk(CXCursor cursor, string owner) + void Walk(CXCursor cursor, string owner) + { + cursor.Location.GetExpansionLocation(out var file, out var line, out var column, out _); + string header = Path.GetFileName(file.ToString()); + string childOwner = owner; + var kind = cursor.DeclKind; + bool record = kind is CX_DeclKind.CX_DeclKind_Record or CX_DeclKind.CX_DeclKind_CXXRecord; + bool enumeration = kind == CX_DeclKind.CX_DeclKind_Enum; + string name = Text(cursor.Spelling); + if (record || enumeration) { - cursor.Location.GetExpansionLocation(out var file, out var line, out var column, out _); - string header = Path.GetFileName(file.ToString()); - string childOwner = owner; - var kind = cursor.DeclKind; - bool record = kind is CX_DeclKind.CX_DeclKind_Record or CX_DeclKind.CX_DeclKind_CXXRecord; - bool enumeration = kind == CX_DeclKind.CX_DeclKind_Enum; - string name = Text(cursor.Spelling); - if (record || enumeration) + if (name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) { - if (name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) - { - ordinals.TryGetValue(header, out int ordinal); - ordinals[header] = ordinal + 1; - anonymous[file.ToString().Replace('\\', '/') + ":" + line + ":" + column] = header + ":anonymous#" + ordinal; - } - childOwner = owner + name + "::"; + ordinals.TryGetValue(header, out int ordinal); + ordinals[header] = ordinal + 1; + anonymous[file.ToString().Replace('\\', '/') + ":" + line + ":" + column] = header + ":anonymous#" + ordinal; } - if (header is "winhttp.h" or "httprequest.h" || (partition == "HttpServer" && header == "http.h")) - { - if (kind is CX_DeclKind.CX_DeclKind_Function or CX_DeclKind.CX_DeclKind_CXXMethod or - CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor or - CX_DeclKind.CX_DeclKind_CXXConversion or CX_DeclKind.CX_DeclKind_CXXDeductionGuide) - result.Add("function " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling)); - else if (kind is CX_DeclKind.CX_DeclKind_Field or CX_DeclKind.CX_DeclKind_ObjCAtDefsField) - result.Add("field " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling) + " " + cursor.OffsetOfField); - else if (record && cursor.IsCompleteDefinition) - result.Add("record " + owner + name + " " + cursor.Type.SizeOf + " " + cursor.Type.AlignOf); - else if (kind == CX_DeclKind.CX_DeclKind_Typedef) - result.Add("typedef " + owner + name + " " + Text(cursor.TypedefDeclUnderlyingType.CanonicalType.Spelling)); - else if (enumeration) - result.Add("enum " + owner + name + " " + Text(cursor.EnumDecl_IntegerType.Spelling)); - else if (kind == CX_DeclKind.CX_DeclKind_EnumConstant) - result.Add("value " + owner + name + " " + cursor.EnumConstantDeclValue); - } - cursor.VisitChildren((child, parent, data) => - { - if (child.IsDeclaration || child.IsTranslationUnit) - Walk(child, childOwner); - return CXChildVisitResult.CXChildVisit_Continue; - }, default); + childOwner = owner + name + "::"; } + if (headers.Contains(header, StringComparer.OrdinalIgnoreCase)) + { + if (kind is CX_DeclKind.CX_DeclKind_Function or CX_DeclKind.CX_DeclKind_CXXMethod or + CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor or + CX_DeclKind.CX_DeclKind_CXXConversion or CX_DeclKind.CX_DeclKind_CXXDeductionGuide) + result.Add("function " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling)); + else if (kind is CX_DeclKind.CX_DeclKind_Field or CX_DeclKind.CX_DeclKind_ObjCAtDefsField) + result.Add("field " + owner + name + " " + Text(cursor.Type.CanonicalType.Spelling) + " " + cursor.OffsetOfField); + else if (record && cursor.IsCompleteDefinition) + result.Add("record " + owner + name + " " + cursor.Type.SizeOf + " " + cursor.Type.AlignOf); + else if (kind == CX_DeclKind.CX_DeclKind_Typedef) + result.Add("typedef " + owner + name + " " + Text(cursor.TypedefDeclUnderlyingType.CanonicalType.Spelling)); + else if (enumeration) + result.Add("enum " + owner + name + " " + Text(cursor.EnumDecl_IntegerType.Spelling)); + else if (kind == CX_DeclKind.CX_DeclKind_EnumConstant) + result.Add("value " + owner + name + " " + cursor.EnumConstantDeclValue); + } + cursor.VisitChildren((child, parent, data) => + { + if (child.IsDeclaration || child.IsTranslationUnit) + Walk(child, childOwner); + return CXChildVisitResult.CXChildVisit_Continue; + }, default); } - static string Text(CXString text) { using (text) return text.ToString(); From bbe1829754596b614199419114090d3079970f98 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 23:10:49 -0700 Subject: [PATCH 15/57] Record exact first-batch grades and literal mutation controls Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 21 +++++++ .../WinHttpMigrationTests.cs | 57 ++++++++++++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 214b2d2ca..7705fd159 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -100,6 +100,13 @@ unselected inputs. Reject success-shaped partial images with dangling references Verify nonzero executed counts and no skipped acceptance legs. Build tools before emission; never rebuild DLLs while an emitter is using them. +Physical snapshots match literal-only `Apis` fields by owning type and name, +not incidental metadata row order. Moving WinHttp's three typed port constants +from constant overrides to header declarations changes that order but not their +names, unsigned 16-bit types or values. Actual metadata mutation controls must +still reject changed names, owners, types and values. Instance-field layout, +enum-member order and method/vtable order are not canonicalized. + ## 6. Report consumer compatibility independently CsWin32 source compatibility is the primary consumer gate, not identical winmd @@ -157,3 +164,17 @@ unsigned 32-bit storage, with `Flags` becoming native `ULONG` plus A complete selected-SDK import-library scan found neither verifier entrypoint. `VerifierIsPerUserSettingsEnabled` is absent from compiled OLD, so its unused OS row is explicitly outside emitted-owner migration accounting and is retained. + +Batch-1 checkpoint: producer `0a01605e37ace4128c8cc01cd6efadb1add02525`, +full image SHA256 +`F1B647FC43E28D546B5991EFE695C6C1D678092BEEB7127747F41B7A41B8240D`, +receipt SHA256 +`96FFBCA0F352BBF8E074A8A965844BF5038047D6A976D5779922C104F8999570`. +The strict declaration grade uses all 18 expectations with zero unknown/unused +differences. All 37,314 physical types and 7,791 enum identities are accounted for; +only nine exact enum-use sites differ. Eighteen owner/dependent native legs, +23 physical/no-fallback/mutation checks, 25 preparation/closure controls and +14 full-SDK integrity checks pass. Eighteen repeated source/discovery inputs are +byte-identical, and all 155 pointer reductions remain present. Artifacts are in +`artifacts\header-annotation-wave\batch1`; prior immutable candidates are retained. +Fresh consumer compatibility remains unverified. diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 76c810184..f21d368ed 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -393,6 +393,55 @@ public void LocalAttributeClosureMutationControls(string mutation) Assert.ThrowsAny(() => AssertClosure(metadata.GetMetadataReader())); } + [Theory] + [InlineData("order")] + [InlineData("value")] + [InlineData("type")] + [InlineData("name")] + [InlineData("owner")] + public void ApiLiteralComparisonIgnoresOnlyRowOrder(string mutation) + { + using var baseline = Fixture(""); + using var changed = Fixture(mutation); + var before = baseline.GetMetadataReader(); + var after = changed.GetMetadataReader(); + string expected = SnapshotType(before, before.GetTypeDefinition(MetadataTokens.TypeDefinitionHandle(2))); + string actual = SnapshotType(after, after.GetTypeDefinition(MetadataTokens.TypeDefinitionHandle(2))); + if (mutation == "order") + Assert.Equal(expected, actual); + else + Assert.NotEqual(expected, actual); + + static MetadataReaderProvider Fixture(string mutation) + { + var metadata = new MetadataBuilder(); + metadata.AddModule(0, metadata.GetOrAddString("Constants.winmd"), metadata.GetOrAddGuid(Guid.NewGuid()), default, default); + metadata.AddTypeDefinition(TypeAttributes.NotPublic, default, metadata.GetOrAddString(""), default, + MetadataTokens.FieldDefinitionHandle(1), MetadataTokens.MethodDefinitionHandle(1)); + metadata.AddTypeDefinition(TypeAttributes.Public | TypeAttributes.Abstract | TypeAttributes.Sealed, + metadata.GetOrAddString("Pilot"), metadata.GetOrAddString("Apis"), default, + MetadataTokens.FieldDefinitionHandle(1), MetadataTokens.MethodDefinitionHandle(1)); + metadata.AddTypeDefinition(TypeAttributes.Public, metadata.GetOrAddString("Pilot"), + metadata.GetOrAddString("Other"), default, MetadataTokens.FieldDefinitionHandle(mutation == "owner" ? 2 : 3), + MetadataTokens.MethodDefinitionHandle(1)); + foreach (string name in mutation == "order" ? new[] { "Second", "First" } : new[] { "First", "Second" }) + { + var signature = new BlobBuilder(); + var fieldType = new BlobEncoder(signature).FieldSignature(); + bool signed = mutation == "type" && name == "Second"; + if (signed) fieldType.Int32(); + else fieldType.UInt32(); + var field = metadata.AddFieldDefinition(FieldAttributes.Public | FieldAttributes.Static | FieldAttributes.Literal | FieldAttributes.HasDefault, + metadata.GetOrAddString(mutation == "name" && name == "Second" ? "Different" : name), metadata.GetOrAddBlob(signature)); + uint value = name == "First" ? 1u : mutation == "value" ? 3u : 2u; + metadata.AddConstant(field, signed ? (object)(int)value : value); + } + var image = new BlobBuilder(); + new MetadataRootBuilder(metadata).Serialize(image, 0, 0); + return MetadataReaderProvider.FromMetadataImage(image.ToImmutableArray()); + } + } + internal static string RepositoryRoot { get @@ -482,7 +531,13 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum reader.GetString(type.Namespace) + "." + reader.GetString(type.Name), $"{type.Attributes}|{FullName(reader, type.BaseType)}|{type.GetLayout().PackingSize}|{type.GetLayout().Size}|{Attributes(type.GetCustomAttributes())}", }; - foreach (var handle in type.GetFields()) + IEnumerable fields = type.GetFields(); + if (typeName == "Apis" && fields.All(handle => + reader.GetFieldDefinition(handle).Attributes.HasFlag(FieldAttributes.Static | FieldAttributes.Literal))) + { + fields = fields.OrderBy(handle => reader.GetString(reader.GetFieldDefinition(handle).Name), StringComparer.Ordinal); + } + foreach (var handle in fields) { var field = reader.GetFieldDefinition(handle); string name = reader.GetString(field.Name); From 7d89f8e7f10176f3bdaa1490ae917b65be710175 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 23:23:23 -0700 Subject: [PATCH 16/57] Migrate MagApi PsApi1 Time and Ual header facts Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 13 + .../WinSDK/Partitions/MagApi/settings.rsp | 2 + .../WinSDK/Partitions/PsApi1/settings.rsp | 2 + .../WinSDK/Partitions/Time/settings.rsp | 2 + generation/WinSDK/Partitions/Ual/settings.rsp | 2 + generation/WinSDK/WithSetLastError.rsp | 39 -- generation/WinSDK/enums.json | 38 -- ...HeaderAnnotations.expected-differences.txt | 6 + generation/WinSDK/patches/SdkHeaders.json | 43 ++- .../um/magnification.annotations.patch | 74 ++++ .../post-midl/um/psapi.annotations.patch | 347 ++++++++++++++++++ .../um/timezoneapi.annotations.patch | 126 +++++++ .../post-midl/um/ual.annotations.patch | 37 ++ generation/WinSDK/supportedOS.rsp | 63 ---- .../WinHttpMigrationTests.cs | 38 +- 15 files changed, 686 insertions(+), 146 deletions(-) create mode 100644 generation/WinSDK/patches/post-midl/um/magnification.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/psapi.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/ual.annotations.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 7705fd159..626dcc550 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -178,3 +178,16 @@ only nine exact enum-use sites differ. Eighteen owner/dependent native legs, byte-identical, and all 155 pointer reductions remain present. Artifacts are in `artifacts\header-annotation-wave\batch1`; prior immutable candidates are retained. Fresh consumer compatibility remains unverified. + +Batch 2 moves only emitted owners: MagApi's 19 OS floors, one last-error fact +and two existing `MW_FILTERMODE` uses; PsApi1's 27 OS floors, 27 last-error facts +and `EnumProcessModulesEx` filter use; Time's 13 OS floors and 11 last-error +facts; and Ual's four OS floors. Correct SDK-scanned bindings remain untouched. +Both logical groups retain precisely OLD membership, order and unsigned 32-bit +storage; `MW_FILTERMODE` includes an annotated pointer parameter. + +The existing native `PSAPI_VERSION == 1` branch owns the PsApi1 annotations and +logical group. The version-2 `K32*` declarations are not annotated or migrated; +PsApi2 remains opted out and is regenerated as an unchanged dependent. Time's +`timeprov.h` is pinned and compiled but has no emitted DLL-function facts to +relocate. Its three unused provider-export OS rows remain outside this scope. diff --git a/generation/WinSDK/Partitions/MagApi/settings.rsp b/generation/WinSDK/Partitions/MagApi/settings.rsp index 8947d2dd0..ee29b9ea4 100644 --- a/generation/WinSDK/Partitions/MagApi/settings.rsp +++ b/generation/WinSDK/Partitions/MagApi/settings.rsp @@ -2,3 +2,5 @@ /um/magnification.h --namespace Windows.Win32.UI.Magnification +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/PsApi1/settings.rsp b/generation/WinSDK/Partitions/PsApi1/settings.rsp index 585809544..0e5512de5 100644 --- a/generation/WinSDK/Partitions/PsApi1/settings.rsp +++ b/generation/WinSDK/Partitions/PsApi1/settings.rsp @@ -2,3 +2,5 @@ /um/Psapi.h --namespace Windows.Win32.System.ProcessStatus +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/Time/settings.rsp b/generation/WinSDK/Partitions/Time/settings.rsp index 6865c23c8..6d4748814 100644 --- a/generation/WinSDK/Partitions/Time/settings.rsp +++ b/generation/WinSDK/Partitions/Time/settings.rsp @@ -3,3 +3,5 @@ /um/timezoneapi.h --namespace Windows.Win32.System.Time +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/Ual/settings.rsp b/generation/WinSDK/Partitions/Ual/settings.rsp index dfff4ebcd..0a076681e 100644 --- a/generation/WinSDK/Partitions/Ual/settings.rsp +++ b/generation/WinSDK/Partitions/Ual/settings.rsp @@ -2,3 +2,5 @@ /um/ual.h --namespace Windows.Win32.System.UserAccessLogging +--config +parse-win32-annotations diff --git a/generation/WinSDK/WithSetLastError.rsp b/generation/WinSDK/WithSetLastError.rsp index 68312b3e5..7ec87336a 100644 --- a/generation/WinSDK/WithSetLastError.rsp +++ b/generation/WinSDK/WithSetLastError.rsp @@ -800,7 +800,6 @@ EcOpenSubscription EcOpenSubscriptionEnum EditSecurity EmptyClipboard -EmptyWorkingSet EnableMouseInPointer EnableNonClientDpiScaling EnableScrollBar @@ -831,7 +830,6 @@ EnumDependentServicesW EnumDesktopsA EnumDesktopsW EnumDesktopWindows -EnumDeviceDrivers EnumDirTree EnumDirTreeW EnumerateLoadedModules @@ -843,15 +841,10 @@ EnumJobsA EnumJobsW EnumLanguageGroupLocalesA EnumLanguageGroupLocalesW -EnumPageFilesA -EnumPageFilesW EnumPrinterDriversA EnumPrinterDriversW EnumPrintersA EnumPrintersW -EnumProcesses -EnumProcessModules -EnumProcessModulesEx EnumProtocolsA EnumProtocolsW EnumPwrSchemes @@ -999,7 +992,6 @@ FileEncryptionStatusA FileEncryptionStatusW FileTimeToDosDateTime FileTimeToLocalFileTime -FileTimeToSystemTime FillConsoleOutputAttribute FillConsoleOutputCharacterA FillConsoleOutputCharacterW @@ -1237,10 +1229,6 @@ GetDefaultCommConfigA GetDefaultCommConfigW GetDefaultUserProfileDirectoryA GetDefaultUserProfileDirectoryW -GetDeviceDriverBaseNameA -GetDeviceDriverBaseNameW -GetDeviceDriverFileNameA -GetDeviceDriverFileNameW GetDialogControlDpiChangeBehavior GetDialogDpiChangeBehavior GetDiskFreeSpaceA @@ -1256,7 +1244,6 @@ GetDllDirectoryA GetDllDirectoryW GetDurationFormat GetDurationFormatEx -GetDynamicTimeZoneInformation GetEnhMetaFilePixelFormat GetEnlistmentId GetEnlistmentRecoveryInformation @@ -1349,8 +1336,6 @@ GetLongPathNameTransactedA GetLongPathNameTransactedW GetLongPathNameW GetMailslotInfo -GetMappedFileNameA -GetMappedFileNameW GetMaximumProcessorCount GetMemoryErrorHandlingCapabilities GetMenuBarInfo @@ -1363,17 +1348,12 @@ GetMenuItemRect GetMessage GetMessageA GetMessageW -GetModuleBaseNameA -GetModuleBaseNameW GetModuleFileNameA -GetModuleFileNameExA -GetModuleFileNameExW GetModuleFileNameW GetModuleHandleA GetModuleHandleExA GetModuleHandleExW GetModuleHandleW -GetModuleInformation GetMonitorBrightness GetMonitorColorTemperature GetMonitorContrast @@ -1422,7 +1402,6 @@ GetOverlappedResult GetOverlappedResultEx GetParent getpeername -GetPerformanceInfo GetPhysicalCursorPos GetPhysicallyInstalledSystemMemory GetPhysicalMonitorsFromHMONITOR @@ -1464,11 +1443,8 @@ GetProcessHeap GetProcessHeaps GetProcessId GetProcessIdOfThread -GetProcessImageFileNameA -GetProcessImageFileNameW GetProcessInformation GetProcessIoCounters -GetProcessMemoryInfo GetProcessMitigationPolicy GetProcessorSystemCycleTime GetProcessPreferredUILanguages @@ -1567,8 +1543,6 @@ GetTimeFormatA GetTimeFormatEx GetTimeFormatW GetTimestampForLoadedLibrary -GetTimeZoneInformation -GetTimeZoneInformationForYear GetTimingReport GetTitleBarInfo GetTokenInformation @@ -1634,8 +1608,6 @@ GetWindowTextA GetWindowTextLengthA GetWindowTextLengthW GetWindowTextW -GetWsChanges -GetWsChangesEx GlobalAddAtomA GlobalAddAtomExA GlobalAddAtomExW @@ -1741,7 +1713,6 @@ InitializeContext2 InitializeCriticalSectionAndSpinCount InitializeCriticalSectionEx InitializeEnclave -InitializeProcessForWsWatch InitializeProcThreadAttributeList InitializeSecurityDescriptor InitializeSid @@ -1923,7 +1894,6 @@ LookupPrivilegeNameA LookupPrivilegeNameW LookupPrivilegeValueA LookupPrivilegeValueW -MagSetInputTransform MakeAbsoluteSD MakeSelfRelativeSD MakeSureDirectoryPathExists @@ -2118,8 +2088,6 @@ QueryThreadCycleTime QueryThreadpoolStackInformation QueryUmsThreadInformation QueryVirtualMemoryInformation -QueryWorkingSet -QueryWorkingSetEx QueueUserAPC QueueUserWorkItem RasSecurityDialogReceive @@ -2339,7 +2307,6 @@ SetDlgItemTextW SetDllDirectoryA SetDllDirectoryW SetDoubleClickTime -SetDynamicTimeZoneInformation SetEndOfFile SetEndOfLog SetEnlistmentRecoveryInformation @@ -2465,7 +2432,6 @@ SetThreadStackGuarantee SetThreadToken SetThreadUILanguage SetTimer -SetTimeZoneInformation SetTokenInformation SetTransactionInformation SetUmsThreadInformation @@ -3001,9 +2967,6 @@ SymUnloadModule64 SystemParametersInfoA SystemParametersInfoForDpi SystemParametersInfoW -SystemTimeToFileTime -SystemTimeToTzSpecificLocalTime -SystemTimeToTzSpecificLocalTimeEx TerminateEnclave TerminateJobObject TerminateLogArchive @@ -3033,8 +2996,6 @@ TrySubmitThreadpoolCallback TxfLogCreateFileReadContext TxfLogDestroyReadContext TxfLogReadRecords -TzSpecificLocalTimeToSystemTime -TzSpecificLocalTimeToSystemTimeEx UmsThreadYield UnDecorateSymbolName UnDecorateSymbolNameW diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index 9d621c6d3..4078ba464 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -28415,26 +28415,6 @@ } ] }, - { - "name": "ENUM_PROCESS_MODULES_EX_FLAGS", - "flags": false, - "autoPopulate": { - "filter": "LIST_MODULES_", - "header": "psapi.h" - }, - "members": [ - { - "name": "LIST_MODULES_ALL", - "value": "3" - } - ], - "uses": [ - { - "method": "EnumProcessModulesEx", - "parameter": "dwFilterFlag" - } - ] - }, { "name": "PAGE_TYPE", "flags": true, @@ -31433,24 +31413,6 @@ } ] }, - { - "name": "MW_FILTERMODE", - "autoPopulate": { - "filter": "MW_FILTERMODE_", - "header": "magnification.h" - }, - "members": [], - "uses": [ - { - "method": "MagSetWindowFilterList", - "parameter": "dwFilterMode" - }, - { - "method": "MagGetWindowFilterList", - "parameter": "pdwFilterMode" - } - ] - }, { "name": "UIA_PATTERN_ID", "type": "int", diff --git a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt index 4b688f8b0..5de3dd4d3 100644 --- a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt +++ b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt @@ -20,3 +20,9 @@ Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme : => [A Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags) : [In] => [AssociatedEnum(VERIFIER_ENUM_RESOURCE_FLAGS),In] Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags)...Windows.Win32.System.ApplicationVerifier.VERIFIER_ENUM_RESOURCE_FLAGS => System.UInt32 +Windows.Win32.System.ProcessStatus.Apis.EnumProcessModulesEx : parameter 5 (dwFilterFlag) : [In] => [AssociatedEnum(ENUM_PROCESS_MODULES_EX_FLAGS),In] +Windows.Win32.System.ProcessStatus.Apis.EnumProcessModulesEx : parameter 5 (dwFilterFlag)...Windows.Win32.System.ProcessStatus.ENUM_PROCESS_MODULES_EX_FLAGS => System.UInt32 +Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilterMode) : [In] => [AssociatedEnum(MW_FILTERMODE),In] +Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE => System.UInt32 +Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode) : [In,Out] => [AssociatedEnum(MW_FILTERMODE),In,Out] +Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE* => System.UInt32* diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 21083e246..67c91755a 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -27,6 +27,36 @@ "sourceSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8", "sdkPath": "c\\include\\10.0.26100.0\\um\\avrfsdk.h", "sdkSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8" + }, + { + "path": "um\\magnification.h", + "sourceSha256": "886BA6F9181C1B747FF704E3181BC64980FD60B828366F2B3CC3DD10E8EB7A84", + "sdkPath": "c\\include\\10.0.26100.0\\um\\magnification.h", + "sdkSha256": "886BA6F9181C1B747FF704E3181BC64980FD60B828366F2B3CC3DD10E8EB7A84" + }, + { + "path": "um\\Psapi.h", + "sourceSha256": "4166FBCE43622F469AA46CD1CEA27A73171353DF8101643C2E850124622D5EF9", + "sdkPath": "c\\include\\10.0.26100.0\\um\\Psapi.h", + "sdkSha256": "4166FBCE43622F469AA46CD1CEA27A73171353DF8101643C2E850124622D5EF9" + }, + { + "path": "um\\timezoneapi.h", + "sourceSha256": "621C0252A8A831813592C4A95E183A2E7AE55EFBBD7B8AD886AF7D8871FC4D50", + "sdkPath": "c\\include\\10.0.26100.0\\um\\timezoneapi.h", + "sdkSha256": "621C0252A8A831813592C4A95E183A2E7AE55EFBBD7B8AD886AF7D8871FC4D50" + }, + { + "path": "um\\timeprov.h", + "sourceSha256": "1B6D2B953BDEB46646F652EF90746911A51891DC32A83A3468EBA502A509F6D0", + "sdkPath": "c\\include\\10.0.26100.0\\um\\timeprov.h", + "sdkSha256": "1B6D2B953BDEB46646F652EF90746911A51891DC32A83A3468EBA502A509F6D0" + }, + { + "path": "um\\ual.h", + "sourceSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB", + "sdkPath": "c\\include\\10.0.26100.0\\um\\ual.h", + "sdkSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB" } ], "partitions": [ @@ -35,7 +65,12 @@ "CEIP", "ApplicationVerifier", "Base", - "FileHistory" + "FileHistory", + "MagApi", + "PsApi1", + "PsApi2", + "Time", + "Ual" ], "patches": [ "post-midl\\um\\winhttp.supported-os.patch", @@ -45,6 +80,10 @@ "post-midl\\um\\winhttp.port-constant-types.patch", "post-midl\\um\\winhttp.logical-enums.patch", "post-midl\\um\\windowsceip.annotations.patch", - "post-midl\\um\\avrfsdk.annotations.patch" + "post-midl\\um\\avrfsdk.annotations.patch", + "post-midl\\um\\magnification.annotations.patch", + "post-midl\\um\\psapi.annotations.patch", + "post-midl\\um\\timezoneapi.annotations.patch", + "post-midl\\um\\ual.annotations.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch new file mode 100644 index 000000000..d0f81a613 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch @@ -0,0 +1,74 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h b/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h +@@ -11,6 +11,7 @@ + #define _INC_MAGNIFIER + + #include ++#include + + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +@@ -72,26 +73,60 @@ + typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); + + // Public Functions ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagInitialize(); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagUninitialize(); + ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); +-BOOL WINAPI MagSetWindowFilterList(HWND hwnd, DWORD dwFilterMode, int count, HWND *pHWND ); +-int WINAPI MagGetWindowFilterList(HWND hwnd, DWORD *pdwFilterMode, int count, HWND *pHWND ); ++_Windows_SupportedOS_WindowsVista_ ++BOOL WINAPI MagSetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD dwFilterMode, int count, HWND *pHWND ); ++_Windows_SupportedOS_WindowsVista_ ++int WINAPI MagGetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD *pdwFilterMode, int count, HWND *pHWND ); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagSetImageScalingCallback(HWND hwnd, MagImageScalingCallback callback ); ++_Windows_SupportedOS_WindowsVista_ + MagImageScalingCallback WINAPI MagGetImageScalingCallback(HWND hwnd ); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagSetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); ++_Windows_SupportedOS_WindowsVista_ + BOOL WINAPI MagGetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagSetFullscreenTransform(_In_ float magLevel, _In_ int xOffset, _In_ int yOffset); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagGetFullscreenTransform(_Out_ float *pMagLevel, _Out_ int *pxOffset, _Out_ int *pyOffset); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagSetFullscreenColorEffect(_In_ PMAGCOLOREFFECT pEffect); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagGetFullscreenColorEffect(_Out_ PMAGCOLOREFFECT pEffect); ++_Windows_SupportedOS_Windows8_ ++_Win32_SetLastError_ + BOOL WINAPI MagSetInputTransform(_In_ BOOL fEnabled, _In_ const LPRECT pRectSource, _In_ const LPRECT pRectDest); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagGetInputTransform(_Out_ BOOL *pfEnabled, _Out_ LPRECT pRectSource, _Out_ LPRECT pRectDest); ++_Windows_SupportedOS_Windows8_ + BOOL WINAPI MagShowSystemCursor(_In_ BOOL fShowCursor); ++ ++#ifdef WIN32METADATA ++#pragma push_macro("MW_FILTERMODE_EXCLUDE") ++#undef MW_FILTERMODE_EXCLUDE ++#pragma push_macro("MW_FILTERMODE_INCLUDE") ++#undef MW_FILTERMODE_INCLUDE ++enum MW_FILTERMODE : DWORD ++{ ++ MW_FILTERMODE_EXCLUDE = 0, ++ MW_FILTERMODE_INCLUDE = 1, ++}; ++#pragma pop_macro("MW_FILTERMODE_INCLUDE") ++#pragma pop_macro("MW_FILTERMODE_EXCLUDE") ++#endif + + #ifdef __cplusplus + } diff --git a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch new file mode 100644 index 000000000..ca21f0619 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch @@ -0,0 +1,347 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h +@@ -25,6 +25,7 @@ + #pragma once + #endif + #include ++#include + + #ifdef __cplusplus + extern "C" { +@@ -128,6 +129,10 @@ + + #endif + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumProcesses( +@@ -142,6 +147,10 @@ + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumProcessModules( +@@ -151,6 +160,10 @@ + _Out_ LPDWORD lpcbNeeded + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumProcessModulesEx( +@@ -158,6 +171,9 @@ + _Out_writes_bytes_(cb) HMODULE* lphModule, + _In_ DWORD cb, + _Out_ LPDWORD lpcbNeeded, ++#if PSAPI_VERSION == 1 ++ _Win32_AssociatedEnum_(ENUM_PROCESS_MODULES_EX_FLAGS) ++#endif + _In_ DWORD dwFilterFlag + ); + +@@ -167,6 +183,10 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetModuleBaseNameA( +@@ -176,6 +196,10 @@ + _In_ DWORD nSize + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetModuleBaseNameW( +@@ -193,6 +217,10 @@ + + _Success_(return != 0) + _Ret_range_(1, nSize) ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetModuleFileNameExA( +@@ -206,6 +234,10 @@ + + _Success_(return != 0) + _Ret_range_(1, nSize) ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetModuleFileNameExW( +@@ -229,6 +261,10 @@ + LPVOID EntryPoint; + } MODULEINFO, *LPMODULEINFO; + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + GetModuleInformation( +@@ -244,6 +280,10 @@ + #pragma region Desktop Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EmptyWorkingSet( +@@ -256,6 +296,10 @@ + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + InitializeProcessForWsWatch( +@@ -273,6 +317,10 @@ + ULONG_PTR Flags; // Reserved + } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + GetWsChanges( +@@ -281,6 +329,10 @@ + _In_ DWORD cb + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + GetWsChangesEx( +@@ -289,6 +341,10 @@ + _Inout_ PDWORD cb + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetMappedFileNameW ( +@@ -298,6 +354,10 @@ + _In_ DWORD nSize + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetMappedFileNameA ( +@@ -313,6 +373,10 @@ + #define GetMappedFileName GetMappedFileNameA + #endif // !UNICODE + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumDeviceDrivers ( +@@ -321,6 +385,10 @@ + _Out_ LPDWORD lpcbNeeded + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetDeviceDriverBaseNameA ( +@@ -329,6 +397,10 @@ + _In_ DWORD nSize + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetDeviceDriverBaseNameW ( +@@ -343,6 +415,10 @@ + #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA + #endif // !UNICODE + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetDeviceDriverFileNameA ( +@@ -351,6 +427,10 @@ + _In_ DWORD nSize + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetDeviceDriverFileNameW ( +@@ -445,6 +525,10 @@ + #pragma warning(default:4201) + #endif + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + QueryWorkingSet( +@@ -453,6 +537,10 @@ + _In_ DWORD cb + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + QueryWorkingSetEx( +@@ -517,6 +605,10 @@ + + #endif + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + GetProcessMemoryInfo ( +@@ -548,6 +640,10 @@ + DWORD ThreadCount; + } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + GetPerformanceInfo ( +@@ -573,6 +669,10 @@ + + typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumPageFilesW ( +@@ -580,6 +680,10 @@ + LPVOID pContext + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + BOOL + WINAPI + EnumPageFilesA ( +@@ -601,6 +705,10 @@ + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetProcessImageFileNameA ( +@@ -609,6 +717,10 @@ + _In_ DWORD nSize + ); + ++#if PSAPI_VERSION == 1 ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ ++#endif + DWORD + WINAPI + GetProcessImageFileNameW ( +@@ -630,6 +742,28 @@ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion + ++#if defined(WIN32METADATA) && PSAPI_VERSION == 1 ++#pragma push_macro("LIST_MODULES_ALL") ++#undef LIST_MODULES_ALL ++#pragma push_macro("LIST_MODULES_DEFAULT") ++#undef LIST_MODULES_DEFAULT ++#pragma push_macro("LIST_MODULES_32BIT") ++#undef LIST_MODULES_32BIT ++#pragma push_macro("LIST_MODULES_64BIT") ++#undef LIST_MODULES_64BIT ++enum ENUM_PROCESS_MODULES_EX_FLAGS : DWORD ++{ ++ LIST_MODULES_ALL = 3, ++ LIST_MODULES_DEFAULT = 0, ++ LIST_MODULES_32BIT = 1, ++ LIST_MODULES_64BIT = 2, ++}; ++#pragma pop_macro("LIST_MODULES_64BIT") ++#pragma pop_macro("LIST_MODULES_32BIT") ++#pragma pop_macro("LIST_MODULES_DEFAULT") ++#pragma pop_macro("LIST_MODULES_ALL") ++#endif ++ + #ifdef __cplusplus + } + #endif diff --git a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch new file mode 100644 index 000000000..72aaf52af --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch @@ -0,0 +1,126 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h +@@ -15,6 +15,7 @@ + #define _TIMEZONEAPI_H_ + + #include ++#include + #include + #include + #include +@@ -56,6 +57,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_Windows2000_ ++_Win32_SetLastError_ + BOOL + WINAPI + SystemTimeToTzSpecificLocalTime( +@@ -66,6 +69,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + TzSpecificLocalTimeToSystemTime( +@@ -76,6 +81,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + FileTimeToSystemTime( +@@ -85,6 +92,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_Windows2000_ ++_Win32_SetLastError_ + BOOL + WINAPI + SystemTimeToFileTime( +@@ -94,6 +103,8 @@ + + WINBASEAPI + _Success_(return != TIME_ZONE_ID_INVALID) ++_Windows_SupportedOS_Windows2000_ ++_Win32_SetLastError_ + DWORD + WINAPI + GetTimeZoneInformation( +@@ -101,6 +112,8 @@ + ); + + WINBASEAPI ++_Windows_SupportedOS_Windows2000_ ++_Win32_SetLastError_ + BOOL + WINAPI + SetTimeZoneInformation( +@@ -110,6 +123,8 @@ + #if (_WIN32_WINNT >= 0x0600) + + WINBASEAPI ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ + BOOL + WINAPI + SetDynamicTimeZoneInformation( +@@ -122,6 +137,8 @@ + + WINBASEAPI + _Success_(return != TIME_ZONE_ID_INVALID) ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ + DWORD + WINAPI + GetDynamicTimeZoneInformation( +@@ -133,6 +150,8 @@ + #if (_WIN32_WINNT >= 0x0601) + + _Success_(return != FALSE) ++_Windows_SupportedOS_WindowsVista_ ++_Win32_SetLastError_ + BOOL + WINAPI + GetTimeZoneInformationForYear( +@@ -149,6 +168,7 @@ + + WINBASEAPI + _Success_(return == ERROR_SUCCESS) ++_Windows_SupportedOS_Windows8_ + DWORD + WINAPI + EnumDynamicTimeZoneInformation( +@@ -158,6 +178,7 @@ + + WINBASEAPI + _Success_(return == ERROR_SUCCESS) ++_Windows_SupportedOS_Windows8_ + DWORD + WINAPI + GetDynamicTimeZoneInformationEffectiveYears( +@@ -168,6 +189,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_Windows7_ ++_Win32_SetLastError_ + BOOL + WINAPI + SystemTimeToTzSpecificLocalTimeEx( +@@ -178,6 +201,8 @@ + + WINBASEAPI + _Success_(return != FALSE) ++_Windows_SupportedOS_Windows7_ ++_Win32_SetLastError_ + BOOL + WINAPI + TzSpecificLocalTimeToSystemTimeEx( diff --git a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch new file mode 100644 index 000000000..21ebc904c --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch @@ -0,0 +1,37 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h b/generation/WinSDK/RecompiledIdlHeaders/um/ual.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/ual.h +@@ -9,6 +9,7 @@ + #define _UAL_H_INCLUDED + + #include ++#include + #include + + #if defined (_MSC_VER) +@@ -33,21 +34,25 @@ + WCHAR UserName[MAX_PATH]; + } UAL_DATA_BLOB, *PUAL_DATA_BLOB; + ++_Windows_SupportedOS_Windows8_ + HRESULT + WINAPI + UalStart( + _In_ PUAL_DATA_BLOB Data); + ++_Windows_SupportedOS_Windows8_ + HRESULT + WINAPI + UalStop( + _In_ PUAL_DATA_BLOB Data); + ++_Windows_SupportedOS_Windows8_ + HRESULT + WINAPI + UalInstrument( + _In_ PUAL_DATA_BLOB Data); + ++_Windows_SupportedOS_Windows8_ + HRESULT + WINAPI + UalRegisterProduct( diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index 2610babce..99f4a4428 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -4632,25 +4632,6 @@ McastGenUID=SupportedOSPlatform("windows5.0") McastReleaseAddress=SupportedOSPlatform("windows5.0") McastRenewAddress=SupportedOSPlatform("windows5.0") McastRequestAddress=SupportedOSPlatform("windows5.0") -MagGetColorEffect=SupportedOSPlatform("windows6.0.6000") -MagGetFullscreenColorEffect=SupportedOSPlatform("windows8.0") -MagGetFullscreenTransform=SupportedOSPlatform("windows8.0") -MagGetImageScalingCallback=SupportedOSPlatform("windows6.0.6000") -MagGetInputTransform=SupportedOSPlatform("windows8.0") -MagGetWindowFilterList=SupportedOSPlatform("windows6.0.6000") -MagGetWindowSource=SupportedOSPlatform("windows6.0.6000") -MagGetWindowTransform=SupportedOSPlatform("windows6.0.6000") -MagInitialize=SupportedOSPlatform("windows6.0.6000") -MagSetColorEffect=SupportedOSPlatform("windows6.0.6000") -MagSetFullscreenColorEffect=SupportedOSPlatform("windows8.0") -MagSetFullscreenTransform=SupportedOSPlatform("windows8.0") -MagSetImageScalingCallback=SupportedOSPlatform("windows6.0.6000") -MagSetInputTransform=SupportedOSPlatform("windows8.0") -MagSetWindowFilterList=SupportedOSPlatform("windows6.0.6000") -MagSetWindowSource=SupportedOSPlatform("windows6.0.6000") -MagSetWindowTransform=SupportedOSPlatform("windows6.0.6000") -MagShowSystemCursor=SupportedOSPlatform("windows8.0") -MagUninitialize=SupportedOSPlatform("windows6.0.6000") _IManipulationEvents=SupportedOSPlatform("windows6.1") IInertiaProcessor=SupportedOSPlatform("windows6.1") IManipulationProcessor=SupportedOSPlatform("windows6.1") @@ -8161,33 +8142,6 @@ PropSheet_SetTitle=SupportedOSPlatform("windows6.0.6000") PropSheet_SetWizButtons=SupportedOSPlatform("windows6.0.6000") PropSheet_ShowWizButtons=SupportedOSPlatform("windows6.0.6000") PropSheet_UnChanged=SupportedOSPlatform("windows6.0.6000") -EmptyWorkingSet=SupportedOSPlatform("windows5.1.2600") -EnumDeviceDrivers=SupportedOSPlatform("windows5.1.2600") -EnumPageFilesA=SupportedOSPlatform("windows5.1.2600") -EnumPageFilesW=SupportedOSPlatform("windows5.1.2600") -EnumProcesses=SupportedOSPlatform("windows5.1.2600") -EnumProcessModules=SupportedOSPlatform("windows5.1.2600") -EnumProcessModulesEx=SupportedOSPlatform("windows6.0.6000") -GetDeviceDriverBaseNameA=SupportedOSPlatform("windows5.1.2600") -GetDeviceDriverBaseNameW=SupportedOSPlatform("windows5.1.2600") -GetDeviceDriverFileNameA=SupportedOSPlatform("windows5.1.2600") -GetDeviceDriverFileNameW=SupportedOSPlatform("windows5.1.2600") -GetMappedFileNameA=SupportedOSPlatform("windows5.1.2600") -GetMappedFileNameW=SupportedOSPlatform("windows5.1.2600") -GetModuleBaseNameA=SupportedOSPlatform("windows5.1.2600") -GetModuleBaseNameW=SupportedOSPlatform("windows5.1.2600") -GetModuleFileNameExA=SupportedOSPlatform("windows5.1.2600") -GetModuleFileNameExW=SupportedOSPlatform("windows5.1.2600") -GetModuleInformation=SupportedOSPlatform("windows5.1.2600") -GetPerformanceInfo=SupportedOSPlatform("windows5.1.2600") -GetProcessImageFileNameA=SupportedOSPlatform("windows5.1.2600") -GetProcessImageFileNameW=SupportedOSPlatform("windows5.1.2600") -GetProcessMemoryInfo=SupportedOSPlatform("windows5.1.2600") -GetWsChanges=SupportedOSPlatform("windows5.1.2600") -GetWsChangesEx=SupportedOSPlatform("windows6.0.6000") -InitializeProcessForWsWatch=SupportedOSPlatform("windows5.1.2600") -QueryWorkingSet=SupportedOSPlatform("windows5.1.2600") -QueryWorkingSetEx=SupportedOSPlatform("windows6.0.6000") IBackgroundCopyCallback1=SupportedOSPlatform("windows5.1.2600") IBackgroundCopyGroup=SupportedOSPlatform("windows5.1.2600") IBackgroundCopyJob1=SupportedOSPlatform("windows5.1.2600") @@ -11336,19 +11290,6 @@ timeGetTime=SupportedOSPlatform("windows5.0") TimeProvClose=SupportedOSPlatform("windows5.1.2600") TimeProvCommand=SupportedOSPlatform("windows5.1.2600") TimeProvOpen=SupportedOSPlatform("windows5.1.2600") -EnumDynamicTimeZoneInformation=SupportedOSPlatform("windows8.0") -FileTimeToSystemTime=SupportedOSPlatform("windows5.1.2600") -GetDynamicTimeZoneInformation=SupportedOSPlatform("windows6.0.6000") -GetDynamicTimeZoneInformationEffectiveYears=SupportedOSPlatform("windows8.0") -GetTimeZoneInformation=SupportedOSPlatform("windows5.0") -GetTimeZoneInformationForYear=SupportedOSPlatform("windows6.0.6000") -SetDynamicTimeZoneInformation=SupportedOSPlatform("windows6.0.6000") -SetTimeZoneInformation=SupportedOSPlatform("windows5.0") -SystemTimeToFileTime=SupportedOSPlatform("windows5.0") -SystemTimeToTzSpecificLocalTime=SupportedOSPlatform("windows5.0") -SystemTimeToTzSpecificLocalTimeEx=SupportedOSPlatform("windows6.1") -TzSpecificLocalTimeToSystemTime=SupportedOSPlatform("windows5.1.2600") -TzSpecificLocalTimeToSystemTimeEx=SupportedOSPlatform("windows6.1") CreateToolhelp32Snapshot=SupportedOSPlatform("windows5.1.2600") Heap32First=SupportedOSPlatform("windows5.1.2600") Heap32ListFirst=SupportedOSPlatform("windows5.1.2600") @@ -11520,10 +11461,6 @@ TxfLogDestroyReadContext=SupportedOSPlatform("windows6.0.6000") TxfLogReadRecords=SupportedOSPlatform("windows6.0.6000") IFileBasedLogInit=SupportedOSPlatform("windows5.1.2600") ILog=SupportedOSPlatform("windows5.1.2600") -UalInstrument=SupportedOSPlatform("windows8.0") -UalRegisterProduct=SupportedOSPlatform("windows8.0") -UalStart=SupportedOSPlatform("windows8.0") -UalStop=SupportedOSPlatform("windows8.0") IUIAnimationInterpolator=SupportedOSPlatform("windows6.1") IUIAnimationInterpolator2=SupportedOSPlatform("windows8.0") IUIAnimationLoopIterationChangeHandler2=SupportedOSPlatform("windows8.0") diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index f21d368ed..030d3ca29 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -36,13 +36,35 @@ private static readonly (string Owner, string Member, string Enum, string Native .Concat(new[] { new EnumUse("Windows.Win32.System.ApplicationVerifier", "VerifierEnumerateResource", "Flags", "VERIFIER_ENUM_RESOURCE_FLAGS", "UInt32"), + new EnumUse("Windows.Win32.System.ProcessStatus", "EnumProcessModulesEx", "dwFilterFlag", "ENUM_PROCESS_MODULES_EX_FLAGS", "UInt32"), + new EnumUse("Windows.Win32.UI.Magnification", "MagSetWindowFilterList", "dwFilterMode", "MW_FILTERMODE", "UInt32"), + new EnumUse("Windows.Win32.UI.Magnification", "MagGetWindowFilterList", "pdwFilterMode", "MW_FILTERMODE", "UInt32*"), }).ToArray(); private static readonly string[] AdditionalOwnedMethods = { "CeipIsOptedIn", "VerifierEnumerateResource", + "MagGetColorEffect", "MagGetFullscreenColorEffect", "MagGetFullscreenTransform", + "MagGetImageScalingCallback", "MagGetInputTransform", "MagGetWindowFilterList", + "MagGetWindowSource", "MagGetWindowTransform", "MagInitialize", "MagSetColorEffect", + "MagSetFullscreenColorEffect", "MagSetFullscreenTransform", "MagSetImageScalingCallback", + "MagSetInputTransform", "MagSetWindowFilterList", "MagSetWindowSource", "MagSetWindowTransform", + "MagShowSystemCursor", "MagUninitialize", + "EmptyWorkingSet", "EnumDeviceDrivers", "EnumPageFilesA", "EnumPageFilesW", "EnumProcesses", + "EnumProcessModules", "EnumProcessModulesEx", "GetDeviceDriverBaseNameA", "GetDeviceDriverBaseNameW", + "GetDeviceDriverFileNameA", "GetDeviceDriverFileNameW", "GetMappedFileNameA", "GetMappedFileNameW", + "GetModuleBaseNameA", "GetModuleBaseNameW", "GetModuleFileNameExA", "GetModuleFileNameExW", + "GetModuleInformation", "GetPerformanceInfo", "GetProcessImageFileNameA", "GetProcessImageFileNameW", + "GetProcessMemoryInfo", "GetWsChanges", "GetWsChangesEx", "InitializeProcessForWsWatch", + "QueryWorkingSet", "QueryWorkingSetEx", + "EnumDynamicTimeZoneInformation", "FileTimeToSystemTime", "GetDynamicTimeZoneInformation", + "GetDynamicTimeZoneInformationEffectiveYears", "GetTimeZoneInformation", "GetTimeZoneInformationForYear", + "LocalFileTimeToLocalSystemTime", "LocalSystemTimeToLocalFileTime", "SetDynamicTimeZoneInformation", + "SetTimeZoneInformation", "SystemTimeToFileTime", "SystemTimeToTzSpecificLocalTime", + "SystemTimeToTzSpecificLocalTimeEx", "TzSpecificLocalTimeToSystemTime", "TzSpecificLocalTimeToSystemTimeEx", + "UalStart", "UalStop", "UalInstrument", "UalRegisterProduct", }; - private static readonly string[] AdditionalLogicalEnums = { "VERIFIER_ENUM_RESOURCE_FLAGS" }; + private static readonly string[] AdditionalLogicalEnums = { "VERIFIER_ENUM_RESOURCE_FLAGS", "ENUM_PROCESS_MODULES_EX_FLAGS", "MW_FILTERMODE" }; public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; @@ -373,8 +395,15 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() Assert.DoesNotContain("VerifierEnumerateResource=", bindings); Assert.Contains("VerifierIsPerUserSettingsEnabled=SupportedOSPlatform(\"windows6.0.6000\")", File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); - foreach (string partition in new[] { "CEIP", "ApplicationVerifier" }) + foreach (string name in new[] { "TimeProvOpen", "TimeProvCommand", "TimeProvClose" }) + { + Assert.DoesNotContain(name, emitted); + Assert.Contains(name + "=SupportedOSPlatform(\"windows5.1.2600\")", + File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); + } + foreach (string partition in new[] { "CEIP", "ApplicationVerifier", "MagApi", "PsApi1", "Time", "Ual" }) Assert.Contains("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); + Assert.DoesNotContain("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", "PsApi2", "settings.rsp"))); } [Theory] @@ -545,7 +574,7 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum var use = uses.SingleOrDefault(value => value.Owner == typeName && value.Member == name); if (use != null) { - Assert.Equal(use.Namespace + "." + use.Enum, fieldType); + Assert.Equal(use.OldType, fieldType); fieldType = use.Native; usedEnumSites?.Add(use.Site); } @@ -566,7 +595,7 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum { var parameter = parameters.Single(value => reader.GetString(value.Name) == use.Member); Assert.True(parameter.SequenceNumber > 0); - Assert.Equal(use.Namespace + "." + use.Enum, parameterTypes[parameter.SequenceNumber - 1]); + Assert.Equal(use.OldType, parameterTypes[parameter.SequenceNumber - 1]); parameterTypes[parameter.SequenceNumber - 1] = use.Native; parameterEnums.Add(parameter.SequenceNumber, use.Enum); usedEnumSites?.Add(use.Site); @@ -689,6 +718,7 @@ private static string Signature(MethodSignature signature, int? header = private sealed record EnumUse(string Namespace, string Owner, string Member, string Enum, string Native) { internal string Site => Namespace + "." + Owner + "::" + Member; + internal string OldType => Namespace + "." + Enum + new string('*', Native.Length - Native.TrimEnd('*').Length); } private static Image Open(string variable) => new Image(Environment.GetEnvironmentVariable(variable)); From 1e97e92d386492806928f84587e3073adc89033c Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 14 Oct 2026 23:53:29 -0700 Subject: [PATCH 17/57] Record second-batch grades and clarify reproduction scope Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 15 ++++++++++ docs/winhttp-header-annotations.md | 30 ++++++++++++-------- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 626dcc550..7c12fa173 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -191,3 +191,18 @@ logical group. The version-2 `K32*` declarations are not annotated or migrated; PsApi2 remains opted out and is regenerated as an unchanged dependent. Time's `timeprov.h` is pinned and compiled but has no emitted DLL-function facts to relocate. Its three unused provider-export OS rows remain outside this scope. + +Batch-2 checkpoint: producer `7d89f8e7f10176f3bdaa1490ae917b65be710175`, +full image SHA256 +`E3177B33ED5F48879431BE7FF0446E183F873A97E1DB1EE677665D4F8FCA826F`, +receipt SHA256 +`2BD8090F5CEBFF554FF9E4C85D3B24D28652D35C0EFA4A1A6EB2E83A1F252E07`. +All 24 declaration expectations are used, with zero unknown/unused differences. +All 37,314 physical types are graded: 37,305 unchanged and 12 exact enum-use +sites normalized; all 7,791 enum identities and contents remain unchanged. +Thirty-three native legs, 23 physical/no-fallback/mutation checks, 26 +preparation/closure/fallback checks and 14 full-SDK checks pass without skips. +The 28 repeated source/discovery inputs are byte-identical; all 155 pointer +reductions remain. Artifacts are in `artifacts\header-annotation-wave\batch2`. +These overlapping run counts are not a unique-test total. Consumer compatibility +remains unverified. diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 62144e70f..7eb5c5fca 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -2,8 +2,10 @@ This pilot moves authored functional WinHttp sidecars into reviewed header patches while retaining the C# scraper/emitter and the matched ClangSharp 21 stack. It is a separate -migration layer above the tooling PR, not a replacement for that tooling. No other -partition is migrated. +migration layer above the tooling PR, not a replacement for that tooling. This +document's inventory and image grades describe the isolated WinHttp checkpoint. +The [migration playbook](header-annotation-migration-playbook.md) records the +subsequently authorized ten partitions and their combined-image grades. ## Partition review playbook @@ -28,7 +30,7 @@ another owner's checkout. | Zero added/removed enum types, members, or API symbols | The five logical groups already exist in OLD. Native scheme macros remain in the ordinary header, not as newly manufactured WinHttp winmd constants. | | Fresh CsWin32 experience: unverified | The original C7 prototype measured four scheme-name breaks; this candidate restores the old names, but has not been regenerated against a complete matching frozen consumer closure. | -The current producer is the [review-cleanup candidate](#review-cleanup-candidate). +The isolated WinHttp producer is the [review-cleanup candidate](#review-cleanup-candidate). Earlier images and receipts below are immutable historical evidence. ## Inputs and ownership @@ -195,16 +197,20 @@ The physical control requires exactly 39 constructor rows in 39 types to gain ```powershell dotnet build BuildTools -c Release .\scripts\Build-WinHttpMigrationImage.ps1 -ToolingControl ` - -OutputDirectory .\artifacts\winhttp-migration\tooling-control-review-cleanup + -OutputDirectory .\artifacts\header-annotation-wave\tooling-control-reproduction .\scripts\Build-WinHttpMigrationImage.ps1 ` -BaselineDirectory .\artifacts\winhttp-migration\old ` - -OutputDirectory .\artifacts\winhttp-migration\new-review-cleanup ` - -ToolingControlDirectory .\artifacts\winhttp-migration\tooling-control-review-cleanup + -OutputDirectory .\artifacts\header-annotation-wave\reproduction ` + -ToolingControlDirectory .\artifacts\header-annotation-wave\tooling-control-reproduction ``` -The image builder verifies the frozen inputs and tools, scrapes only WinHttp and -HttpServer, overlays their four native source files onto the complete source -closure, recomputes constants with all partition inputs, preserves the other +Use fresh output names; previous images and receipts must not be overwritten. +The image builder verifies the frozen inputs and tools, reads the recipe's owner +and affected-dependent partition list, and overlays their actual generated common +and architecture-specific sources onto the complete source closure. The isolated +WinHttp recipe selected WinHttp/HttpServer; the expanded recipe also includes the +playbook's additional owners and dependents. It recomputes constants with all +partition inputs, preserves the other partitions' discovered pointer fixes, and emits `Windows.Win32.winmd`. It rejects overwriting an existing consumer-fixture or selection directory. Each image gets a fresh selected scrape so prior aggregate discoveries cannot become configured @@ -222,9 +228,9 @@ source, discovery, and expected-difference hashes. . .\scripts\CommonUtils.ps1 Install-VsDevShell $env:WINHTTP_MIGRATION_OLD = (Resolve-Path .\artifacts\winhttp-migration\old\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\winhttp-migration\new-review-cleanup\Windows.Win32.winmd).Path -$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\winhttp-migration\tooling-control-review-cleanup\Windows.Win32.winmd).Path -$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\winhttp-migration\new-review-cleanup\selection\obj\prepared-sdk.txt -Raw).Trim() +$env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\header-annotation-wave\reproduction\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\header-annotation-wave\tooling-control-reproduction\Windows.Win32.winmd).Path +$env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\header-annotation-wave\reproduction\selection\obj\prepared-sdk.txt -Raw).Trim() dotnet test tests\Win32MetadataScraperTests -c Release ` --filter "FullyQualifiedName~PreparedSdkHeadersTests|FullyQualifiedName~WinHttpMigrationTests|FullyQualifiedName~WinHttpNativeControlTests" ` --logger "console;verbosity=normal" From ab29038d22518c027d2cedab33ea747353ddd2d8 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 00:02:20 -0700 Subject: [PATCH 18/57] Migrate ToolHelp UpdateAssessment SecurityCenter and WinSat facts Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 30 +++ .../Partitions/SecurityCenter/settings.rsp | 2 + .../WinSDK/Partitions/ToolHelp/settings.rsp | 2 + .../Partitions/UpdateAssessment/settings.rsp | 2 + .../WinSDK/Partitions/WinSat/settings.rsp | 2 + generation/WinSDK/WithSetLastError.rsp | 15 -- generation/WinSDK/emitter.settings.rsp | 1 - generation/WinSDK/enums.json | 59 ----- ...HeaderAnnotations.expected-differences.txt | 4 + generation/WinSDK/patches/SdkHeaders.json | 49 +++- .../post-midl/um/iwscapi.annotations.patch | 33 +++ .../post-midl/um/tlhelp32.annotations.patch | 226 ++++++++++++++++++ .../post-midl/um/waasapi.annotations.patch | 19 ++ .../um/winsatcominterfacei.annotations.patch | 67 ++++++ .../post-midl/um/wscapi.annotations.patch | 35 +++ generation/WinSDK/supportedOS.rsp | 29 --- .../WinHttpMigrationTests.cs | 39 ++- .../WinHttpNativeControlTests.cs | 34 ++- 18 files changed, 537 insertions(+), 111 deletions(-) create mode 100644 generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 7c12fa173..f080cfb17 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -206,3 +206,33 @@ The 28 repeated source/discovery inputs are byte-identical; all 155 pointer reductions remain. Artifacts are in `artifacts\header-annotation-wave\batch2`. These overlapping run counts are not a unique-test total. Consumer compatibility remains unverified. + +Batch 3 moves 16 ToolHelp XP floors and 15 last-error facts, retaining the +non-error-annotated `Toolhelp32ReadProcessMemory` contract. Its two existing +logical groups retain unsigned 32-bit storage and all ten members: only +`CREATE_TOOLHELP_SNAPSHOT_FLAGS` is a flags enum. The two native DWORD use sites +become associated rather than substituted enum types. + +UpdateAssessment moves only `IWaaSAssessor`'s Windows 10 build 15063 floor. +SecurityCenter moves two Windows 8 interface floors and three Vista API floors; +its existing `IWSCProductList::Initialize::provider` association moves from the +emitter to the native parameter without a declared-output difference. WinSat +moves precisely seven Vista interface floors, not every interface in its header. +`FileHistory` remains an unchanged dependent of the SecurityCenter headers. + +These floors agree with the published requirements for +[ToolHelp](https://learn.microsoft.com/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot), +[IWaaSAssessor](https://learn.microsoft.com/windows/win32/api/waasapi/nn-waasapi-iwaasassessor), +[IWSCProductList](https://learn.microsoft.com/windows/win32/api/iwscapi/nn-iwscapi-iwscproductlist), +[WscRegisterForChanges](https://learn.microsoft.com/windows/win32/api/wscapi/nf-wscapi-wscregisterforchanges) +and [WinSAT](https://learn.microsoft.com/windows/win32/api/winsatcominterfacei/nn-winsatcominterfacei-iinitiatewinsatassessment). +SDK-header identities bind SecurityCenter and WinSat directly; the selected +package supplies their generated headers, not IDLs. UpdateAssessment separately +pins its supplied IDLs and checked-in post-MIDL headers. + +Global `IUnknown`/`IDispatch`, BSTR/VARIANT helpers, and Foundation `HANDLE` +definitions remain outside these physical owners. No snapshot or registration +handle identity is invented, and a SecurityCenter registration is not assumed to +use `CloseHandle`: its native API contract specifies `WscUnRegisterChanges`. +The 22 emitted ToolHelp/SecurityCenter DLL bindings are independently reproduced +by the preference-free SDK scan and remain derived bindings, not header overrides. diff --git a/generation/WinSDK/Partitions/SecurityCenter/settings.rsp b/generation/WinSDK/Partitions/SecurityCenter/settings.rsp index 8e383afc5..4b42c981f 100644 --- a/generation/WinSDK/Partitions/SecurityCenter/settings.rsp +++ b/generation/WinSDK/Partitions/SecurityCenter/settings.rsp @@ -3,3 +3,5 @@ /um/Wscapi.h --namespace Windows.Win32.System.SecurityCenter +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/ToolHelp/settings.rsp b/generation/WinSDK/Partitions/ToolHelp/settings.rsp index c4af5794b..e0c7e7698 100644 --- a/generation/WinSDK/Partitions/ToolHelp/settings.rsp +++ b/generation/WinSDK/Partitions/ToolHelp/settings.rsp @@ -2,3 +2,5 @@ /um/TlHelp32.h --namespace Windows.Win32.System.Diagnostics.ToolHelp +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/UpdateAssessment/settings.rsp b/generation/WinSDK/Partitions/UpdateAssessment/settings.rsp index cdcbbfc9c..2aebbedf9 100644 --- a/generation/WinSDK/Partitions/UpdateAssessment/settings.rsp +++ b/generation/WinSDK/Partitions/UpdateAssessment/settings.rsp @@ -3,3 +3,5 @@ /um/waasapitypes.h --namespace Windows.Win32.System.UpdateAssessment +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/WinSat/settings.rsp b/generation/WinSDK/Partitions/WinSat/settings.rsp index 1f1f9af33..9878f2d70 100644 --- a/generation/WinSDK/Partitions/WinSat/settings.rsp +++ b/generation/WinSDK/Partitions/WinSat/settings.rsp @@ -2,3 +2,5 @@ /um/winsatcominterfacei.h --namespace Windows.Win32.System.AssessmentTool +--config +parse-win32-annotations diff --git a/generation/WinSDK/WithSetLastError.rsp b/generation/WinSDK/WithSetLastError.rsp index 7ec87336a..67bab180d 100644 --- a/generation/WinSDK/WithSetLastError.rsp +++ b/generation/WinSDK/WithSetLastError.rsp @@ -503,7 +503,6 @@ CreateThreadpoolWork CreateTimerQueue CreateTimerQueueTimer CreateToolbarEx -CreateToolhelp32Snapshot CreateTransaction CreateTransactionManager CreateUmsCompletionList @@ -1638,10 +1637,6 @@ GopherOpenFileA GopherOpenFileW HandleLogFull HasOverlappedIoCompleted -Heap32First -Heap32ListFirst -Heap32ListNext -Heap32Next HeapCompact HeapCreate HeapDestroy @@ -1919,10 +1914,6 @@ MessageBoxW MiniDumpWriteDump ModifyMenuA ModifyMenuW -Module32First -Module32FirstW -Module32Next -Module32NextW MoveFile MoveFileA MoveFileExA @@ -2045,10 +2036,6 @@ PrePrepareComplete PrePrepareEnlistment PrivilegeCheck PrivilegedServiceAuditAlarmA -Process32First -Process32FirstW -Process32Next -Process32NextW ProcessIdToSessionId PropertySheetA PropertySheetW @@ -2973,8 +2960,6 @@ TerminateLogArchive TerminateProcess TerminateReadLog TerminateThread -Thread32First -Thread32Next TileWindows TlsAlloc TlsFree diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp index e70216580..aa9b237b7 100644 --- a/generation/WinSDK/emitter.settings.rsp +++ b/generation/WinSDK/emitter.settings.rsp @@ -1504,7 +1504,6 @@ IStream::LockRegion::dwLockType=[AssociatedEnum("LOCKTYPE")] IStream::Stat::grfStatFlag=[AssociatedEnum("STATFLAG")] IVBGetControl::EnumControls::dwOleContF=[AssociatedEnum("OLECONTF")] IWPCProviderConfig::RequestOverride::dwFlags=[AssociatedEnum("WPCFLAG_RESTRICTION")] -IWSCProductList::Initialize::provider=[AssociatedEnum("WSC_SECURITY_PROVIDER")] JOBOBJECT_IO_RATE_CONTROL_INFORMATION::ControlFlags=[AssociatedEnum("JOB_OBJECT_IO_RATE_CONTROL_FLAGS")] LdapMapErrorToWin32::LdapError=[AssociatedEnum("LDAP_RETCODE")] LOGPEN::lopnStyle=[AssociatedEnum("PEN_STYLE")] diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index 4078ba464..83beeff0d 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -6576,45 +6576,6 @@ } ] }, - { - "name": "CREATE_TOOLHELP_SNAPSHOT_FLAGS", - "flags": true, - "members": [ - { - "name": "TH32CS_INHERIT", - "value": "2147483648" - }, - { - "name": "TH32CS_SNAPALL" - }, - { - "name": "TH32CS_SNAPHEAPLIST", - "value": "1" - }, - { - "name": "TH32CS_SNAPMODULE", - "value": "8" - }, - { - "name": "TH32CS_SNAPMODULE32", - "value": "16" - }, - { - "name": "TH32CS_SNAPPROCESS", - "value": "2" - }, - { - "name": "TH32CS_SNAPTHREAD", - "value": "4" - } - ], - "uses": [ - { - "method": "CreateToolhelp32Snapshot", - "parameter": "dwFlags" - } - ] - }, { "name": "UNC_INFO_LEVEL", "members": [ @@ -27995,26 +27956,6 @@ } ] }, - { - "name": "HEAPENTRY32_FLAGS", - "members": [ - { - "name": "LF32_FIXED" - }, - { - "name": "LF32_FREE" - }, - { - "name": "LF32_MOVEABLE" - } - ], - "uses": [ - { - "struct": "HEAPENTRY32", - "field": "dwFlags" - } - ] - }, { "name": "NCRYPT_ALGORITHM_NAME_CLASS", "members": [ diff --git a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt index 5de3dd4d3..220d975b7 100644 --- a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt +++ b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt @@ -26,3 +26,7 @@ Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilt Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE => System.UInt32 Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode) : [In,Out] => [AssociatedEnum(MW_FILTERMODE),In,Out] Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE* => System.UInt32* +Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parameter 1 (dwFlags) : [In] => [AssociatedEnum(CREATE_TOOLHELP_SNAPSHOT_FLAGS),In] +Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parameter 1 (dwFlags)...Windows.Win32.System.Diagnostics.ToolHelp.CREATE_TOOLHELP_SNAPSHOT_FLAGS => System.UInt32 +Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags : => [AssociatedEnum(HEAPENTRY32_FLAGS)] +Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags...Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32_FLAGS => System.UInt32 diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 67c91755a..10d87a4c3 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -57,6 +57,42 @@ "sourceSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB", "sdkPath": "c\\include\\10.0.26100.0\\um\\ual.h", "sdkSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB" + }, + { + "path": "um\\TlHelp32.h", + "sourceSha256": "1E9CFA226EDA9E8767EB6A3CDC300DB2CC0986744913D524B6C0C80C435FC9A1", + "sdkPath": "c\\include\\10.0.26100.0\\um\\TlHelp32.h", + "sdkSha256": "1E9CFA226EDA9E8767EB6A3CDC300DB2CC0986744913D524B6C0C80C435FC9A1" + }, + { + "path": "um\\waasapi.h", + "sourceSha256": "4BF901F1C9E8E407925DBADE8E022B1EB4D1946CCACA0FF7DEA5F88D8E4A4D45", + "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", + "sdkSha256": "A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38" + }, + { + "path": "um\\waasapitypes.h", + "sourceSha256": "D61D87E4A316ECF0CBA6529A38CB48F148ADD0D94C7C81EADC44D9B4D1867738", + "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapitypes.idl", + "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" + }, + { + "path": "um\\iwscapi.h", + "sourceSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8", + "sdkPath": "c\\include\\10.0.26100.0\\um\\iwscapi.h", + "sdkSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8" + }, + { + "path": "um\\wscapi.h", + "sourceSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B", + "sdkPath": "c\\include\\10.0.26100.0\\um\\wscapi.h", + "sdkSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B" + }, + { + "path": "um\\winsatcominterfacei.h", + "sourceSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3", + "sdkPath": "c\\include\\10.0.26100.0\\um\\winsatcominterfacei.h", + "sdkSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3" } ], "partitions": [ @@ -70,7 +106,11 @@ "PsApi1", "PsApi2", "Time", - "Ual" + "Ual", + "ToolHelp", + "UpdateAssessment", + "SecurityCenter", + "WinSat" ], "patches": [ "post-midl\\um\\winhttp.supported-os.patch", @@ -84,6 +124,11 @@ "post-midl\\um\\magnification.annotations.patch", "post-midl\\um\\psapi.annotations.patch", "post-midl\\um\\timezoneapi.annotations.patch", - "post-midl\\um\\ual.annotations.patch" + "post-midl\\um\\ual.annotations.patch", + "post-midl\\um\\tlhelp32.annotations.patch", + "post-midl\\um\\waasapi.annotations.patch", + "post-midl\\um\\iwscapi.annotations.patch", + "post-midl\\um\\wscapi.annotations.patch", + "post-midl\\um\\winsatcominterfacei.annotations.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch new file mode 100644 index 000000000..1c66d4d42 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch @@ -0,0 +1,33 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h +@@ -119,6 +119,7 @@ + /* [local] */ + + #include ++#include + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + #ifndef __WSC_SECURITY_PRODUCT_SUBSTATUS__ +@@ -183,6 +184,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8C38232E-3A45-4A27-92B0-1A16A975F669") ++ _Windows_SupportedOS_Windows8_ + IWscProduct : public IDispatch + { + public: +@@ -881,11 +883,12 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("722A338C-6E8E-4E72-AC27-1417FB0C81C2") ++ _Windows_SupportedOS_Windows8_ + IWSCProductList : public IDispatch + { + public: + virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Initialize( +- /* [in] */ ULONG provider) = 0; ++ /* [in] */ _Win32_AssociatedEnum_(WSC_SECURITY_PROVIDER) ULONG provider) = 0; + + virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( + /* [retval][out] */ __RPC__out LONG *pVal) = 0; diff --git a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch new file mode 100644 index 000000000..118b6ec88 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch @@ -0,0 +1,226 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h +@@ -17,6 +17,7 @@ + #pragma once + #endif + #include ++#include + + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +@@ -29,10 +30,12 @@ + + /****** Shapshot function **********************************************/ + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + HANDLE + WINAPI + CreateToolhelp32Snapshot( +- DWORD dwFlags, ++ _Win32_AssociatedEnum_(CREATE_TOOLHELP_SNAPSHOT_FLAGS) DWORD dwFlags, + DWORD th32ProcessID + ); + +@@ -78,6 +81,8 @@ + #define HF32_DEFAULT 1 // process's default heap + #define HF32_SHARED 2 // is shared heap + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Heap32ListFirst( +@@ -85,6 +90,8 @@ + LPHEAPLIST32 lphl + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Heap32ListNext( +@@ -98,7 +105,7 @@ + HANDLE hHandle; // Handle of this heap block + ULONG_PTR dwAddress; // Linear address of start of block + SIZE_T dwBlockSize; // Size of block in bytes +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(HEAPENTRY32_FLAGS) DWORD dwFlags; + DWORD dwLockCount; + DWORD dwResvd; + DWORD th32ProcessID; // owning process +@@ -113,6 +120,8 @@ + #define LF32_FREE 0x00000002 + #define LF32_MOVEABLE 0x00000004 + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Heap32First( +@@ -121,12 +130,15 @@ + ULONG_PTR th32HeapID + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Heap32Next( + LPHEAPENTRY32 lphe + ); + ++_Windows_SupportedOS_WindowsXP_ + BOOL + WINAPI + Toolhelp32ReadProcessMemory( +@@ -155,6 +167,8 @@ + typedef PROCESSENTRY32W * PPROCESSENTRY32W; + typedef PROCESSENTRY32W * LPPROCESSENTRY32W; + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Process32FirstW( +@@ -162,6 +176,8 @@ + LPPROCESSENTRY32W lppe + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Process32NextW( +@@ -185,6 +201,8 @@ + typedef PROCESSENTRY32 * PPROCESSENTRY32; + typedef PROCESSENTRY32 * LPPROCESSENTRY32; + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Process32First( +@@ -192,6 +210,8 @@ + LPPROCESSENTRY32 lppe + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Process32Next( +@@ -222,6 +242,8 @@ + typedef THREADENTRY32 * PTHREADENTRY32; + typedef THREADENTRY32 * LPTHREADENTRY32; + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Thread32First( +@@ -229,6 +251,8 @@ + LPTHREADENTRY32 lpte + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Thread32Next( +@@ -254,6 +278,8 @@ + typedef MODULEENTRY32W * PMODULEENTRY32W; + typedef MODULEENTRY32W * LPMODULEENTRY32W; + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Module32FirstW( +@@ -261,6 +287,8 @@ + LPMODULEENTRY32W lpme + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Module32NextW( +@@ -289,6 +317,8 @@ + // in th32ProcessID's process context. + // + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Module32First( +@@ -296,6 +326,8 @@ + LPMODULEENTRY32 lpme + ); + ++_Windows_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + BOOL + WINAPI + Module32Next( +@@ -311,6 +343,58 @@ + #define LPMODULEENTRY32 LPMODULEENTRY32W + #endif // !UNICODE + ++#ifdef WIN32METADATA ++#pragma push_macro("TH32CS_INHERIT") ++#undef TH32CS_INHERIT ++#pragma push_macro("TH32CS_SNAPALL") ++#undef TH32CS_SNAPALL ++#pragma push_macro("TH32CS_SNAPHEAPLIST") ++#undef TH32CS_SNAPHEAPLIST ++#pragma push_macro("TH32CS_SNAPMODULE") ++#undef TH32CS_SNAPMODULE ++#pragma push_macro("TH32CS_SNAPMODULE32") ++#undef TH32CS_SNAPMODULE32 ++#pragma push_macro("TH32CS_SNAPPROCESS") ++#undef TH32CS_SNAPPROCESS ++#pragma push_macro("TH32CS_SNAPTHREAD") ++#undef TH32CS_SNAPTHREAD ++enum [[clang::flag_enum]] CREATE_TOOLHELP_SNAPSHOT_FLAGS : DWORD ++{ ++ TH32CS_INHERIT = 0x80000000, ++ TH32CS_SNAPALL = 15, ++ TH32CS_SNAPHEAPLIST = 1, ++ TH32CS_SNAPMODULE = 8, ++ TH32CS_SNAPMODULE32 = 16, ++ TH32CS_SNAPPROCESS = 2, ++ TH32CS_SNAPTHREAD = 4, ++}; ++#pragma pop_macro("TH32CS_SNAPTHREAD") ++#pragma pop_macro("TH32CS_SNAPPROCESS") ++#pragma pop_macro("TH32CS_SNAPMODULE32") ++#pragma pop_macro("TH32CS_SNAPMODULE") ++#pragma pop_macro("TH32CS_SNAPHEAPLIST") ++#pragma pop_macro("TH32CS_SNAPALL") ++#pragma pop_macro("TH32CS_INHERIT") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("LF32_FIXED") ++#undef LF32_FIXED ++#pragma push_macro("LF32_FREE") ++#undef LF32_FREE ++#pragma push_macro("LF32_MOVEABLE") ++#undef LF32_MOVEABLE ++enum HEAPENTRY32_FLAGS : DWORD ++{ ++ LF32_FIXED = 1, ++ LF32_FREE = 2, ++ LF32_MOVEABLE = 4, ++}; ++#pragma pop_macro("LF32_MOVEABLE") ++#pragma pop_macro("LF32_FREE") ++#pragma pop_macro("LF32_FIXED") ++#endif ++ + #ifdef __cplusplus + } + #endif diff --git a/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch new file mode 100644 index 000000000..86020fadd --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch @@ -0,0 +1,19 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h +@@ -87,6 +87,7 @@ + #endif + + #include ++#include + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +@@ -106,6 +107,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2347bbef-1a3b-45a4-902d-3e09c269b45e") ++ _Windows_SupportedOS_15063_ + IWaaSAssessor : public IUnknown + { + public: diff --git a/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch b/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch new file mode 100644 index 000000000..424083d9a --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch @@ -0,0 +1,67 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h b/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h +@@ -196,6 +196,7 @@ + /* [local] */ + + #include ++#include + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + typedef /* [public][public] */ +@@ -253,6 +254,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0CD1C380-52D3-4678-AC6F-E929E480BE9E") ++ _Windows_SupportedOS_WindowsVista_ + IProvideWinSATAssessmentInfo : public IDispatch + { + public: +@@ -413,6 +415,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F8334D5D-568E-4075-875F-9DF341506640") ++ _Windows_SupportedOS_WindowsVista_ + IProvideWinSATResultsInfo : public IDispatch + { + public: +@@ -597,6 +600,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F8AD5D1F-3B47-4bdc-9375-7C6B1DA4ECA7") ++ _Windows_SupportedOS_WindowsVista_ + IQueryRecentWinSATAssessment : public IDispatch + { + public: +@@ -750,6 +754,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A9F4ADE0-871A-42a3-B813-3078D25162C9") ++ _Windows_SupportedOS_WindowsVista_ + IProvideWinSATVisuals : public IUnknown + { + public: +@@ -840,6 +845,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0B89ED1D-6398-4fea-87FC-567D8D19176F") ++ _Windows_SupportedOS_WindowsVista_ + IQueryAllWinSATAssessments : public IDispatch + { + public: +@@ -982,6 +988,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("262A1918-BA0D-41d5-92C2-FAB4633EE74F") ++ _Windows_SupportedOS_WindowsVista_ + IWinSATInitiateEvents : public IUnknown + { + public: +@@ -1083,6 +1090,7 @@ + #if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D983FC50-F5BF-49d5-B5ED-CCCB18AA7FC1") ++ _Windows_SupportedOS_WindowsVista_ + IInitiateWinSATAssessment : public IUnknown + { + public: diff --git a/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch new file mode 100644 index 000000000..d5fa7a6e6 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch @@ -0,0 +1,35 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h +@@ -3,6 +3,7 @@ + // + #pragma once + #include ++#include + + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +@@ -69,6 +70,7 @@ + + + ++_Windows_SupportedOS_WindowsVista_ + STDAPI WscRegisterForChanges(LPVOID Reserved, + PHANDLE phCallbackRegistration, + LPTHREAD_START_ROUTINE lpCallbackAddress, +@@ -84,6 +86,7 @@ + // Return Values: + // Returns S_OK if the function succeeds, otherwise returns an error code. + ++_Windows_SupportedOS_WindowsVista_ + STDAPI WscUnRegisterChanges(HANDLE hRegistrationHandle); + + // The WscRegisterForUserNotifications function registers a callback function to be run when the Security Center service +@@ -111,6 +114,7 @@ + // is always S_FALSE and the pHealth out parameter is always set to WSC_SECURITY_PROVIDER_HEALTH_POOR. + // + ++_Windows_SupportedOS_WindowsVista_ + STDAPI WscGetSecurityProviderHealth(DWORD Providers, + PWSC_SECURITY_PROVIDER_HEALTH pHealth); + diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index 99f4a4428..144fa27c1 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -4362,8 +4362,6 @@ SetIScsiInitiatorRADIUSSharedSecret=SupportedOSPlatform("windows6.0.6000") SetIScsiTunnelModeOuterAddressA=SupportedOSPlatform("windows6.0.6000") SetIScsiTunnelModeOuterAddressW=SupportedOSPlatform("windows6.0.6000") SetupPersistentIScsiDevices=SupportedOSPlatform("windows6.0.6000") -IWscProduct=SupportedOSPlatform("windows8.0") -IWSCProductList=SupportedOSPlatform("windows8.0") IAMWstDecoder=SupportedOSPlatform("windows5.1.2600") IsProcessInJob=SupportedOSPlatform("windows5.1.2600") AssignProcessToJobObject=SupportedOSPlatform("windows5.1.2600") @@ -11290,22 +11288,6 @@ timeGetTime=SupportedOSPlatform("windows5.0") TimeProvClose=SupportedOSPlatform("windows5.1.2600") TimeProvCommand=SupportedOSPlatform("windows5.1.2600") TimeProvOpen=SupportedOSPlatform("windows5.1.2600") -CreateToolhelp32Snapshot=SupportedOSPlatform("windows5.1.2600") -Heap32First=SupportedOSPlatform("windows5.1.2600") -Heap32ListFirst=SupportedOSPlatform("windows5.1.2600") -Heap32ListNext=SupportedOSPlatform("windows5.1.2600") -Heap32Next=SupportedOSPlatform("windows5.1.2600") -Module32First=SupportedOSPlatform("windows5.1.2600") -Module32FirstW=SupportedOSPlatform("windows5.1.2600") -Module32Next=SupportedOSPlatform("windows5.1.2600") -Module32NextW=SupportedOSPlatform("windows5.1.2600") -Process32First=SupportedOSPlatform("windows5.1.2600") -Process32FirstW=SupportedOSPlatform("windows5.1.2600") -Process32Next=SupportedOSPlatform("windows5.1.2600") -Process32NextW=SupportedOSPlatform("windows5.1.2600") -Thread32First=SupportedOSPlatform("windows5.1.2600") -Thread32Next=SupportedOSPlatform("windows5.1.2600") -Toolhelp32ReadProcessMemory=SupportedOSPlatform("windows5.1.2600") TokenBindingDeleteAllBindings=SupportedOSPlatform("windows10.0.10240") TokenBindingDeleteBinding=SupportedOSPlatform("windows10.0.10240") TokenBindingGenerateBinding=SupportedOSPlatform("windows10.0.10240") @@ -12394,7 +12376,6 @@ IVssAsync=SupportedOSPlatform("windows5.1.2600") IVssEnumObject=SupportedOSPlatform("windows5.1.2600") CreateVssExpressWriter=SupportedOSPlatform("windows6.1") CreateVssExpressWriterInternal=SupportedOSPlatform("windows6.1") -IWaaSAssessor=SupportedOSPlatform("windows10.0.15063") IWABExtInit=SupportedOSPlatform("windows5.0") IWABObject=SupportedOSPlatform("windows5.0") IABContainer=SupportedOSPlatform("windows5.0") @@ -15334,13 +15315,6 @@ SaferiIsExecutableFileType=SupportedOSPlatform("windows5.1.2600") SaferRecordEventLogEntry=SupportedOSPlatform("windows5.1.2600") SaferSetLevelInformation=SupportedOSPlatform("windows5.1.2600") SaferSetPolicyInformation=SupportedOSPlatform("windows5.1.2600") -IInitiateWinSATAssessment=SupportedOSPlatform("windows6.0.6000") -IProvideWinSATAssessmentInfo=SupportedOSPlatform("windows6.0.6000") -IProvideWinSATResultsInfo=SupportedOSPlatform("windows6.0.6000") -IProvideWinSATVisuals=SupportedOSPlatform("windows6.0.6000") -IQueryAllWinSATAssessments=SupportedOSPlatform("windows6.0.6000") -IQueryRecentWinSATAssessment=SupportedOSPlatform("windows6.0.6000") -IWinSATInitiateEvents=SupportedOSPlatform("windows6.0.6000") GetOpenCardNameA=SupportedOSPlatform("windows5.1.2600") GetOpenCardNameW=SupportedOSPlatform("windows5.1.2600") SCardAccessStartedEvent=SupportedOSPlatform("windows5.1.2600") @@ -16792,9 +16766,6 @@ IWsbApplicationRestoreSupport=SupportedOSPlatform("windowsserver2008") DeregisterOnlineBackupFromWindowsServerBackup=SupportedOSPlatform("windowsserver2012") RegisterOnlineBackupWithWindowsServerBackup=SupportedOSPlatform("windowsserver2012") UpdateOBStatusInWindowsServerBackup=SupportedOSPlatform("windowsserver2012") -WscGetSecurityProviderHealth=SupportedOSPlatform("windows6.0.6000") -WscRegisterForChanges=SupportedOSPlatform("windows6.0.6000") -WscUnRegisterChanges=SupportedOSPlatform("windows6.0.6000") WSDCreateOutboundAttachment=SupportedOSPlatform("windows6.0.6000") IWSDAttachment=SupportedOSPlatform("windows6.0.6000") IWSDInboundAttachment=SupportedOSPlatform("windows6.0.6000") diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 030d3ca29..44b7d04b3 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -39,6 +39,8 @@ private static readonly (string Owner, string Member, string Enum, string Native new EnumUse("Windows.Win32.System.ProcessStatus", "EnumProcessModulesEx", "dwFilterFlag", "ENUM_PROCESS_MODULES_EX_FLAGS", "UInt32"), new EnumUse("Windows.Win32.UI.Magnification", "MagSetWindowFilterList", "dwFilterMode", "MW_FILTERMODE", "UInt32"), new EnumUse("Windows.Win32.UI.Magnification", "MagGetWindowFilterList", "pdwFilterMode", "MW_FILTERMODE", "UInt32*"), + new EnumUse("Windows.Win32.System.Diagnostics.ToolHelp", "CreateToolhelp32Snapshot", "dwFlags", "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "UInt32"), + new EnumUse("Windows.Win32.System.Diagnostics.ToolHelp", "HEAPENTRY32", "dwFlags", "HEAPENTRY32_FLAGS", "UInt32"), }).ToArray(); private static readonly string[] AdditionalOwnedMethods = { @@ -63,8 +65,24 @@ private static readonly (string Owner, string Member, string Enum, string Native "SetTimeZoneInformation", "SystemTimeToFileTime", "SystemTimeToTzSpecificLocalTime", "SystemTimeToTzSpecificLocalTimeEx", "TzSpecificLocalTimeToSystemTime", "TzSpecificLocalTimeToSystemTimeEx", "UalStart", "UalStop", "UalInstrument", "UalRegisterProduct", + "CreateToolhelp32Snapshot", "Heap32First", "Heap32ListFirst", "Heap32ListNext", "Heap32Next", + "Module32First", "Module32FirstW", "Module32Next", "Module32NextW", "Process32First", "Process32FirstW", + "Process32Next", "Process32NextW", "Thread32First", "Thread32Next", "Toolhelp32ReadProcessMemory", + "WscRegisterForChanges", "WscUnRegisterChanges", "WscRegisterForUserNotifications", + "WscGetSecurityProviderHealth", "WscQueryAntiMalwareUri", "WscGetAntiMalwareUri", + }; + private static readonly string[] AdditionalOwnedTypes = + { + "HEAPENTRY32", "IWaaSAssessor", "IWscProduct", "IWSCProductList", + "IInitiateWinSATAssessment", "IProvideWinSATAssessmentInfo", "IProvideWinSATResultsInfo", + "IProvideWinSATVisuals", "IQueryAllWinSATAssessments", "IQueryRecentWinSATAssessment", + "IWinSATInitiateEvents", + }; + private static readonly string[] AdditionalLogicalEnums = + { + "VERIFIER_ENUM_RESOURCE_FLAGS", "ENUM_PROCESS_MODULES_EX_FLAGS", "MW_FILTERMODE", + "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "HEAPENTRY32_FLAGS", }; - private static readonly string[] AdditionalLogicalEnums = { "VERIFIER_ENUM_RESOURCE_FLAGS", "ENUM_PROCESS_MODULES_EX_FLAGS", "MW_FILTERMODE" }; public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; @@ -368,6 +386,9 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() var emitted = old.Reader.MethodDefinitions.Select(old.Reader.GetMethodDefinition) .Select(method => old.Reader.GetString(method.Name)).ToHashSet(StringComparer.Ordinal); Assert.All(AdditionalOwnedMethods, name => Assert.Contains(name, emitted)); + var emittedTypes = old.Reader.TypeDefinitions.Select(old.Reader.GetTypeDefinition) + .Select(type => old.Reader.GetString(type.Name)).ToHashSet(StringComparer.Ordinal); + Assert.All(AdditionalOwnedTypes, name => Assert.Contains(name, emittedTypes)); Assert.DoesNotContain("VerifierIsPerUserSettingsEnabled", emitted); string project = Path.Combine(RepositoryRoot, "generation", "WinSDK"); foreach (string file in new[] { "libMappingsManual.rsp", "scraper.settings.rsp", "supportedOS.rsp", @@ -378,6 +399,7 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() string target = line.Split('=')[0].Split(new[] { "::" }, StringSplitOptions.None)[0]; Assert.DoesNotContain(target, AdditionalOwnedMethods); Assert.DoesNotContain(target, AdditionalLogicalEnums); + Assert.DoesNotContain(target, AdditionalOwnedTypes); } } using var enums = JsonDocument.Parse(File.ReadAllText(Path.Combine(project, "enums.json"))); @@ -386,9 +408,19 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() if (item.TryGetProperty("name", out var name)) Assert.DoesNotContain(name.GetString(), AdditionalLogicalEnums); if (item.TryGetProperty("uses", out var uses)) + { foreach (var use in uses.EnumerateArray()) + { if (use.TryGetProperty("method", out var method)) - Assert.DoesNotContain(method.GetString(), AdditionalOwnedMethods); + { + string owner = method.GetString().Split(new[] { "::" }, StringSplitOptions.None)[0]; + Assert.DoesNotContain(owner, AdditionalOwnedMethods); + Assert.DoesNotContain(owner, AdditionalOwnedTypes); + } + if (use.TryGetProperty("struct", out var record)) + Assert.DoesNotContain(record.GetString(), AdditionalOwnedTypes); + } + } } string bindings = File.ReadAllText(Path.Combine(project, "libMappings.rsp")); Assert.Contains("CeipIsOptedIn=KERNEL32.dll", bindings); @@ -401,7 +433,8 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() Assert.Contains(name + "=SupportedOSPlatform(\"windows5.1.2600\")", File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); } - foreach (string partition in new[] { "CEIP", "ApplicationVerifier", "MagApi", "PsApi1", "Time", "Ual" }) + foreach (string partition in new[] { "CEIP", "ApplicationVerifier", "MagApi", "PsApi1", "Time", "Ual", + "ToolHelp", "UpdateAssessment", "SecurityCenter", "WinSat" }) Assert.Contains("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); Assert.DoesNotContain("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", "PsApi2", "settings.rsp"))); } diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index dbcb39834..4c62c67fe 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -73,8 +73,38 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, .Where(line => line.StartsWith("/", StringComparison.Ordinal)) .Select(line => Path.GetFileName(line.Replace('/', '\\'))).Concat(patched).Distinct(StringComparer.OrdinalIgnoreCase).ToArray(); Assert.NotEmpty(headers); - var before = Surface(root, original, partition, architecture, target, headers, ""); - var after = Surface(root, prepared, partition, architecture, target, headers, ""); + string checks = partition switch + { + "ApplicationVerifier" => @" +static_assert(AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES == 2); +static_assert(AVRF_ENUM_RESOURCES_FLAGS_SUSPEND == 1); +", + "MagApi" => @" +static_assert(MW_FILTERMODE_EXCLUDE == 0); +static_assert(MW_FILTERMODE_INCLUDE == 1); +", + "PsApi1" or "PsApi2" => @" +static_assert(LIST_MODULES_ALL == 3); +static_assert(LIST_MODULES_DEFAULT == 0); +static_assert(LIST_MODULES_32BIT == 1); +static_assert(LIST_MODULES_64BIT == 2); +", + "ToolHelp" => @" +static_assert(TH32CS_INHERIT == 0x80000000u); +static_assert(TH32CS_SNAPALL == 15); +static_assert(TH32CS_SNAPHEAPLIST == 1); +static_assert(TH32CS_SNAPMODULE == 8); +static_assert(TH32CS_SNAPMODULE32 == 16); +static_assert(TH32CS_SNAPPROCESS == 2); +static_assert(TH32CS_SNAPTHREAD == 4); +static_assert(LF32_FIXED == 1); +static_assert(LF32_FREE == 2); +static_assert(LF32_MOVEABLE == 4); +", + _ => "", + }; + var before = Surface(root, original, partition, architecture, target, headers, checks); + var after = Surface(root, prepared, partition, architecture, target, headers, checks); Assert.NotEmpty(before); Assert.Contains(before, value => value.StartsWith("function ", StringComparison.Ordinal) || value.StartsWith("record ", StringComparison.Ordinal)); Assert.Equal(before, after); From 7bba88562f52edb92323955cc1098e0b6c916d9f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 00:42:43 -0700 Subject: [PATCH 19/57] Defer COM opt-ins with unapproved retval changes Preserve the rejected candidate and restore only SecurityCenter and WinSat facts. Keep ToolHelp and UpdateAssessment and the exact approved enum-use differences. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 46 ++++++++----- .../Partitions/SecurityCenter/settings.rsp | 2 - .../WinSDK/Partitions/WinSat/settings.rsp | 2 - generation/WinSDK/emitter.settings.rsp | 1 + generation/WinSDK/patches/SdkHeaders.json | 27 +------- .../post-midl/um/iwscapi.annotations.patch | 33 --------- .../um/winsatcominterfacei.annotations.patch | 67 ------------------- .../post-midl/um/wscapi.annotations.patch | 35 ---------- generation/WinSDK/supportedOS.rsp | 12 ++++ .../WinHttpMigrationTests.cs | 12 ++-- 10 files changed, 47 insertions(+), 190 deletions(-) delete mode 100644 generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index f080cfb17..f55014364 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -146,7 +146,7 @@ Each batch must pass the preceding producer gates before the next is admitted. | --- | --- | --- | | 1 | CEIP, ApplicationVerifier | `windowsceip.h`, `avrfsdk.h` | | 2 | MagApi, PsApi1, Time, Ual | `magnification.h`, `psapi.h`, `timezoneapi.h`, `timeprov.h`, `ual.h` | -| 3 | ToolHelp, UpdateAssessment, SecurityCenter, WinSat | `tlhelp32.h`, `waasapi.h`, `waasapitypes.h`, `iwscapi.h`, `wscapi.h`, `winsatcominterfacei.h` | +| 3 | ToolHelp, UpdateAssessment; two replacements pending | `tlhelp32.h`, `waasapi.h`, `waasapitypes.h` | The image helper reads the recipe's complete owner/dependent partition list and overlays the sources actually produced for those partitions. `Base` and @@ -214,25 +214,35 @@ logical groups retain unsigned 32-bit storage and all ten members: only become associated rather than substituted enum types. UpdateAssessment moves only `IWaaSAssessor`'s Windows 10 build 15063 floor. -SecurityCenter moves two Windows 8 interface floors and three Vista API floors; -its existing `IWSCProductList::Initialize::provider` association moves from the -emitter to the native parameter without a declared-output difference. WinSat -moves precisely seven Vista interface floors, not every interface in its header. -`FileHistory` remains an unchanged dependent of the SecurityCenter headers. These floors agree with the published requirements for -[ToolHelp](https://learn.microsoft.com/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot), -[IWaaSAssessor](https://learn.microsoft.com/windows/win32/api/waasapi/nn-waasapi-iwaasassessor), -[IWSCProductList](https://learn.microsoft.com/windows/win32/api/iwscapi/nn-iwscapi-iwscproductlist), -[WscRegisterForChanges](https://learn.microsoft.com/windows/win32/api/wscapi/nf-wscapi-wscregisterforchanges) -and [WinSAT](https://learn.microsoft.com/windows/win32/api/winsatcominterfacei/nn-winsatcominterfacei-iinitiatewinsatassessment). -SDK-header identities bind SecurityCenter and WinSat directly; the selected -package supplies their generated headers, not IDLs. UpdateAssessment separately -pins its supplied IDLs and checked-in post-MIDL headers. +[ToolHelp](https://learn.microsoft.com/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot) +and [IWaaSAssessor](https://learn.microsoft.com/windows/win32/api/waasapi/nn-waasapi-iwaasassessor). +UpdateAssessment separately pins its supplied IDLs and checked-in post-MIDL +headers. Global `IUnknown`/`IDispatch`, BSTR/VARIANT helpers, and Foundation `HANDLE` -definitions remain outside these physical owners. No snapshot or registration -handle identity is invented, and a SecurityCenter registration is not assumed to -use `CloseHandle`: its native API contract specifies `WscUnRegisterChanges`. -The 22 emitted ToolHelp/SecurityCenter DLL bindings are independently reproduced +definitions remain outside these physical owners. No snapshot handle identity +or ownership assumption is invented. +The 16 emitted ToolHelp DLL bindings are independently reproduced by the preference-free SDK scan and remain derived bindings, not header overrides. + +### Deferred COM opt-in finding + +The proposed SecurityCenter/WinSat conversions are not admitted. Producer +`ab29038d22518c027d2cedab33ea747353ddd2d8` emitted a rejected image with SHA256 +`37CB3A49C657F9787CEC85749EBEFECCEC4C3BB9319070752FDFF7AFB3B7677C`. +Its strict comparison found 28 additional parameter-flag changes: +16 in SecurityCenter and 12 in WinSat gain `RetVal` from existing native +`[retval]` comments, for example `IWscProduct.get_ProductName.pVal` and +`IProvideWinSATAssessmentInfo.get_Score.score`. + +These changes are outside the approved representation categories. The three +COM header patches and opt-ins are removed and their authored facts restored; +neither native comments nor SAL/parser policy is changed to hide the finding. +The rejected image and exact difference log remain in +`artifacts\header-annotation-wave\batch3`; the separate +`batch3-rejected-grade.json` receipt records the rejection. Successful +native/preparation controls and repeatability do not override this failed +metadata gate. Two flat-C +replacements are selected separately; consumer compatibility remains unverified. diff --git a/generation/WinSDK/Partitions/SecurityCenter/settings.rsp b/generation/WinSDK/Partitions/SecurityCenter/settings.rsp index 4b42c981f..8e383afc5 100644 --- a/generation/WinSDK/Partitions/SecurityCenter/settings.rsp +++ b/generation/WinSDK/Partitions/SecurityCenter/settings.rsp @@ -3,5 +3,3 @@ /um/Wscapi.h --namespace Windows.Win32.System.SecurityCenter ---config -parse-win32-annotations diff --git a/generation/WinSDK/Partitions/WinSat/settings.rsp b/generation/WinSDK/Partitions/WinSat/settings.rsp index 9878f2d70..1f1f9af33 100644 --- a/generation/WinSDK/Partitions/WinSat/settings.rsp +++ b/generation/WinSDK/Partitions/WinSat/settings.rsp @@ -2,5 +2,3 @@ /um/winsatcominterfacei.h --namespace Windows.Win32.System.AssessmentTool ---config -parse-win32-annotations diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp index aa9b237b7..e70216580 100644 --- a/generation/WinSDK/emitter.settings.rsp +++ b/generation/WinSDK/emitter.settings.rsp @@ -1504,6 +1504,7 @@ IStream::LockRegion::dwLockType=[AssociatedEnum("LOCKTYPE")] IStream::Stat::grfStatFlag=[AssociatedEnum("STATFLAG")] IVBGetControl::EnumControls::dwOleContF=[AssociatedEnum("OLECONTF")] IWPCProviderConfig::RequestOverride::dwFlags=[AssociatedEnum("WPCFLAG_RESTRICTION")] +IWSCProductList::Initialize::provider=[AssociatedEnum("WSC_SECURITY_PROVIDER")] JOBOBJECT_IO_RATE_CONTROL_INFORMATION::ControlFlags=[AssociatedEnum("JOB_OBJECT_IO_RATE_CONTROL_FLAGS")] LdapMapErrorToWin32::LdapError=[AssociatedEnum("LDAP_RETCODE")] LOGPEN::lopnStyle=[AssociatedEnum("PEN_STYLE")] diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 10d87a4c3..cf2786a07 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -75,24 +75,6 @@ "sourceSha256": "D61D87E4A316ECF0CBA6529A38CB48F148ADD0D94C7C81EADC44D9B4D1867738", "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapitypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" - }, - { - "path": "um\\iwscapi.h", - "sourceSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iwscapi.h", - "sdkSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8" - }, - { - "path": "um\\wscapi.h", - "sourceSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wscapi.h", - "sdkSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B" - }, - { - "path": "um\\winsatcominterfacei.h", - "sourceSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsatcominterfacei.h", - "sdkSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3" } ], "partitions": [ @@ -108,9 +90,7 @@ "Time", "Ual", "ToolHelp", - "UpdateAssessment", - "SecurityCenter", - "WinSat" + "UpdateAssessment" ], "patches": [ "post-midl\\um\\winhttp.supported-os.patch", @@ -126,9 +106,6 @@ "post-midl\\um\\timezoneapi.annotations.patch", "post-midl\\um\\ual.annotations.patch", "post-midl\\um\\tlhelp32.annotations.patch", - "post-midl\\um\\waasapi.annotations.patch", - "post-midl\\um\\iwscapi.annotations.patch", - "post-midl\\um\\wscapi.annotations.patch", - "post-midl\\um\\winsatcominterfacei.annotations.patch" + "post-midl\\um\\waasapi.annotations.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch deleted file mode 100644 index 1c66d4d42..000000000 --- a/generation/WinSDK/patches/post-midl/um/iwscapi.annotations.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/iwscapi.h -@@ -119,6 +119,7 @@ - /* [local] */ - - #include -+#include - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - #ifndef __WSC_SECURITY_PRODUCT_SUBSTATUS__ -@@ -183,6 +184,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("8C38232E-3A45-4A27-92B0-1A16A975F669") -+ _Windows_SupportedOS_Windows8_ - IWscProduct : public IDispatch - { - public: -@@ -881,11 +883,12 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("722A338C-6E8E-4E72-AC27-1417FB0C81C2") -+ _Windows_SupportedOS_Windows8_ - IWSCProductList : public IDispatch - { - public: - virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Initialize( -- /* [in] */ ULONG provider) = 0; -+ /* [in] */ _Win32_AssociatedEnum_(WSC_SECURITY_PROVIDER) ULONG provider) = 0; - - virtual /* [helpstring][id][propget] */ HRESULT STDMETHODCALLTYPE get_Count( - /* [retval][out] */ __RPC__out LONG *pVal) = 0; diff --git a/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch b/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch deleted file mode 100644 index 424083d9a..000000000 --- a/generation/WinSDK/patches/post-midl/um/winsatcominterfacei.annotations.patch +++ /dev/null @@ -1,67 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h b/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winsatcominterfacei.h -@@ -196,6 +196,7 @@ - /* [local] */ - - #include -+#include - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - typedef /* [public][public] */ -@@ -253,6 +254,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0CD1C380-52D3-4678-AC6F-E929E480BE9E") -+ _Windows_SupportedOS_WindowsVista_ - IProvideWinSATAssessmentInfo : public IDispatch - { - public: -@@ -413,6 +415,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F8334D5D-568E-4075-875F-9DF341506640") -+ _Windows_SupportedOS_WindowsVista_ - IProvideWinSATResultsInfo : public IDispatch - { - public: -@@ -597,6 +600,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("F8AD5D1F-3B47-4bdc-9375-7C6B1DA4ECA7") -+ _Windows_SupportedOS_WindowsVista_ - IQueryRecentWinSATAssessment : public IDispatch - { - public: -@@ -750,6 +754,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("A9F4ADE0-871A-42a3-B813-3078D25162C9") -+ _Windows_SupportedOS_WindowsVista_ - IProvideWinSATVisuals : public IUnknown - { - public: -@@ -840,6 +845,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("0B89ED1D-6398-4fea-87FC-567D8D19176F") -+ _Windows_SupportedOS_WindowsVista_ - IQueryAllWinSATAssessments : public IDispatch - { - public: -@@ -982,6 +988,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("262A1918-BA0D-41d5-92C2-FAB4633EE74F") -+ _Windows_SupportedOS_WindowsVista_ - IWinSATInitiateEvents : public IUnknown - { - public: -@@ -1083,6 +1090,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("D983FC50-F5BF-49d5-B5ED-CCCB18AA7FC1") -+ _Windows_SupportedOS_WindowsVista_ - IInitiateWinSATAssessment : public IUnknown - { - public: diff --git a/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch deleted file mode 100644 index d5fa7a6e6..000000000 --- a/generation/WinSDK/patches/post-midl/um/wscapi.annotations.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/wscapi.h -@@ -3,6 +3,7 @@ - // - #pragma once - #include -+#include - - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -69,6 +70,7 @@ - - - -+_Windows_SupportedOS_WindowsVista_ - STDAPI WscRegisterForChanges(LPVOID Reserved, - PHANDLE phCallbackRegistration, - LPTHREAD_START_ROUTINE lpCallbackAddress, -@@ -84,6 +86,7 @@ - // Return Values: - // Returns S_OK if the function succeeds, otherwise returns an error code. - -+_Windows_SupportedOS_WindowsVista_ - STDAPI WscUnRegisterChanges(HANDLE hRegistrationHandle); - - // The WscRegisterForUserNotifications function registers a callback function to be run when the Security Center service -@@ -111,6 +114,7 @@ - // is always S_FALSE and the pHealth out parameter is always set to WSC_SECURITY_PROVIDER_HEALTH_POOR. - // - -+_Windows_SupportedOS_WindowsVista_ - STDAPI WscGetSecurityProviderHealth(DWORD Providers, - PWSC_SECURITY_PROVIDER_HEALTH pHealth); - diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index 144fa27c1..5dd79f940 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -4362,6 +4362,8 @@ SetIScsiInitiatorRADIUSSharedSecret=SupportedOSPlatform("windows6.0.6000") SetIScsiTunnelModeOuterAddressA=SupportedOSPlatform("windows6.0.6000") SetIScsiTunnelModeOuterAddressW=SupportedOSPlatform("windows6.0.6000") SetupPersistentIScsiDevices=SupportedOSPlatform("windows6.0.6000") +IWscProduct=SupportedOSPlatform("windows8.0") +IWSCProductList=SupportedOSPlatform("windows8.0") IAMWstDecoder=SupportedOSPlatform("windows5.1.2600") IsProcessInJob=SupportedOSPlatform("windows5.1.2600") AssignProcessToJobObject=SupportedOSPlatform("windows5.1.2600") @@ -15315,6 +15317,13 @@ SaferiIsExecutableFileType=SupportedOSPlatform("windows5.1.2600") SaferRecordEventLogEntry=SupportedOSPlatform("windows5.1.2600") SaferSetLevelInformation=SupportedOSPlatform("windows5.1.2600") SaferSetPolicyInformation=SupportedOSPlatform("windows5.1.2600") +IInitiateWinSATAssessment=SupportedOSPlatform("windows6.0.6000") +IProvideWinSATAssessmentInfo=SupportedOSPlatform("windows6.0.6000") +IProvideWinSATResultsInfo=SupportedOSPlatform("windows6.0.6000") +IProvideWinSATVisuals=SupportedOSPlatform("windows6.0.6000") +IQueryAllWinSATAssessments=SupportedOSPlatform("windows6.0.6000") +IQueryRecentWinSATAssessment=SupportedOSPlatform("windows6.0.6000") +IWinSATInitiateEvents=SupportedOSPlatform("windows6.0.6000") GetOpenCardNameA=SupportedOSPlatform("windows5.1.2600") GetOpenCardNameW=SupportedOSPlatform("windows5.1.2600") SCardAccessStartedEvent=SupportedOSPlatform("windows5.1.2600") @@ -16766,6 +16775,9 @@ IWsbApplicationRestoreSupport=SupportedOSPlatform("windowsserver2008") DeregisterOnlineBackupFromWindowsServerBackup=SupportedOSPlatform("windowsserver2012") RegisterOnlineBackupWithWindowsServerBackup=SupportedOSPlatform("windowsserver2012") UpdateOBStatusInWindowsServerBackup=SupportedOSPlatform("windowsserver2012") +WscGetSecurityProviderHealth=SupportedOSPlatform("windows6.0.6000") +WscRegisterForChanges=SupportedOSPlatform("windows6.0.6000") +WscUnRegisterChanges=SupportedOSPlatform("windows6.0.6000") WSDCreateOutboundAttachment=SupportedOSPlatform("windows6.0.6000") IWSDAttachment=SupportedOSPlatform("windows6.0.6000") IWSDInboundAttachment=SupportedOSPlatform("windows6.0.6000") diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 44b7d04b3..b995cfb7a 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -68,15 +68,10 @@ private static readonly (string Owner, string Member, string Enum, string Native "CreateToolhelp32Snapshot", "Heap32First", "Heap32ListFirst", "Heap32ListNext", "Heap32Next", "Module32First", "Module32FirstW", "Module32Next", "Module32NextW", "Process32First", "Process32FirstW", "Process32Next", "Process32NextW", "Thread32First", "Thread32Next", "Toolhelp32ReadProcessMemory", - "WscRegisterForChanges", "WscUnRegisterChanges", "WscRegisterForUserNotifications", - "WscGetSecurityProviderHealth", "WscQueryAntiMalwareUri", "WscGetAntiMalwareUri", }; private static readonly string[] AdditionalOwnedTypes = { - "HEAPENTRY32", "IWaaSAssessor", "IWscProduct", "IWSCProductList", - "IInitiateWinSATAssessment", "IProvideWinSATAssessmentInfo", "IProvideWinSATResultsInfo", - "IProvideWinSATVisuals", "IQueryAllWinSATAssessments", "IQueryRecentWinSATAssessment", - "IWinSATInitiateEvents", + "HEAPENTRY32", "IWaaSAssessor", }; private static readonly string[] AdditionalLogicalEnums = { @@ -434,9 +429,10 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); } foreach (string partition in new[] { "CEIP", "ApplicationVerifier", "MagApi", "PsApi1", "Time", "Ual", - "ToolHelp", "UpdateAssessment", "SecurityCenter", "WinSat" }) + "ToolHelp", "UpdateAssessment" }) Assert.Contains("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); - Assert.DoesNotContain("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", "PsApi2", "settings.rsp"))); + foreach (string partition in new[] { "PsApi2", "SecurityCenter", "WinSat" }) + Assert.DoesNotContain("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); } [Theory] From b9fae9d6cb315a93cb342beb2e79a6aa33a64f5d Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 01:04:41 -0700 Subject: [PATCH 20/57] Migrate Wsl and Xinput after opt-in admission Relocate seven demonstrated missing-scan Wsl bindings and ten existing Xinput logical enums with exact OLD membership and native use-site types. Keep SecurityCenter and WinSat deferred without admitting retval changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 54 +- generation/WinSDK/Partitions/Wsl/settings.rsp | 10 +- .../WinSDK/Partitions/Xinput/settings.rsp | 2 + generation/WinSDK/enums.json | 159 ------ ...HeaderAnnotations.expected-differences.txt | 20 + generation/WinSDK/patches/SdkHeaders.json | 20 +- .../post-midl/um/wslapi.annotations.patch | 66 +++ .../post-midl/um/xinput.annotations.patch | 464 ++++++++++++++++++ .../WinHttpMigrationTests.cs | 22 +- .../WinHttpNativeControlTests.cs | 92 ++++ 10 files changed, 736 insertions(+), 173 deletions(-) create mode 100644 generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch create mode 100644 generation/WinSDK/patches/post-midl/um/xinput.annotations.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index f55014364..8c7d0040f 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -25,6 +25,15 @@ Bind each physical header to one owner. Include all physical-header and semantic dependents in the validation closure, without migrating their unrelated facts. An API absent from the selected SDK must not be recreated as a fake declaration. +Before authoring patches, enable annotation parsing alone for the candidate with +unmodified headers and current authored inputs. Use the existing scoped scrape +to compare its declarations with the matched OLD output, separately accounting +for formatter trivia and constants-stage root imports. Parser-activation changes +such as native-comment `RetVal` additions are not annotation relocation. Reject +or defer out-of-policy changes at this cheap admission boundary, before migrating +sidecars; do not add another preparation framework or a full SDK build per +candidate. + ## 2. Prepare headers once before toolchain consumption Add reviewed deltas to the SDK-wide `generation\WinSDK\patches\SdkHeaders.json` @@ -146,7 +155,7 @@ Each batch must pass the preceding producer gates before the next is admitted. | --- | --- | --- | | 1 | CEIP, ApplicationVerifier | `windowsceip.h`, `avrfsdk.h` | | 2 | MagApi, PsApi1, Time, Ual | `magnification.h`, `psapi.h`, `timezoneapi.h`, `timeprov.h`, `ual.h` | -| 3 | ToolHelp, UpdateAssessment; two replacements pending | `tlhelp32.h`, `waasapi.h`, `waasapitypes.h` | +| 3 | ToolHelp, UpdateAssessment, Wsl, Xinput | `tlhelp32.h`, `waasapi.h`, `waasapitypes.h`, `wslapi.h`, `xinput.h` | The image helper reads the recipe's complete owner/dependent partition list and overlays the sources actually produced for those partitions. `Base` and @@ -207,6 +216,15 @@ reductions remain. Artifacts are in `artifacts\header-annotation-wave\batch2`. These overlapping run counts are not a unique-test total. Consumer compatibility remains unverified. +The complete batch-2 [CI regeneration](https://github.com/microsoft/win32metadata/actions/runs/38695188241) +at `1e97e92d386492806928f84587e3073adc89033c` is also green. Its winmd SHA256 is +`D8593620542480E34B03691F53AC63314C78A4F17B4B5E17D458705C68F32946`; +all 24 exact expectations are used with zero unknown differences. This is +independent of the local selected-source overlay. In particular, `WinBase.h` +includes `timezoneapi.h`, so selected native cases alone do not cover every +transitive SDK translation unit. Final expanded-head full regeneration and +strict artifact grading remain required. + Batch 3 moves 16 ToolHelp XP floors and 15 last-error facts, retaining the non-error-annotated `Toolhelp32ReadProcessMemory` contract. Its two existing logical groups retain unsigned 32-bit storage and all ten members: only @@ -227,6 +245,30 @@ or ownership assumption is invented. The 16 emitted ToolHelp DLL bindings are independently reproduced by the preference-free SDK scan and remain derived bindings, not header overrides. +Wsl relocates seven genuinely missing-scan API-set library overrides from its +partition settings to native declarations. The complete pinned SDK scan contains +none of those entrypoints. Their exact `Api-ms-win-wsl-api-l1-1-0.dll` binding is +retained, as specified by the native header's contract. Its real +`WSL_DISTRIBUTION_FLAGS` enum and native typed uses stay unchanged; no ownership +assumption is added for standard handles or the process output. + +Xinput relocates exactly ten existing logical groups, 82 members and ten uses. +Five groups use byte storage, four use unsigned 16-bit storage, and `XINPUT_FLAG` +uses unsigned 32-bit storage. Only its four existing flags groups carry `Flags`; +in particular, `XINPUT_VIRTUAL_KEY` remains nonflags. The three threshold members +already present in `XINPUT_GAMEPAD_BUTTON_FLAGS` and the explicit +`XINPUT_FLAG_ALL = 0` member are preserved, not repaired or repopulated by prefix. +No ordinary `XINPUT_FLAG_ALL` macro is invented. Eight fields and two parameters +retain native byte/WORD/DWORD types plus associations. Its seven DLL bindings +remain SDK-derived; no binding is copied into header overrides. + +Both replacement candidates passed opt-in-only admission before patches: all +2,501 Wsl and 2,115 Xinput namespace declaration tokens match frozen OLD. +Only formatter trivia and the existing constants-stage root usings differ. +`replacement-opt-in-admission.json` records that bounded grade; final winmd and +physical validation remain separate gates. Both SDK headers match their pinned +native preimages byte-for-byte, and each has only its owning direct partition. + ### Deferred COM opt-in finding The proposed SecurityCenter/WinSat conversions are not admitted. Producer @@ -244,5 +286,11 @@ The rejected image and exact difference log remain in `artifacts\header-annotation-wave\batch3`; the separate `batch3-rejected-grade.json` receipt records the rejection. Successful native/preparation controls and repeatability do not override this failed -metadata gate. Two flat-C -replacements are selected separately; consumer compatibility remains unverified. +metadata gate. Wsl and Xinput replace these candidates without widening allowed +differences; consumer compatibility remains unverified. + +Sens is also deferred, not migrated. Its existing logical +`SENS_CONNECTION_TYPE` members encode `CONNECTION_LAN = 0` and +`CONNECTION_WAN = 1`, whereas native `sens.h` defines them as 1 and 2. +That needs a separate compatibility/design decision. No SDK value, metadata +value, macro or alias is changed to force this candidate through the playbook. diff --git a/generation/WinSDK/Partitions/Wsl/settings.rsp b/generation/WinSDK/Partitions/Wsl/settings.rsp index 4f883cc48..707639531 100644 --- a/generation/WinSDK/Partitions/Wsl/settings.rsp +++ b/generation/WinSDK/Partitions/Wsl/settings.rsp @@ -1,12 +1,6 @@ --traverse /um/wslapi.h ---with-librarypath -WslIsDistributionRegistered=Api-ms-win-wsl-api-l1-1-0.dll -WslRegisterDistribution=Api-ms-win-wsl-api-l1-1-0.dll -WslUnregisterDistribution=Api-ms-win-wsl-api-l1-1-0.dll -WslConfigureDistribution=Api-ms-win-wsl-api-l1-1-0.dll -WslGetDistributionConfiguration=Api-ms-win-wsl-api-l1-1-0.dll -WslLaunchInteractive=Api-ms-win-wsl-api-l1-1-0.dll -WslLaunch=Api-ms-win-wsl-api-l1-1-0.dll --namespace Windows.Win32.System.SubsystemForLinux +--config +parse-win32-annotations diff --git a/generation/WinSDK/Partitions/Xinput/settings.rsp b/generation/WinSDK/Partitions/Xinput/settings.rsp index c5ab2911b..9609b8fab 100644 --- a/generation/WinSDK/Partitions/Xinput/settings.rsp +++ b/generation/WinSDK/Partitions/Xinput/settings.rsp @@ -2,3 +2,5 @@ /um/Xinput.h --namespace Windows.Win32.UI.Input.XboxController +--config +parse-win32-annotations diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index 83beeff0d..d6cf9896b 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -28688,22 +28688,6 @@ } ] }, - { - "name": "XINPUT_VIRTUAL_KEY", - "type": "ushort", - "flags": false, - "autoPopulate": { - "filter": "VK_", - "header": "xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_KEYSTROKE", - "field": "VirtualKey" - } - ] - }, { "name": "IMAGELIST_CREATION_FLAGS", "flags": true, @@ -29684,149 +29668,6 @@ } ] }, - { - "name": "BATTERY_TYPE", - "type": "byte", - "autoPopulate": { - "filter": "BATTERY_TYPE_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_BATTERY_INFORMATION", - "field": "BatteryType" - } - ] - }, - { - "name": "BATTERY_LEVEL", - "type": "byte", - "autoPopulate": { - "filter": "BATTERY_LEVEL_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_BATTERY_INFORMATION", - "field": "BatteryLevel" - } - ] - }, - { - "name": "BATTERY_DEVTYPE", - "type": "byte", - "autoPopulate": { - "filter": "BATTERY_DEVTYPE_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "method": "XInputGetBatteryInformation", - "parameter": "devType" - } - ] - }, - { - "name": "XINPUT_DEVTYPE", - "type": "byte", - "autoPopulate": { - "filter": "XINPUT_DEVTYPE_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_CAPABILITIES", - "field": "Type" - } - ] - }, - { - "name": "XINPUT_DEVSUBTYPE", - "type": "byte", - "autoPopulate": { - "filter": "XINPUT_DEVSUBTYPE_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_CAPABILITIES", - "field": "SubType" - } - ] - }, - { - "name": "XINPUT_CAPABILITIES_FLAGS", - "type": "ushort", - "flags": true, - "autoPopulate": { - "filter": "XINPUT_CAPS_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_CAPABILITIES", - "field": "Flags" - } - ] - }, - { - "name": "XINPUT_GAMEPAD_BUTTON_FLAGS", - "type": "ushort", - "flags": true, - "autoPopulate": { - "filter": "XINPUT_GAMEPAD_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_GAMEPAD", - "field": "wButtons" - } - ] - }, - { - "name": "XINPUT_KEYSTROKE_FLAGS", - "type": "ushort", - "flags": true, - "autoPopulate": { - "filter": "XINPUT_KEYSTROKE_", - "header": "Xinput.h" - }, - "members": [], - "uses": [ - { - "struct": "XINPUT_KEYSTROKE", - "field": "Flags" - } - ] - }, - { - "name": "XINPUT_FLAG", - "flags": true, - "autoPopulate": { - "filter": "XINPUT_FLAG_", - "header": "Xinput.h" - }, - "members": [ - { - "name": "XINPUT_FLAG_ALL", - "value": "0" - } - ], - "uses": [ - { - "method": "XInputGetCapabilities", - "parameter": "dwFlags" - } - ] - }, { "type": "uint", "name": "BRUSH_STYLE", diff --git a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt index 220d975b7..130cf5126 100644 --- a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt +++ b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt @@ -30,3 +30,23 @@ Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parame Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parameter 1 (dwFlags)...Windows.Win32.System.Diagnostics.ToolHelp.CREATE_TOOLHELP_SNAPSHOT_FLAGS => System.UInt32 Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags : => [AssociatedEnum(HEAPENTRY32_FLAGS)] Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags...Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32_FLAGS => System.UInt32 +Windows.Win32.UI.Input.XboxController.Apis.XInputGetBatteryInformation : parameter 2 (devType) : [In] => [AssociatedEnum(BATTERY_DEVTYPE),In] +Windows.Win32.UI.Input.XboxController.Apis.XInputGetBatteryInformation : parameter 2 (devType)...Windows.Win32.UI.Input.XboxController.BATTERY_DEVTYPE => System.Byte +Windows.Win32.UI.Input.XboxController.Apis.XInputGetCapabilities : parameter 2 (dwFlags) : [In] => [AssociatedEnum(XINPUT_FLAG),In] +Windows.Win32.UI.Input.XboxController.Apis.XInputGetCapabilities : parameter 2 (dwFlags)...Windows.Win32.UI.Input.XboxController.XINPUT_FLAG => System.UInt32 +Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryType : => [AssociatedEnum(BATTERY_TYPE)] +Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryType...Windows.Win32.UI.Input.XboxController.BATTERY_TYPE => System.Byte +Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryLevel : => [AssociatedEnum(BATTERY_LEVEL)] +Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryLevel...Windows.Win32.UI.Input.XboxController.BATTERY_LEVEL => System.Byte +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Type : => [AssociatedEnum(XINPUT_DEVTYPE)] +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Type...Windows.Win32.UI.Input.XboxController.XINPUT_DEVTYPE => System.Byte +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.SubType : => [AssociatedEnum(XINPUT_DEVSUBTYPE)] +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.SubType...Windows.Win32.UI.Input.XboxController.XINPUT_DEVSUBTYPE => System.Byte +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Flags : => [AssociatedEnum(XINPUT_CAPABILITIES_FLAGS)] +Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Flags...Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES_FLAGS => System.UInt16 +Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD.wButtons : => [AssociatedEnum(XINPUT_GAMEPAD_BUTTON_FLAGS)] +Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD.wButtons...Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD_BUTTON_FLAGS => System.UInt16 +Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.VirtualKey : => [AssociatedEnum(XINPUT_VIRTUAL_KEY)] +Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.VirtualKey...Windows.Win32.UI.Input.XboxController.XINPUT_VIRTUAL_KEY => System.UInt16 +Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.Flags : => [AssociatedEnum(XINPUT_KEYSTROKE_FLAGS)] +Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.Flags...Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE_FLAGS => System.UInt16 diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index cf2786a07..0a3905177 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -75,6 +75,18 @@ "sourceSha256": "D61D87E4A316ECF0CBA6529A38CB48F148ADD0D94C7C81EADC44D9B4D1867738", "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapitypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" + }, + { + "path": "um\\wslapi.h", + "sourceSha256": "8FC3666F77C58986F0F6E8427536F4AE301239C8C31844117ED22162EB6D5D49", + "sdkPath": "c\\include\\10.0.26100.0\\um\\wslapi.h", + "sdkSha256": "8FC3666F77C58986F0F6E8427536F4AE301239C8C31844117ED22162EB6D5D49" + }, + { + "path": "um\\Xinput.h", + "sourceSha256": "EE657D80B788EEAE76ED0D63932ED8AD619E001D8C2BBA5BF670837F07DDB3B4", + "sdkPath": "c\\include\\10.0.26100.0\\um\\Xinput.h", + "sdkSha256": "EE657D80B788EEAE76ED0D63932ED8AD619E001D8C2BBA5BF670837F07DDB3B4" } ], "partitions": [ @@ -90,7 +102,9 @@ "Time", "Ual", "ToolHelp", - "UpdateAssessment" + "UpdateAssessment", + "Wsl", + "Xinput" ], "patches": [ "post-midl\\um\\winhttp.supported-os.patch", @@ -106,6 +120,8 @@ "post-midl\\um\\timezoneapi.annotations.patch", "post-midl\\um\\ual.annotations.patch", "post-midl\\um\\tlhelp32.annotations.patch", - "post-midl\\um\\waasapi.annotations.patch" + "post-midl\\um\\waasapi.annotations.patch", + "post-midl\\um\\wslapi.annotations.patch", + "post-midl\\um\\xinput.annotations.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch new file mode 100644 index 000000000..ac14dba09 --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch @@ -0,0 +1,66 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h +@@ -15,6 +15,7 @@ + + #include + #include ++#include + + #ifdef _CONTRACT_GEN + #include +@@ -31,12 +32,14 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SERVER) + + /* Determines if a distribution is already registered */ ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + BOOL + WslIsDistributionRegistered( + _In_ PCWSTR distributionName + ); + + /* Registers a new distribution given the information provided. */ ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslRegisterDistribution( + _In_ PCWSTR distributionName, +@@ -44,6 +47,7 @@ + ); + + /* Unregisters the specified distribution */ ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslUnregisterDistribution( + _In_ PCWSTR distributionName +@@ -63,6 +67,7 @@ + #define WSL_DISTRIBUTION_FLAGS_DEFAULT (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING) + + /* Configure the given distribution */ ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslConfigureDistribution( + _In_ PCWSTR distributionName, +@@ -71,6 +76,7 @@ + ); + + /* Get the given distribution's configuration info */ ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslGetDistributionConfiguration( + _In_ PCWSTR distributionName, +@@ -81,6 +87,7 @@ + _Out_ ULONG* defaultEnvironmentVariableCount + ); + ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslLaunchInteractive( + _In_ PCWSTR distributionName, +@@ -89,6 +96,7 @@ + _Out_ DWORD* exitCode + ); + ++_Win32_ImportLibrary_("Api-ms-win-wsl-api-l1-1-0.dll") + HRESULT + WslLaunch( + _In_ PCWSTR distributionName, diff --git a/generation/WinSDK/patches/post-midl/um/xinput.annotations.patch b/generation/WinSDK/patches/post-midl/um/xinput.annotations.patch new file mode 100644 index 000000000..42389790c --- /dev/null +++ b/generation/WinSDK/patches/post-midl/um/xinput.annotations.patch @@ -0,0 +1,464 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h b/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h +--- a/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #pragma region Application Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +@@ -193,7 +194,7 @@ + // + typedef struct _XINPUT_GAMEPAD + { +- WORD wButtons; ++ _Win32_AssociatedEnum_(XINPUT_GAMEPAD_BUTTON_FLAGS) WORD wButtons; + BYTE bLeftTrigger; + BYTE bRightTrigger; + SHORT sThumbLX; +@@ -216,9 +217,9 @@ + + typedef struct _XINPUT_CAPABILITIES + { +- BYTE Type; +- BYTE SubType; +- WORD Flags; ++ _Win32_AssociatedEnum_(XINPUT_DEVTYPE) BYTE Type; ++ _Win32_AssociatedEnum_(XINPUT_DEVSUBTYPE) BYTE SubType; ++ _Win32_AssociatedEnum_(XINPUT_CAPABILITIES_FLAGS) WORD Flags; + XINPUT_GAMEPAD Gamepad; + XINPUT_VIBRATION Vibration; + } XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; +@@ -227,20 +228,408 @@ + + typedef struct _XINPUT_BATTERY_INFORMATION + { +- BYTE BatteryType; +- BYTE BatteryLevel; ++ _Win32_AssociatedEnum_(BATTERY_TYPE) BYTE BatteryType; ++ _Win32_AssociatedEnum_(BATTERY_LEVEL) BYTE BatteryLevel; + } XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; + + typedef struct _XINPUT_KEYSTROKE + { +- WORD VirtualKey; ++ _Win32_AssociatedEnum_(XINPUT_VIRTUAL_KEY) WORD VirtualKey; + WCHAR Unicode; +- WORD Flags; ++ _Win32_AssociatedEnum_(XINPUT_KEYSTROKE_FLAGS) WORD Flags; + BYTE UserIndex; + BYTE HidCode; + } XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; + + #endif //(_WIN32_WINNT >= _WIN32_WINNT_WIN8) ++ ++#ifdef WIN32METADATA ++#pragma push_macro("VK_PAD_A") ++#undef VK_PAD_A ++#pragma push_macro("VK_PAD_B") ++#undef VK_PAD_B ++#pragma push_macro("VK_PAD_X") ++#undef VK_PAD_X ++#pragma push_macro("VK_PAD_Y") ++#undef VK_PAD_Y ++#pragma push_macro("VK_PAD_RSHOULDER") ++#undef VK_PAD_RSHOULDER ++#pragma push_macro("VK_PAD_LSHOULDER") ++#undef VK_PAD_LSHOULDER ++#pragma push_macro("VK_PAD_LTRIGGER") ++#undef VK_PAD_LTRIGGER ++#pragma push_macro("VK_PAD_RTRIGGER") ++#undef VK_PAD_RTRIGGER ++#pragma push_macro("VK_PAD_DPAD_UP") ++#undef VK_PAD_DPAD_UP ++#pragma push_macro("VK_PAD_DPAD_DOWN") ++#undef VK_PAD_DPAD_DOWN ++#pragma push_macro("VK_PAD_DPAD_LEFT") ++#undef VK_PAD_DPAD_LEFT ++#pragma push_macro("VK_PAD_DPAD_RIGHT") ++#undef VK_PAD_DPAD_RIGHT ++#pragma push_macro("VK_PAD_START") ++#undef VK_PAD_START ++#pragma push_macro("VK_PAD_BACK") ++#undef VK_PAD_BACK ++#pragma push_macro("VK_PAD_LTHUMB_PRESS") ++#undef VK_PAD_LTHUMB_PRESS ++#pragma push_macro("VK_PAD_RTHUMB_PRESS") ++#undef VK_PAD_RTHUMB_PRESS ++#pragma push_macro("VK_PAD_LTHUMB_UP") ++#undef VK_PAD_LTHUMB_UP ++#pragma push_macro("VK_PAD_LTHUMB_DOWN") ++#undef VK_PAD_LTHUMB_DOWN ++#pragma push_macro("VK_PAD_LTHUMB_RIGHT") ++#undef VK_PAD_LTHUMB_RIGHT ++#pragma push_macro("VK_PAD_LTHUMB_LEFT") ++#undef VK_PAD_LTHUMB_LEFT ++#pragma push_macro("VK_PAD_LTHUMB_UPLEFT") ++#undef VK_PAD_LTHUMB_UPLEFT ++#pragma push_macro("VK_PAD_LTHUMB_UPRIGHT") ++#undef VK_PAD_LTHUMB_UPRIGHT ++#pragma push_macro("VK_PAD_LTHUMB_DOWNRIGHT") ++#undef VK_PAD_LTHUMB_DOWNRIGHT ++#pragma push_macro("VK_PAD_LTHUMB_DOWNLEFT") ++#undef VK_PAD_LTHUMB_DOWNLEFT ++#pragma push_macro("VK_PAD_RTHUMB_UP") ++#undef VK_PAD_RTHUMB_UP ++#pragma push_macro("VK_PAD_RTHUMB_DOWN") ++#undef VK_PAD_RTHUMB_DOWN ++#pragma push_macro("VK_PAD_RTHUMB_RIGHT") ++#undef VK_PAD_RTHUMB_RIGHT ++#pragma push_macro("VK_PAD_RTHUMB_LEFT") ++#undef VK_PAD_RTHUMB_LEFT ++#pragma push_macro("VK_PAD_RTHUMB_UPLEFT") ++#undef VK_PAD_RTHUMB_UPLEFT ++#pragma push_macro("VK_PAD_RTHUMB_UPRIGHT") ++#undef VK_PAD_RTHUMB_UPRIGHT ++#pragma push_macro("VK_PAD_RTHUMB_DOWNRIGHT") ++#undef VK_PAD_RTHUMB_DOWNRIGHT ++#pragma push_macro("VK_PAD_RTHUMB_DOWNLEFT") ++#undef VK_PAD_RTHUMB_DOWNLEFT ++enum XINPUT_VIRTUAL_KEY : WORD ++{ ++ VK_PAD_A = 22528, ++ VK_PAD_B = 22529, ++ VK_PAD_X = 22530, ++ VK_PAD_Y = 22531, ++ VK_PAD_RSHOULDER = 22532, ++ VK_PAD_LSHOULDER = 22533, ++ VK_PAD_LTRIGGER = 22534, ++ VK_PAD_RTRIGGER = 22535, ++ VK_PAD_DPAD_UP = 22544, ++ VK_PAD_DPAD_DOWN = 22545, ++ VK_PAD_DPAD_LEFT = 22546, ++ VK_PAD_DPAD_RIGHT = 22547, ++ VK_PAD_START = 22548, ++ VK_PAD_BACK = 22549, ++ VK_PAD_LTHUMB_PRESS = 22550, ++ VK_PAD_RTHUMB_PRESS = 22551, ++ VK_PAD_LTHUMB_UP = 22560, ++ VK_PAD_LTHUMB_DOWN = 22561, ++ VK_PAD_LTHUMB_RIGHT = 22562, ++ VK_PAD_LTHUMB_LEFT = 22563, ++ VK_PAD_LTHUMB_UPLEFT = 22564, ++ VK_PAD_LTHUMB_UPRIGHT = 22565, ++ VK_PAD_LTHUMB_DOWNRIGHT = 22566, ++ VK_PAD_LTHUMB_DOWNLEFT = 22567, ++ VK_PAD_RTHUMB_UP = 22576, ++ VK_PAD_RTHUMB_DOWN = 22577, ++ VK_PAD_RTHUMB_RIGHT = 22578, ++ VK_PAD_RTHUMB_LEFT = 22579, ++ VK_PAD_RTHUMB_UPLEFT = 22580, ++ VK_PAD_RTHUMB_UPRIGHT = 22581, ++ VK_PAD_RTHUMB_DOWNRIGHT = 22582, ++ VK_PAD_RTHUMB_DOWNLEFT = 22583, ++}; ++#pragma pop_macro("VK_PAD_RTHUMB_DOWNLEFT") ++#pragma pop_macro("VK_PAD_RTHUMB_DOWNRIGHT") ++#pragma pop_macro("VK_PAD_RTHUMB_UPRIGHT") ++#pragma pop_macro("VK_PAD_RTHUMB_UPLEFT") ++#pragma pop_macro("VK_PAD_RTHUMB_LEFT") ++#pragma pop_macro("VK_PAD_RTHUMB_RIGHT") ++#pragma pop_macro("VK_PAD_RTHUMB_DOWN") ++#pragma pop_macro("VK_PAD_RTHUMB_UP") ++#pragma pop_macro("VK_PAD_LTHUMB_DOWNLEFT") ++#pragma pop_macro("VK_PAD_LTHUMB_DOWNRIGHT") ++#pragma pop_macro("VK_PAD_LTHUMB_UPRIGHT") ++#pragma pop_macro("VK_PAD_LTHUMB_UPLEFT") ++#pragma pop_macro("VK_PAD_LTHUMB_LEFT") ++#pragma pop_macro("VK_PAD_LTHUMB_RIGHT") ++#pragma pop_macro("VK_PAD_LTHUMB_DOWN") ++#pragma pop_macro("VK_PAD_LTHUMB_UP") ++#pragma pop_macro("VK_PAD_RTHUMB_PRESS") ++#pragma pop_macro("VK_PAD_LTHUMB_PRESS") ++#pragma pop_macro("VK_PAD_BACK") ++#pragma pop_macro("VK_PAD_START") ++#pragma pop_macro("VK_PAD_DPAD_RIGHT") ++#pragma pop_macro("VK_PAD_DPAD_LEFT") ++#pragma pop_macro("VK_PAD_DPAD_DOWN") ++#pragma pop_macro("VK_PAD_DPAD_UP") ++#pragma pop_macro("VK_PAD_RTRIGGER") ++#pragma pop_macro("VK_PAD_LTRIGGER") ++#pragma pop_macro("VK_PAD_LSHOULDER") ++#pragma pop_macro("VK_PAD_RSHOULDER") ++#pragma pop_macro("VK_PAD_Y") ++#pragma pop_macro("VK_PAD_X") ++#pragma pop_macro("VK_PAD_B") ++#pragma pop_macro("VK_PAD_A") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("BATTERY_TYPE_DISCONNECTED") ++#undef BATTERY_TYPE_DISCONNECTED ++#pragma push_macro("BATTERY_TYPE_WIRED") ++#undef BATTERY_TYPE_WIRED ++#pragma push_macro("BATTERY_TYPE_ALKALINE") ++#undef BATTERY_TYPE_ALKALINE ++#pragma push_macro("BATTERY_TYPE_NIMH") ++#undef BATTERY_TYPE_NIMH ++#pragma push_macro("BATTERY_TYPE_UNKNOWN") ++#undef BATTERY_TYPE_UNKNOWN ++enum BATTERY_TYPE : BYTE ++{ ++ BATTERY_TYPE_DISCONNECTED = 0, ++ BATTERY_TYPE_WIRED = 1, ++ BATTERY_TYPE_ALKALINE = 2, ++ BATTERY_TYPE_NIMH = 3, ++ BATTERY_TYPE_UNKNOWN = 255, ++}; ++#pragma pop_macro("BATTERY_TYPE_UNKNOWN") ++#pragma pop_macro("BATTERY_TYPE_NIMH") ++#pragma pop_macro("BATTERY_TYPE_ALKALINE") ++#pragma pop_macro("BATTERY_TYPE_WIRED") ++#pragma pop_macro("BATTERY_TYPE_DISCONNECTED") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("BATTERY_LEVEL_EMPTY") ++#undef BATTERY_LEVEL_EMPTY ++#pragma push_macro("BATTERY_LEVEL_LOW") ++#undef BATTERY_LEVEL_LOW ++#pragma push_macro("BATTERY_LEVEL_MEDIUM") ++#undef BATTERY_LEVEL_MEDIUM ++#pragma push_macro("BATTERY_LEVEL_FULL") ++#undef BATTERY_LEVEL_FULL ++enum BATTERY_LEVEL : BYTE ++{ ++ BATTERY_LEVEL_EMPTY = 0, ++ BATTERY_LEVEL_LOW = 1, ++ BATTERY_LEVEL_MEDIUM = 2, ++ BATTERY_LEVEL_FULL = 3, ++}; ++#pragma pop_macro("BATTERY_LEVEL_FULL") ++#pragma pop_macro("BATTERY_LEVEL_MEDIUM") ++#pragma pop_macro("BATTERY_LEVEL_LOW") ++#pragma pop_macro("BATTERY_LEVEL_EMPTY") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("BATTERY_DEVTYPE_GAMEPAD") ++#undef BATTERY_DEVTYPE_GAMEPAD ++#pragma push_macro("BATTERY_DEVTYPE_HEADSET") ++#undef BATTERY_DEVTYPE_HEADSET ++enum BATTERY_DEVTYPE : BYTE ++{ ++ BATTERY_DEVTYPE_GAMEPAD = 0, ++ BATTERY_DEVTYPE_HEADSET = 1, ++}; ++#pragma pop_macro("BATTERY_DEVTYPE_HEADSET") ++#pragma pop_macro("BATTERY_DEVTYPE_GAMEPAD") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_DEVTYPE_GAMEPAD") ++#undef XINPUT_DEVTYPE_GAMEPAD ++enum XINPUT_DEVTYPE : BYTE ++{ ++ XINPUT_DEVTYPE_GAMEPAD = 1, ++}; ++#pragma pop_macro("XINPUT_DEVTYPE_GAMEPAD") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_DEVSUBTYPE_GAMEPAD") ++#undef XINPUT_DEVSUBTYPE_GAMEPAD ++#pragma push_macro("XINPUT_DEVSUBTYPE_UNKNOWN") ++#undef XINPUT_DEVSUBTYPE_UNKNOWN ++#pragma push_macro("XINPUT_DEVSUBTYPE_WHEEL") ++#undef XINPUT_DEVSUBTYPE_WHEEL ++#pragma push_macro("XINPUT_DEVSUBTYPE_ARCADE_STICK") ++#undef XINPUT_DEVSUBTYPE_ARCADE_STICK ++#pragma push_macro("XINPUT_DEVSUBTYPE_FLIGHT_STICK") ++#undef XINPUT_DEVSUBTYPE_FLIGHT_STICK ++#pragma push_macro("XINPUT_DEVSUBTYPE_DANCE_PAD") ++#undef XINPUT_DEVSUBTYPE_DANCE_PAD ++#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR") ++#undef XINPUT_DEVSUBTYPE_GUITAR ++#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE") ++#undef XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE ++#pragma push_macro("XINPUT_DEVSUBTYPE_DRUM_KIT") ++#undef XINPUT_DEVSUBTYPE_DRUM_KIT ++#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR_BASS") ++#undef XINPUT_DEVSUBTYPE_GUITAR_BASS ++#pragma push_macro("XINPUT_DEVSUBTYPE_ARCADE_PAD") ++#undef XINPUT_DEVSUBTYPE_ARCADE_PAD ++enum XINPUT_DEVSUBTYPE : BYTE ++{ ++ XINPUT_DEVSUBTYPE_GAMEPAD = 1, ++ XINPUT_DEVSUBTYPE_UNKNOWN = 0, ++ XINPUT_DEVSUBTYPE_WHEEL = 2, ++ XINPUT_DEVSUBTYPE_ARCADE_STICK = 3, ++ XINPUT_DEVSUBTYPE_FLIGHT_STICK = 4, ++ XINPUT_DEVSUBTYPE_DANCE_PAD = 5, ++ XINPUT_DEVSUBTYPE_GUITAR = 6, ++ XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE = 7, ++ XINPUT_DEVSUBTYPE_DRUM_KIT = 8, ++ XINPUT_DEVSUBTYPE_GUITAR_BASS = 11, ++ XINPUT_DEVSUBTYPE_ARCADE_PAD = 19, ++}; ++#pragma pop_macro("XINPUT_DEVSUBTYPE_ARCADE_PAD") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR_BASS") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_DRUM_KIT") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_DANCE_PAD") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_FLIGHT_STICK") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_ARCADE_STICK") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_WHEEL") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_UNKNOWN") ++#pragma pop_macro("XINPUT_DEVSUBTYPE_GAMEPAD") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_CAPS_VOICE_SUPPORTED") ++#undef XINPUT_CAPS_VOICE_SUPPORTED ++#pragma push_macro("XINPUT_CAPS_FFB_SUPPORTED") ++#undef XINPUT_CAPS_FFB_SUPPORTED ++#pragma push_macro("XINPUT_CAPS_WIRELESS") ++#undef XINPUT_CAPS_WIRELESS ++#pragma push_macro("XINPUT_CAPS_PMD_SUPPORTED") ++#undef XINPUT_CAPS_PMD_SUPPORTED ++#pragma push_macro("XINPUT_CAPS_NO_NAVIGATION") ++#undef XINPUT_CAPS_NO_NAVIGATION ++enum [[clang::flag_enum]] XINPUT_CAPABILITIES_FLAGS : WORD ++{ ++ XINPUT_CAPS_VOICE_SUPPORTED = 4, ++ XINPUT_CAPS_FFB_SUPPORTED = 1, ++ XINPUT_CAPS_WIRELESS = 2, ++ XINPUT_CAPS_PMD_SUPPORTED = 8, ++ XINPUT_CAPS_NO_NAVIGATION = 16, ++}; ++#pragma pop_macro("XINPUT_CAPS_NO_NAVIGATION") ++#pragma pop_macro("XINPUT_CAPS_PMD_SUPPORTED") ++#pragma pop_macro("XINPUT_CAPS_WIRELESS") ++#pragma pop_macro("XINPUT_CAPS_FFB_SUPPORTED") ++#pragma pop_macro("XINPUT_CAPS_VOICE_SUPPORTED") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_GAMEPAD_DPAD_UP") ++#undef XINPUT_GAMEPAD_DPAD_UP ++#pragma push_macro("XINPUT_GAMEPAD_DPAD_DOWN") ++#undef XINPUT_GAMEPAD_DPAD_DOWN ++#pragma push_macro("XINPUT_GAMEPAD_DPAD_LEFT") ++#undef XINPUT_GAMEPAD_DPAD_LEFT ++#pragma push_macro("XINPUT_GAMEPAD_DPAD_RIGHT") ++#undef XINPUT_GAMEPAD_DPAD_RIGHT ++#pragma push_macro("XINPUT_GAMEPAD_START") ++#undef XINPUT_GAMEPAD_START ++#pragma push_macro("XINPUT_GAMEPAD_BACK") ++#undef XINPUT_GAMEPAD_BACK ++#pragma push_macro("XINPUT_GAMEPAD_LEFT_THUMB") ++#undef XINPUT_GAMEPAD_LEFT_THUMB ++#pragma push_macro("XINPUT_GAMEPAD_RIGHT_THUMB") ++#undef XINPUT_GAMEPAD_RIGHT_THUMB ++#pragma push_macro("XINPUT_GAMEPAD_LEFT_SHOULDER") ++#undef XINPUT_GAMEPAD_LEFT_SHOULDER ++#pragma push_macro("XINPUT_GAMEPAD_RIGHT_SHOULDER") ++#undef XINPUT_GAMEPAD_RIGHT_SHOULDER ++#pragma push_macro("XINPUT_GAMEPAD_A") ++#undef XINPUT_GAMEPAD_A ++#pragma push_macro("XINPUT_GAMEPAD_B") ++#undef XINPUT_GAMEPAD_B ++#pragma push_macro("XINPUT_GAMEPAD_X") ++#undef XINPUT_GAMEPAD_X ++#pragma push_macro("XINPUT_GAMEPAD_Y") ++#undef XINPUT_GAMEPAD_Y ++#pragma push_macro("XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE") ++#undef XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE ++#pragma push_macro("XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE") ++#undef XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE ++#pragma push_macro("XINPUT_GAMEPAD_TRIGGER_THRESHOLD") ++#undef XINPUT_GAMEPAD_TRIGGER_THRESHOLD ++enum [[clang::flag_enum]] XINPUT_GAMEPAD_BUTTON_FLAGS : WORD ++{ ++ XINPUT_GAMEPAD_DPAD_UP = 1, ++ XINPUT_GAMEPAD_DPAD_DOWN = 2, ++ XINPUT_GAMEPAD_DPAD_LEFT = 4, ++ XINPUT_GAMEPAD_DPAD_RIGHT = 8, ++ XINPUT_GAMEPAD_START = 16, ++ XINPUT_GAMEPAD_BACK = 32, ++ XINPUT_GAMEPAD_LEFT_THUMB = 64, ++ XINPUT_GAMEPAD_RIGHT_THUMB = 128, ++ XINPUT_GAMEPAD_LEFT_SHOULDER = 256, ++ XINPUT_GAMEPAD_RIGHT_SHOULDER = 512, ++ XINPUT_GAMEPAD_A = 4096, ++ XINPUT_GAMEPAD_B = 8192, ++ XINPUT_GAMEPAD_X = 16384, ++ XINPUT_GAMEPAD_Y = 32768, ++ XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 7849, ++ XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE = 8689, ++ XINPUT_GAMEPAD_TRIGGER_THRESHOLD = 30, ++}; ++#pragma pop_macro("XINPUT_GAMEPAD_TRIGGER_THRESHOLD") ++#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE") ++#pragma pop_macro("XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE") ++#pragma pop_macro("XINPUT_GAMEPAD_Y") ++#pragma pop_macro("XINPUT_GAMEPAD_X") ++#pragma pop_macro("XINPUT_GAMEPAD_B") ++#pragma pop_macro("XINPUT_GAMEPAD_A") ++#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_SHOULDER") ++#pragma pop_macro("XINPUT_GAMEPAD_LEFT_SHOULDER") ++#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_THUMB") ++#pragma pop_macro("XINPUT_GAMEPAD_LEFT_THUMB") ++#pragma pop_macro("XINPUT_GAMEPAD_BACK") ++#pragma pop_macro("XINPUT_GAMEPAD_START") ++#pragma pop_macro("XINPUT_GAMEPAD_DPAD_RIGHT") ++#pragma pop_macro("XINPUT_GAMEPAD_DPAD_LEFT") ++#pragma pop_macro("XINPUT_GAMEPAD_DPAD_DOWN") ++#pragma pop_macro("XINPUT_GAMEPAD_DPAD_UP") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_KEYSTROKE_KEYDOWN") ++#undef XINPUT_KEYSTROKE_KEYDOWN ++#pragma push_macro("XINPUT_KEYSTROKE_KEYUP") ++#undef XINPUT_KEYSTROKE_KEYUP ++#pragma push_macro("XINPUT_KEYSTROKE_REPEAT") ++#undef XINPUT_KEYSTROKE_REPEAT ++enum [[clang::flag_enum]] XINPUT_KEYSTROKE_FLAGS : WORD ++{ ++ XINPUT_KEYSTROKE_KEYDOWN = 1, ++ XINPUT_KEYSTROKE_KEYUP = 2, ++ XINPUT_KEYSTROKE_REPEAT = 4, ++}; ++#pragma pop_macro("XINPUT_KEYSTROKE_REPEAT") ++#pragma pop_macro("XINPUT_KEYSTROKE_KEYUP") ++#pragma pop_macro("XINPUT_KEYSTROKE_KEYDOWN") ++#endif ++ ++#ifdef WIN32METADATA ++#pragma push_macro("XINPUT_FLAG_ALL") ++#undef XINPUT_FLAG_ALL ++#pragma push_macro("XINPUT_FLAG_GAMEPAD") ++#undef XINPUT_FLAG_GAMEPAD ++enum [[clang::flag_enum]] XINPUT_FLAG : DWORD ++{ ++ XINPUT_FLAG_ALL = 0, ++ XINPUT_FLAG_GAMEPAD = 1, ++}; ++#pragma pop_macro("XINPUT_FLAG_GAMEPAD") ++#pragma pop_macro("XINPUT_FLAG_ALL") ++#endif + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ + #pragma endregion +@@ -270,7 +659,7 @@ + DWORD WINAPI XInputGetCapabilities + ( + _In_ DWORD dwUserIndex, // Index of the gamer associated with the device +- _In_ DWORD dwFlags, // Input flags that identify the device type ++ _In_ _Win32_AssociatedEnum_(XINPUT_FLAG) DWORD dwFlags, // Input flags that identify the device type + _Out_ XINPUT_CAPABILITIES* pCapabilities // Receives the capabilities + ) WIN_NOEXCEPT; + +@@ -297,7 +686,7 @@ + DWORD WINAPI XInputGetBatteryInformation + ( + _In_ DWORD dwUserIndex, // Index of the gamer associated with the device +- _In_ BYTE devType, // Which device on this user index ++ _In_ _Win32_AssociatedEnum_(BATTERY_DEVTYPE) BYTE devType, // Which device on this user index + _Out_ XINPUT_BATTERY_INFORMATION* pBatteryInformation // Contains the level and types of batteries + ) WIN_NOEXCEPT; + diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index b995cfb7a..de9d72a63 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -41,6 +41,16 @@ private static readonly (string Owner, string Member, string Enum, string Native new EnumUse("Windows.Win32.UI.Magnification", "MagGetWindowFilterList", "pdwFilterMode", "MW_FILTERMODE", "UInt32*"), new EnumUse("Windows.Win32.System.Diagnostics.ToolHelp", "CreateToolhelp32Snapshot", "dwFlags", "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "UInt32"), new EnumUse("Windows.Win32.System.Diagnostics.ToolHelp", "HEAPENTRY32", "dwFlags", "HEAPENTRY32_FLAGS", "UInt32"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XInputGetBatteryInformation", "devType", "BATTERY_DEVTYPE", "Byte"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XInputGetCapabilities", "dwFlags", "XINPUT_FLAG", "UInt32"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_BATTERY_INFORMATION", "BatteryType", "BATTERY_TYPE", "Byte"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_BATTERY_INFORMATION", "BatteryLevel", "BATTERY_LEVEL", "Byte"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_CAPABILITIES", "Type", "XINPUT_DEVTYPE", "Byte"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_CAPABILITIES", "SubType", "XINPUT_DEVSUBTYPE", "Byte"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_CAPABILITIES", "Flags", "XINPUT_CAPABILITIES_FLAGS", "UInt16"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_GAMEPAD", "wButtons", "XINPUT_GAMEPAD_BUTTON_FLAGS", "UInt16"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_KEYSTROKE", "VirtualKey", "XINPUT_VIRTUAL_KEY", "UInt16"), + new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_KEYSTROKE", "Flags", "XINPUT_KEYSTROKE_FLAGS", "UInt16"), }).ToArray(); private static readonly string[] AdditionalOwnedMethods = { @@ -68,15 +78,24 @@ private static readonly (string Owner, string Member, string Enum, string Native "CreateToolhelp32Snapshot", "Heap32First", "Heap32ListFirst", "Heap32ListNext", "Heap32Next", "Module32First", "Module32FirstW", "Module32Next", "Module32NextW", "Process32First", "Process32FirstW", "Process32Next", "Process32NextW", "Thread32First", "Thread32Next", "Toolhelp32ReadProcessMemory", + "WslIsDistributionRegistered", "WslRegisterDistribution", "WslUnregisterDistribution", + "WslConfigureDistribution", "WslGetDistributionConfiguration", "WslLaunchInteractive", "WslLaunch", + "XInputGetState", "XInputSetState", "XInputGetCapabilities", "XInputEnable", + "XInputGetAudioDeviceIds", "XInputGetBatteryInformation", "XInputGetKeystroke", }; private static readonly string[] AdditionalOwnedTypes = { "HEAPENTRY32", "IWaaSAssessor", + "WSL_DISTRIBUTION_FLAGS", "XINPUT_BATTERY_INFORMATION", "XINPUT_CAPABILITIES", + "XINPUT_GAMEPAD", "XINPUT_KEYSTROKE", }; private static readonly string[] AdditionalLogicalEnums = { "VERIFIER_ENUM_RESOURCE_FLAGS", "ENUM_PROCESS_MODULES_EX_FLAGS", "MW_FILTERMODE", "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "HEAPENTRY32_FLAGS", + "XINPUT_VIRTUAL_KEY", "BATTERY_TYPE", "BATTERY_LEVEL", "BATTERY_DEVTYPE", + "XINPUT_DEVTYPE", "XINPUT_DEVSUBTYPE", "XINPUT_CAPABILITIES_FLAGS", + "XINPUT_GAMEPAD_BUTTON_FLAGS", "XINPUT_KEYSTROKE_FLAGS", "XINPUT_FLAG", }; public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; @@ -429,8 +448,9 @@ public void AdditionalEmittedOwnersHaveNoAuthoredSemanticFallback() File.ReadAllText(Path.Combine(project, "supportedOS.rsp"))); } foreach (string partition in new[] { "CEIP", "ApplicationVerifier", "MagApi", "PsApi1", "Time", "Ual", - "ToolHelp", "UpdateAssessment" }) + "ToolHelp", "UpdateAssessment", "Wsl", "Xinput" }) Assert.Contains("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); + Assert.DoesNotContain("--with-librarypath", File.ReadAllText(Path.Combine(project, "Partitions", "Wsl", "settings.rsp"))); foreach (string partition in new[] { "PsApi2", "SecurityCenter", "WinSat" }) Assert.DoesNotContain("parse-win32-annotations", File.ReadAllText(Path.Combine(project, "Partitions", partition, "settings.rsp"))); } diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 4c62c67fe..09d745462 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -100,6 +100,98 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, static_assert(LF32_FIXED == 1); static_assert(LF32_FREE == 2); static_assert(LF32_MOVEABLE == 4); +", + "Wsl" => @" +static_assert(WSL_DISTRIBUTION_FLAGS_NONE == 0); +static_assert(WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP == 1); +static_assert(WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH == 2); +static_assert(WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING == 4); +", + "Xinput" => @" +#ifdef XINPUT_FLAG_ALL +#error Metadata-only XINPUT_FLAG_ALL must not become a native macro +#endif +static_assert(VK_PAD_A == 22528); +static_assert(VK_PAD_B == 22529); +static_assert(VK_PAD_X == 22530); +static_assert(VK_PAD_Y == 22531); +static_assert(VK_PAD_RSHOULDER == 22532); +static_assert(VK_PAD_LSHOULDER == 22533); +static_assert(VK_PAD_LTRIGGER == 22534); +static_assert(VK_PAD_RTRIGGER == 22535); +static_assert(VK_PAD_DPAD_UP == 22544); +static_assert(VK_PAD_DPAD_DOWN == 22545); +static_assert(VK_PAD_DPAD_LEFT == 22546); +static_assert(VK_PAD_DPAD_RIGHT == 22547); +static_assert(VK_PAD_START == 22548); +static_assert(VK_PAD_BACK == 22549); +static_assert(VK_PAD_LTHUMB_PRESS == 22550); +static_assert(VK_PAD_RTHUMB_PRESS == 22551); +static_assert(VK_PAD_LTHUMB_UP == 22560); +static_assert(VK_PAD_LTHUMB_DOWN == 22561); +static_assert(VK_PAD_LTHUMB_RIGHT == 22562); +static_assert(VK_PAD_LTHUMB_LEFT == 22563); +static_assert(VK_PAD_LTHUMB_UPLEFT == 22564); +static_assert(VK_PAD_LTHUMB_UPRIGHT == 22565); +static_assert(VK_PAD_LTHUMB_DOWNRIGHT == 22566); +static_assert(VK_PAD_LTHUMB_DOWNLEFT == 22567); +static_assert(VK_PAD_RTHUMB_UP == 22576); +static_assert(VK_PAD_RTHUMB_DOWN == 22577); +static_assert(VK_PAD_RTHUMB_RIGHT == 22578); +static_assert(VK_PAD_RTHUMB_LEFT == 22579); +static_assert(VK_PAD_RTHUMB_UPLEFT == 22580); +static_assert(VK_PAD_RTHUMB_UPRIGHT == 22581); +static_assert(VK_PAD_RTHUMB_DOWNRIGHT == 22582); +static_assert(VK_PAD_RTHUMB_DOWNLEFT == 22583); +static_assert(BATTERY_TYPE_DISCONNECTED == 0); +static_assert(BATTERY_TYPE_WIRED == 1); +static_assert(BATTERY_TYPE_ALKALINE == 2); +static_assert(BATTERY_TYPE_NIMH == 3); +static_assert(BATTERY_TYPE_UNKNOWN == 255); +static_assert(BATTERY_LEVEL_EMPTY == 0); +static_assert(BATTERY_LEVEL_LOW == 1); +static_assert(BATTERY_LEVEL_MEDIUM == 2); +static_assert(BATTERY_LEVEL_FULL == 3); +static_assert(BATTERY_DEVTYPE_GAMEPAD == 0); +static_assert(BATTERY_DEVTYPE_HEADSET == 1); +static_assert(XINPUT_DEVTYPE_GAMEPAD == 1); +static_assert(XINPUT_DEVSUBTYPE_GAMEPAD == 1); +static_assert(XINPUT_DEVSUBTYPE_UNKNOWN == 0); +static_assert(XINPUT_DEVSUBTYPE_WHEEL == 2); +static_assert(XINPUT_DEVSUBTYPE_ARCADE_STICK == 3); +static_assert(XINPUT_DEVSUBTYPE_FLIGHT_STICK == 4); +static_assert(XINPUT_DEVSUBTYPE_DANCE_PAD == 5); +static_assert(XINPUT_DEVSUBTYPE_GUITAR == 6); +static_assert(XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE == 7); +static_assert(XINPUT_DEVSUBTYPE_DRUM_KIT == 8); +static_assert(XINPUT_DEVSUBTYPE_GUITAR_BASS == 11); +static_assert(XINPUT_DEVSUBTYPE_ARCADE_PAD == 19); +static_assert(XINPUT_CAPS_VOICE_SUPPORTED == 4); +static_assert(XINPUT_CAPS_FFB_SUPPORTED == 1); +static_assert(XINPUT_CAPS_WIRELESS == 2); +static_assert(XINPUT_CAPS_PMD_SUPPORTED == 8); +static_assert(XINPUT_CAPS_NO_NAVIGATION == 16); +static_assert(XINPUT_GAMEPAD_DPAD_UP == 1); +static_assert(XINPUT_GAMEPAD_DPAD_DOWN == 2); +static_assert(XINPUT_GAMEPAD_DPAD_LEFT == 4); +static_assert(XINPUT_GAMEPAD_DPAD_RIGHT == 8); +static_assert(XINPUT_GAMEPAD_START == 16); +static_assert(XINPUT_GAMEPAD_BACK == 32); +static_assert(XINPUT_GAMEPAD_LEFT_THUMB == 64); +static_assert(XINPUT_GAMEPAD_RIGHT_THUMB == 128); +static_assert(XINPUT_GAMEPAD_LEFT_SHOULDER == 256); +static_assert(XINPUT_GAMEPAD_RIGHT_SHOULDER == 512); +static_assert(XINPUT_GAMEPAD_A == 4096); +static_assert(XINPUT_GAMEPAD_B == 8192); +static_assert(XINPUT_GAMEPAD_X == 16384); +static_assert(XINPUT_GAMEPAD_Y == 32768); +static_assert(XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE == 7849); +static_assert(XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE == 8689); +static_assert(XINPUT_GAMEPAD_TRIGGER_THRESHOLD == 30); +static_assert(XINPUT_KEYSTROKE_KEYDOWN == 1); +static_assert(XINPUT_KEYSTROKE_KEYUP == 2); +static_assert(XINPUT_KEYSTROKE_REPEAT == 4); +static_assert(XINPUT_FLAG_GAMEPAD == 1); ", _ => "", }; From 162f8118a7da2ecb38d410a66b729dda64ca6767 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 08:48:48 -0700 Subject: [PATCH 21/57] Document native-derived annotation review policy Accept faithful SDK/SAL/MIDL capture and surface exact source-backed metadata and consumer differences. Clarify the historical C# retval finding without re-enabling migrations or changing emission inputs. Preserve B9 artifact and CI provenance separately from this documentation head. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 138 ++++++++++++++----- docs/winhttp-header-annotations.md | 37 +++-- 2 files changed, 134 insertions(+), 41 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 8c7d0040f..230c85a36 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -15,7 +15,7 @@ documentation mappings. Count emitted symbols, not just library-map rows. | Input | Treatment | | --- | --- | | SDK import-library scan / generated `libMappings.rsp` | Retain as derived binding data. Do not copy correct scan results into header annotations. | -| Native declarations, SAL and MIDL | Retain as native authority; do not duplicate direction, size, string or optionality information. | +| Native declarations, SAL and MIDL | Capture their existing annotations faithfully, including facts OLD omitted; do not author redundant direction, size, string or optionality information. | | Current-TU discovery and derived aggregate remaps | Retain discovery, with the tooling's annotated/legacy precedence. Do not turn cached discoveries into authored facts. | | Authored OS/error, logical-enum, ownership, callback and buffer overrides | Review each contract, migrate supported facts, and remove only the matching authored fallback. | | Manual import overrides | Use `ImportLibrary` only for demonstrated missing/incorrect scan data; retain generic override support. | @@ -28,11 +28,13 @@ An API absent from the selected SDK must not be recreated as a fake declaration. Before authoring patches, enable annotation parsing alone for the candidate with unmodified headers and current authored inputs. Use the existing scoped scrape to compare its declarations with the matched OLD output, separately accounting -for formatter trivia and constants-stage root imports. Parser-activation changes -such as native-comment `RetVal` additions are not annotation relocation. Reject -or defer out-of-policy changes at this cheap admission boundary, before migrating -sidecars; do not add another preparation framework or a full SDK build per -candidate. +for formatter trivia and constants-stage root imports. Parser activation can +faithfully expose existing native annotations that OLD omitted, such as MIDL +`[retval]` comments. Classify these separately from annotation relocation, record +their exact source and metadata changes, and surface meaningful consumer effects +for review. Do not suppress those facts or reject/replace a candidate merely to +preserve OLD omissions. Keep this a cheap classification boundary before patch +authoring, not another preparation framework or a full SDK build per candidate. ## 2. Prepare headers once before toolchain consumption @@ -55,19 +57,38 @@ Respect the MIDL boundary. The current preparation script admits post-MIDL recipes; it is not permission to rerun broad SDK/IDL update scripts or silently introduce a pre-MIDL pipeline. Surface a bounded blocker if that is required. -## 3. Admit only the approved representation changes +## 3. Capture native facts and classify every difference + +Faithfully capturing existing SDK, SAL and MIDL annotations is always acceptable, +even when it changes OLD metadata. This is a general rule, not a `RetVal` exemption. +OLD is a comparison baseline, not authority to suppress the native contract. +Classify and present exact OLD-to-NEW metadata and consumer differences to the +user for review instead of excluding a migration solely to retain OLD omissions. + +A source-derived addition must be traceable to an existing fact in the pinned +native sources, with its exact declaration, owner, target, payload and architecture +coverage. Verify that interpretation rather than inventing API/type/ownership +claims or authoring arbitrary annotations to force a comparison grade. Newly +authored header patches still require independent contract review; calling a +patch a header does not make every added assertion source-derived. | Change | Required grade | | --- | --- | +| Existing SDK/SAL/MIDL annotation absent or differently represented in OLD | Exact source-backed expectations for each affected symbol, attribute/parameter flag, target and payload; classify metadata and consumer effects for review. | | Existing enum use site becomes its native type plus `AssociatedEnum` | Exact owning parameter/field, native width/signedness and existing enum identity/member/value checks. | | Justified fabricated-handle removal and producer return/output ownership relocation | Exact removed type and affected signatures, cleanup API, invalid values and attribute targets; no invented ownership for borrowed handles. | -| All other migrated facts | Same signatures, layouts, callback identity, imports, OS floors, last-error and SAL contracts. | +| Other relocated facts | Preserve signatures, layouts, callback identity, imports, OS floors, last-error and SAL contracts unless an individually source-backed correction is identified and presented as above. | -No new enum types, enum members, loose constants, API families, compatibility -aliases or broad difference/duplicate allowlists. Preserve existing logical -member names and values while leaving native macros intact. Document any +This rule does not authorize manufacturing logical enum types or members, loose +constants, API families or compatibility aliases, or silently repairing logical +value conflicts. Preserve existing logical member names and values while leaving +native macros intact unless a separate review resolves a conflict. Document any user-approved metadata-only naming exception at the header boundary. +Keep expectations exact and source-backed, with zero unknown differences and zero +unused expectations. There is no blanket native-derived difference or duplicate +allowlist, and no assumption that faithful capture implies consumer compatibility. + Remove matching authored fallback rather than annotating on top of it. SDK-derived bindings and discoveries are not semantic fallback. Keep import module/entrypoint/flags checks even when no header import override is needed. @@ -82,7 +103,9 @@ the partition migration; never waive a known OLD defect on NEW. Commit producer inputs before publishing a fresh named NEW artifact. Record SDK, producer/tooling commits, binary hashes, recipe/prepared-header identity, complete source/reference closure and expected-difference hashes. Do not overwrite previous -images or receipts. +images or receipts. If only documentation advances the branch, retain the actual +producer and CI-run labels on those frozen artifacts; a documentation head is not +a new emission or a fresh image grade. Use the existing selected scrape/full-source overlay loop where appropriate. `PartitionFilter` alone does not narrow constants, manual files or emission @@ -99,9 +122,12 @@ unselected inputs. Reject success-shaped partial images with dangling references callbacks, architecture coverage and reference closure. Preserve unrelated physical snapshots and existing mutation controls. - Compare OLD/control/NEW with exact symbol-scoped expectations: zero unknown - differences and zero unused expectations. Investigate any unapproved category - before admitting the candidate. A declaration comparer plus scoped physical - checks is not a comprehensive typed-equivalence oracle. + differences and zero unused expectations. Investigate every unclassified + difference and record the source evidence for native-derived additions; + surface meaningful metadata and consumer changes to the user for review. + Do not suppress faithful native facts or use a blanket allowance to make the + grade pass. A declaration comparer plus scoped physical checks is not a + comprehensive typed-equivalence oracle. - Repeat the normal SDK build with prior discoveries present. Require identical selected source/discovery inputs, shared prepared roots and complete SDK diagnostic inputs. @@ -124,9 +150,11 @@ requests, options, target framework and unchanged caller source; compare public surfaces and compile both OLD and NEW callers in both marshaling modes. Separate identical output, source-compatible differences and exact source breaks. -Do not infer compatibility from a producer comparison. If the consumer cannot be -run under the agreed ownership constraints, report **unverified**. Do not search, -rebuild or modify another owner's consumer checkout to manufacture proof. +Include the consumer effects of newly captured native annotations in that review; +their source authority is not proof of source compatibility. Do not infer +compatibility from a producer comparison. If the consumer cannot be run under the +agreed ownership constraints, report **unverified**. Do not search, rebuild or +modify another owner's consumer checkout to manufacture proof. ## 7. Publish a reviewable checkpoint @@ -136,12 +164,17 @@ the current approved delta and links to durable details. Do not merge or change native stack metadata. Require full CI green on the final exact head of both tooling and migration PRs; -record check/run links and SHAs. Earlier successful heads and local tests do not -substitute. Do not skip checks or weaken gates to obtain green. +record check/run links and SHAs according to repository CI policy, including for +documentation-only follow-ups. Earlier successful checks do not substitute for +required current-head checks. Keep image evidence pinned to its actual producer +and run, rather than relabeling it as a grade of a later documentation head. +Do not skip checks or weaken gates to obtain green. For a correctness/design problem, capture one bounded reproducer and correct it within established patterns. Otherwise report the exact blocker, owner and smallest decision, or replace the candidate through the agreed selection process. +Do not treat faithful capture of an existing native annotation as such a blocker +merely because OLD omitted it; classify and review the exact difference instead. Do not expand into parser frameworks, consumer features or prolonged speculative investigations. Summarize each partition as relocated facts, exact representation changes, unchanged native/dependent contracts, and an honest consumer grade. @@ -223,7 +256,7 @@ all 24 exact expectations are used with zero unknown differences. This is independent of the local selected-source overlay. In particular, `WinBase.h` includes `timezoneapi.h`, so selected native cases alone do not cover every transitive SDK translation unit. Final expanded-head full regeneration and -strict artifact grading remain required. +strict artifact grading are recorded for the completed B9 producer below. Batch 3 moves 16 ToolHelp XP floors and 15 last-error facts, retaining the non-error-annotated `Toolhelp32ReadProcessMemory` contract. Its two existing @@ -269,28 +302,69 @@ Only formatter trivia and the existing constants-stage root usings differ. physical validation remain separate gates. Both SDK headers match their pinned native preimages byte-for-byte, and each has only its owning direct partition. -### Deferred COM opt-in finding +### Completed producer checkpoint (B9, immutable) + +The completed WinHttp-plus-ten producer is +`b9fae9d6cb315a93cb342beb2e79a6aa33a64f5d`, above tooling +`00ade0afc94c965522ccdbac54a06fc1bcbd01a1`. This evidence belongs to that +producer, not a later documentation-only branch head. + +| Frozen evidence | Identity | +| --- | --- | +| Local full image SHA256 | `A0C321735141D55C98BCD7D048F822AAA0DA1D9434309ABA1782F79C220773BB` | +| Local provenance SHA256 | `A1379DFE6BD4AB2301356A723007FBD248D51E612D35E1441622456EE7327AF3` | +| Full-regeneration CI | [38703254017](https://github.com/microsoft/win32metadata/actions/runs/38703254017), exact B9 producer, successful | +| Downloaded CI image SHA256 | `BF78829E239721F8DCCD865CBC1F15D3A9D8CD749826A169ADF2B9FF51C24CA0` | +| Final review receipt SHA256 | `317644536D5FDB1B9129E5F1137C2636C245944733126CB7DD79F2837CC42091` | + +Both images use all 48 exact declaration expectations at 24 existing enum-use +sites (10 parameters and 14 fields), with zero unknown or unused differences. +All 37,314 physical types are graded, and 7,791 enum identities and contents +are preserved. The downloaded CI image independently passes all 23 +physical/no-fallback/mutation cases and has the same declared surface as the +local image without allowances. Dedicated native, preparation and SDK runs +execute 45, 26 and 14 cases respectively without skips; 36 repeated +source/discovery inputs are identical. These overlapping counts are not a unique +test total. The artifacts and original receipts under +`artifacts\header-annotation-wave\batch3-final` and +`artifacts\header-annotation-wave\ci-final-38703254017` remain immutable. +Fresh consumer compatibility remains unverified. + +### Historical COM finding under the earlier policy -The proposed SecurityCenter/WinSat conversions are not admitted. Producer -`ab29038d22518c027d2cedab33ea747353ddd2d8` emitted a rejected image with SHA256 +The proposed SecurityCenter/WinSat conversions were excluded under the earlier, +narrower difference policy. Producer +`ab29038d22518c027d2cedab33ea747353ddd2d8` emitted the historically rejected image +with SHA256 `37CB3A49C657F9787CEC85749EBEFECCEC4C3BB9319070752FDFF7AFB3B7677C`. Its strict comparison found 28 additional parameter-flag changes: 16 in SecurityCenter and 12 in WinSat gain `RetVal` from existing native `[retval]` comments, for example `IWscProduct.get_ProductName.pVal` and `IProvideWinSATAssessmentInfo.get_Score.score`. -These changes are outside the approved representation categories. The three -COM header patches and opt-ins are removed and their authored facts restored; -neither native comments nor SAL/parser policy is changed to hide the finding. -The rejected image and exact difference log remain in +The behavior comes from the C# `HeaderAnnotationProcessor.HasRetvalComment` +implementation introduced in tooling commit +`b5b7b26ed09d648766f07449af48c64ef0e99d13`, not a new Clang feature. Enabling the +annotation path makes that existing C# lowering visible for these declarations. +No production suppression was added: the two whole migrations were excluded, +their three header patches and opt-ins were removed, and their authored facts +were restored. Native comments and SAL/parser behavior were not changed to hide +the finding. + +The general source-derived-annotation policy above resolves that earlier policy +objection. Faithful capture is acceptable; the exact metadata and consumer +effects should be classified and surfaced for review, not rejected merely to +retain OLD omissions. The historical image and exact difference log remain in `artifacts\header-annotation-wave\batch3`; the separate -`batch3-rejected-grade.json` receipt records the rejection. Successful -native/preparation controls and repeatability do not override this failed -metadata gate. Wsl and Xinput replace these candidates without widening allowed -differences; consumer compatibility remains unverified. +`batch3-rejected-grade.json` receipt still records the earlier rejection, not a +new successful grade. This documentation update neither re-enables those +migrations nor changes producer inputs or expectations. Wsl and Xinput remain +the completed batch-3 owners; fresh consumer compatibility remains unverified. Sens is also deferred, not migrated. Its existing logical `SENS_CONNECTION_TYPE` members encode `CONNECTION_LAN = 0` and `CONNECTION_WAN = 1`, whereas native `sens.h` defines them as 1 and 2. That needs a separate compatibility/design decision. No SDK value, metadata value, macro or alias is changed to force this candidate through the playbook. +Accepting existing native annotations is not approval to repair that logical +enum conflict or manufacture new enums or members. diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 7eb5c5fca..9f1214aba 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -15,12 +15,25 @@ run the prepared-header scrape/emission and exact diagnostic grade; separately report the consumer experience as measured or unverified. A known-difference entry is not authorization to add an API, enum family, or enum member. +Faithfully capturing existing SDK, SAL and MIDL annotations is always acceptable, +even when OLD omitted them. Classify their exact source-backed metadata and consumer +differences and surface meaningful changes for user review; do not suppress +native facts or reject/replace migrations merely to preserve OLD omissions. +This general rule is not a special `RetVal` allowance and does not authorize +invented API/type/ownership claims, arbitrary authored annotations, new logical +enum membership or automatic value repairs. Keep zero unknown and zero unused +expectations, not a blanket difference allowlist. + At a design boundary, capture one bounded reproducer, name the owner and smallest decision, and ask the user before expanding scope. Do not turn a partition pilot into parser work, consumer implementation, or new test infrastructure. For this -pilot the user chose to preserve existing logical member names and minimize the -winmd delta; fresh consumer replay is unverified, not an invitation to rebuild -another owner's checkout. +pilot the user chose to preserve existing logical member names and minimize +avoidable source breaks, not to suppress native annotations for a smaller +winmd delta. Fresh consumer replay is unverified, not an invitation to rebuild +another owner's checkout. The playbook records the +[historical COM finding and policy clarification](header-annotation-migration-playbook.md#historical-com-finding-under-the-earlier-policy); +SecurityCenter/WinSat remain outside the completed ten, and the Sens logical +value conflict still requires its own decision. | Current OLD-to-candidate review delta | Meaning | | --- | --- | @@ -275,13 +288,13 @@ SRM checks; neither is presented as a comprehensive typed metadata equivalence oracle. The ten approved Printing fixes belong to the tooling OLD baseline and must not appear as new WinHttp migration differences. -The WinHttp entries in `patches\HeaderAnnotations.expected-differences.txt` admit exactly 16 declaration differences: +The WinHttp entries in `patches\HeaderAnnotations.expected-differences.txt` grade exactly 16 declaration differences for this checkpoint: eight native integer use-site types and eight corresponding `AssociatedEnum` additions. Existing logical enum identities, member names, and values are -preserved. It -does not admit callback renames, import changes, dependent changes, additional -constants, or changed values. The image builder applies this grade before publishing -its provenance receipt. +preserved. This image has no callback renames, import changes, dependent changes, +additional constants or changed values. The image builder applies this exact +grade before publishing its provenance receipt; it is not a general prohibition +on faithfully capturing existing native annotations in future migrations. ## Original native-name candidate (immutable) @@ -469,7 +482,7 @@ and constants share one private root. Four actual-project controls cover once-before-consumers ordering, cache reuse, and stale-marker invalidation for every architecture. -| Current cleanup evidence | Identity | +| Isolated WinHttp cleanup evidence | Identity | | --- | --- | | Full image | `artifacts\winhttp-migration\new-review-cleanup\Windows.Win32.winmd` | | Image SHA256 | `C81BECE2DFE770979BEA3EE805E5B0CDD31EFAE6CD42546A5E1B632D1F8D389E` | @@ -490,3 +503,9 @@ remap files (389 frozen nonselected and four new selected files per extension). The original C7 and naming-preserved images and receipts remain unchanged. Fresh CsWin32 verification is still explicitly unverified; no consumer work is part of this cleanup. CI must be checked separately on the final published head. + +The [completed combined producer checkpoint](header-annotation-migration-playbook.md#completed-producer-checkpoint-b9-immutable) +is B9 (`b9fae9d6cb315a93cb342beb2e79a6aa33a64f5d`) and CI run `38703254017`. +Its images and original receipts remain pinned to that producer. Later +documentation-only policy updates do not change emission inputs or claim a new +code/image grade; their current-head checks follow repository CI policy. From d6f85159482f3f506216ccad3aca28a72c333067 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 15:54:38 -0700 Subject: [PATCH 22/57] Adopt canonical SupportedOS spellings with matched direct inputs Inherit tested tooling efc20826 and refresh the private prepared-header tree identity. Preserve all 119 existing OS facts as direct annotations for the same-tooling scope control; change no header preimages or authored semantic facts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- generation/WinSDK/patches/SdkHeaders.json | 2 +- .../um/magnification.annotations.patch | 38 +++++----- .../post-midl/um/psapi.annotations.patch | 54 ++++++------- .../um/timezoneapi.annotations.patch | 26 +++---- .../post-midl/um/tlhelp32.annotations.patch | 32 ++++---- .../post-midl/um/ual.annotations.patch | 8 +- .../post-midl/um/waasapi.annotations.patch | 2 +- .../um/windowsceip.annotations.patch | 2 +- .../post-midl/um/winhttp.last-error.patch | 56 +++++++------- .../post-midl/um/winhttp.logical-enums.patch | 2 +- .../post-midl/um/winhttp.supported-os.patch | 76 +++++++++---------- 11 files changed, 149 insertions(+), 149 deletions(-) diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 0a3905177..c7888a262 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "sdkPackageVersion": "10.0.26100.7705", "sourceStage": "post-midl", - "sourceGitTree": "77817f12308e29ec8bf77dc6fe56786e65ff9e08", + "sourceGitTree": "d3dc662e56c715c1e0c000a0300ff3088e9a9f17", "headers": [ { "path": "um\\winhttp.h", diff --git a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch index d0f81a613..001a050eb 100644 --- a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch @@ -13,47 +13,47 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h b/generat typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); // Public Functions -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagInitialize(); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagUninitialize(); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); -BOOL WINAPI MagSetWindowFilterList(HWND hwnd, DWORD dwFilterMode, int count, HWND *pHWND ); -int WINAPI MagGetWindowFilterList(HWND hwnd, DWORD *pdwFilterMode, int count, HWND *pHWND ); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +BOOL WINAPI MagSetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD dwFilterMode, int count, HWND *pHWND ); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +int WINAPI MagGetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD *pdwFilterMode, int count, HWND *pHWND ); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetImageScalingCallback(HWND hwnd, MagImageScalingCallback callback ); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ MagImageScalingCallback WINAPI MagGetImageScalingCallback(HWND hwnd ); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagGetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagSetFullscreenTransform(_In_ float magLevel, _In_ int xOffset, _In_ int yOffset); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetFullscreenTransform(_Out_ float *pMagLevel, _Out_ int *pxOffset, _Out_ int *pyOffset); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagSetFullscreenColorEffect(_In_ PMAGCOLOREFFECT pEffect); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetFullscreenColorEffect(_Out_ PMAGCOLOREFFECT pEffect); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ +_Win32_SetLastError_ BOOL WINAPI MagSetInputTransform(_In_ BOOL fEnabled, _In_ const LPRECT pRectSource, _In_ const LPRECT pRectDest); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetInputTransform(_Out_ BOOL *pfEnabled, _Out_ LPRECT pRectSource, _Out_ LPRECT pRectDest); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ BOOL WINAPI MagShowSystemCursor(_In_ BOOL fShowCursor); + +#ifdef WIN32METADATA diff --git a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch index ca21f0619..c58619bf6 100644 --- a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch @@ -14,7 +14,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #endif +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -25,7 +25,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -36,7 +36,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ +#endif BOOL @@ -57,7 +57,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -68,7 +68,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -79,7 +79,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS _Success_(return != 0) _Ret_range_(1, nSize) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -90,7 +90,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS _Success_(return != 0) _Ret_range_(1, nSize) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -101,7 +101,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS } MODULEINFO, *LPMODULEINFO; +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -112,7 +112,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -123,7 +123,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -134,7 +134,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -145,7 +145,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ +#endif BOOL @@ -156,7 +156,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -167,7 +167,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -178,7 +178,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #endif // !UNICODE +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -189,7 +189,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -200,7 +200,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -211,7 +211,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #endif // !UNICODE +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -222,7 +222,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -233,7 +233,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #endif +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -244,7 +244,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ +#endif BOOL @@ -255,7 +255,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #endif +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -266,7 +266,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -277,7 +277,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -288,7 +288,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL @@ -299,7 +299,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD @@ -310,7 +310,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS ); +#if PSAPI_VERSION == 1 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD diff --git a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch index 72aaf52af..124d2e08c 100644 --- a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch @@ -13,7 +13,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_Windows2000_ ++_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ BOOL WINAPI @@ -22,7 +22,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -31,7 +31,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -40,7 +40,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_Windows2000_ ++_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ BOOL WINAPI @@ -49,7 +49,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) -+_Windows_SupportedOS_Windows2000_ ++_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ DWORD WINAPI @@ -58,7 +58,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio ); WINBASEAPI -+_Windows_SupportedOS_Windows2000_ ++_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ BOOL WINAPI @@ -67,7 +67,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio #if (_WIN32_WINNT >= 0x0600) WINBASEAPI -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ BOOL WINAPI @@ -76,7 +76,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ DWORD WINAPI @@ -85,7 +85,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio #if (_WIN32_WINNT >= 0x0601) _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ BOOL WINAPI @@ -94,7 +94,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return == ERROR_SUCCESS) -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ DWORD WINAPI EnumDynamicTimeZoneInformation( @@ -102,7 +102,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return == ERROR_SUCCESS) -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ DWORD WINAPI GetDynamicTimeZoneInformationEffectiveYears( @@ -110,7 +110,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_Windows7_ ++_Win32_SupportedOS_Windows7_ +_Win32_SetLastError_ BOOL WINAPI @@ -119,7 +119,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio WINBASEAPI _Success_(return != FALSE) -+_Windows_SupportedOS_Windows7_ ++_Win32_SupportedOS_Windows7_ +_Win32_SetLastError_ BOOL WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch index 118b6ec88..19b700a93 100644 --- a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch @@ -13,7 +13,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W /****** Shapshot function **********************************************/ -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ HANDLE WINAPI @@ -27,7 +27,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W #define HF32_DEFAULT 1 // process's default heap #define HF32_SHARED 2 // is shared heap -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -36,7 +36,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPHEAPLIST32 lphl ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -54,7 +54,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W #define LF32_FREE 0x00000002 #define LF32_MOVEABLE 0x00000004 -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -63,7 +63,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W ULONG_PTR th32HeapID ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -71,7 +71,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPHEAPENTRY32 lphe ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ BOOL WINAPI Toolhelp32ReadProcessMemory( @@ -79,7 +79,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W typedef PROCESSENTRY32W * PPROCESSENTRY32W; typedef PROCESSENTRY32W * LPPROCESSENTRY32W; -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -88,7 +88,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPPROCESSENTRY32W lppe ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -97,7 +97,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -106,7 +106,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPPROCESSENTRY32 lppe ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -115,7 +115,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W typedef THREADENTRY32 * PTHREADENTRY32; typedef THREADENTRY32 * LPTHREADENTRY32; -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -124,7 +124,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPTHREADENTRY32 lpte ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -133,7 +133,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W typedef MODULEENTRY32W * PMODULEENTRY32W; typedef MODULEENTRY32W * LPMODULEENTRY32W; -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -142,7 +142,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPMODULEENTRY32W lpme ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -151,7 +151,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W // in th32ProcessID's process context. // -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI @@ -160,7 +160,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W LPMODULEENTRY32 lpme ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch index 21ebc904c..45eccc459 100644 --- a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch @@ -13,25 +13,25 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h b/generation/WinSDK WCHAR UserName[MAX_PATH]; } UAL_DATA_BLOB, *PUAL_DATA_BLOB; -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ HRESULT WINAPI UalStart( _In_ PUAL_DATA_BLOB Data); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ HRESULT WINAPI UalStop( _In_ PUAL_DATA_BLOB Data); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ HRESULT WINAPI UalInstrument( _In_ PUAL_DATA_BLOB Data); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ HRESULT WINAPI UalRegisterProduct( diff --git a/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch index 86020fadd..af0962525 100644 --- a/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch @@ -13,7 +13,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h b/generation/Wi #if defined(__cplusplus) && !defined(CINTERFACE) MIDL_INTERFACE("2347bbef-1a3b-45a4-902d-3e09c269b45e") -+ _Windows_SupportedOS_15063_ ++ _Win32_SupportedOS_15063_ IWaaSAssessor : public IUnknown { public: diff --git a/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch b/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch index 98b272d72..344ff77d3 100644 --- a/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch @@ -13,7 +13,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h b/generatio #if (NTDDI_VERSION >= NTDDI_WIN8) -+_Windows_SupportedOS_Windows81_ ++_Win32_SupportedOS_Windows81_ BOOL WINAPI CeipIsOptedIn(); diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch index a9e18f2ad..f22e1912e 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch @@ -4,7 +4,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1586,6 +1586,7 @@ // - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI WINHTTP_STATUS_CALLBACK @@ -12,7 +12,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1598,6 +1599,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -20,7 +20,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1608,6 +1610,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -28,7 +28,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1618,6 +1621,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -36,7 +36,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1631,6 +1635,7 @@ _Success_(return != FALSE) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -44,14 +44,14 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1649,11 +1654,14 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); @@ -59,7 +59,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1663,6 +1671,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET @@ -67,7 +67,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1676,6 +1685,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -75,7 +75,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1685,6 +1695,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET @@ -83,7 +83,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1697,6 +1708,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -91,7 +91,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1723,6 +1735,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -99,7 +99,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1735,6 +1748,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -107,7 +107,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1746,6 +1760,7 @@ _Success_(return != FALSE) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -115,7 +115,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1758,6 +1773,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -123,7 +123,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1785,6 +1801,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -131,7 +131,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1826,6 +1843,7 @@ // - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET @@ -139,7 +139,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1841,6 +1859,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -147,7 +147,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1868,6 +1887,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -155,7 +155,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1883,6 +1903,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -163,7 +163,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1904,6 +1925,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -171,7 +171,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1938,6 +1960,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -179,7 +179,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1949,6 +1972,7 @@ _Success_(return != FALSE) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -187,7 +187,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -2005,6 +2029,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -195,7 +195,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -2015,6 +2040,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -203,7 +203,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -2108,6 +2134,7 @@ ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL @@ -211,7 +211,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -2215,6 +2242,7 @@ #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - _Windows_SupportedOS_Windows8_ + _Win32_SupportedOS_Windows8_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch index 6b2fe86db..dbb7c5d68 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch @@ -72,7 +72,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi + IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags ); - _Windows_SupportedOS_WindowsXP_ + _Win32_SupportedOS_WindowsXP_ @@ -2594,6 +2594,102 @@ #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch index 540effe4d..c816d1cba 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch @@ -13,7 +13,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi // prototypes // -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI @@ -21,7 +21,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN DWORD_PTR dwReserved ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -29,7 +29,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -37,7 +37,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_ SYSTEMTIME *pst // output in GMT time ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -45,7 +45,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi ); _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -53,12 +53,12 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ @@ -66,7 +66,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI @@ -74,7 +74,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_ DWORD dwFlags ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -82,7 +82,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN HINTERNET hInternet ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI @@ -90,7 +90,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN DWORD dwReserved ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -98,7 +98,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_reads_bytes_opt_(cbProperty) PVOID pvProperty ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -106,7 +106,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi OUT LPDWORD lpdwNumberOfBytesWritten ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -114,7 +114,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi ); _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -122,7 +122,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN OUT LPDWORD lpdwBufferLength ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -130,7 +130,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_ DWORD dwBufferLength ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -138,7 +138,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi // prototypes // -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI HINTERNET WINAPI @@ -146,7 +146,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN DWORD dwFlags ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -154,7 +154,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -162,7 +162,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN DWORD_PTR dwContext ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -170,7 +170,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi IN LPVOID pAuthParams ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -178,7 +178,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -186,7 +186,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi ); _Success_(return != FALSE) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -194,7 +194,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -202,7 +202,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -210,7 +210,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi OUT WINHTTP_PROXY_INFO * pProxyInfo ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -218,7 +218,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_ HINTERNET *phResolver ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -226,7 +226,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_opt_ DWORD_PTR pContext ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -234,7 +234,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI VOID WINAPI @@ -242,7 +242,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -250,7 +250,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_ DWORD dwFlags ); -+_Windows_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI @@ -258,7 +258,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI HINTERNET WINAPI @@ -266,7 +266,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_opt_ DWORD_PTR pContext ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -274,7 +274,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_ DWORD dwBufferLength ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -282,7 +282,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -290,7 +290,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI @@ -298,7 +298,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength ); -+_Windows_SupportedOS_Windows8_ ++_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD WINAPI From a8e192627d90f71f8de080efb38a09f5bc67fb1e Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 16:24:12 -0700 Subject: [PATCH 23/57] Require canonical OS spelling and exact accepted-image equivalence Pin the immutable B9 image and compare every physical type without normalization or scope allowances. Keep the existing exact OLD and tooling-control gates intact. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinHttpMigrationTests.cs | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index de9d72a63..8f20df61a 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -7,6 +7,7 @@ using System.Reflection.Metadata; using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; +using System.Security.Cryptography; using System.Text.Json; using Xunit; using Xunit.Abstractions; @@ -100,6 +101,15 @@ private static readonly (string Owner, string Member, string Enum, string Native public WinHttpMigrationTests(ITestOutputHelper output) => this.output = output; + [Fact] + public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() + { + string root = Path.Combine(RepositoryRoot, "generation", "WinSDK", "patches"); + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "SdkHeaders.json"))); + foreach (string patch in recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString())) + Assert.DoesNotContain("_Windows_SupportedOS_", File.ReadAllText(Path.Combine(root, patch))); + } + [MigrationFact] public void CompleteNewImageClosesConstructorsAndFrozenOldDefectIsExplicit() { @@ -167,6 +177,28 @@ public void EveryPhysicalTypeHasOnlyReviewedEnumUseSiteChanges() this.output.WriteLine($"All {before.Count} physical types graded: {unchanged} unchanged; only {used.Count} exact native-type/AssociatedEnum sites normalized."); } + [MigrationFact("WINHTTP_MIGRATION_ACCEPTED")] + public void ScopedSupportedOSPreservesEveryAcceptedPhysicalType() + { + string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_ACCEPTED"); + Assert.Equal("A0C321735141D55C98BCD7D048F822AAA0DA1D9434309ABA1782F79C220773BB", + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); + using var accepted = Open("WINHTTP_MIGRATION_ACCEPTED"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + var before = Types(accepted.Reader); + var after = Types(current.Reader); + Assert.Equal(37314, before.Count); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + foreach (var entry in before) + { + string expected = SnapshotType(accepted.Reader, entry.Value); + string actual = SnapshotType(current.Reader, after[entry.Key]); + Assert.True(expected == actual, + $"Scoped SupportedOS changed accepted metadata in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); + } + this.output.WriteLine($"All {before.Count} accepted B9 physical types unchanged; no scope-adoption normalization or allowances."); + } + [MigrationTheory] [InlineData(1)] [InlineData(2)] @@ -853,12 +885,14 @@ public string GetTypeFromSpecification(MetadataReader reader, object context, Ty public sealed class MigrationFactAttribute : FactAttribute { - public MigrationFactAttribute() + public MigrationFactAttribute(string additionalFixture = null) { if (Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_OLD") == null || Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_NEW") == null || Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_TOOLING_CONTROL") == null) Skip = "Set WINHTTP_MIGRATION_OLD, WINHTTP_MIGRATION_NEW and WINHTTP_MIGRATION_TOOLING_CONTROL to the pinned full-image fixtures."; + else if (additionalFixture != null && Environment.GetEnvironmentVariable(additionalFixture) == null) + Skip = "Set " + additionalFixture + " to the pinned full-image fixture."; } } From a18ba84473ceedf53bfe8e3a94a2bc5c6eb962cf Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 17:05:44 -0700 Subject: [PATCH 24/57] Factor existing OS facts into bounded SupportedOS scopes Replace 100 existing direct facts with 29 same-header defaults while retaining 19 direct facts, including GetWsChangesEx's explicit Vista override. Exclude unannotated declarations, records, callbacks, enums and PsApi2. Require exact physical equality to both the pinned B9 image and the same-tooling canonical-direct control, with native field-array inference left default-off. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 54 ++++ docs/winhttp-header-annotations.md | 14 +- .../um/magnification.annotations.patch | 27 +- .../post-midl/um/psapi.annotations.patch | 95 ++++--- .../um/timezoneapi.annotations.patch | 99 ++++--- .../post-midl/um/tlhelp32.annotations.patch | 100 ++++--- .../post-midl/um/ual.annotations.patch | 28 +- .../um/winhttp.interior-pointers.patch | 2 +- .../post-midl/um/winhttp.last-error.patch | 104 ++++--- .../post-midl/um/winhttp.logical-enums.patch | 10 +- .../um/winhttp.port-constant-types.patch | 2 +- .../post-midl/um/winhttp.supported-os.patch | 253 +++++------------- .../WinHttpMigrationTests.cs | 40 ++- 13 files changed, 429 insertions(+), 399 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 230c85a36..1360b1b81 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -93,6 +93,60 @@ Remove matching authored fallback rather than annotating on top of it. SDK-derived bindings and discoveries are not semantic fallback. Keep import module/entrypoint/flags checks even when no header import override is needed. +### Factor SupportedOS facts without broadening coverage + +Use only the canonical `_Win32_SupportedOS_*_` declaration macros and +`_Win32_SupportedOS_BEGIN_(os)` / `_Win32_SupportedOS_END_()` controls from the +[adopted contract](https://github.com/microsoft/win32metadata/blob/733477d4ecc3ea3e6e979a9ce26930df62d065af/docs/copilot/plans/shift-left-annotation-spec.md#scoped-supportedos-defaults). +There are no public `_Windows_` aliases. An explicit declaration fact wins over +all defaults; otherwise the innermost applicable scope wins, not the greatest +version. A scope applies only to eligible declarations lexically within that same +physical header and include instance. Includes do not inherit a caller's default; +a container's annotation does not imply inheritance by its methods or nested +types. Balance controls on every active preprocessing path. + +Inventory existing facts before grouping them. End scopes before unannotated +declarations, records, typedefs and metadata-only enums; retain direct annotations +where grouping would add a floor. This adoption factors exactly the completed +B9 producer's 119 authored OS facts, not every declaration in an annotated header: + +| Owner | Existing floors | Scopes | Direct annotations retained | +| --- | --- | --- | --- | +| WinHttp | 38 | 10 | 4 | +| CEIP | 1 | 0 | 1 | +| ApplicationVerifier | 0 | 0 | 0 | +| MagApi | 19 | 2 | 0 | +| PsApi1 | 27 | 4 | 11 | +| Time | 13 | 5 | 1 | +| Ual | 4 | 1 | 0 | +| ToolHelp | 16 | 7 | 1 | +| UpdateAssessment | 1 | 0 | 1 | +| Wsl / Xinput | 0 | 0 | 0 | + +The 29 scopes cover 101 existing function declarations: 100 use their default, +and `GetWsChangesEx` retains its explicit Vista floor inside an XP scope. +PsApi1 controls remain conditional on `PSAPI_VERSION == 1`; PsApi2 stays +unconverted and unchanged. Time's scopes stop before the unannotated `Local*` +functions. ToolHelp's scopes exclude every record/typedef block. CEIP and +`IWaaSAssessor` retain direct annotations rather than assigning floors to +additional declarations or COM methods. + +The required net metadata change from this factoring step is zero versus the +immutable B9 surface, in addition to the existing exact OLD-to-NEW grade. +Compare all physical type snapshots without scope-specific normalization or +allowances. Pin a fresh producer/image and matched frozen-input tooling control +after adopting the tested tooling dependency; never relabel B9 receipts or infer +semantic equivalence from line-count reduction. + +Build the same-tooling canonical-direct control before factoring, then compare +the scoped candidate with both that control and B9. Keep +`--nativeFieldArrayInfo` absent/default-off in this OS-only workflow. Its separate, +SDK-wide source inventory and activation must not be hidden inside OS-scoping +expectations. The rejected `efc20826` frozen-input image and its 563 exact +field-annotation differences remain diagnostic evidence, not admitted changes; +the normal `43af342a` follow-up restores the default-off boundary and excludes +scalar access spans from array inference. + ## 4. Pin OLD, tooling control and NEW separately Freeze a complete OLD image and generated-source/discovery closure from one SDK diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 9f1214aba..07ce9a3cd 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -93,7 +93,7 @@ entries remain in the generated mapping. | Functional fact | Current authority | Authored legacy input removed | | --- | --- | --- | | 59 DLL bindings | SDK `.lib` scan in generated `libMappings.rsp` | None: derived scan entries remain; there is no WinHttp header override | -| 38 OS floors: 27 XP, 11 Windows 8 | Fixed `_Windows_SupportedOS_*_` macros | All 38 WinHttp `supportedOS.rsp` rows | +| 38 OS floors: 27 XP, 11 Windows 8 | Canonical `_Win32_SupportedOS_*_` direct facts and narrowly bounded `_Win32_SupportedOS_BEGIN_` / `_Win32_SupportedOS_END_` defaults | All 38 WinHttp `supportedOS.rsp` rows | | 28 thread-last-error contracts | `_Win32_SetLastError_` | All 28 WinHttp `WithSetLastError.rsp` rows | | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | | Five logical enums, 21 emitted members, eight uses | Guarded native enums plus `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | @@ -118,6 +118,16 @@ MicrosoftDocs/sdk-api revision `656e9656bfaef34dd29cd7ee9e1146aec17e924c`. The XP annotations retain the conservative in-box floor rather than asserting Windows 2000 redistributable availability as an unconditional OS guarantee. +The scoped-OS adoption factors those same 38 WinHttp facts into ten lexical +scopes and four direct annotations; it must not add floors to unannotated +`Ex`/newer APIs, callback aliases, records or enums. All public direct and scoped +names use `_Win32_`, without `_Windows_` aliases. Explicit facts override scoped +defaults, and the innermost same-header/include-instance default wins otherwise; +there is no include leakage or implicit container inheritance. The +[playbook's scope inventory](header-annotation-migration-playbook.md#factor-supportedos-facts-without-broadening-coverage) +requires zero net metadata changes from the immutable completed B9 image, +separately from the unchanged 48-difference combined OLD-to-NEW grade. + There are no emitted-scope ownership/invalid-value `autoTypes.json` entries, function-pointer fixups, or manual declarations to migrate. Native `HINTERNET` remains `void*`; this pilot neither fabricates a handle nor claims ownership @@ -243,6 +253,8 @@ Install-VsDevShell $env:WINHTTP_MIGRATION_OLD = (Resolve-Path .\artifacts\winhttp-migration\old\Windows.Win32.winmd).Path $env:WINHTTP_MIGRATION_NEW = (Resolve-Path .\artifacts\header-annotation-wave\reproduction\Windows.Win32.winmd).Path $env:WINHTTP_MIGRATION_TOOLING_CONTROL = (Resolve-Path .\artifacts\header-annotation-wave\tooling-control-reproduction\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_ACCEPTED = (Resolve-Path .\artifacts\header-annotation-wave\batch3-final\Windows.Win32.winmd).Path +$env:WINHTTP_MIGRATION_DIRECT_CONTROL = (Resolve-Path .\artifacts\supported-os-scopes\direct-control-a8e19262\Windows.Win32.winmd).Path $env:WINHTTP_PREPARED_HEADERS = (Get-Content .\artifacts\header-annotation-wave\reproduction\selection\obj\prepared-sdk.txt -Raw).Trim() dotnet test tests\Win32MetadataScraperTests -c Release ` --filter "FullyQualifiedName~PreparedSdkHeadersTests|FullyQualifiedName~WinHttpMigrationTests|FullyQualifiedName~WinHttpNativeControlTests" ` diff --git a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch index 001a050eb..656378b28 100644 --- a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch @@ -9,52 +9,37 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h b/generat #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -72,26 +73,60 @@ +@@ -72,6 +73,7 @@ typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); // Public Functions -+_Win32_SupportedOS_WindowsVista_ ++_Win32_SupportedOS_BEGIN_(WindowsVista) BOOL WINAPI MagInitialize(); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagUninitialize(); -+_Win32_SupportedOS_WindowsVista_ - BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); -+_Win32_SupportedOS_WindowsVista_ +@@ -79,19 +81,37 @@ BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); -BOOL WINAPI MagSetWindowFilterList(HWND hwnd, DWORD dwFilterMode, int count, HWND *pHWND ); -int WINAPI MagGetWindowFilterList(HWND hwnd, DWORD *pdwFilterMode, int count, HWND *pHWND ); -+_Win32_SupportedOS_WindowsVista_ +BOOL WINAPI MagSetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD dwFilterMode, int count, HWND *pHWND ); -+_Win32_SupportedOS_WindowsVista_ +int WINAPI MagGetWindowFilterList(HWND hwnd, _Win32_AssociatedEnum_(MW_FILTERMODE) DWORD *pdwFilterMode, int count, HWND *pHWND ); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetImageScalingCallback(HWND hwnd, MagImageScalingCallback callback ); -+_Win32_SupportedOS_WindowsVista_ MagImageScalingCallback WINAPI MagGetImageScalingCallback(HWND hwnd ); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagSetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); -+_Win32_SupportedOS_WindowsVista_ BOOL WINAPI MagGetColorEffect(HWND hwnd, PMAGCOLOREFFECT pEffect); -+_Win32_SupportedOS_Windows8_ ++_Win32_SupportedOS_END_() ++_Win32_SupportedOS_BEGIN_(Windows8) BOOL WINAPI MagSetFullscreenTransform(_In_ float magLevel, _In_ int xOffset, _In_ int yOffset); -+_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetFullscreenTransform(_Out_ float *pMagLevel, _Out_ int *pxOffset, _Out_ int *pyOffset); -+_Win32_SupportedOS_Windows8_ BOOL WINAPI MagSetFullscreenColorEffect(_In_ PMAGCOLOREFFECT pEffect); -+_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetFullscreenColorEffect(_Out_ PMAGCOLOREFFECT pEffect); -+_Win32_SupportedOS_Windows8_ +_Win32_SetLastError_ BOOL WINAPI MagSetInputTransform(_In_ BOOL fEnabled, _In_ const LPRECT pRectSource, _In_ const LPRECT pRectDest); -+_Win32_SupportedOS_Windows8_ BOOL WINAPI MagGetInputTransform(_Out_ BOOL *pfEnabled, _Out_ LPRECT pRectSource, _Out_ LPRECT pRectDest); -+_Win32_SupportedOS_Windows8_ BOOL WINAPI MagShowSystemCursor(_In_ BOOL fShowCursor); ++_Win32_SupportedOS_END_() + +#ifdef WIN32METADATA +#pragma push_macro("MW_FILTERMODE_EXCLUDE") diff --git a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch index c58619bf6..9df7e85b7 100644 --- a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch @@ -57,45 +57,52 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ +#endif DWORD WINAPI GetModuleBaseNameA( -@@ -176,6 +196,10 @@ +@@ -176,6 +196,9 @@ _In_ DWORD nSize ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetModuleBaseNameW( -@@ -193,6 +217,10 @@ +@@ -193,6 +216,9 @@ _Success_(return != 0) _Ret_range_(1, nSize) +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetModuleFileNameExA( -@@ -206,6 +234,10 @@ +@@ -206,6 +232,9 @@ _Success_(return != 0) _Ret_range_(1, nSize) +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetModuleFileNameExW( +@@ -216,6 +245,9 @@ + LPWSTR lpFilename, + _In_ DWORD nSize + ); ++#if PSAPI_VERSION == 1 ++_Win32_SupportedOS_END_() ++#endif + + #ifdef UNICODE + #define GetModuleFileNameEx GetModuleFileNameExW @@ -229,6 +261,10 @@ LPVOID EntryPoint; } MODULEINFO, *LPMODULEINFO; @@ -134,7 +141,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ +#endif BOOL @@ -151,84 +158,87 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS BOOL WINAPI GetWsChangesEx( -@@ -289,6 +341,10 @@ +@@ -289,6 +341,9 @@ _Inout_ PDWORD cb ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetMappedFileNameW ( -@@ -298,6 +354,10 @@ +@@ -298,6 +353,9 @@ _In_ DWORD nSize ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetMappedFileNameA ( -@@ -313,6 +373,10 @@ +@@ -313,6 +371,9 @@ #define GetMappedFileName GetMappedFileNameA #endif // !UNICODE +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL WINAPI EnumDeviceDrivers ( -@@ -321,6 +385,10 @@ +@@ -321,6 +382,9 @@ _Out_ LPDWORD lpcbNeeded ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetDeviceDriverBaseNameA ( -@@ -329,6 +397,10 @@ +@@ -329,6 +393,9 @@ _In_ DWORD nSize ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetDeviceDriverBaseNameW ( -@@ -343,6 +415,10 @@ +@@ -343,6 +410,9 @@ #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA #endif // !UNICODE +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetDeviceDriverFileNameA ( -@@ -351,6 +427,10 @@ +@@ -351,6 +421,9 @@ _In_ DWORD nSize ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetDeviceDriverFileNameW ( -@@ -445,6 +525,10 @@ +@@ -358,6 +431,9 @@ + _Out_writes_(nSize) LPWSTR lpFilename, + _In_ DWORD nSize + ); ++#if PSAPI_VERSION == 1 ++_Win32_SupportedOS_END_() ++#endif + + #ifdef UNICODE + #define GetDeviceDriverFileName GetDeviceDriverFileNameW +@@ -445,6 +521,10 @@ #pragma warning(default:4201) #endif @@ -239,7 +249,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS BOOL WINAPI QueryWorkingSet( -@@ -453,6 +537,10 @@ +@@ -453,6 +533,10 @@ _In_ DWORD cb ); @@ -250,7 +260,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS BOOL WINAPI QueryWorkingSetEx( -@@ -517,6 +605,10 @@ +@@ -517,6 +601,10 @@ #endif @@ -261,7 +271,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS BOOL WINAPI GetProcessMemoryInfo ( -@@ -548,6 +640,10 @@ +@@ -548,6 +636,10 @@ DWORD ThreadCount; } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; @@ -272,50 +282,67 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinS BOOL WINAPI GetPerformanceInfo ( -@@ -573,6 +669,10 @@ +@@ -573,6 +665,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ +#endif BOOL WINAPI EnumPageFilesW ( -@@ -580,6 +680,10 @@ +@@ -580,12 +676,18 @@ LPVOID pContext ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL WINAPI EnumPageFilesA ( -@@ -601,6 +705,10 @@ + PENUM_PAGE_FILE_CALLBACKA pCallBackRoutine, + LPVOID pContext + ); ++#if PSAPI_VERSION == 1 ++_Win32_SupportedOS_END_() ++#endif + + #ifdef UNICODE + #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW +@@ -601,6 +703,10 @@ #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ +#endif DWORD WINAPI GetProcessImageFileNameA ( -@@ -609,6 +717,10 @@ +@@ -609,6 +715,9 @@ _In_ DWORD nSize ); +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif DWORD WINAPI GetProcessImageFileNameW ( +@@ -616,6 +725,9 @@ + _Out_writes_(nSize) LPWSTR lpImageFileName, + _In_ DWORD nSize + ); ++#if PSAPI_VERSION == 1 ++_Win32_SupportedOS_END_() ++#endif + + #ifdef UNICODE + #define GetProcessImageFileName GetProcessImageFileNameW @@ -630,6 +742,28 @@ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion diff --git a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch index 124d2e08c..3b0146401 100644 --- a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch @@ -18,109 +18,130 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generatio BOOL WINAPI SystemTimeToTzSpecificLocalTime( -@@ -66,6 +69,8 @@ +@@ -64,8 +67,10 @@ + _Out_ LPSYSTEMTIME lpLocalTime + ); - WINBASEAPI - _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsXP_ +-WINBASEAPI +-_Success_(return != FALSE) ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++WINBASEAPI ++_Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI TzSpecificLocalTimeToSystemTime( -@@ -76,6 +81,8 @@ +@@ -76,15 +81,19 @@ WINBASEAPI _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI FileTimeToSystemTime( -@@ -85,6 +92,8 @@ - - WINBASEAPI - _Success_(return != FALSE) -+_Win32_SupportedOS_Windows2000_ + _In_ CONST FILETIME* lpFileTime, + _Out_ LPSYSTEMTIME lpSystemTime + ); +- +-WINBASEAPI +-_Success_(return != FALSE) ++_Win32_SupportedOS_END_() ++ ++_Win32_SupportedOS_BEGIN_(Windows2000) ++WINBASEAPI ++_Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI SystemTimeToFileTime( -@@ -94,6 +103,8 @@ +@@ -94,6 +103,7 @@ WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) -+_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ DWORD WINAPI GetTimeZoneInformation( -@@ -101,6 +112,8 @@ +@@ -101,15 +111,19 @@ ); WINBASEAPI -+_Win32_SupportedOS_Windows2000_ +_Win32_SetLastError_ BOOL WINAPI SetTimeZoneInformation( -@@ -110,6 +123,8 @@ + _In_ CONST TIME_ZONE_INFORMATION* lpTimeZoneInformation + ); +- ++_Win32_SupportedOS_END_() ++ ++_Win32_SupportedOS_BEGIN_(WindowsVista) #if (_WIN32_WINNT >= 0x0600) WINBASEAPI -+_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ BOOL WINAPI SetDynamicTimeZoneInformation( -@@ -122,6 +137,8 @@ +@@ -122,6 +136,7 @@ WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) -+_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ DWORD WINAPI GetDynamicTimeZoneInformation( -@@ -133,6 +150,8 @@ +@@ -133,6 +148,7 @@ #if (_WIN32_WINNT >= 0x0601) _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsVista_ +_Win32_SetLastError_ BOOL WINAPI GetTimeZoneInformationForYear( -@@ -149,6 +168,7 @@ +@@ -142,11 +158,13 @@ + ); - WINBASEAPI - _Success_(return == ERROR_SUCCESS) -+_Win32_SupportedOS_Windows8_ - DWORD - WINAPI - EnumDynamicTimeZoneInformation( -@@ -158,6 +178,7 @@ + #endif // _WIN32_WINNT >= 0x0601 ++_Win32_SupportedOS_END_() + + // end_1_0 + #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) + ++_Win32_SupportedOS_BEGIN_(Windows8) WINBASEAPI _Success_(return == ERROR_SUCCESS) -+_Win32_SupportedOS_Windows8_ DWORD - WINAPI - GetDynamicTimeZoneInformationEffectiveYears( -@@ -168,6 +189,8 @@ - - WINBASEAPI - _Success_(return != FALSE) -+_Win32_SupportedOS_Windows7_ +@@ -165,9 +183,12 @@ + _Out_ LPDWORD FirstYear, + _Out_ LPDWORD LastYear + ); +- +-WINBASEAPI +-_Success_(return != FALSE) ++_Win32_SupportedOS_END_() ++ ++_Win32_SupportedOS_BEGIN_(Windows7) ++WINBASEAPI ++_Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI SystemTimeToTzSpecificLocalTimeEx( -@@ -178,6 +201,8 @@ +@@ -178,6 +199,7 @@ WINBASEAPI _Success_(return != FALSE) -+_Win32_SupportedOS_Windows7_ +_Win32_SetLastError_ BOOL WINAPI TzSpecificLocalTimeToSystemTimeEx( +@@ -185,6 +207,7 @@ + _In_ CONST SYSTEMTIME* lpLocalTime, + _Out_ LPSYSTEMTIME lpUniversalTime + ); ++_Win32_SupportedOS_END_() + + #endif /* (_WIN32_WINNT >= _WIN32_WINNT_WIN8) */ + diff --git a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch index 19b700a93..92efee32a 100644 --- a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch @@ -27,20 +27,26 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W #define HF32_DEFAULT 1 // process's default heap #define HF32_SHARED 2 // is shared heap -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Heap32ListFirst( -@@ -85,6 +90,8 @@ +@@ -85,12 +90,14 @@ LPHEAPLIST32 lphl ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Heap32ListNext( + HANDLE hSnapshot, + LPHEAPLIST32 lphl + ); ++_Win32_SupportedOS_END_() + + typedef struct tagHEAPENTRY32 + { @@ -98,7 +105,7 @@ HANDLE hHandle; // Handle of this heap block ULONG_PTR dwAddress; // Linear address of start of block @@ -54,118 +60,148 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/W #define LF32_FREE 0x00000002 #define LF32_MOVEABLE 0x00000004 -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Heap32First( -@@ -121,12 +130,15 @@ +@@ -121,6 +130,7 @@ ULONG_PTR th32HeapID ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Heap32Next( - LPHEAPENTRY32 lphe +@@ -136,6 +146,7 @@ + SIZE_T cbRead, + SIZE_T* lpNumberOfBytesRead ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - Toolhelp32ReadProcessMemory( -@@ -155,6 +167,8 @@ + /***** Process walking *************************************************/ + +@@ -155,6 +166,8 @@ typedef PROCESSENTRY32W * PPROCESSENTRY32W; typedef PROCESSENTRY32W * LPPROCESSENTRY32W; -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Process32FirstW( -@@ -162,6 +176,8 @@ +@@ -162,12 +175,14 @@ LPPROCESSENTRY32W lppe ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Process32NextW( -@@ -185,6 +201,8 @@ + HANDLE hSnapshot, + LPPROCESSENTRY32W lppe + ); ++_Win32_SupportedOS_END_() + + typedef struct tagPROCESSENTRY32 + { +@@ -185,6 +200,8 @@ typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Process32First( -@@ -192,6 +210,8 @@ +@@ -192,12 +209,14 @@ LPPROCESSENTRY32 lppe ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Process32Next( -@@ -222,6 +242,8 @@ + HANDLE hSnapshot, + LPPROCESSENTRY32 lppe + ); ++_Win32_SupportedOS_END_() + + #ifdef UNICODE + #define Process32First Process32FirstW +@@ -222,6 +241,8 @@ typedef THREADENTRY32 * PTHREADENTRY32; typedef THREADENTRY32 * LPTHREADENTRY32; -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Thread32First( -@@ -229,6 +251,8 @@ +@@ -229,12 +250,14 @@ LPTHREADENTRY32 lpte ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Thread32Next( -@@ -254,6 +278,8 @@ + HANDLE hSnapshot, + LPTHREADENTRY32 lpte + ); ++_Win32_SupportedOS_END_() + + /***** Module walking *************************************************/ + +@@ -254,6 +277,8 @@ typedef MODULEENTRY32W * PMODULEENTRY32W; typedef MODULEENTRY32W * LPMODULEENTRY32W; -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Module32FirstW( -@@ -261,6 +287,8 @@ +@@ -261,12 +286,14 @@ LPMODULEENTRY32W lpme ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Module32NextW( -@@ -289,6 +317,8 @@ + HANDLE hSnapshot, + LPMODULEENTRY32W lpme + ); ++_Win32_SupportedOS_END_() + + typedef struct tagMODULEENTRY32 + { +@@ -289,6 +316,8 @@ // in th32ProcessID's process context. // -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Module32First( -@@ -296,6 +326,8 @@ +@@ -296,12 +325,14 @@ LPMODULEENTRY32 lpme ); -+_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ BOOL WINAPI Module32Next( -@@ -311,6 +343,58 @@ + HANDLE hSnapshot, + LPMODULEENTRY32 lpme + ); ++_Win32_SupportedOS_END_() + + #ifdef UNICODE + #define Module32First Module32FirstW +@@ -311,6 +342,58 @@ #define LPMODULEENTRY32 LPMODULEENTRY32W #endif // !UNICODE diff --git a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch index 45eccc459..1ceacc394 100644 --- a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch +++ b/generation/WinSDK/patches/post-midl/um/ual.annotations.patch @@ -9,29 +9,19 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h b/generation/WinSDK #include #if defined (_MSC_VER) -@@ -33,21 +34,25 @@ +@@ -33,6 +34,7 @@ WCHAR UserName[MAX_PATH]; } UAL_DATA_BLOB, *PUAL_DATA_BLOB; -+_Win32_SupportedOS_Windows8_ ++_Win32_SupportedOS_BEGIN_(Windows8) HRESULT WINAPI UalStart( - _In_ PUAL_DATA_BLOB Data); +@@ -54,6 +56,7 @@ + _In_z_ const WCHAR* wszProductName, + _In_z_ const WCHAR* wszRoleName, + _In_z_ const WCHAR* wszGuid); ++_Win32_SupportedOS_END_() + + #endif /* NTDDI_VERSION >= NTDDI_WIN8 */ -+_Win32_SupportedOS_Windows8_ - HRESULT - WINAPI - UalStop( - _In_ PUAL_DATA_BLOB Data); - -+_Win32_SupportedOS_Windows8_ - HRESULT - WINAPI - UalInstrument( - _In_ PUAL_DATA_BLOB Data); - -+_Win32_SupportedOS_Windows8_ - HRESULT - WINAPI - UalRegisterProduct( diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch index ec89f45ff..580d59e96 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch @@ -1,7 +1,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1999,7 +1999,7 @@ +@@ -1989,7 +1989,7 @@ _In_ UINT uiCodePage, _Inout_opt_ PDWORD pdwIndex, _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch index f22e1912e..9e1bd3caf 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch @@ -4,203 +4,201 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi @@ -1586,6 +1586,7 @@ // - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1598,6 +1599,7 @@ +@@ -1597,6 +1598,7 @@ + IN DWORD_PTR dwReserved ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1608,6 +1610,7 @@ +@@ -1606,6 +1608,7 @@ + _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1618,6 +1621,7 @@ +@@ -1615,6 +1618,7 @@ + _Out_ SYSTEMTIME *pst // output in GMT time ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1631,6 +1635,7 @@ +@@ -1627,6 +1631,7 @@ + ); _Success_(return != FALSE) - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1649,11 +1654,14 @@ +@@ -1646,9 +1651,12 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); + _Win32_SupportedOS_END_() - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -1663,6 +1671,7 @@ +@@ -1659,6 +1667,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1676,6 +1685,7 @@ +@@ -1671,6 +1680,7 @@ + _In_ DWORD dwFlags ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1685,6 +1695,7 @@ +@@ -1679,6 +1689,7 @@ + IN HINTERNET hInternet ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1697,6 +1708,7 @@ +@@ -1690,6 +1701,7 @@ + IN DWORD dwReserved ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1723,6 +1735,7 @@ +@@ -1717,6 +1729,7 @@ ); - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1735,6 +1748,7 @@ +@@ -1728,6 +1741,7 @@ + OUT LPDWORD lpdwNumberOfBytesWritten ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1746,6 +1760,7 @@ +@@ -1738,6 +1752,7 @@ + ); _Success_(return != FALSE) - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1758,6 +1773,7 @@ +@@ -1749,6 +1764,7 @@ + IN OUT LPDWORD lpdwBufferLength ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1785,6 +1801,7 @@ +@@ -1775,6 +1791,7 @@ + _In_ DWORD dwBufferLength ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1826,6 +1843,7 @@ +@@ -1817,6 +1834,7 @@ // - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI HINTERNET WINAPI -@@ -1841,6 +1859,7 @@ +@@ -1831,6 +1849,7 @@ + IN DWORD dwFlags ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1868,6 +1887,7 @@ +@@ -1859,6 +1878,7 @@ ); - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1883,6 +1903,7 @@ +@@ -1873,6 +1893,7 @@ + IN DWORD_PTR dwContext ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1904,6 +1925,7 @@ +@@ -1893,6 +1914,7 @@ + IN LPVOID pAuthParams ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1938,6 +1960,7 @@ +@@ -1928,6 +1950,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -1949,6 +1972,7 @@ +@@ -1938,6 +1961,7 @@ + ); _Success_(return != FALSE) - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2005,6 +2029,7 @@ +@@ -1995,6 +2019,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Win32_SupportedOS_WindowsXP_ + _Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2015,6 +2040,7 @@ +@@ -2004,6 +2029,7 @@ + _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl ); - _Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ WINHTTPAPI BOOL WINAPI -@@ -2108,6 +2134,7 @@ +@@ -2098,6 +2124,7 @@ ); _Win32_SupportedOS_WindowsXP_ @@ -208,10 +206,10 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi WINHTTPAPI BOOL WINAPI -@@ -2215,6 +2242,7 @@ +@@ -2205,6 +2232,7 @@ #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - _Win32_SupportedOS_Windows8_ + _Win32_SupportedOS_BEGIN_(Windows8) +_Win32_SetLastError_ WINHTTPAPI HINTERNET diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch index dbb7c5d68..4b6f9c870 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch @@ -46,7 +46,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi LPSTR lpszHostName; DWORD dwPort; LPSTR lpszUrl; -@@ -1644,7 +1644,7 @@ +@@ -1640,7 +1640,7 @@ WinHttpCreateUrl ( _In_ LPURL_COMPONENTS lpUrlComponents, @@ -55,7 +55,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, _Inout_ LPDWORD pdwUrlLength ); -@@ -1680,7 +1680,7 @@ +@@ -1676,7 +1676,7 @@ WinHttpOpen ( _In_opt_z_ LPCWSTR pszAgentW, @@ -64,7 +64,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi _In_opt_z_ LPCWSTR pszProxyW, _In_opt_z_ LPCWSTR pszProxyBypassW, _In_ DWORD dwFlags -@@ -1857,7 +1857,7 @@ +@@ -1848,7 +1848,7 @@ IN LPCWSTR pwszVersion, IN LPCWSTR pwszReferrer OPTIONAL, IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, @@ -72,8 +72,8 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi + IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags ); - _Win32_SupportedOS_WindowsXP_ -@@ -2594,6 +2594,102 @@ + _Win32_SetLastError_ +@@ -2580,6 +2580,102 @@ #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch index 616782821..9824034af 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch @@ -1,7 +1,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h --- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h +++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -2578,6 +2578,22 @@ +@@ -2564,6 +2564,22 @@ diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch index c816d1cba..f22d1fa9f 100644 --- a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch +++ b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch @@ -13,216 +13,139 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi // prototypes // -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1595,6 +1597,7 @@ - IN DWORD_PTR dwReserved +@@ -1635,6 +1637,7 @@ + _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, + _Inout_ LPDWORD pdwUrlLength ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1604,6 +1607,7 @@ - _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1613,6 +1617,7 @@ - _Out_ SYSTEMTIME *pst // output in GMT time - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1625,6 +1630,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1642,9 +1648,12 @@ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1642,10 +1645,12 @@ #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); -+_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); -+_Win32_SupportedOS_WindowsXP_ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); ++_Win32_SupportedOS_END_() #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -1653,6 +1662,7 @@ + #pragma endregion +@@ -1653,6 +1658,7 @@ #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI HINTERNET WINAPI -@@ -1665,6 +1675,7 @@ - _In_ DWORD dwFlags +@@ -1694,6 +1700,7 @@ + IN DWORD dwNumberOfBytesToRead, + OUT LPDWORD lpdwNumberOfBytesRead ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ WINHTTPAPI - BOOL - WINAPI -@@ -1673,6 +1684,7 @@ - IN HINTERNET hInternet - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - HINTERNET - WINAPI -@@ -1684,6 +1696,7 @@ - IN DWORD dwReserved - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1709,6 +1722,7 @@ + DWORD +@@ -1709,6 +1716,7 @@ _In_reads_bytes_opt_(cbProperty) PVOID pvProperty ); -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1720,6 +1734,7 @@ - OUT LPDWORD lpdwNumberOfBytesWritten - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1730,6 +1745,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1741,6 +1757,7 @@ - IN OUT LPDWORD lpdwBufferLength - ); - -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI BOOL WINAPI -@@ -1767,6 +1784,7 @@ - _In_ DWORD dwBufferLength +@@ -1778,6 +1786,7 @@ + IN int nSendTimeout, + IN int nReceiveTimeout ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1807,6 +1825,7 @@ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1807,6 +1816,7 @@ // prototypes // -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI HINTERNET WINAPI -@@ -1821,6 +1840,7 @@ - IN DWORD dwFlags +@@ -1833,6 +1843,7 @@ + IN DWORD dwHeadersLength, + IN DWORD dwModifiers ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ WINHTTPAPI - BOOL - WINAPI -@@ -1847,6 +1867,7 @@ + DWORD +@@ -1847,6 +1858,7 @@ _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders ); -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI BOOL WINAPI -@@ -1861,6 +1882,7 @@ - IN DWORD_PTR dwContext +@@ -1891,6 +1903,7 @@ + OUT LPDWORD lpdwFirstScheme, // returns the first auth scheme returned by the server + OUT LPDWORD pdwAuthTarget ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1881,6 +1903,7 @@ - IN LPVOID pAuthParams - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1914,6 +1937,7 @@ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1914,6 +1927,7 @@ #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI BOOL WINAPI -@@ -1924,6 +1948,7 @@ +@@ -1936,6 +1950,7 @@ + IN OUT LPDWORD lpdwBufferLength, + IN OUT LPDWORD lpdwIndex OPTIONAL ); ++_Win32_SupportedOS_END_() - _Success_(return != FALSE) -+_Win32_SupportedOS_WindowsXP_ WINHTTPAPI - BOOL - WINAPI -@@ -1979,6 +2004,7 @@ + DWORD +@@ -1979,6 +1994,7 @@ #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -1988,6 +2014,7 @@ - _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl - ); - -+_Win32_SupportedOS_WindowsXP_ ++_Win32_SupportedOS_BEGIN_(WindowsXP) WINHTTPAPI BOOL WINAPI -@@ -1999,6 +2026,7 @@ +@@ -1998,7 +2014,9 @@ + IN WINHTTP_AUTOPROXY_OPTIONS * pAutoProxyOptions, OUT WINHTTP_PROXY_INFO * pProxyInfo ); - -+_Win32_SupportedOS_Windows8_ +- ++_Win32_SupportedOS_END_() ++ ++_Win32_SupportedOS_BEGIN_(Windows8) WINHTTPAPI DWORD WINAPI -@@ -2008,6 +2036,7 @@ - _Out_ HINTERNET *phResolver +@@ -2018,6 +2036,7 @@ + _In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, + _In_opt_ DWORD_PTR pContext ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_Windows8_ WINHTTPAPI DWORD - WINAPI -@@ -2032,6 +2061,7 @@ +@@ -2032,6 +2051,7 @@ _In_opt_ DWORD_PTR pContext ); @@ -230,7 +153,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi WINHTTPAPI DWORD WINAPI -@@ -2050,6 +2080,7 @@ +@@ -2050,6 +2070,7 @@ _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -238,7 +161,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi WINHTTPAPI VOID WINAPI -@@ -2066,6 +2097,7 @@ +@@ -2066,6 +2087,7 @@ _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -246,7 +169,7 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi WINHTTPAPI DWORD WINAPI -@@ -2075,6 +2107,7 @@ +@@ -2075,6 +2097,7 @@ _In_ DWORD dwFlags ); @@ -254,51 +177,19 @@ diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/Wi WINHTTPAPI BOOL WINAPI -@@ -2181,6 +2214,7 @@ +@@ -2181,6 +2204,7 @@ #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 -+_Win32_SupportedOS_Windows8_ ++_Win32_SupportedOS_BEGIN_(Windows8) WINHTTPAPI HINTERNET WINAPI -@@ -2190,6 +2224,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2201,6 +2236,7 @@ - _In_ DWORD dwBufferLength - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2213,6 +2249,7 @@ - _Out_ WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType +@@ -2246,6 +2270,7 @@ + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength, + _Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed ); ++_Win32_SupportedOS_END_() -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2224,6 +2261,7 @@ - _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2235,6 +2273,7 @@ - _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI + typedef enum _WINHTTP_PROTOCOL_OPERATION + { diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 8f20df61a..6f9194e4a 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -185,18 +185,18 @@ public void ScopedSupportedOSPreservesEveryAcceptedPhysicalType() Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); using var accepted = Open("WINHTTP_MIGRATION_ACCEPTED"); using var current = Open("WINHTTP_MIGRATION_NEW"); - var before = Types(accepted.Reader); - var after = Types(current.Reader); - Assert.Equal(37314, before.Count); - Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); - foreach (var entry in before) - { - string expected = SnapshotType(accepted.Reader, entry.Value); - string actual = SnapshotType(current.Reader, after[entry.Key]); - Assert.True(expected == actual, - $"Scoped SupportedOS changed accepted metadata in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); - } - this.output.WriteLine($"All {before.Count} accepted B9 physical types unchanged; no scope-adoption normalization or allowances."); + AssertEveryPhysicalTypeUnchanged(accepted.Reader, current.Reader, "accepted B9"); + } + + [MigrationFact("WINHTTP_MIGRATION_DIRECT_CONTROL")] + public void ScopedSupportedOSPreservesEveryMatchedDirectPhysicalType() + { + string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_DIRECT_CONTROL"); + Assert.Equal("AA7B0D71E535787D2A5B623F8B144AEDCF66A464F1E769C7ADC56CF83EA2EE43", + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); + using var direct = Open("WINHTTP_MIGRATION_DIRECT_CONTROL"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + AssertEveryPhysicalTypeUnchanged(direct.Reader, current.Reader, "matched canonical-direct control"); } [MigrationTheory] @@ -614,6 +614,22 @@ internal static string[] SnapshotNamespace(MetadataReader reader, string ns) .Select(reader.GetTypeDefinition) .Select(type => SnapshotType(reader, type)).OrderBy(value => value, StringComparer.Ordinal).ToArray(); + private void AssertEveryPhysicalTypeUnchanged(MetadataReader expectedReader, MetadataReader actualReader, string baseline) + { + var before = Types(expectedReader); + var after = Types(actualReader); + Assert.Equal(37314, before.Count); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + foreach (var entry in before) + { + string expected = SnapshotType(expectedReader, entry.Value); + string actual = SnapshotType(actualReader, after[entry.Key]); + Assert.True(expected == actual, + $"Scoped SupportedOS changed {baseline} metadata in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); + } + this.output.WriteLine($"All {before.Count} {baseline} physical types unchanged; no scope-adoption normalization or allowances."); + } + internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false, bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null) { From c5879a778bfbf0463e3c96beadab4b2d56658ffe Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Thu, 15 Oct 2026 17:38:55 -0700 Subject: [PATCH 25/57] Record scoped OS equivalence and preserved evidence boundaries Document the actual canonical-direct and scoped producer images, zero net B9 metadata delta, exact local admission, and separate final-head CI qualification. Keep historical receipts and the rejected field-SAL diagnostic distinct. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 39 ++++++++++++++++++-- docs/winhttp-header-annotations.md | 2 +- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 1360b1b81..38bfd5f91 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -2,7 +2,7 @@ Move authored semantic facts to reviewed header patches without changing native contracts. Keep the C# scraper/emitter, matched ClangSharp stack and selected SDK. -The [annotation specification](copilot/plans/shift-left-annotation-spec.md) defines +The [adopted annotation specification](https://github.com/microsoft/win32metadata/blob/733477d4ecc3ea3e6e979a9ce26930df62d065af/docs/copilot/plans/shift-left-annotation-spec.md) defines the vocabulary; the [WinHttp pilot](winhttp-header-annotations.md) records one complete example and its immutable evidence. @@ -384,6 +384,39 @@ test total. The artifacts and original receipts under `artifacts\header-annotation-wave\ci-final-38703254017` remain immutable. Fresh consumer compatibility remains unverified. +### Scoped SupportedOS adoption checkpoint + +Tooling `43af342a3dd63803bf12a7c834cd0fd516df74ab` supplies the canonical +direct/scoped contract. The same-tooling canonical-direct producer +`a8e192627d90f71f8de080efb38a09f5bc67fb1e` was emitted and admitted before +factoring: every one of B9's 37,314 physical type snapshots is unchanged. +The scoped producer is `a18ba84473ceedf53bfe8e3a94a2bc5c6eb962cf`. + +| Immutable local evidence | SHA256 | +| --- | --- | +| Canonical-direct full image | `AA7B0D71E535787D2A5B623F8B144AEDCF66A464F1E769C7ADC56CF83EA2EE43` | +| Scoped full image | `374318BB6239DA59F6B00E7C69E46C1C7D94C4FFF3F206CBE1281E38722E1B90` | +| Scoped provenance | `F8ACECD6B5E761D857388FED33060F15D8938661B98545769770204F7124886B` | +| Local scope-adoption grade | `EFC149644CD5141B0968B9B6CF2C05135FD5C260166B161CE5E862DA80943AEC` | + +The scoped image is physically identical to both the canonical-direct control +and B9: all 119 OS floors, signatures, layouts, attributes and existing +7,791 enum identities/contents remain unchanged. The 29 scopes and 19 direct +annotations add no new OS coverage, API symbols, enums or members. The combined +OLD-to-NEW grade remains the original 48 exact differences at 24 enum-use sites, +with zero unknown differences or unused expectations; no scope allowance was +added. + +Actual-image admission passes 26 physical/no-fallback/mutation cases, 45 native +architecture legs, 19 preparation controls, three mixed-partition closure cases +and 14 full-SDK integrity cases without skips. The complete 393-file diagnostic +closure, 36 repeated source/discovery inputs and all 155 pointer reductions are +preserved. Artifacts are under `artifacts\supported-os-scopes`; the grade is +`local-scope-grade-a18ba844.json`. These are local producer receipts, not a claim +about a later CI image. Final-head CI and downloaded-image qualification are +recorded separately in the [draft PR](https://github.com/microsoft/win32metadata/pull/2365). +Fresh CsWin32 compatibility remains unverified. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, @@ -411,8 +444,8 @@ effects should be classified and surfaced for review, not rejected merely to retain OLD omissions. The historical image and exact difference log remain in `artifacts\header-annotation-wave\batch3`; the separate `batch3-rejected-grade.json` receipt still records the earlier rejection, not a -new successful grade. This documentation update neither re-enables those -migrations nor changes producer inputs or expectations. Wsl and Xinput remain +new successful grade. That policy clarification did not re-enable those +migrations or change their producer inputs or expectations. Wsl and Xinput remain the completed batch-3 owners; fresh consumer compatibility remains unverified. Sens is also deferred, not migrated. Its existing logical diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 07ce9a3cd..792b5e7fc 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -287,7 +287,7 @@ controls. HttpServer and WinInet snapshots must remain unchanged. The repository SDK integrity suite reads `bin\Windows.Win32.winmd` and the default `generation\WinSDK\obj\scratch` diagnostic tree. Stage the complete frozen OLD -nonselected diagnostics plus NEW WinHttp/HttpServer diagnostics there, preserving +nonselected diagnostics plus NEW recipe-selected owner/dependent diagnostics there, preserving their architecture-relative paths, and copy the complete NEW winmd to that local bin path before running `dotnet test tests\Windows.Win32.Tests -c Release`. `NoSuggestedRemappings` consumes the actual `*.txt` scraper diagnostics, not just From 8125cddd2ec2fbf20c6e58a58f233ac95599dd82 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 10:01:44 -0700 Subject: [PATCH 26/57] Prepare SDK-pinned IDL annotations before MIDL Move the UpdateAssessment type annotation to shipped waasapi.idl and regenerate its closed private MIDL/SAL inputs inside the existing preparation transaction. Retain direct SDK header patches, exact compiler provenance, one scrape/constants root, and strict no-fallback/cache gates. Preserve native SAL when metadata shares a parameter annotation and exercise real MIDL plus all three native targets. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 84 +++++- docs/winhttp-header-annotations.md | 17 +- generation/WinSDK/patches/SdkHeaders.json | 86 +++++- .../post-midl/um/waasapi.annotations.patch | 19 -- .../pre-midl/um/waasapi.annotations.patch | 21 ++ .../ConvertMidlAttributesToSalAnnotations.ps1 | 43 ++- scripts/MidlHeaderUtils.ps1 | 22 ++ scripts/Prepare-SdkHeaders.ps1 | 236 +++++++++++++-- scripts/RecompileIdlFilesForScraping.ps1 | 8 +- .../PreparedSdkHeadersTests.cs | 268 +++++++++++++++++- .../WinHttpMigrationTests.cs | 56 ++++ .../WinHttpNativeControlTests.cs | 37 ++- 12 files changed, 842 insertions(+), 55 deletions(-) delete mode 100644 generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch create mode 100644 generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch create mode 100644 scripts/MidlHeaderUtils.ps1 diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 38bfd5f91..614cf59a1 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -53,9 +53,37 @@ caching, path/preimage checks and rejection of modified caches. A changed root invalidates constants and every architecture's header marker; an unchanged root retains them. Prove this with the existing preparation controls. -Respect the MIDL boundary. The current preparation script admits post-MIDL -recipes; it is not permission to rerun broad SDK/IDL update scripts or silently -introduce a pre-MIDL pipeline. Surface a bounded blocker if that is required. +Respect the SDK artifact boundary, not just a recipe filename extension. Patch a +shipped source IDL before MIDL when its corresponding generated header owns the +fact; keep real direct-shipped header artifacts as header patches. A generated +dependency is not automatically another annotation target. Never run broad +SDK/IDL update scripts to implement a bounded migration: those scripts reset the +mirror and restore removed SDK artifacts. + +The existing preparation path supports an explicit `midl` closure in the same +recipe. Pin every SDK IDL/import/ACF/preprocessor input, `midl.exe` and `midlc.exe`, +and bind each regenerated output to its admitted mirror header and exact SDK +IDL. Apply ordered `pre-midl` patches to private copies, reuse the existing +MIDL-to-SAL conversion and shared `MidlHeaderUtils.ps1` flags, regenerate only +the admitted outputs, then apply direct-header `post-midl` patches. Scraping +and constants still consume one private root. Reject wrong-stage patches, +unpinned imports, changed tools/preimages, failed generation and modified caches; +never fall back to an old generated header. + +Run the selected C preprocessor with closed include paths and cleared ambient +compiler options; hash its executable/engine and the SAL/helper scripts into the +preparation identity. Verify MIDL's actual saved preprocessor input set against +the declared closure. Preserve raw inputs, converted IDLs, commands, diagnostics, +outputs and their hashes in the private cache. Keep warnings enabled and compare +the exact diagnostic/target/payload multiset against unmodified-IDL regeneration, +accounting only for source line shifts. Do not add native `[local]` attributes or +suppress diagnostics to make an annotation compile. + +Metadata must compose with native SAL. The converter does not skip a parameter +line merely because it also contains metadata annotations. Consolidate adjacent +SAL and metadata annotation payloads: MIDL otherwise emits only the last +`annotation(...)` attribute and silently drops the preceding SAL. Check the +actual regenerated header and final metadata, not just converted IDL text. ## 3. Capture native facts and classify every difference @@ -319,12 +347,14 @@ logical groups retain unsigned 32-bit storage and all ten members: only become associated rather than substituted enum types. UpdateAssessment moves only `IWaaSAssessor`'s Windows 10 build 15063 floor. +Its current patch is authored in shipped `waasapi.idl`, not the generated header; +the [pre-MIDL source adoption](#pre-midl-source-adoption) retains the same fact. These floors agree with the published requirements for [ToolHelp](https://learn.microsoft.com/windows/win32/api/tlhelp32/nf-tlhelp32-createtoolhelp32snapshot) and [IWaaSAssessor](https://learn.microsoft.com/windows/win32/api/waasapi/nn-waasapi-iwaasassessor). UpdateAssessment separately pins its supplied IDLs and checked-in post-MIDL -headers. +header preimages. Global `IUnknown`/`IDispatch`, BSTR/VARIANT helpers, and Foundation `HANDLE` definitions remain outside these physical owners. No snapshot handle identity @@ -417,6 +447,52 @@ about a later CI image. Final-head CI and downloaded-image qualification are recorded separately in the [draft PR](https://github.com/microsoft/win32metadata/pull/2365). Fresh CsWin32 compatibility remains unverified. +### Pre-MIDL source adoption + +The SDK CPP `10.0.26100.7705` artifact audit covers every recipe header and +actual patch target. Only the patched `waasapi.h` is generated from a shipped +IDL. `httprequest.h` is an unpatched IDL-backed dependency; `waasapitypes.h` is +an unpatched imported output regenerated with `waasapi.h`. All remaining +annotation targets, including `winhttp.h`, remain direct-header patches. +The eleven owners and fifteen owner/dependent partitions do not change. + +`pre-midl\um\waasapi.annotations.patch` applies to the actual shipped +`waasapi.idl` preimage +`A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38`. +It emits the annotation include and a C++-only forward declaration carrying +`_Win32_SupportedOS_15063_` specifically on `IWaaSAssessor`. MIDL rejects a +direct interface annotation, and a surrounding scope would also annotate +methods. This target-specific `cpp_quote` preserves the existing type-only +floor, UUID, method, native `[out, retval]` and library contract without a +reader change or a generated-header fallback. + +The closed source set is nine IDLs (`waasapi`, `waasapitypes`, `oaidl`, +`objidl`, `objidlbase`, `unknwn`, `unknwnbase`, `wtypes`, `wtypesbase`), +`oaidl.acf`, `basetsd.h` and `guiddef.h`. MIDL's saved preprocessing proves +all twelve inputs, including the two base-IDL `#include`s and automatic ACF. +The selected SDK x64 MIDL is 8.01.0628, executable SHA256 +`53CCBCBC2FF14B2D08D029AD07B3D1AA4FF3B103F712199A15248A6CCCF6D2A3`; +its engine is pinned separately. Each preparation records the actual selected +Visual C++ preprocessor/engine identities rather than assuming every machine +has the same Visual Studio installation. + +Unmodified-IDL regeneration reproduces both mirror headers byte-for-byte. +The candidate leaves `waasapitypes.h` byte-identical and preserves native SAL +in `waasapi.h`. Baseline and candidate retain the same 497 native warnings for +the types compilation and 498 for the assessor compilation, with zero added +diagnostic/target/payload entries. There is no warning suppression or native +`[local]` workaround. Cold regeneration produces the same complete prepared +header bytes; cache reuse verifies rather than repairs the published tree. + +The actual regenerated SDK translation unit passes metadata off/on controls on +x86, x64 and ARM64: native signatures/layout remain unchanged, with exactly +the intended type-level OS annotation enabled and no method/unrelated-type +annotation. Permanent preparation controls exercise mixed SAL/metadata through +real MIDL, import/tool/preimage rejection, wrong-stage and syntax failures, +ambient-include isolation, repeat bytes and cache tampering. These native and +preparation results are separate from final-image and exact-head CI admission; +the immutable B9 and scoped-adoption evidence above is not relabeled. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 792b5e7fc..3d7bcc547 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -52,8 +52,11 @@ Earlier images and receipts below are immutable historical evidence. post-MIDL mirror Git tree, exact header preimages, their selected-SDK inputs, and patch order. `winhttp.h` is byte-identical to the selected package. The package supplies `httprequest.idl`, not `httprequest.h`; the recipe separately pins the -checked-in post-MIDL header and the identical selected-SDK IDL. There are no -pre-MIDL changes or IDL recompilation in this migration. +checked-in post-MIDL header and the identical selected-SDK IDL. WinHttp itself +needs no IDL patch or recompilation. In the expanded eleven-owner pilot, +UpdateAssessment instead patches shipped `waasapi.idl` before private MIDL +regeneration; see the +[source-artifact audit and provenance](header-annotation-migration-playbook.md#pre-midl-source-adoption). Only WinHttp traverses these two headers. HttpServer also includes `winhttp.h`, but traverses `http.h`, so it is an affected physical-header dependent rather than @@ -69,8 +72,11 @@ header scraping and consume the same private root. The orchestration has no partition hook or WinHttp default recipe. The project supplies the SDK-wide recipe explicitly to the generic `Prepare-SdkHeaders.ps1` script, which copies the complete mirror into a private, -content-addressed include tree and applies the ordered post-MIDL patches there. -It checks SDK/preimage identity, admitted patch targets, source/cache hashes, +content-addressed include tree. Its optional pinned MIDL closure applies +pre-MIDL source patches and regenerates admitted headers/imported outputs before +the direct-header post-MIDL patches. Both stages publish the same include root. +It checks SDK/preimage and compiler/preprocessor identity, actual closed MIDL +inputs, admitted patch targets, source/cache hashes, ordinary paths, patch ordering, and strict patch applicability. Publication is transactional and serialized; a modified published cache is rejected, not repaired while a scraper might be reading it. Unmodified files retain their exact bytes. @@ -266,6 +272,9 @@ are not acceptance. Record nonzero executed counts and require no skipped pilot legs. Preparation controls cover cache reuse/tampering, preimage/SDK/MIDL mismatch, path escapes, unadmitted targets, mode/identity changes, duplicate patches, failed transactions, and lock contention. +Pre-MIDL controls also run the selected real SDK MIDL compiler, preserve native +SAL alongside metadata, reject ambient imports and syntax failures without header +fallback, verify imported outputs and compare cold-regeneration bytes. SDK-stage controls import the actual project and exercise direct headers/constants, with and without a partition filter. Each invocation prepares exactly once before the consumers, all consumers observe the same root, cache reuse retains markers, diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index c7888a262..53de0f8db 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -89,6 +89,90 @@ "sdkSha256": "EE657D80B788EEAE76ED0D63932ED8AD619E001D8C2BBA5BF670837F07DDB3B4" } ], + "midl": { + "tools": [ + { + "sdkPath": "c\\bin\\10.0.26100.0\\x64\\midl.exe", + "sha256": "53CCBCBC2FF14B2D08D029AD07B3D1AA4FF3B103F712199A15248A6CCCF6D2A3" + }, + { + "sdkPath": "c\\bin\\10.0.26100.0\\x64\\midlc.exe", + "sha256": "D12AFF8A74397601041BEC46552FC8DEE1206DAA97E39600E72A7B1B1A5EF6AB" + } + ], + "inputs": [ + { + "path": "um\\waasapi.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", + "sdkSha256": "A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38" + }, + { + "path": "um\\waasapitypes.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\WaaSAPITypes.idl", + "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" + }, + { + "path": "um\\oaidl.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.idl", + "sdkSha256": "5F5A2B0508AFFC22C30289D6F44B08792CE047CD7F41303EBBB7470E2217D6BC" + }, + { + "path": "um\\objidl.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\objidl.idl", + "sdkSha256": "09C1AB7AEF7C01D1552BAA826AAC549C15D1806E9C696B99814FCFF0241DE539" + }, + { + "path": "um\\objidlbase.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\objidlbase.idl", + "sdkSha256": "A31AD8BCEB15641FA625EE1DE35657269B1449BB84DB4F11553D68B410F59E71" + }, + { + "path": "um\\unknwn.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\unknwn.idl", + "sdkSha256": "2E146DA78625D05E345E7D480A61C5CC54696DD7C713B8FF07D9D36D95363C6C" + }, + { + "path": "um\\unknwnbase.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\unknwnbase.idl", + "sdkSha256": "797B7267F24259A02A14455203F9B11309B504C1BFFAF879AF7BC05B8B67A5BC" + }, + { + "path": "shared\\wtypes.idl", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\wtypes.idl", + "sdkSha256": "F850757CCEF6092F20A97E955DD64AE2A595E0BF71C09A826A0BDE7C21B36E81" + }, + { + "path": "shared\\wtypesbase.idl", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\wtypesbase.idl", + "sdkSha256": "5DFF65DAA90EC39AAE0EB89EC2E7DF1ACD8A8D22E49514E5E062F13DD9B4B564" + }, + { + "path": "shared\\basetsd.h", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\basetsd.h", + "sdkSha256": "D35B73F885D7EF7DFD27FCE3762C190C1C952A21E10A3945BCB3D1860C673B12" + }, + { + "path": "shared\\guiddef.h", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\guiddef.h", + "sdkSha256": "0C08463FBC5A23A8862E57699E2F30DD14CD3DB4A40903E4FCA9392A57942DAE" + }, + { + "path": "um\\oaidl.acf", + "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.acf", + "sdkSha256": "333B0D33450F70D2FB5288D79B11ECF6C4043B933ECB7B7A2A996E3185F714BF" + } + ], + "outputs": [ + { + "source": "um\\waasapitypes.idl", + "path": "um\\waasapitypes.h" + }, + { + "source": "um\\waasapi.idl", + "path": "um\\waasapi.h" + } + ] + }, "partitions": [ "WinHttp", "HttpServer", @@ -107,6 +191,7 @@ "Xinput" ], "patches": [ + "pre-midl\\um\\waasapi.annotations.patch", "post-midl\\um\\winhttp.supported-os.patch", "post-midl\\um\\winhttp.last-error.patch", "post-midl\\um\\winhttp.callback-alias.patch", @@ -120,7 +205,6 @@ "post-midl\\um\\timezoneapi.annotations.patch", "post-midl\\um\\ual.annotations.patch", "post-midl\\um\\tlhelp32.annotations.patch", - "post-midl\\um\\waasapi.annotations.patch", "post-midl\\um\\wslapi.annotations.patch", "post-midl\\um\\xinput.annotations.patch" ] diff --git a/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch b/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch deleted file mode 100644 index af0962525..000000000 --- a/generation/WinSDK/patches/post-midl/um/waasapi.annotations.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.h -@@ -87,6 +87,7 @@ - #endif - - #include -+#include - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - -@@ -106,6 +107,7 @@ - #if defined(__cplusplus) && !defined(CINTERFACE) - - MIDL_INTERFACE("2347bbef-1a3b-45a4-902d-3e09c269b45e") -+ _Win32_SupportedOS_15063_ - IWaaSAssessor : public IUnknown - { - public: diff --git a/generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch b/generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch new file mode 100644 index 000000000..ab9bedb7a --- /dev/null +++ b/generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch @@ -0,0 +1,21 @@ +diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl +--- a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl ++++ b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl +@@ -15,12 +15,17 @@ + cpp_quote("#endif") + cpp_quote("") + cpp_quote("#include ") ++cpp_quote("#include ") + + #pragma region Desktop Family + cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") + + import "WaaSAPITypes.idl"; + ++cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)") ++cpp_quote("struct _Win32_SupportedOS_15063_ IWaaSAssessor;") ++cpp_quote("#endif") ++ + [ + object, + uuid(2347bbef-1a3b-45a4-902d-3e09c269b45e), diff --git a/scripts/ConvertMidlAttributesToSalAnnotations.ps1 b/scripts/ConvertMidlAttributesToSalAnnotations.ps1 index d3b0c4ba1..f2291b980 100644 --- a/scripts/ConvertMidlAttributesToSalAnnotations.ps1 +++ b/scripts/ConvertMidlAttributesToSalAnnotations.ps1 @@ -51,20 +51,42 @@ function SALParseSize { $parenBlob = "\((?:\([^()]*\)[^()]*|[^()]*)\)" $attributeListPattern = [Regex]::new("\[(((?:,\s*)?(in|out|string|retval|unique|defaultvalue$parenBlob|size_is$parenBlob|iid_is$parenBlob|length_is$parenBlob))+)\]") $attributePattern = [Regex]::new("(in|out|string|retval|unique|defaultvalue$parenBlob|size_is$parenBlob|iid_is$parenBlob|length_is$parenBlob)") +$adjacentAttributeLists = [Regex]::new("(?$attributeListPattern)\s*(?$attributeListPattern)") +$annotationPattern = '\[annotation\s*\(\s*"(?(?:\\.|[^"\\])*)"\s*\)\s*\]' +$annotationBeforeNative = [Regex]::new("(?$annotationPattern)\s*(?$attributeListPattern)") +$adjacentAnnotations = [Regex]::new("(?$annotationPattern)\s*(?$annotationPattern)") $stream = [System.IO.StreamWriter] $outputFileName foreach ($line in (Get-Content $inputFileName)) { - # Skip lines that already have annotations and ignore cpp_quote and #pragma. - if ($line.Contains("annotation (") -or $line.Contains("annotation(") -or $line.Contains("cpp_quote(") -or $line.StartsWith("#pragma")) { + # Quoted C++ text is not an IDL parameter declaration. + if ($line.TrimStart().StartsWith("cpp_quote(") -or $line.TrimStart().StartsWith("#pragma")) { $stream.WriteLine($line) continue } + while ($annotationBeforeNative.IsMatch($line)) { + $line = $annotationBeforeNative.Replace($line, { + param($match) + $match.Groups['native'].Value + $match.Groups['annotation'].Value + }) + } # Merge multiple adjacent MIDL attribute lists into one so all annotations are consolidated into one annotation attribute per parameter. - if ($attributeListPattern.Matches($line).Count -gt 1) { - $line = $line -replace "\]\s*\[", ", " + while ($adjacentAttributeLists.IsMatch($line)) { + $line = $adjacentAttributeLists.Replace($line, { + param($match) + $left = $match.Groups['left'].Value + $left.Substring(0, $left.Length - 1) + ", " + $match.Groups['right'].Value.Substring(1) + }) + } + while ($adjacentAnnotations.IsMatch($line)) { + $line = $adjacentAnnotations.Replace($line, { + param($match) + $left = [regex]::Match($match.Groups['left'].Value, $annotationPattern).Groups['value'].Value + $right = [regex]::Match($match.Groups['right'].Value, $annotationPattern).Groups['value'].Value + '[annotation("' + $left + ' ' + $right + '")]' + }) } # Convert MIDL attributes to SAL annotations. @@ -73,6 +95,12 @@ foreach ($line in (Get-Content $inputFileName)) { $match = $attributeListPattern.Match($line, $startAt) $attributeList = $match.Groups[1].Value $attributeListIndex = $match.Groups[0].Index + $match.Groups[0].Length + $existingAnnotation = [regex]::Match($line.Substring($attributeListIndex), "^\s*$annotationPattern") + if ($existingAnnotation.Success -and + $existingAnnotation.Groups['value'].Value -match '_(?:In|Out|Inout|COM_Outptr)[A-Za-z0-9_]*(?:\(|$|\s)') { + $startAt = $attributeListIndex + $existingAnnotation.Length + continue + } $in = $false $out = $false @@ -157,9 +185,14 @@ foreach ($line in (Get-Content $inputFileName)) { # Insert the annotation attribute into the line after the original attribute list. if ($annotation) { + if ($existingAnnotation.Success) { + # MIDL emits only the last annotation attribute; keep SAL and metadata in one payload. + $annotation += " " + $existingAnnotation.Groups['value'].Value + } $annotationAttribute = "[annotation(""$annotation"")]" - $line = $line.Substring(0, $attributeListIndex) + $annotationAttribute + $line.Substring($attributeListIndex) + $line = $line.Substring(0, $attributeListIndex) + $annotationAttribute + + $line.Substring($attributeListIndex + $existingAnnotation.Length) $startAt = $attributeListIndex + $annotationAttribute.Length } else { diff --git a/scripts/MidlHeaderUtils.ps1 b/scripts/MidlHeaderUtils.ps1 new file mode 100644 index 000000000..af32d7820 --- /dev/null +++ b/scripts/MidlHeaderUtils.ps1 @@ -0,0 +1,22 @@ +function Get-MidlHeaderArguments { + param( + [Parameter(Mandatory)][string]$InputFile, + [Parameter(Mandatory)][string]$OutputDirectory, + [Parameter(Mandatory)][string]$OutputHeader, + [Parameter(Mandatory)][string[]]$IncludeDirectories + ) + + $arguments = @( + $InputFile, '/out', $OutputDirectory, '/header', $OutputHeader, + '/DUNICODE', '/D_UNICODE', '/DWINVER=0x0A00', '/D_APISET_MINWIN_VERSION=0x010F', + '/DNTDDI_VERSION=0x0A00000C', '/DBUILD_UMS_ENABLED=0', '/DBUILD_WOW64_ENABLED=0', + '/DBUILD_ARM64X_ENABLED=0', '/DEXECUTABLE_WRITES_SUPPORT=0', + '/D_USE_DECLSPECS_FOR_SAL=1', '/D_CONTROL_FLOW_GUARD_SVCTAB=1', '/DMIDL_PASS=1', + '/D_AMD64_', '/D_WIN64', '/D_WCHAR_T_DEFINED', '/no_stamp', '/nologo', + '/no_settings_comment', '/lcid', '1033', '/sal', '/amd64', '/target', 'NT100', '/Zp8' + ) + foreach ($directory in $IncludeDirectories) { + $arguments += '/I', $directory + } + $arguments +} diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index d369da988..3fa501615 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -6,6 +6,7 @@ param( [string]$Recipe, [string]$SourceRoot = "$PSScriptRoot\..\generation\WinSDK\RecompiledIdlHeaders", [string]$SdkPackageRoot, + [string]$MidlPreprocessorPath, [string]$OutputRoot = "$PSScriptRoot\..\artifacts\prepared-sdk" ) @@ -64,6 +65,122 @@ function Resolve-Child([string]$Root, [string]$RelativePath) { $path } +function Invoke-HeaderPatch($Patch, [string]$Root) { + $arguments = @('-C', $repoRoot, 'apply', '--unsafe-paths', '-p4', "--directory=$Root", '--whitespace=error-all') + $output = & git @arguments --check -- $Patch.fullPath 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Patch preflight failed for $($Patch.path):`n$($output -join "`n")" + } + $output = & git @arguments -- $Patch.fullPath 2>&1 + if ($LASTEXITCODE -ne 0) { + throw "Patch failed for $($Patch.path):`n$($output -join "`n")" + } +} + +function Invoke-PreparedMidl([string]$Staging) { + $raw = "$Staging\midl\source" + $sal = "$Staging\midl\sal" + $generated = "$Staging\midl\generated" + foreach ($directory in @($raw, $sal, $generated)) { + [IO.Directory]::CreateDirectory($directory) | Out-Null + } + foreach ($input in $midlInputs) { + $target = Resolve-Child $raw $input.path + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($target)) | Out-Null + [IO.File]::Copy($input.fullPath, $target) + if ((Get-Sha256 $target) -ne $input.sha256) { + throw "The SDK MIDL input changed while being copied: $($input.path)" + } + } + foreach ($patch in @($patches | Where-Object stage -eq 'pre-midl')) { + Invoke-HeaderPatch $patch $raw + } + foreach ($input in $midlInputs) { + $target = Resolve-Child $sal $input.path + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($target)) | Out-Null + if ([IO.Path]::GetExtension($input.path) -eq '.idl') { + & "$PSScriptRoot\ConvertMidlAttributesToSalAnnotations.ps1" (Resolve-Child $raw $input.path) $target + } + else { + [IO.File]::Copy((Resolve-Child $raw $input.path), $target) + } + } + + . "$PSScriptRoot\MidlHeaderUtils.ps1" + $includes = @($midlInputs | ForEach-Object { [IO.Path]::GetDirectoryName((Resolve-Child $sal $_.path)) } | + Sort-Object -Unique) + $environment = @{} + foreach ($name in @('PATH', 'INCLUDE', 'LIB', 'LIBPATH', 'CL', '_CL_', 'TEMP', 'TMP', 'VSLANG')) { + $environment[$name] = [Environment]::GetEnvironmentVariable($name, 'Process') + } + $commands = @() + $usedInputs = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase) + Push-Location $generated + try { + foreach ($name in @('INCLUDE', 'LIB', 'LIBPATH', 'CL', '_CL_')) { + [Environment]::SetEnvironmentVariable($name, '', 'Process') + } + $env:PATH = "$([IO.Path]::GetDirectoryName($MidlPreprocessorPath));$([IO.Path]::GetDirectoryName($midlCompiler));$env:SystemRoot\System32;$env:SystemRoot" + $env:TEMP = $generated + $env:TMP = $generated + $env:VSLANG = '1033' + if ((Get-Command cl.exe -CommandType Application).Source -ne $MidlPreprocessorPath) { + throw 'MIDL did not resolve the pinned C preprocessor.' + } + foreach ($output in $config.midl.outputs) { + $header = Resolve-Child $generated $output.path + [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($header)) | Out-Null + $arguments = @(Get-MidlHeaderArguments -InputFile (Resolve-Child $sal $output.source) ` + -OutputDirectory $generated -OutputHeader $header -IncludeDirectories $includes) + $arguments += '/cpp_cmd', 'cl.exe', '/cpp_opt', '/nologo /E /TC /X', '/savePP' + $log = "$generated\$([IO.Path]::GetFileNameWithoutExtension($output.source)).log" + & $midlCompiler @arguments *> $log + $exitCode = $LASTEXITCODE + $text = [IO.File]::ReadAllText($log) + if ($exitCode -ne 0 -or $text -match '(?im)\b(?:fatal\s+)?error\s+(?:MIDL|C)\d+') { + throw "MIDL failed for $($output.source) (exit $exitCode):`n$text" + } + if (!(Test-Path -LiteralPath $header -PathType Leaf)) { + throw "MIDL did not produce its admitted header: $($output.path)" + } + $commands += [ordered]@{ + source = $output.source + header = $output.path + arguments = @($arguments | ForEach-Object { $_.Replace($Staging, '') }) + warnings = @([regex]::Matches($text, '(?im)^.*\bwarning\s+MIDL\d+.*$') | + ForEach-Object { $_.Value.Replace($Staging, '') }) + headerSha256 = Get-Sha256 $header + } + } + foreach ($file in @(Get-ChildItem -LiteralPath $generated -Filter '*.tmp' -File)) { + foreach ($match in [regex]::Matches([IO.File]::ReadAllText($file.FullName), '(?m)^\s*#line\s+\d+\s+"([^"]+)"')) { + $path = $match.Groups[1].Value.Replace('\\', '\') + $relative = [IO.Path]::GetRelativePath($sal, $path) + if ($relative -notin @($midlInputs.path) -or (Resolve-Child $sal $relative) -ne $path) { + throw "MIDL preprocessing read an unpinned input: $path" + } + $usedInputs.Add($relative) | Out-Null + } + Remove-Item -LiteralPath $file.FullName + } + if (!$usedInputs.SetEquals([string[]]$midlInputs.path)) { + throw 'The declared MIDL input closure does not match the actual preprocessed inputs.' + } + foreach ($output in $config.midl.outputs) { + [IO.File]::Copy((Resolve-Child $generated $output.path), (Resolve-Child "$Staging\headers" $output.path), $true) + } + [IO.File]::WriteAllText("$Staging\midl\commands.json", ($commands | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) + [IO.File]::WriteAllText("$Staging\midl\preprocessed-inputs.json", + (@($usedInputs | Sort-Object -CaseSensitive) | ConvertTo-Json), [Text.UTF8Encoding]::new($false)) + } + finally { + foreach ($name in $environment.Keys) { + [Environment]::SetEnvironmentVariable($name, $environment[$name], 'Process') + } + Pop-Location + } +} + $Recipe = [IO.Path]::GetFullPath($Recipe) $SourceRoot = [IO.Path]::GetFullPath($SourceRoot).TrimEnd('\') $OutputRoot = [IO.Path]::GetFullPath($OutputRoot).TrimEnd('\') @@ -80,7 +197,7 @@ if (!(Test-Path -LiteralPath $SourceRoot -PathType Container)) { $config = Get-Content -LiteralPath $Recipe -Raw | ConvertFrom-Json if ($config.schemaVersion -ne 1 -or $config.sourceStage -ne 'post-midl') { - throw 'Only schema 1 post-MIDL mirror recipes are supported. Apply pre-MIDL changes before compiling their IDL closure.' + throw 'Only schema 1 post-MIDL mirror recipes are supported; pre-MIDL patches require an explicit pinned MIDL closure.' } if (!$SdkPackageRoot) { $propsPath = "$repoRoot\obj\BuildTools\BuildTools.proj.nuget.g.props" @@ -128,10 +245,73 @@ foreach ($header in $config.headers) { throw "Selected SDK input mismatch: $($header.sdkPath)" } } +$midlInputs = @() +$midlTools = @() +$midlScripts = @() +$hasMidl = $null -ne $config.PSObject.Properties['midl'] +if ($hasMidl) { + $midlInputs = @($config.midl.inputs | ForEach-Object { + if ([IO.Path]::GetExtension($_.path) -notin @('.idl', '.acf', '.h')) { + throw "Unsupported MIDL input: $($_.path)" + } + Resolve-Child $SourceRoot $_.path | Out-Null + $path = Resolve-Child $SdkPackageRoot $_.sdkPath + if ((Get-Sha256 $path) -ne $_.sdkSha256) { + throw "Selected SDK MIDL input mismatch: $($_.sdkPath)" + } + [pscustomobject]@{ path = $_.path; fullPath = $path; sdkPath = $_.sdkPath; sha256 = $_.sdkSha256 } + }) + if (!$midlInputs.Count -or @($midlInputs.path | Sort-Object -Unique).Count -ne $midlInputs.Count) { + throw 'The MIDL input closure must be nonempty and contain no duplicate paths.' + } + foreach ($output in $config.midl.outputs) { + $header = @($config.headers | Where-Object path -eq $output.path) + $input = @($midlInputs | Where-Object path -eq $output.source) + if ($header.Count -ne 1 -or $input.Count -ne 1 -or + [IO.Path]::GetExtension($output.source) -ne '.idl' -or + $header[0].sdkPath -ne $input[0].sdkPath -or $header[0].sdkSha256 -ne $input[0].sha256) { + throw "A MIDL output must bind one admitted header to its exact SDK IDL: $($output.path)" + } + } + if (!$config.midl.outputs.Count -or + @($config.midl.outputs.path | Sort-Object -Unique).Count -ne $config.midl.outputs.Count) { + throw 'MIDL outputs must be nonempty and contain no duplicate headers.' + } + $midlTools = @($config.midl.tools | ForEach-Object { + $path = Resolve-Child $SdkPackageRoot $_.sdkPath + if ((Get-Sha256 $path) -ne $_.sha256) { + throw "Selected SDK MIDL compiler mismatch: $($_.sdkPath)" + } + [pscustomobject]@{ path = $path; sha256 = $_.sha256 } + }) + if (($midlTools.path | ForEach-Object { [IO.Path]::GetFileName($_) } | Sort-Object) -join ',' -ne 'midl.exe,midlc.exe' -or + @($midlTools.path | ForEach-Object { [IO.Path]::GetDirectoryName($_) } | Sort-Object -Unique).Count -ne 1) { + throw 'Pin both midl.exe and midlc.exe from the same selected SDK compiler directory.' + } + $midlCompiler = ($midlTools | Where-Object { [IO.Path]::GetFileName($_.path) -eq 'midl.exe' }).path + if (!$MidlPreprocessorPath) { + . "$PSScriptRoot\CommonUtils.ps1" + $MidlPreprocessorPath = Join-Path (Get-VcDirPath -Arch x64 -HostArch x64) 'cl.exe' + } + $MidlPreprocessorPath = [IO.Path]::GetFullPath($MidlPreprocessorPath) + Assert-OrdinaryPath $MidlPreprocessorPath + if ([IO.Path]::GetFileName($MidlPreprocessorPath) -ne 'cl.exe') { + throw 'The selected MIDL preprocessor must be cl.exe.' + } + $midlTools += @($MidlPreprocessorPath, (Join-Path ([IO.Path]::GetDirectoryName($MidlPreprocessorPath)) 'c1.dll')) | + ForEach-Object { [pscustomobject]@{ path = $_; sha256 = Get-Sha256 $_ } } + $midlScripts = @('MidlHeaderUtils.ps1', 'ConvertMidlAttributesToSalAnnotations.ps1') | ForEach-Object { + [pscustomobject]@{ path = "$PSScriptRoot\$_"; sha256 = Get-Sha256 "$PSScriptRoot\$_" } + } +} +$sawPostMidl = $false $patches = @($config.patches | ForEach-Object { - if (!$_.StartsWith('post-midl\', [StringComparison]::Ordinal)) { + $stage = $_.Split('\')[0] + if ($stage -notin @('pre-midl', 'post-midl') -or ($stage -eq 'pre-midl' -and (!$hasMidl -or $sawPostMidl))) { throw "Patch is on the wrong side of the MIDL boundary: $_" } + $sawPostMidl = $stage -eq 'post-midl' + $admitted = if ($stage -eq 'pre-midl') { @($midlInputs.path | Where-Object { $_.EndsWith('.idl') }) } else { @($config.headers.path) } $path = Resolve-Child $recipeRoot $_ if (!(Test-Path -LiteralPath $path -PathType Leaf)) { throw "Missing patch: $path" @@ -156,9 +336,18 @@ $patches = @($config.patches | ForEach-Object { } $oldPath = $before.Groups[2].Value.Substring($oldPrefix.Length) $newPath = $after.Groups[2].Value.Substring($newPrefix.Length) - if ($oldPath -cne $newPath -or $newPath.Replace('/', '\') -notin @($config.headers.path)) { + if ($oldPath -cne $newPath -or $newPath.Replace('/', '\') -notin $admitted) { throw "A patch must modify one admitted header without changing its identity: $_" } + if ($stage -eq 'post-midl') { + $header = $config.headers | Where-Object path -eq $newPath.Replace('/', '\') + $sdkIdl = [IO.Path]::ChangeExtension((Resolve-Child $SdkPackageRoot $header.sdkPath), '.idl') + if ([IO.Path]::GetExtension($header.sdkPath) -eq '.idl' -or + ([IO.File]::ReadAllText((Resolve-Child $SourceRoot $header.path)).Contains('File created by MIDL compiler') -and + (Test-Path -LiteralPath $sdkIdl -PathType Leaf))) { + throw "A shipped-IDL-backed annotation patch belongs before MIDL: $_" + } + } } $statistics = @(& git -C $repoRoot apply -p4 --numstat -- $path) if ($LASTEXITCODE -ne 0 -or !$statistics.Count) { @@ -166,11 +355,11 @@ $patches = @($config.patches | ForEach-Object { } foreach ($statistic in $statistics) { if ($statistic -notmatch '^\d+\t\d+\t(.+)$' -or - $Matches[1].Replace('/', '\') -notin @($config.headers.path)) { + $Matches[1].Replace('/', '\') -notin $admitted) { throw "Patch changes a path outside its reviewed header set: $statistic" } } - [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path } + [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path; stage = $stage } }) if (@($patches.path | Sort-Object -Unique).Count -ne $patches.Count) { throw 'A patch is listed more than once.' @@ -182,7 +371,8 @@ $staging = $null try { $sourceState = Get-DirectoryState $SourceRoot $identity = Get-TextHash ((Get-Sha256 $Recipe) + (Get-Sha256 $PSCommandPath) + $sourceState.sha256 + - (($patches | ForEach-Object { "$($_.path):$($_.sha256)" }) -join "`n")) + (($patches | ForEach-Object { "$($_.path):$($_.sha256)" }) -join "`n") + + (($midlTools + $midlScripts | ForEach-Object { "$($_.path):$($_.sha256)" }) -join "`n")) $destination = "$OutputRoot\$identity" $manifestPath = "$destination\manifest.json" Assert-OrdinaryPath $manifestPath @@ -196,6 +386,9 @@ try { if ($manifest.identity -ne $identity -or $manifest.preparedSha256 -ne $actual.sha256) { throw "Published header cache was modified: $destination. Do not repair a tree that a scraper may be reading." } + if ($hasMidl -and $manifest.midlSha256 -ne (Get-DirectoryState "$destination\midl").sha256) { + throw "Published MIDL cache was modified: $destination." + } return [pscustomobject]@{ IncludeRoot = "$destination\headers"; Manifest = $manifestPath; Identity = $identity; Reused = $true } } @@ -209,20 +402,25 @@ try { if ((Get-DirectoryState "$staging\headers").sha256 -ne $sourceState.sha256) { throw 'The source header tree changed while it was being copied.' } - foreach ($patch in $patches) { - $arguments = @('-C', $repoRoot, 'apply', '--unsafe-paths', '-p4', "--directory=$staging\headers", '--whitespace=error-all') - $output = & git @arguments --check -- $patch.fullPath 2>&1 - if ($LASTEXITCODE -ne 0) { - throw "Patch preflight failed for $($patch.path):`n$($output -join "`n")" - } - $output = & git @arguments -- $patch.fullPath 2>&1 - if ($LASTEXITCODE -ne 0) { - throw "Patch failed for $($patch.path):`n$($output -join "`n")" - } + if ($hasMidl) { + Invoke-PreparedMidl $staging + } + foreach ($patch in @($patches | Where-Object stage -eq 'post-midl')) { + Invoke-HeaderPatch $patch "$staging\headers" } if ((Get-DirectoryState $SourceRoot).sha256 -ne $sourceState.sha256) { throw 'The source header tree changed during preparation.' } + foreach ($input in $midlInputs) { + if ((Get-Sha256 $input.fullPath) -ne $input.sha256) { + throw "The selected SDK MIDL input changed during preparation: $($input.path)" + } + } + foreach ($tool in @($midlTools + $midlScripts)) { + if ((Get-Sha256 $tool.path) -ne $tool.sha256) { + throw "A MIDL tool or SAL converter changed during preparation: $($tool.path)" + } + } $prepared = Get-DirectoryState "$staging\headers" $manifest = [ordered]@{ schemaVersion = 1 @@ -237,6 +435,12 @@ try { preparedSha256 = $prepared.sha256 files = $prepared.files } + if ($hasMidl) { + $manifest.midlInputs = @($midlInputs | Select-Object path, sdkPath, sha256) + $manifest.midlTools = $midlTools + $manifest.midlScripts = $midlScripts + $manifest.midlSha256 = (Get-DirectoryState "$staging\midl").sha256 + } [IO.File]::WriteAllText("$staging\manifest.json", ($manifest | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) [IO.Directory]::Move($staging, $destination) $staging = $null diff --git a/scripts/RecompileIdlFilesForScraping.ps1 b/scripts/RecompileIdlFilesForScraping.ps1 index 5e54df3c1..8c176587c 100644 --- a/scripts/RecompileIdlFilesForScraping.ps1 +++ b/scripts/RecompileIdlFilesForScraping.ps1 @@ -71,8 +71,14 @@ $idlFilesToRecompile | ForEach-Object -ThrottleLimit ([System.Math]::Max([System Write-Verbose "MidlRsp: $midlRsp" + . "$using:PSScriptRoot\MidlHeaderUtils.ps1" + $arguments = Get-MidlHeaderArguments -InputFile $inputFileName ` + -OutputDirectory $using:recompiledIdlHeadersScratchDir -OutputHeader $outputHeader ` + -IncludeDirectories @($using:recompiledIdlHeadersScratchDir, "$using:recompiledIdlHeadersDir\um", + "$using:recompiledIdlHeadersDir\shared", "$using:recompiledIdlHeadersDir\winrt", "$using:PSScriptRoot\inc") + # Write the params as an rsp so we can run later - Set-Content -Path $midlRsp "$inputFileName /out $($using:recompiledIdlHeadersScratchDir) /header $outputHeader /no_warn /DUNICODE /D_UNICODE /DWINVER=0x0A00 -D_APISET_MINWIN_VERSION=0x010F /DNTDDI_VERSION=0x0A00000C /DBUILD_UMS_ENABLED=0 /DBUILD_WOW64_ENABLED=0 /DBUILD_ARM64X_ENABLED=0 /DEXECUTABLE_WRITES_SUPPORT=0 -D_USE_DECLSPECS_FOR_SAL=1 -D_CONTROL_FLOW_GUARD_SVCTAB=1 -DMIDL_PASS=1 /D_AMD64_ /D_WIN64 /D_WCHAR_T_DEFINED /no_stamp /nologo /no_settings_comment /lcid 1033 /sal /amd64 /target NT100 /Zp8 /I$($using:recompiledIdlHeadersScratchDir) /I$($using:recompiledIdlHeadersDir)\um /I$($using:recompiledIdlHeadersDir)\shared /I$($using:recompiledIdlHeadersDir)\winrt /I""$($using:PSScriptRoot)\inc""" + Set-Content -Path $midlRsp (($arguments + '/no_warn' | ForEach-Object { '"' + $_ + '"' }) -join ' ') & $using:midl `@$midlRsp 3>&1 2>&1 > $outputLog diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 38cc911c9..6aaa44ecb 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Text.Json; +using System.Text.Json.Nodes; using System.Xml.Linq; using Xunit; @@ -186,6 +187,150 @@ public void OneSdkPreparationPrecedesAllConsumersAndInvalidatesEveryArchitecture } } + [Fact] + public void PreMidlRegenerationPreservesSalImportsSourcesAndRepeatBytes() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + byte[] original = File.ReadAllBytes(fixture.MidlInput); + var first = fixture.Prepare(); + string header = Path.Combine(first.IncludeRoot, "um", "generated.h"); + Assert.Contains("#define IDL_VALUE 2", File.ReadAllText(header)); + Assert.Contains("_Out_", File.ReadAllText(header)); + Assert.Contains("_Win32_Retval_", File.ReadAllText(header)); + Assert.Contains("typedef long DEPENDENCY", File.ReadAllText(Path.Combine(first.IncludeRoot, "um", "dependency.h"))); + Assert.Contains("VALUE 2", File.ReadAllText(Path.Combine(first.IncludeRoot, "um", "sample.h"))); + Assert.Equal(original, File.ReadAllBytes(fixture.MidlInput)); + Assert.True(fixture.Prepare().Reused); + + var repeated = fixture.Prepare(outputRoot: fixture.Output + "-repeat"); + Assert.False(repeated.Reused); + Assert.Equal(first.Identity, repeated.Identity); + foreach (string name in new[] { "generated.h", "dependency.h", "sample.h" }) + Assert.Equal(File.ReadAllBytes(Path.Combine(first.IncludeRoot, "um", name)), + File.ReadAllBytes(Path.Combine(repeated.IncludeRoot, "um", name))); + string commands = File.ReadAllText(Path.Combine(Path.GetDirectoryName(first.IncludeRoot), "midl", "commands.json")); + Assert.DoesNotContain("/no_warn", commands); + Assert.DoesNotContain("/WX", commands); + Assert.Contains("MIDL2495", commands); + Assert.Contains("/X", commands); + } + + [Theory] + [InlineData("source", "Selected SDK input mismatch")] + [InlineData("import", "Selected SDK input mismatch")] + [InlineData("compiler", "Selected SDK MIDL compiler mismatch")] + public void ChangedMidlInputsCannotReuseAPublishedCache(string mutation, string diagnostic) + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + fixture.Prepare(); + File.AppendAllText(mutation == "source" ? fixture.MidlInput : + mutation == "import" ? fixture.MidlDependency : fixture.MidlCompiler, "// changed"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains(diagnostic, result.Error); + } + + [Fact] + public void UnpinnedMidlImportsCannotFallBackToAmbientSdkPaths() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + fixture.MutateRecipe(recipe => + { + recipe["midl"]["inputs"].AsArray().RemoveAt(1); + recipe["midl"]["outputs"].AsArray().RemoveAt(0); + }); + var result = fixture.Run(ambientInclude: Path.GetDirectoryName(fixture.MidlDependency)); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("MIDL failed", result.Error); + Assert.Contains("dependency.idl", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void ShippedIdlPatchesCannotMoveBackAfterMidlOrFollowHeaderPatches() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + fixture.MutateRecipe(recipe => + { + var patches = recipe["patches"].AsArray(); + var first = patches[0].DeepClone(); + patches.RemoveAt(0); + patches.Add(first); + }); + var ordering = fixture.Run(); + Assert.NotEqual(0, ordering.ExitCode); + Assert.Contains("wrong side of the MIDL boundary", ordering.Error); + + fixture.EnableMidl(); + fixture.WriteGeneratedHeaderPatch(); + var stage = fixture.Run(); + Assert.NotEqual(0, stage.ExitCode); + Assert.Contains("belongs before MIDL", stage.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void PublishedMidlClosureTamperingIsRejected() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + var prepared = fixture.Prepare(); + string converted = Path.Combine(Path.GetDirectoryName(prepared.IncludeRoot), "midl", "sal", "um", "generated.idl"); + File.AppendAllText(converted, "// changed"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("Published MIDL cache was modified", result.Error); + } + + [Fact] + public void MidlSyntaxFailurePublishesNothingAndDoesNotReuseMirrorHeaders() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + File.AppendAllText(fixture.MidlInput, "\r\nnot valid IDL;\r\n"); + fixture.MutateRecipe(recipe => + { + string hash = Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(fixture.MidlInput))); + recipe["midl"]["inputs"][0]["sdkSha256"] = hash; + recipe["headers"][1]["sdkSha256"] = hash; + }); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("MIDL failed", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void GeneratedHeaderCannotHideItsShippedIdlBehindAHeaderSdkPath() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + fixture.DisguiseGeneratedHeaderAsSdkHeader(); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("belongs before MIDL", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void SalConversionDoesNotSkipParametersBesideMetadataOrOtherAnnotations() + { + using var fixture = new Fixture(); + const string input = "void F([out, retval][annotation(\"_Win32_Retval_\")] long* value, [in] long count);\r\n" + + "void G([out][retval][annotation(\"_Out_retval_\")] long* value, [in] long count);\r\n" + + "void H([annotation(\"_Win32_Retval_\")][out][retval] long* value);\r\n" + + "cpp_quote(\"void Native([out] long* value);\")\r\n"; + string converted = fixture.ConvertSal(input); + Assert.Contains("[out, retval][annotation(\"_Out_retval_ _Win32_Retval_\")]", converted); + Assert.Equal(3, converted.Split("_Out_retval_").Length - 1); + Assert.Equal(2, converted.Split("[annotation(\"_In_\")]").Length - 1); + Assert.Contains("cpp_quote(\"void Native([out] long* value);\")", converted); + } + private sealed class Fixture : IDisposable { internal const string Before = "#ifndef SAMPLE_H\r\n#define SAMPLE_H\r\n#define VALUE 1\r\n#endif\r\n"; @@ -233,6 +378,9 @@ internal Fixture() internal string Unrelated { get; } internal string SdkHeader { get; } internal string Output { get; } + internal string MidlInput => Path.Combine(this.sdk, "c", "include", "um", "generated.idl"); + internal string MidlDependency => Path.Combine(this.sdk, "c", "include", "um", "dependency.idl"); + internal string MidlCompiler => Path.Combine(this.sdk, "c", "bin", "x64", "midl.exe"); internal string BuildEvents => Path.Combine(this.root, "build-events.txt"); internal string[] ScrapeMarkers => new[] { "scannedheaders.crossarch.txt", "scannedheaders.x86.txt", "scannedheaders.x64.txt", "scannedheaders.arm64.txt", "constants.scraped.txt" } @@ -270,14 +418,121 @@ internal void WriteRecipe(string stage = "post-midl", string version = "10.0.261 })); } - internal PreparationResult Prepare(string workingDirectory = null) + internal void EnableMidl() + { + WriteRecipe(); + string input = "cpp_quote(\"#define IDL_VALUE 1\")\r\nimport \"dependency.idl\";\r\n" + + "[uuid(7a22f761-442c-4260-9d80-4c937dce56b6), version(1.0), pointer_default(unique)]\r\n" + + "interface IMidlFixture { void Read([out][annotation(\"_Win32_Retval_\")] DEPENDENCY* result); };\r\n"; + const string dependency = "typedef long DEPENDENCY;\r\n"; + foreach (string path in new[] { MidlInput, MidlCompiler }) + Directory.CreateDirectory(Path.GetDirectoryName(path)); + File.WriteAllText(MidlInput, input, new UTF8Encoding(false)); + File.WriteAllText(MidlDependency, dependency, new UTF8Encoding(false)); + var props = XDocument.Load(Path.Combine(RepositoryRoot, "obj", "BuildTools", "BuildTools.proj.nuget.g.props")); + string package = props.Descendants().Single(element => element.Name.LocalName == "PkgMicrosoft_Windows_SDK_CPP").Value; + foreach (string name in new[] { "midl.exe", "midlc.exe" }) + File.Copy(Path.Combine(package, "c", "bin", "10.0.26100.0", "x64", name), + Path.Combine(Path.GetDirectoryName(MidlCompiler), name), overwrite: true); + + const string beforeHeader = "/* File created by MIDL compiler */\r\n"; + foreach (string name in new[] { "generated", "dependency" }) + File.WriteAllText(Path.Combine(this.source, "um", name + ".h"), beforeHeader); + const string prePatch = @"pre-midl\um\generated.patch"; + string patchFile = Path.Combine(this.root, prePatch); + Directory.CreateDirectory(Path.GetDirectoryName(patchFile)); + File.WriteAllText(patchFile, + "diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl b/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n" + + "--- a/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n+++ b/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n" + + "@@ -1,3 +1,3 @@\n-cpp_quote(\"#define IDL_VALUE 1\")\r\n+cpp_quote(\"#define IDL_VALUE 2\")\r\n" + + " import \"dependency.idl\";\r\n [uuid(7a22f761-442c-4260-9d80-4c937dce56b6), version(1.0), pointer_default(unique)]\r\n", + new UTF8Encoding(false)); + MutateRecipe(recipe => + { + foreach (string name in new[] { "generated", "dependency" }) + recipe["headers"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"um\" + name + ".h", + sourceSha256 = Hash(Encoding.UTF8.GetBytes(beforeHeader)), + sdkPath = @"c\include\um\" + name + ".idl", + sdkSha256 = Hash(File.ReadAllBytes(Path.Combine(this.sdk, "c", "include", "um", name + ".idl"))), + })); + recipe["midl"] = JsonSerializer.SerializeToNode(new + { + tools = new[] { "midl.exe", "midlc.exe" }.Select(name => new + { + sdkPath = @"c\bin\x64\" + name, + sha256 = Hash(File.ReadAllBytes(Path.Combine(Path.GetDirectoryName(MidlCompiler), name))), + }), + inputs = new[] { "generated", "dependency" }.Select(name => new + { + path = @"um\" + name + ".idl", + sdkPath = @"c\include\um\" + name + ".idl", + sdkSha256 = Hash(File.ReadAllBytes(Path.Combine(this.sdk, "c", "include", "um", name + ".idl"))), + }), + outputs = new[] { "dependency", "generated" }.Select(name => new + { + source = @"um\" + name + ".idl", + path = @"um\" + name + ".h", + }), + }); + recipe["patches"] = JsonSerializer.SerializeToNode(new[] { prePatch, PatchPath }); + }); + } + + internal void MutateRecipe(Action mutate) + { + var recipe = JsonNode.Parse(File.ReadAllText(this.recipe)).AsObject(); + mutate(recipe); + File.WriteAllText(this.recipe, recipe.ToJsonString()); + } + + internal void WriteGeneratedHeaderPatch() + { + const string relative = @"post-midl\um\generated.patch"; + File.WriteAllText(Path.Combine(this.root, relative), + "diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/generated.h b/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n" + + "--- a/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n+++ b/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n" + + "@@ -1 +1,2 @@\n /* File created by MIDL compiler */\r\n+// annotation\r\n"); + MutateRecipe(recipe => recipe["patches"].AsArray().Add(relative)); + } + + internal void DisguiseGeneratedHeaderAsSdkHeader() { - var result = Run(workingDirectory); + WriteGeneratedHeaderPatch(); + string target = Path.ChangeExtension(MidlInput, ".h"); + File.Copy(Path.Combine(this.source, "um", "generated.h"), target); + MutateRecipe(recipe => + { + recipe.Remove("midl"); + recipe["patches"].AsArray().RemoveAt(0); + recipe["headers"][1]["sdkPath"] = @"c\include\um\generated.h"; + recipe["headers"][1]["sdkSha256"] = Hash(File.ReadAllBytes(target)); + }); + } + + internal string ConvertSal(string input) + { + string source = Path.Combine(this.root, "sal.idl"); + string target = Path.Combine(this.root, "sal-converted.idl"); + File.WriteAllText(source, input); + var start = new ProcessStartInfo("pwsh") { UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true }; + foreach (string argument in new[] { "-NoProfile", "-NonInteractive", "-File", + Path.Combine(RepositoryRoot, "scripts", "ConvertMidlAttributesToSalAnnotations.ps1"), source, target }) + start.ArgumentList.Add(argument); + var result = Execute(start); + Assert.True(result.ExitCode == 0, result.Error + result.Output); + return File.ReadAllText(target); + } + + internal PreparationResult Prepare(string workingDirectory = null, string outputRoot = null) + { + var result = Run(workingDirectory, outputRoot: outputRoot); Assert.True(result.ExitCode == 0, result.Error + result.Output); return JsonSerializer.Deserialize(result.Output); } - internal ProcessResult Run(string workingDirectory = null) + internal ProcessResult Run(string workingDirectory = null, string ambientInclude = null, string outputRoot = null) { static string Quote(string value) => "'" + value.Replace("'", "''") + "'"; var start = new ProcessStartInfo("pwsh") @@ -288,6 +543,11 @@ internal ProcessResult Run(string workingDirectory = null) RedirectStandardOutput = true, RedirectStandardError = true, }; + if (ambientInclude != null) + { + start.Environment["INCLUDE"] = ambientInclude; + start.Environment["CL"] = "/I\"" + ambientInclude + "\""; + } foreach (string argument in new[] { "-NoLogo", "-NoProfile", "-NonInteractive", "-Command" }) { start.ArgumentList.Add(argument); @@ -296,7 +556,7 @@ internal ProcessResult Run(string workingDirectory = null) start.ArgumentList.Add("$ErrorActionPreference = 'Stop'; & " + Quote(Path.Combine(RepositoryRoot, "scripts", "Prepare-SdkHeaders.ps1")) + " -Recipe " + Quote(this.recipe) + " -SourceRoot " + Quote(this.source) + - " -SdkPackageRoot " + Quote(this.sdk) + " -OutputRoot " + Quote(Output) + + " -SdkPackageRoot " + Quote(this.sdk) + " -OutputRoot " + Quote(outputRoot ?? Output) + " | ConvertTo-Json -Compress"); return Execute(start); } diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 6f9194e4a..81477d8cd 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -110,6 +110,62 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() Assert.DoesNotContain("_Windows_SupportedOS_", File.ReadAllText(Path.Combine(root, patch))); } + [MigrationFact] + public void RegeneratedAssessorKeepsItsSingleTypeFloorWithoutMethodInheritance() + { + using var current = Open("WINHTTP_MIGRATION_NEW"); + var reader = current.Reader; + var types = reader.TypeDefinitions.Select(reader.GetTypeDefinition) + .Where(type => reader.GetString(type.Namespace) == "Windows.Win32.System.UpdateAssessment" && + reader.GetString(type.Name) == "IWaaSAssessor").ToArray(); + Assert.NotEmpty(types); + foreach (var type in types) + { + Assert.Equal(new[] { "windows10.0.15063" }, + AttributeValues(reader, type.GetCustomAttributes(), "SupportedOSPlatformAttribute")); + Assert.All(type.GetMethods().Select(reader.GetMethodDefinition), + method => Assert.Empty(AttributeValues(reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute"))); + } + } + + [MigrationTheory] + [InlineData(1)] + [InlineData(2)] + [InlineData(4)] + public void All119EffectivePilotFloorsMatchOldOnEveryArchitecture(int architecture) + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + string[] before = Floors(old.Reader); + string[] after = Floors(current.Reader); + Assert.Equal(119, before.Length); + Assert.Equal(before, after); + this.output.WriteLine($"Architecture {architecture}: all 119 exact effective pilot OS floors unchanged."); + + string[] Floors(MetadataReader reader) + { + var result = new List(); + foreach (var type in reader.TypeDefinitions.Select(reader.GetTypeDefinition) + .Where(type => Supports(reader, type.GetCustomAttributes(), architecture))) + { + string ns = reader.GetString(type.Namespace), name = reader.GetString(type.Name); + if (ns == "Windows.Win32.System.UpdateAssessment" && name == "IWaaSAssessor") + result.AddRange(AttributeValues(reader, type.GetCustomAttributes(), "SupportedOSPlatformAttribute") + .Select(floor => ns + "." + name + "=" + floor)); + if (name != "Apis") continue; + foreach (var method in type.GetMethods().Select(reader.GetMethodDefinition) + .Where(method => Supports(reader, method.GetCustomAttributes(), architecture))) + { + string methodName = reader.GetString(method.Name); + if (ns == WinHttpNamespace || AdditionalOwnedMethods.Contains(methodName, StringComparer.Ordinal)) + result.AddRange(AttributeValues(reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute") + .Select(floor => ns + "." + methodName + "=" + floor)); + } + } + return result.OrderBy(value => value, StringComparer.Ordinal).ToArray(); + } + } + [MigrationFact] public void CompleteNewImageClosesConstructorsAndFrozenOldDefectIsExplicit() { diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 09d745462..1fd9c7f9f 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -217,8 +217,34 @@ public static IEnumerable AdditionalPartitions() } } + [NativeMigrationTheory] + [InlineData("x86", "i686-pc-windows-msvc", false)] + [InlineData("x64", "x86_64-pc-windows-msvc", false)] + [InlineData("arm64", "aarch64-pc-windows-msvc", false)] + [InlineData("x86", "i686-pc-windows-msvc", true)] + [InlineData("x64", "x86_64-pc-windows-msvc", true)] + [InlineData("arm64", "aarch64-pc-windows-msvc", true)] + public void RegeneratedSdkIdlKeepsNativeAbiAndOnlyTheIntendedAnnotation(string architecture, string target, bool enabled) + { + string root = WinHttpMigrationTests.RepositoryRoot; + string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); + string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); + string[] headers = { "waasapi.h", "waasapitypes.h" }; + var annotations = new List(); + var before = Surface(root, original, "UpdateAssessment", architecture, target, headers, ""); + var after = Surface(root, prepared, "UpdateAssessment", architecture, target, headers, "", + metadataEnabled: enabled, annotations: annotations); + Assert.NotEmpty(before); + Assert.Equal(before, after); + Assert.Equal(enabled ? new[] { "IWaaSAssessor|SupportedOSPlatform(\"windows10.0.15063\")" } : + Array.Empty(), annotations.Distinct(StringComparer.Ordinal).OrderBy(value => value, StringComparer.Ordinal)); + Assert.Contains("_Out_retval_ OSUpdateAssessment *result", File.ReadAllText(Path.Combine(prepared, "um", "waasapi.h"))); + this.output.WriteLine($"Regenerated waasapi/{architecture}/metadata={enabled}: {after.Length} unchanged native facts; " + + $"{annotations.Distinct(StringComparer.Ordinal).Count()} exact type-only OS annotation."); + } + private static unsafe string[] Surface(string root, string includeRoot, string partition, string architecture, - string target, string[] headers, string checks) + string target, string[] headers, string checks, bool metadataEnabled = false, List annotations = null) { string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); var arguments = new List @@ -243,6 +269,8 @@ private static unsafe string[] Surface(string root, string includeRoot, string p } } Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); + if (metadataEnabled) + arguments.Add("-DWIN32METADATA=1"); using var unsaved = CXUnsavedFile.Create(source, File.ReadAllText(source) + checks); using var index = CXIndex.Create(false, false); Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), @@ -303,6 +331,13 @@ CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor } cursor.VisitChildren((child, parent, data) => { + if (annotations != null && headers.Contains(header, StringComparer.OrdinalIgnoreCase) && + child.Kind == CXCursorKind.CXCursor_AnnotateAttr) + { + string value = Text(child.Spelling); + if (value.StartsWith("SupportedOSPlatform(", StringComparison.Ordinal)) + annotations.Add(owner + name + "|" + value); + } if (child.IsDeclaration || child.IsTranslationUnit) Walk(child, childOwner); return CXChildVisitResult.CXChildVisit_Continue; From 129b900d5a8fab9189f2c4ff1f5e301b5634fecb Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 10:45:03 -0700 Subject: [PATCH 27/57] Preserve pre-MIDL CI provenance and image equivalence Export the verified preparation manifest and closed MIDL inputs, converted IDLs, commands and diagnostics beside existing generated assets. Record the actual 8125cddd full-image producer and its zero B9/direct delta without relabeling historical evidence; preserve all 119 floors and the exact 48 existing enum-use differences. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 27 ++++++++++++++++ generation/WinSDK/Windows.Win32.proj | 11 +++++++ .../PreparedSdkHeadersTests.cs | 32 +++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 614cf59a1..24d88da79 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -78,6 +78,10 @@ outputs and their hashes in the private cache. Keep warnings enabled and compare the exact diagnostic/target/payload multiset against unmodified-IDL regeneration, accounting only for source line shifts. Do not add native `[local]` attributes or suppress diagnostics to make an annotation compile. +The same SDK stage copies its verified manifest and MIDL evidence to +`obj\prepared-sdk-provenance\\` so existing generated-asset +CI artifacts preserve actual compiler identities and closed inputs, not just an +ephemeral include-root pathname. Metadata must compose with native SAL. The converter does not skip a parameter line merely because it also contains metadata annotations. Consolidate adjacent @@ -493,6 +497,29 @@ ambient-include isolation, repeat bytes and cache tampering. These native and preparation results are separate from final-image and exact-head CI admission; the immutable B9 and scoped-adoption evidence above is not relabeled. +The committed local producer is +`8125cddd2ec2fbf20c6e58a58f233ac95599dd82`, normally synchronized to qualified +tooling `7ea6c85d85f6e54ba39273f9ef4897d3301d42e1`. + +| Immutable local pre-MIDL evidence | SHA256 | +| --- | --- | +| Full pilot image | `9F8BA94A4376998FD177240CEA541F616672AB7C96CC9893B8C55A5E371AE35E` | +| Image provenance | `2D83ECDC7E8A94BD424E0FC7C33C7A512D92903F1E93FB527122D985E5AB553C` | +| Fresh frozen-input tooling control | `C4C5081A2CD62F9E2ED300E2841617672E866A84B8AD8142CE80FA243DEC281D` | + +This actual image has zero declared and physical differences from accepted B9 +and the matched canonical-direct control, and zero declared differences from +qualified c587. All 119 effective OS floors match OLD on every architecture; +the existing OLD-to-NEW grade remains exactly 48 differences at 24 existing +enum-use sites, with zero unknown or unused expectations. All 30 +physical/no-fallback/OS-floor cases and 14 SDK integrity cases execute and pass. +The complete 393-file diagnostic closure, 36 repeated source/discovery inputs +and 155 pointer reductions are retained. Artifacts are under +`artifacts\pre-midl-pilot`. These local receipts retain their actual producer; +final-head CI and its downloaded-image grade are recorded separately in the +[draft PR](https://github.com/microsoft/win32metadata/pull/2365). +No full-SDK migration or consumer work is resumed by this source-format change. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, diff --git a/generation/WinSDK/Windows.Win32.proj b/generation/WinSDK/Windows.Win32.proj index ddc4fc320..1be65fcee 100644 --- a/generation/WinSDK/Windows.Win32.proj +++ b/generation/WinSDK/Windows.Win32.proj @@ -92,5 +92,16 @@ + + <_PreparedSdkCache>$([System.IO.Path]::GetDirectoryName('$(SdkIncRoot)')) + <_PreparedSdkIdentity>$([System.IO.Path]::GetFileName('$(_PreparedSdkCache)')) + <_PreparedSdkProvenance>$(ObjDir)\prepared-sdk-provenance\$(ScanArch)\$(_PreparedSdkIdentity) + + + <_PreparedMidlEvidence Include="$(_PreparedSdkCache)\midl\**\*" /> + + + diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 6aaa44ecb..de686fe80 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -183,10 +183,22 @@ public void OneSdkPreparationPrecedesAllConsumersAndInvalidatesEveryArchitecture Assert.Equal(previous, includeRoot); if (pass == 2) Assert.NotEqual(previous, includeRoot); + fixture.AssertPublishedProvenance(includeRoot); previous = includeRoot; } } + [Fact] + public void SdkBuildPreservesTheActualMidlClosureBesideGeneratedAssets() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + var result = fixture.RunSdkBuild("ScrapeConstants", "Sample"); + Assert.True(result.ExitCode == 0, result.Error + result.Output); + string includeRoot = File.ReadAllLines(fixture.BuildEvents)[0].Split('|')[1]; + fixture.AssertPublishedProvenance(includeRoot, hasMidl: true); + } + [Fact] public void PreMidlRegenerationPreservesSalImportsSourcesAndRepeatBytes() { @@ -525,6 +537,26 @@ internal string ConvertSal(string input) return File.ReadAllText(target); } + internal void AssertPublishedProvenance(string includeRoot, bool hasMidl = false) + { + string cache = Path.GetDirectoryName(includeRoot); + string published = Path.Combine(this.root, "obj", "prepared-sdk-provenance", "crossarch", Path.GetFileName(cache)); + Assert.Equal(File.ReadAllBytes(Path.Combine(cache, "manifest.json")), + File.ReadAllBytes(Path.Combine(published, "manifest.json"))); + string source = Path.Combine(cache, "midl"); + string target = Path.Combine(published, "midl"); + Assert.Equal(hasMidl, Directory.Exists(target)); + if (!hasMidl) return; + string[] files = Directory.GetFiles(source, "*", SearchOption.AllDirectories) + .Select(path => Path.GetRelativePath(source, path)).OrderBy(path => path, StringComparer.Ordinal).ToArray(); + Assert.Contains(Path.Combine("sal", "um", "generated.idl"), files); + Assert.Contains("commands.json", files); + Assert.Equal(files, Directory.GetFiles(target, "*", SearchOption.AllDirectories) + .Select(path => Path.GetRelativePath(target, path)).OrderBy(path => path, StringComparer.Ordinal)); + foreach (string path in files) + Assert.Equal(File.ReadAllBytes(Path.Combine(source, path)), File.ReadAllBytes(Path.Combine(target, path))); + } + internal PreparationResult Prepare(string workingDirectory = null, string outputRoot = null) { var result = Run(workingDirectory, outputRoot: outputRoot); From 25b752bbc93ee4eacf821aef44c98306cff8f902 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 12:41:00 -0700 Subject: [PATCH 28/57] Consolidate patches by SDK artifact Fold the six WinHttp layers into one pristine-SDK diff, key every patch by its SDK artifact, and reject duplicate or generated-header targets. Preserve prepared header and MIDL closure bytes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 38 +- docs/winhttp-header-annotations.md | 17 +- generation/WinSDK/patches/SdkHeaders.json | 27 +- .../um/windowsceip.annotations.patch | 19 - .../post-midl/um/winhttp.callback-alias.patch | 13 - .../um/winhttp.interior-pointers.patch | 12 - .../post-midl/um/winhttp.last-error.patch | 216 ------- .../post-midl/um/winhttp.logical-enums.patch | 178 ------ .../um/winhttp.port-constant-types.patch | 26 - .../post-midl/um/winhttp.supported-os.patch | 195 ------- .../Psapi.h.patch} | 6 +- .../TlHelp32.h.patch} | 6 +- .../Xinput.h.patch} | 6 +- .../avrfsdk.h.patch} | 6 +- .../magnification.h.patch} | 6 +- .../timezoneapi.h.patch} | 6 +- .../ual.annotations.patch => um/ual.h.patch} | 6 +- .../waasapi.idl.patch} | 6 +- .../WinSDK/patches/um/windowsceip.h.patch | 19 + generation/WinSDK/patches/um/winhttp.h.patch | 532 ++++++++++++++++++ .../wslapi.h.patch} | 6 +- scripts/Prepare-SdkHeaders.ps1 | 99 ++-- .../PreparedSdkHeadersTests.cs | 111 +++- 23 files changed, 778 insertions(+), 778 deletions(-) delete mode 100644 generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch delete mode 100644 generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch rename generation/WinSDK/patches/{post-midl/um/psapi.annotations.patch => um/Psapi.h.patch} (93%) rename generation/WinSDK/patches/{post-midl/um/tlhelp32.annotations.patch => um/TlHelp32.h.patch} (92%) rename generation/WinSDK/patches/{post-midl/um/xinput.annotations.patch => um/Xinput.h.patch} (95%) rename generation/WinSDK/patches/{post-midl/um/avrfsdk.annotations.patch => um/avrfsdk.h.patch} (82%) rename generation/WinSDK/patches/{post-midl/um/magnification.annotations.patch => um/magnification.h.patch} (89%) rename generation/WinSDK/patches/{post-midl/um/timezoneapi.annotations.patch => um/timezoneapi.h.patch} (87%) rename generation/WinSDK/patches/{post-midl/um/ual.annotations.patch => um/ual.h.patch} (68%) rename generation/WinSDK/patches/{pre-midl/um/waasapi.annotations.patch => um/waasapi.idl.patch} (65%) create mode 100644 generation/WinSDK/patches/um/windowsceip.h.patch create mode 100644 generation/WinSDK/patches/um/winhttp.h.patch rename generation/WinSDK/patches/{post-midl/um/wslapi.annotations.patch => um/wslapi.h.patch} (86%) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 24d88da79..0f6e1136d 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -63,10 +63,18 @@ mirror and restore removed SDK artifacts. The existing preparation path supports an explicit `midl` closure in the same recipe. Pin every SDK IDL/import/ACF/preprocessor input, `midl.exe` and `midlc.exe`, and bind each regenerated output to its admitted mirror header and exact SDK -IDL. Apply ordered `pre-midl` patches to private copies, reuse the existing -MIDL-to-SAL conversion and shared `MidlHeaderUtils.ps1` flags, regenerate only -the admitted outputs, then apply direct-header `post-midl` patches. Scraping -and constants still consume one private root. Reject wrong-stage patches, +IDL. Keep one cumulative patch per SDK artifact, named with its SDK-relative path: +`patches\um\winhttp.h.patch` or `patches\um\waasapi.idl.patch`. Each diff targets +that same artifact (`a/um/winhttp.h` to `b/um/winhttp.h`), starting from its pristine +admitted SDK bytes, not another patch's output. Reject repeated targets even +under different filenames; do not stack semantic layers on a header. + +Artifact identity determines preparation, not a stage directory or recipe order. +Apply direct-header patches to private SDK header copies and IDL patches to the +pinned raw source closure before the existing MIDL-to-SAL conversion and shared +`MidlHeaderUtils.ps1` flags regenerate only the admitted outputs. There are no +post-MIDL annotation patches or patches on generated headers. Scraping +and constants still consume one private root. Reject generated-header patches, unpinned imports, changed tools/preimages, failed generation and modified caches; never fall back to an old generated header. @@ -460,7 +468,7 @@ an unpatched imported output regenerated with `waasapi.h`. All remaining annotation targets, including `winhttp.h`, remain direct-header patches. The eleven owners and fifteen owner/dependent partitions do not change. -`pre-midl\um\waasapi.annotations.patch` applies to the actual shipped +`um\waasapi.idl.patch` applies to the actual shipped `waasapi.idl` preimage `A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38`. It emits the annotation include and a C++-only forward declaration carrying @@ -520,6 +528,26 @@ final-head CI and its downloaded-image grade are recorded separately in the [draft PR](https://github.com/microsoft/win32metadata/pull/2365). No full-SDK migration or consumer work is resumed by this source-format change. +### SDK-artifact patch consolidation + +The six WinHttp semantic layers are folded into `um\winhttp.h.patch`, starting +from the pristine selected SDK header. The pilot now has eleven artifact-keyed +patches, including `um\waasapi.idl.patch`; there are no stage directories or +multiple patches on one canonical SDK artifact. The preparation guards reject +layered targets, bundled artifact diffs, generated-header targets and +intermediate direct-header preimages. + +The layout-only control against qualified `129b900d` compares every byte of all +3,443 prepared headers and retains tree SHA256 +`E8BED2C71FD18503B44A6B55B5D2DBE2B41E856888DA7AAC38A19FD97EFB6249`. +All twelve raw and SAL-converted MIDL inputs, both regenerated headers, commands, +actual import closure and baseline warnings are unchanged; cache reuse and cold +regeneration retain those header bytes. The focused 38 preparation cases and +13 directly affected native/layout cases pass without skips. No new local +all-partition scrape or emission is needed for this mechanical cleanup, and no +API-difference expectations change. Historical image qualification remains tied +to its original producer; the new head's CI state is recorded in the draft PR. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 3d7bcc547..83fdcf70e 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -50,7 +50,10 @@ Earlier images and receipts below are immutable historical evidence. `generation\WinSDK\patches\SdkHeaders.json` pins SDK CPP `10.0.26100.7705`, the post-MIDL mirror Git tree, exact header preimages, their selected-SDK inputs, and -patch order. `winhttp.h` is byte-identical to the selected package. The package +one cumulative patch per SDK artifact. `um\winhttp.h.patch` contains all WinHttp +deltas against the pristine selected package header; its six earlier semantic +layers are not separate patch inputs. Patch filenames and diff targets use the +SDK-relative artifact path, without stage directories. The package supplies `httprequest.idl`, not `httprequest.h`; the recipe separately pins the checked-in post-MIDL header and the identical selected-SDK IDL. WinHttp itself needs no IDL patch or recompilation. In the expanded eleven-owner pilot, @@ -72,12 +75,14 @@ header scraping and consume the same private root. The orchestration has no partition hook or WinHttp default recipe. The project supplies the SDK-wide recipe explicitly to the generic `Prepare-SdkHeaders.ps1` script, which copies the complete mirror into a private, -content-addressed include tree. Its optional pinned MIDL closure applies -pre-MIDL source patches and regenerates admitted headers/imported outputs before -the direct-header post-MIDL patches. Both stages publish the same include root. +content-addressed include tree. It applies direct SDK header patches privately; +its optional pinned MIDL closure applies SDK IDL patches before converting SAL +and regenerating admitted headers/imported outputs. Artifact identity determines +the boundary, regardless of recipe order. There are no generated-header annotation +patches. Both artifact kinds publish the same include root. It checks SDK/preimage and compiler/preprocessor identity, actual closed MIDL inputs, admitted patch targets, source/cache hashes, -ordinary paths, patch ordering, and strict patch applicability. Publication is +ordinary paths, unique canonical artifact targets, and strict patch applicability. Publication is transactional and serialized; a modified published cache is rejected, not repaired while a scraper might be reading it. Unmodified files retain their exact bytes. The tracked SDK mirror is never an output. @@ -113,7 +118,7 @@ All 59 bindings independently match the selected SDK's x64 `winhttp.lib` libraries. Library scanning is the default import authority, not an authored semantic fallback. `_Win32_ImportLibrary_` is reserved for necessary corrections to missing/incorrect scan data; none is needed for these 59 APIs. Generic parser -support and override controls remain unchanged. The six header patches contain +support and override controls remain unchanged. The cumulative WinHttp patch contains no `ImportLibrary` annotations, and import entrypoint/module/flags checks remain mandatory on all three architectures. `WinHttpIsHostInProxyBypassList` and `WinHttpQueryAuthParams` have native declarations diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 53de0f8db..3342e5485 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -191,21 +191,16 @@ "Xinput" ], "patches": [ - "pre-midl\\um\\waasapi.annotations.patch", - "post-midl\\um\\winhttp.supported-os.patch", - "post-midl\\um\\winhttp.last-error.patch", - "post-midl\\um\\winhttp.callback-alias.patch", - "post-midl\\um\\winhttp.interior-pointers.patch", - "post-midl\\um\\winhttp.port-constant-types.patch", - "post-midl\\um\\winhttp.logical-enums.patch", - "post-midl\\um\\windowsceip.annotations.patch", - "post-midl\\um\\avrfsdk.annotations.patch", - "post-midl\\um\\magnification.annotations.patch", - "post-midl\\um\\psapi.annotations.patch", - "post-midl\\um\\timezoneapi.annotations.patch", - "post-midl\\um\\ual.annotations.patch", - "post-midl\\um\\tlhelp32.annotations.patch", - "post-midl\\um\\wslapi.annotations.patch", - "post-midl\\um\\xinput.annotations.patch" + "um\\waasapi.idl.patch", + "um\\winhttp.h.patch", + "um\\windowsceip.h.patch", + "um\\avrfsdk.h.patch", + "um\\magnification.h.patch", + "um\\Psapi.h.patch", + "um\\timezoneapi.h.patch", + "um\\ual.h.patch", + "um\\TlHelp32.h.patch", + "um\\wslapi.h.patch", + "um\\Xinput.h.patch" ] } diff --git a/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch b/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch deleted file mode 100644 index 344ff77d3..000000000 --- a/generation/WinSDK/patches/post-midl/um/windowsceip.annotations.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h b/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/windowsceip.h -@@ -17,6 +17,7 @@ - #endif // _MSC_VER - - #include -+#include - - #ifdef __cplusplus - extern "C" { -@@ -27,6 +28,7 @@ - - #if (NTDDI_VERSION >= NTDDI_WIN8) - -+_Win32_SupportedOS_Windows81_ - BOOL - WINAPI - CeipIsOptedIn(); diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch b/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch deleted file mode 100644 index 3ad4c693a..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.callback-alias.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1035,7 +1035,9 @@ - IN DWORD dwStatusInformationLength - ); - -+#ifndef WIN32METADATA - typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; -+#endif - - - // diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch b/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch deleted file mode 100644 index 580d59e96..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.interior-pointers.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1989,7 +1989,7 @@ - _In_ UINT uiCodePage, - _Inout_opt_ PDWORD pdwIndex, - _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, -- _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) PVOID pBuffer, -+ _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) _Win32_ContainsInteriorPointers_ PVOID pBuffer, - _Inout_ PDWORD pdwBufferLength, - _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER *ppHeaders, - _Out_ PDWORD pdwHeadersCount diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch b/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch deleted file mode 100644 index 9e1bd3caf..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.last-error.patch +++ /dev/null @@ -1,216 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -1586,6 +1586,7 @@ - // - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - WINHTTP_STATUS_CALLBACK - WINAPI -@@ -1597,6 +1598,7 @@ - IN DWORD_PTR dwReserved - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1606,6 +1608,7 @@ - _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1615,6 +1618,7 @@ - _Out_ SYSTEMTIME *pst // output in GMT time - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1627,6 +1631,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1646,9 +1651,12 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - -+_Win32_SetLastError_ - WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); -+_Win32_SetLastError_ - WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); - _Win32_SupportedOS_END_() - -@@ -1659,6 +1667,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - HINTERNET - WINAPI -@@ -1671,6 +1680,7 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1679,6 +1689,7 @@ - IN HINTERNET hInternet - ); - -+_Win32_SetLastError_ - WINHTTPAPI - HINTERNET - WINAPI -@@ -1690,6 +1701,7 @@ - IN DWORD dwReserved - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1717,6 +1729,7 @@ - ); - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1728,6 +1741,7 @@ - OUT LPDWORD lpdwNumberOfBytesWritten - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1738,6 +1752,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1749,6 +1764,7 @@ - IN OUT LPDWORD lpdwBufferLength - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1775,6 +1791,7 @@ - _In_ DWORD dwBufferLength - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1817,6 +1834,7 @@ - // - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - HINTERNET - WINAPI -@@ -1831,6 +1849,7 @@ - IN DWORD dwFlags - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1859,6 +1878,7 @@ - ); - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1873,6 +1893,7 @@ - IN DWORD_PTR dwContext - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1893,6 +1914,7 @@ - IN LPVOID pAuthParams - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1928,6 +1950,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1938,6 +1961,7 @@ - ); - - _Success_(return != FALSE) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -1995,6 +2019,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - - _Win32_SupportedOS_BEGIN_(WindowsXP) -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -2004,6 +2029,7 @@ - _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl - ); - -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -2098,6 +2124,7 @@ - ); - - _Win32_SupportedOS_WindowsXP_ -+_Win32_SetLastError_ - WINHTTPAPI - BOOL - WINAPI -@@ -2205,6 +2232,7 @@ - #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - - _Win32_SupportedOS_BEGIN_(Windows8) -+_Win32_SetLastError_ - WINHTTPAPI - HINTERNET - WINAPI diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch b/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch deleted file mode 100644 index 4b6f9c870..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.logical-enums.patch +++ /dev/null @@ -1,178 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -169,7 +169,7 @@ - DWORD dwStructSize; // size of this structure. Used in version check - LPWSTR lpszScheme; // pointer to scheme name - DWORD dwSchemeLength; // length of scheme name -- INTERNET_SCHEME nScheme; // enumerated scheme type (if known) -+ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME nScheme; // enumerated scheme type (if known) - LPWSTR lpszHostName; // pointer to host name - DWORD dwHostNameLength; // length of host name - INTERNET_PORT nPort; // converted port number -@@ -197,7 +197,7 @@ - - typedef struct _WINHTTP_PROXY_INFO - { -- DWORD dwAccessType; // see WINHTTP_ACCESS_* types below -+ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType; // see WINHTTP_ACCESS_* types below - LPWSTR lpszProxy; // proxy server list - LPWSTR lpszProxyBypass; // proxy bypass list - } WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO, *PWINHTTP_PROXY_INFO; -@@ -254,7 +254,7 @@ - { - BOOL fProxy; // Is this a proxy or DIRECT? - BOOL fBypass; // If DIRECT, is it bypassing a proxy (intranet) or is all traffic DIRECT (internet) -- INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) -+ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) - PWSTR pwszProxy; // Hostname of the proxy. - INTERNET_PORT ProxyPort; // Port of the proxy. - } WINHTTP_PROXY_RESULT_ENTRY; -@@ -945,7 +945,7 @@ - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; -- DWORD dwAuthScheme; -+ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; - } WINHTTP_CREDS, *PWINHTTP_CREDS; -@@ -957,7 +957,7 @@ - LPSTR lpszUserName; - LPSTR lpszPassword; - LPSTR lpszRealm; -- DWORD dwAuthScheme; -+ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; - LPSTR lpszHostName; - DWORD dwPort; - LPSTR lpszUrl; -@@ -1640,7 +1640,7 @@ - WinHttpCreateUrl - ( - _In_ LPURL_COMPONENTS lpUrlComponents, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(WIN_HTTP_CREATE_URL_FLAGS) DWORD dwFlags, - _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, - _Inout_ LPDWORD pdwUrlLength - ); -@@ -1676,7 +1676,7 @@ - WinHttpOpen - ( - _In_opt_z_ LPCWSTR pszAgentW, -- _In_ DWORD dwAccessType, -+ _In_ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType, - _In_opt_z_ LPCWSTR pszProxyW, - _In_opt_z_ LPCWSTR pszProxyBypassW, - _In_ DWORD dwFlags -@@ -1848,7 +1848,7 @@ - IN LPCWSTR pwszVersion, - IN LPCWSTR pwszReferrer OPTIONAL, - IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, -- IN DWORD dwFlags -+ IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags - ); - - _Win32_SetLastError_ -@@ -2580,6 +2580,102 @@ - #endif - - -+#ifdef WIN32METADATA -+#pragma push_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") -+#undef WINHTTP_FLAG_BYPASS_PROXY_CACHE -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE") -+#undef WINHTTP_FLAG_ESCAPE_DISABLE -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") -+#undef WINHTTP_FLAG_ESCAPE_DISABLE_QUERY -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_PERCENT") -+#undef WINHTTP_FLAG_ESCAPE_PERCENT -+#pragma push_macro("WINHTTP_FLAG_NULL_CODEPAGE") -+#undef WINHTTP_FLAG_NULL_CODEPAGE -+#pragma push_macro("WINHTTP_FLAG_REFRESH") -+#undef WINHTTP_FLAG_REFRESH -+#pragma push_macro("WINHTTP_FLAG_SECURE") -+#undef WINHTTP_FLAG_SECURE -+enum [[clang::flag_enum]] WINHTTP_OPEN_REQUEST_FLAGS : DWORD -+{ -+ WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, -+ WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, -+ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, -+ WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, -+ WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, -+ WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, -+ WINHTTP_FLAG_SECURE = 0x00800000, -+}; -+#pragma pop_macro("WINHTTP_FLAG_SECURE") -+#pragma pop_macro("WINHTTP_FLAG_REFRESH") -+#pragma pop_macro("WINHTTP_FLAG_NULL_CODEPAGE") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_PERCENT") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE") -+#pragma pop_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") -+ -+#pragma push_macro("ICU_ESCAPE") -+#undef ICU_ESCAPE -+#pragma push_macro("ICU_REJECT_USERPWD") -+#undef ICU_REJECT_USERPWD -+#pragma push_macro("ICU_DECODE") -+#undef ICU_DECODE -+enum WIN_HTTP_CREATE_URL_FLAGS : DWORD -+{ -+ ICU_ESCAPE = 0x80000000, -+ ICU_REJECT_USERPWD = 0x00004000, -+ ICU_DECODE = 0x10000000, -+}; -+#pragma pop_macro("ICU_DECODE") -+#pragma pop_macro("ICU_REJECT_USERPWD") -+#pragma pop_macro("ICU_ESCAPE") -+ -+#pragma push_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") -+#undef WINHTTP_ACCESS_TYPE_NO_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") -+#undef WINHTTP_ACCESS_TYPE_DEFAULT_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") -+#undef WINHTTP_ACCESS_TYPE_NAMED_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") -+#undef WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY -+enum WINHTTP_ACCESS_TYPE : DWORD -+{ -+ WINHTTP_ACCESS_TYPE_NO_PROXY = 1, -+ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, -+ WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, -+ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4, -+}; -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") -+ -+#pragma push_macro("WINHTTP_AUTH_SCHEME_BASIC") -+#undef WINHTTP_AUTH_SCHEME_BASIC -+#pragma push_macro("WINHTTP_AUTH_SCHEME_NTLM") -+#undef WINHTTP_AUTH_SCHEME_NTLM -+#pragma push_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") -+#undef WINHTTP_AUTH_SCHEME_NEGOTIATE -+enum WINHTTP_CREDS_AUTHSCHEME : DWORD -+{ -+ WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, -+ WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, -+ WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, -+}; -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_NTLM") -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_BASIC") -+ -+enum WINHTTP_INTERNET_SCHEME : INTERNET_SCHEME -+{ -+ WINHTTP_INTERNET_SCHEME_HTTP = INTERNET_SCHEME_HTTP, -+ WINHTTP_INTERNET_SCHEME_HTTPS = INTERNET_SCHEME_HTTPS, -+ WINHTTP_INTERNET_SCHEME_FTP = INTERNET_SCHEME_FTP, -+ WINHTTP_INTERNET_SCHEME_SOCKS = INTERNET_SCHEME_SOCKS, -+}; -+ -+#endif -+ -+ - #if defined(__cplusplus) - } - #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch b/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch deleted file mode 100644 index 9824034af..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.port-constant-types.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -2564,6 +2564,22 @@ - - - -+#ifdef WIN32METADATA -+#pragma push_macro("INTERNET_DEFAULT_PORT") -+#undef INTERNET_DEFAULT_PORT -+constexpr INTERNET_PORT INTERNET_DEFAULT_PORT = 0; -+#pragma pop_macro("INTERNET_DEFAULT_PORT") -+#pragma push_macro("INTERNET_DEFAULT_HTTP_PORT") -+#undef INTERNET_DEFAULT_HTTP_PORT -+constexpr INTERNET_PORT INTERNET_DEFAULT_HTTP_PORT = 80; -+#pragma pop_macro("INTERNET_DEFAULT_HTTP_PORT") -+#pragma push_macro("INTERNET_DEFAULT_HTTPS_PORT") -+#undef INTERNET_DEFAULT_HTTPS_PORT -+constexpr INTERNET_PORT INTERNET_DEFAULT_HTTPS_PORT = 443; -+#pragma pop_macro("INTERNET_DEFAULT_HTTPS_PORT") -+#endif -+ -+ - #if defined(__cplusplus) - } - #endif diff --git a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch b/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch deleted file mode 100644 index f22d1fa9f..000000000 --- a/generation/WinSDK/patches/post-midl/um/winhttp.supported-os.patch +++ /dev/null @@ -1,195 +0,0 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/winhttp.h -@@ -16,6 +16,7 @@ - #define _WINHTTPX_ - - #include -+#include - - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -1584,6 +1585,7 @@ - // prototypes - // - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - WINHTTP_STATUS_CALLBACK - WINAPI -@@ -1635,6 +1637,7 @@ - _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, - _Inout_ LPDWORD pdwUrlLength - ); -+_Win32_SupportedOS_END_() - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion -@@ -1642,10 +1645,12 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); - - WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); - WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); -+_Win32_SupportedOS_END_() - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ - #pragma endregion -@@ -1653,6 +1658,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - HINTERNET - WINAPI -@@ -1694,6 +1700,7 @@ - IN DWORD dwNumberOfBytesToRead, - OUT LPDWORD lpdwNumberOfBytesRead - ); -+_Win32_SupportedOS_END_() - - WINHTTPAPI - DWORD -@@ -1709,6 +1716,7 @@ - _In_reads_bytes_opt_(cbProperty) PVOID pvProperty - ); - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - BOOL - WINAPI -@@ -1778,6 +1786,7 @@ - IN int nSendTimeout, - IN int nReceiveTimeout - ); -+_Win32_SupportedOS_END_() - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion -@@ -1807,6 +1816,7 @@ - // prototypes - // - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - HINTERNET - WINAPI -@@ -1833,6 +1843,7 @@ - IN DWORD dwHeadersLength, - IN DWORD dwModifiers - ); -+_Win32_SupportedOS_END_() - - WINHTTPAPI - DWORD -@@ -1847,6 +1858,7 @@ - _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders - ); - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - BOOL - WINAPI -@@ -1891,6 +1903,7 @@ - OUT LPDWORD lpdwFirstScheme, // returns the first auth scheme returned by the server - OUT LPDWORD pdwAuthTarget - ); -+_Win32_SupportedOS_END_() - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion -@@ -1914,6 +1927,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - BOOL - WINAPI -@@ -1936,6 +1950,7 @@ - IN OUT LPDWORD lpdwBufferLength, - IN OUT LPDWORD lpdwIndex OPTIONAL - ); -+_Win32_SupportedOS_END_() - - WINHTTPAPI - DWORD -@@ -1979,6 +1994,7 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SupportedOS_BEGIN_(WindowsXP) - WINHTTPAPI - BOOL - WINAPI -@@ -1998,7 +2014,9 @@ - IN WINHTTP_AUTOPROXY_OPTIONS * pAutoProxyOptions, - OUT WINHTTP_PROXY_INFO * pProxyInfo - ); -- -+_Win32_SupportedOS_END_() -+ -+_Win32_SupportedOS_BEGIN_(Windows8) - WINHTTPAPI - DWORD - WINAPI -@@ -2018,6 +2036,7 @@ - _In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, - _In_opt_ DWORD_PTR pContext - ); -+_Win32_SupportedOS_END_() - - WINHTTPAPI - DWORD -@@ -2032,6 +2051,7 @@ - _In_opt_ DWORD_PTR pContext - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2050,6 +2070,7 @@ - _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - VOID - WINAPI -@@ -2066,6 +2087,7 @@ - _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx - ); - -+_Win32_SupportedOS_Windows8_ - WINHTTPAPI - DWORD - WINAPI -@@ -2075,6 +2097,7 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SupportedOS_WindowsXP_ - WINHTTPAPI - BOOL - WINAPI -@@ -2181,6 +2204,7 @@ - #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 - #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 - -+_Win32_SupportedOS_BEGIN_(Windows8) - WINHTTPAPI - HINTERNET - WINAPI -@@ -2246,6 +2270,7 @@ - _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength, - _Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed - ); -+_Win32_SupportedOS_END_() - - typedef enum _WINHTTP_PROTOCOL_OPERATION - { diff --git a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch b/generation/WinSDK/patches/um/Psapi.h.patch similarity index 93% rename from generation/WinSDK/patches/post-midl/um/psapi.annotations.patch rename to generation/WinSDK/patches/um/Psapi.h.patch index 9df7e85b7..8a59e4d59 100644 --- a/generation/WinSDK/patches/post-midl/um/psapi.annotations.patch +++ b/generation/WinSDK/patches/um/Psapi.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/Psapi.h +diff --git a/um/Psapi.h b/um/Psapi.h +--- a/um/Psapi.h ++++ b/um/Psapi.h @@ -25,6 +25,7 @@ #pragma once #endif diff --git a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch b/generation/WinSDK/patches/um/TlHelp32.h.patch similarity index 92% rename from generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch rename to generation/WinSDK/patches/um/TlHelp32.h.patch index 92efee32a..927695535 100644 --- a/generation/WinSDK/patches/post-midl/um/tlhelp32.annotations.patch +++ b/generation/WinSDK/patches/um/TlHelp32.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h b/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/TlHelp32.h +diff --git a/um/TlHelp32.h b/um/TlHelp32.h +--- a/um/TlHelp32.h ++++ b/um/TlHelp32.h @@ -17,6 +17,7 @@ #pragma once #endif diff --git a/generation/WinSDK/patches/post-midl/um/xinput.annotations.patch b/generation/WinSDK/patches/um/Xinput.h.patch similarity index 95% rename from generation/WinSDK/patches/post-midl/um/xinput.annotations.patch rename to generation/WinSDK/patches/um/Xinput.h.patch index 42389790c..911e21edc 100644 --- a/generation/WinSDK/patches/post-midl/um/xinput.annotations.patch +++ b/generation/WinSDK/patches/um/Xinput.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h b/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/Xinput.h +diff --git a/um/Xinput.h b/um/Xinput.h +--- a/um/Xinput.h ++++ b/um/Xinput.h @@ -13,6 +13,7 @@ #include diff --git a/generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch b/generation/WinSDK/patches/um/avrfsdk.h.patch similarity index 82% rename from generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch rename to generation/WinSDK/patches/um/avrfsdk.h.patch index 9b0413801..79fbdf880 100644 --- a/generation/WinSDK/patches/post-midl/um/avrfsdk.annotations.patch +++ b/generation/WinSDK/patches/um/avrfsdk.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h b/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/avrfsdk.h +diff --git a/um/avrfsdk.h b/um/avrfsdk.h +--- a/um/avrfsdk.h ++++ b/um/avrfsdk.h @@ -24,6 +24,7 @@ #ifndef _AVRFSDK_ #define _AVRFSDK_ diff --git a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch b/generation/WinSDK/patches/um/magnification.h.patch similarity index 89% rename from generation/WinSDK/patches/post-midl/um/magnification.annotations.patch rename to generation/WinSDK/patches/um/magnification.h.patch index 656378b28..ed18da46e 100644 --- a/generation/WinSDK/patches/post-midl/um/magnification.annotations.patch +++ b/generation/WinSDK/patches/um/magnification.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h b/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/magnification.h +diff --git a/um/magnification.h b/um/magnification.h +--- a/um/magnification.h ++++ b/um/magnification.h @@ -11,6 +11,7 @@ #define _INC_MAGNIFIER diff --git a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch b/generation/WinSDK/patches/um/timezoneapi.h.patch similarity index 87% rename from generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch rename to generation/WinSDK/patches/um/timezoneapi.h.patch index 3b0146401..d00a2de1c 100644 --- a/generation/WinSDK/patches/post-midl/um/timezoneapi.annotations.patch +++ b/generation/WinSDK/patches/um/timezoneapi.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/timezoneapi.h +diff --git a/um/timezoneapi.h b/um/timezoneapi.h +--- a/um/timezoneapi.h ++++ b/um/timezoneapi.h @@ -15,6 +15,7 @@ #define _TIMEZONEAPI_H_ diff --git a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch b/generation/WinSDK/patches/um/ual.h.patch similarity index 68% rename from generation/WinSDK/patches/post-midl/um/ual.annotations.patch rename to generation/WinSDK/patches/um/ual.h.patch index 1ceacc394..10cb41472 100644 --- a/generation/WinSDK/patches/post-midl/um/ual.annotations.patch +++ b/generation/WinSDK/patches/um/ual.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h b/generation/WinSDK/RecompiledIdlHeaders/um/ual.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/ual.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/ual.h +diff --git a/um/ual.h b/um/ual.h +--- a/um/ual.h ++++ b/um/ual.h @@ -9,6 +9,7 @@ #define _UAL_H_INCLUDED diff --git a/generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch b/generation/WinSDK/patches/um/waasapi.idl.patch similarity index 65% rename from generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch rename to generation/WinSDK/patches/um/waasapi.idl.patch index ab9bedb7a..45ecacda1 100644 --- a/generation/WinSDK/patches/pre-midl/um/waasapi.annotations.patch +++ b/generation/WinSDK/patches/um/waasapi.idl.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl ---- a/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/waasapi.idl +diff --git a/um/waasapi.idl b/um/waasapi.idl +--- a/um/waasapi.idl ++++ b/um/waasapi.idl @@ -15,12 +15,17 @@ cpp_quote("#endif") cpp_quote("") diff --git a/generation/WinSDK/patches/um/windowsceip.h.patch b/generation/WinSDK/patches/um/windowsceip.h.patch new file mode 100644 index 000000000..05bb95525 --- /dev/null +++ b/generation/WinSDK/patches/um/windowsceip.h.patch @@ -0,0 +1,19 @@ +diff --git a/um/windowsceip.h b/um/windowsceip.h +--- a/um/windowsceip.h ++++ b/um/windowsceip.h +@@ -17,6 +17,7 @@ + #endif // _MSC_VER + + #include ++#include + + #ifdef __cplusplus + extern "C" { +@@ -27,6 +28,7 @@ + + #if (NTDDI_VERSION >= NTDDI_WIN8) + ++_Win32_SupportedOS_Windows81_ + BOOL + WINAPI + CeipIsOptedIn(); diff --git a/generation/WinSDK/patches/um/winhttp.h.patch b/generation/WinSDK/patches/um/winhttp.h.patch new file mode 100644 index 000000000..9b63109ba --- /dev/null +++ b/generation/WinSDK/patches/um/winhttp.h.patch @@ -0,0 +1,532 @@ +diff --git a/um/winhttp.h b/um/winhttp.h +index ddcdcb38..caa40f36 100644 +--- a/um/winhttp.h ++++ b/um/winhttp.h +@@ -16,6 +16,7 @@ Abstract: + #define _WINHTTPX_ + + #include ++#include + + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) +@@ -168,7 +169,7 @@ typedef struct _WINHTTP_URL_COMPONENTS + DWORD dwStructSize; // size of this structure. Used in version check + LPWSTR lpszScheme; // pointer to scheme name + DWORD dwSchemeLength; // length of scheme name +- INTERNET_SCHEME nScheme; // enumerated scheme type (if known) ++ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME nScheme; // enumerated scheme type (if known) + LPWSTR lpszHostName; // pointer to host name + DWORD dwHostNameLength; // length of host name + INTERNET_PORT nPort; // converted port number +@@ -196,7 +197,7 @@ typedef LPURL_COMPONENTS LPURL_COMPONENTSW; + + typedef struct _WINHTTP_PROXY_INFO + { +- DWORD dwAccessType; // see WINHTTP_ACCESS_* types below ++ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType; // see WINHTTP_ACCESS_* types below + LPWSTR lpszProxy; // proxy server list + LPWSTR lpszProxyBypass; // proxy bypass list + } WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO, *PWINHTTP_PROXY_INFO; +@@ -253,7 +254,7 @@ typedef struct _WINHTTP_PROXY_RESULT_ENTRY + { + BOOL fProxy; // Is this a proxy or DIRECT? + BOOL fBypass; // If DIRECT, is it bypassing a proxy (intranet) or is all traffic DIRECT (internet) +- INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) ++ _Win32_AssociatedEnum_(WINHTTP_INTERNET_SCHEME) INTERNET_SCHEME ProxyScheme; // The scheme of the proxy, SOCKS, HTTP (CERN Proxy), HTTPS (SSL through Proxy) + PWSTR pwszProxy; // Hostname of the proxy. + INTERNET_PORT ProxyPort; // Port of the proxy. + } WINHTTP_PROXY_RESULT_ENTRY; +@@ -944,7 +945,7 @@ typedef struct tagWINHTTP_CREDS + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; +- DWORD dwAuthScheme; ++ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + } WINHTTP_CREDS, *PWINHTTP_CREDS; +@@ -956,7 +957,7 @@ typedef struct tagWINHTTP_CREDS_EX + LPSTR lpszUserName; + LPSTR lpszPassword; + LPSTR lpszRealm; +- DWORD dwAuthScheme; ++ _Win32_AssociatedEnum_(WINHTTP_CREDS_AUTHSCHEME) DWORD dwAuthScheme; + LPSTR lpszHostName; + DWORD dwPort; + LPSTR lpszUrl; +@@ -1034,7 +1035,9 @@ VOID + IN DWORD dwStatusInformationLength + ); + ++#ifndef WIN32METADATA + typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; ++#endif + + + // +@@ -1584,6 +1587,8 @@ typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG + // prototypes + // + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + WINHTTP_STATUS_CALLBACK + WINAPI +@@ -1595,6 +1600,7 @@ WinHttpSetStatusCallback + IN DWORD_PTR dwReserved + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1604,6 +1610,7 @@ WinHttpTimeFromSystemTime + _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1613,6 +1620,7 @@ WinHttpTimeToSystemTime + _Out_ SYSTEMTIME *pst // output in GMT time + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1625,16 +1633,18 @@ WinHttpCrackUrl + ); + + _Success_(return != FALSE) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI + WinHttpCreateUrl + ( + _In_ LPURL_COMPONENTS lpUrlComponents, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(WIN_HTTP_CREATE_URL_FLAGS) DWORD dwFlags, + _Out_writes_to_opt_(*pdwUrlLength, *pdwUrlLength) LPWSTR pwszUrl, + _Inout_ LPDWORD pdwUrlLength + ); ++_Win32_SupportedOS_END_() + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1642,10 +1652,15 @@ WinHttpCreateUrl + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpCheckPlatform(void); + ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpGetDefaultProxyConfiguration( IN OUT WINHTTP_PROXY_INFO * pProxyInfo); ++_Win32_SetLastError_ + WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INFO * pProxyInfo); ++_Win32_SupportedOS_END_() + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ + #pragma endregion +@@ -1653,18 +1668,21 @@ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INF + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI + WinHttpOpen + ( + _In_opt_z_ LPCWSTR pszAgentW, +- _In_ DWORD dwAccessType, ++ _In_ _Win32_AssociatedEnum_(WINHTTP_ACCESS_TYPE) DWORD dwAccessType, + _In_opt_z_ LPCWSTR pszProxyW, + _In_opt_z_ LPCWSTR pszProxyBypassW, + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1673,6 +1691,7 @@ WinHttpCloseHandle + IN HINTERNET hInternet + ); + ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1684,6 +1703,7 @@ WinHttpConnect + IN DWORD dwReserved + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1694,6 +1714,7 @@ WinHttpReadData + IN DWORD dwNumberOfBytesToRead, + OUT LPDWORD lpdwNumberOfBytesRead + ); ++_Win32_SupportedOS_END_() + + WINHTTPAPI + DWORD +@@ -1709,6 +1730,8 @@ WinHttpReadDataEx + _In_reads_bytes_opt_(cbProperty) PVOID pvProperty + ); + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1720,6 +1743,7 @@ WinHttpWriteData + OUT LPDWORD lpdwNumberOfBytesWritten + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1730,6 +1754,7 @@ WinHttpQueryDataAvailable + ); + + _Success_(return != FALSE) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1741,6 +1766,7 @@ WinHttpQueryOption + IN OUT LPDWORD lpdwBufferLength + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1767,6 +1793,7 @@ WinHttpSetOption + _In_ DWORD dwBufferLength + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1778,6 +1805,7 @@ WinHttpSetTimeouts + IN int nSendTimeout, + IN int nReceiveTimeout + ); ++_Win32_SupportedOS_END_() + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1807,6 +1835,8 @@ WinHttpIsHostInProxyBypassList + // prototypes + // + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -1818,9 +1848,10 @@ WinHttpOpenRequest + IN LPCWSTR pwszVersion, + IN LPCWSTR pwszReferrer OPTIONAL, + IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, +- IN DWORD dwFlags ++ IN _Win32_AssociatedEnum_(WINHTTP_OPEN_REQUEST_FLAGS) DWORD dwFlags + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1833,6 +1864,7 @@ WinHttpAddRequestHeaders + IN DWORD dwHeadersLength, + IN DWORD dwModifiers + ); ++_Win32_SupportedOS_END_() + + WINHTTPAPI + DWORD +@@ -1847,6 +1879,8 @@ WinHttpAddRequestHeadersEx + _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders + ); + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1861,6 +1895,7 @@ WinHttpSendRequest + IN DWORD_PTR dwContext + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1881,6 +1916,7 @@ WinHttpSetCredentials + IN LPVOID pAuthParams + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1891,6 +1927,7 @@ WinHttpQueryAuthSchemes + OUT LPDWORD lpdwFirstScheme, // returns the first auth scheme returned by the server + OUT LPDWORD pdwAuthTarget + ); ++_Win32_SupportedOS_END_() + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -1914,6 +1951,8 @@ WinHttpQueryAuthParams + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1924,6 +1963,7 @@ WinHttpReceiveResponse + ); + + _Success_(return != FALSE) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1936,6 +1976,7 @@ WinHttpQueryHeaders + IN OUT LPDWORD lpdwBufferLength, + IN OUT LPDWORD lpdwIndex OPTIONAL + ); ++_Win32_SupportedOS_END_() + + WINHTTPAPI + DWORD +@@ -1948,7 +1989,7 @@ WinHttpQueryHeadersEx + _In_ UINT uiCodePage, + _Inout_opt_ PDWORD pdwIndex, + _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, +- _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) PVOID pBuffer, ++ _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) _Win32_ContainsInteriorPointers_ PVOID pBuffer, + _Inout_ PDWORD pdwBufferLength, + _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER *ppHeaders, + _Out_ PDWORD pdwHeadersCount +@@ -1979,6 +2020,8 @@ WinHttpFreeQueryConnectionGroupResult + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1988,6 +2031,7 @@ WinHttpDetectAutoProxyConfigUrl + _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl + ); + ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -1998,7 +2042,9 @@ WinHttpGetProxyForUrl + IN WINHTTP_AUTOPROXY_OPTIONS * pAutoProxyOptions, + OUT WINHTTP_PROXY_INFO * pProxyInfo + ); ++_Win32_SupportedOS_END_() + ++_Win32_SupportedOS_BEGIN_(Windows8) + WINHTTPAPI + DWORD + WINAPI +@@ -2018,6 +2064,7 @@ WinHttpGetProxyForUrlEx + _In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, + _In_opt_ DWORD_PTR pContext + ); ++_Win32_SupportedOS_END_() + + WINHTTPAPI + DWORD +@@ -2032,6 +2079,7 @@ WinHttpGetProxyForUrlEx2 + _In_opt_ DWORD_PTR pContext + ); + ++_Win32_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2050,6 +2098,7 @@ WinHttpGetProxyResultEx + _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx + ); + ++_Win32_SupportedOS_Windows8_ + WINHTTPAPI + VOID + WINAPI +@@ -2066,6 +2115,7 @@ WinHttpFreeProxyResultEx + _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx + ); + ++_Win32_SupportedOS_Windows8_ + WINHTTPAPI + DWORD + WINAPI +@@ -2075,6 +2125,8 @@ WinHttpResetAutoProxy + _In_ DWORD dwFlags + ); + ++_Win32_SupportedOS_WindowsXP_ ++_Win32_SetLastError_ + WINHTTPAPI + BOOL + WINAPI +@@ -2181,6 +2233,8 @@ typedef struct _WINHTTP_WEB_SOCKET_STATUS + #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 + #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 + ++_Win32_SupportedOS_BEGIN_(Windows8) ++_Win32_SetLastError_ + WINHTTPAPI + HINTERNET + WINAPI +@@ -2246,6 +2300,7 @@ WinHttpWebSocketQueryCloseStatus + _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength, + _Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed + ); ++_Win32_SupportedOS_END_() + + typedef enum _WINHTTP_PROTOCOL_OPERATION + { +@@ -2509,6 +2564,118 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS + + + ++#ifdef WIN32METADATA ++#pragma push_macro("INTERNET_DEFAULT_PORT") ++#undef INTERNET_DEFAULT_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_PORT = 0; ++#pragma pop_macro("INTERNET_DEFAULT_PORT") ++#pragma push_macro("INTERNET_DEFAULT_HTTP_PORT") ++#undef INTERNET_DEFAULT_HTTP_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_HTTP_PORT = 80; ++#pragma pop_macro("INTERNET_DEFAULT_HTTP_PORT") ++#pragma push_macro("INTERNET_DEFAULT_HTTPS_PORT") ++#undef INTERNET_DEFAULT_HTTPS_PORT ++constexpr INTERNET_PORT INTERNET_DEFAULT_HTTPS_PORT = 443; ++#pragma pop_macro("INTERNET_DEFAULT_HTTPS_PORT") ++#endif ++ ++ ++#ifdef WIN32METADATA ++#pragma push_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") ++#undef WINHTTP_FLAG_BYPASS_PROXY_CACHE ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE") ++#undef WINHTTP_FLAG_ESCAPE_DISABLE ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") ++#undef WINHTTP_FLAG_ESCAPE_DISABLE_QUERY ++#pragma push_macro("WINHTTP_FLAG_ESCAPE_PERCENT") ++#undef WINHTTP_FLAG_ESCAPE_PERCENT ++#pragma push_macro("WINHTTP_FLAG_NULL_CODEPAGE") ++#undef WINHTTP_FLAG_NULL_CODEPAGE ++#pragma push_macro("WINHTTP_FLAG_REFRESH") ++#undef WINHTTP_FLAG_REFRESH ++#pragma push_macro("WINHTTP_FLAG_SECURE") ++#undef WINHTTP_FLAG_SECURE ++enum [[clang::flag_enum]] WINHTTP_OPEN_REQUEST_FLAGS : DWORD ++{ ++ WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, ++ WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, ++ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, ++ WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, ++ WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, ++ WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, ++ WINHTTP_FLAG_SECURE = 0x00800000, ++}; ++#pragma pop_macro("WINHTTP_FLAG_SECURE") ++#pragma pop_macro("WINHTTP_FLAG_REFRESH") ++#pragma pop_macro("WINHTTP_FLAG_NULL_CODEPAGE") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_PERCENT") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") ++#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE") ++#pragma pop_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") ++ ++#pragma push_macro("ICU_ESCAPE") ++#undef ICU_ESCAPE ++#pragma push_macro("ICU_REJECT_USERPWD") ++#undef ICU_REJECT_USERPWD ++#pragma push_macro("ICU_DECODE") ++#undef ICU_DECODE ++enum WIN_HTTP_CREATE_URL_FLAGS : DWORD ++{ ++ ICU_ESCAPE = 0x80000000, ++ ICU_REJECT_USERPWD = 0x00004000, ++ ICU_DECODE = 0x10000000, ++}; ++#pragma pop_macro("ICU_DECODE") ++#pragma pop_macro("ICU_REJECT_USERPWD") ++#pragma pop_macro("ICU_ESCAPE") ++ ++#pragma push_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") ++#undef WINHTTP_ACCESS_TYPE_NO_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") ++#undef WINHTTP_ACCESS_TYPE_DEFAULT_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") ++#undef WINHTTP_ACCESS_TYPE_NAMED_PROXY ++#pragma push_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") ++#undef WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY ++enum WINHTTP_ACCESS_TYPE : DWORD ++{ ++ WINHTTP_ACCESS_TYPE_NO_PROXY = 1, ++ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, ++ WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, ++ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4, ++}; ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") ++#pragma pop_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") ++ ++#pragma push_macro("WINHTTP_AUTH_SCHEME_BASIC") ++#undef WINHTTP_AUTH_SCHEME_BASIC ++#pragma push_macro("WINHTTP_AUTH_SCHEME_NTLM") ++#undef WINHTTP_AUTH_SCHEME_NTLM ++#pragma push_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") ++#undef WINHTTP_AUTH_SCHEME_NEGOTIATE ++enum WINHTTP_CREDS_AUTHSCHEME : DWORD ++{ ++ WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, ++ WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, ++ WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, ++}; ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_NTLM") ++#pragma pop_macro("WINHTTP_AUTH_SCHEME_BASIC") ++ ++enum WINHTTP_INTERNET_SCHEME : INTERNET_SCHEME ++{ ++ WINHTTP_INTERNET_SCHEME_HTTP = INTERNET_SCHEME_HTTP, ++ WINHTTP_INTERNET_SCHEME_HTTPS = INTERNET_SCHEME_HTTPS, ++ WINHTTP_INTERNET_SCHEME_FTP = INTERNET_SCHEME_FTP, ++ WINHTTP_INTERNET_SCHEME_SOCKS = INTERNET_SCHEME_SOCKS, ++}; ++ ++#endif ++ ++ + #if defined(__cplusplus) + } + #endif diff --git a/generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch b/generation/WinSDK/patches/um/wslapi.h.patch similarity index 86% rename from generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch rename to generation/WinSDK/patches/um/wslapi.h.patch index ac14dba09..eaf6c6905 100644 --- a/generation/WinSDK/patches/post-midl/um/wslapi.annotations.patch +++ b/generation/WinSDK/patches/um/wslapi.h.patch @@ -1,6 +1,6 @@ -diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h b/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h ---- a/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h -+++ b/generation/WinSDK/RecompiledIdlHeaders/um/wslapi.h +diff --git a/um/wslapi.h b/um/wslapi.h +--- a/um/wslapi.h ++++ b/um/wslapi.h @@ -15,6 +15,7 @@ #include diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index 3fa501615..202b80902 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -66,7 +66,7 @@ function Resolve-Child([string]$Root, [string]$RelativePath) { } function Invoke-HeaderPatch($Patch, [string]$Root) { - $arguments = @('-C', $repoRoot, 'apply', '--unsafe-paths', '-p4', "--directory=$Root", '--whitespace=error-all') + $arguments = @('-C', $repoRoot, 'apply', '--unsafe-paths', '-p1', "--directory=$Root", '--whitespace=error-all') $output = & git @arguments --check -- $Patch.fullPath 2>&1 if ($LASTEXITCODE -ne 0) { throw "Patch preflight failed for $($Patch.path):`n$($output -join "`n")" @@ -92,7 +92,7 @@ function Invoke-PreparedMidl([string]$Staging) { throw "The SDK MIDL input changed while being copied: $($input.path)" } } - foreach ($patch in @($patches | Where-Object stage -eq 'pre-midl')) { + foreach ($patch in @($patches | Where-Object isIdl)) { Invoke-HeaderPatch $patch $raw } foreach ($input in $midlInputs) { @@ -304,14 +304,8 @@ if ($hasMidl) { [pscustomobject]@{ path = "$PSScriptRoot\$_"; sha256 = Get-Sha256 "$PSScriptRoot\$_" } } } -$sawPostMidl = $false +$patchedArtifacts = [Collections.Generic.HashSet[string]]::new([StringComparer]::OrdinalIgnoreCase) $patches = @($config.patches | ForEach-Object { - $stage = $_.Split('\')[0] - if ($stage -notin @('pre-midl', 'post-midl') -or ($stage -eq 'pre-midl' -and (!$hasMidl -or $sawPostMidl))) { - throw "Patch is on the wrong side of the MIDL boundary: $_" - } - $sawPostMidl = $stage -eq 'post-midl' - $admitted = if ($stage -eq 'pre-midl') { @($midlInputs.path | Where-Object { $_.EndsWith('.idl') }) } else { @($config.headers.path) } $path = Resolve-Child $recipeRoot $_ if (!(Test-Path -LiteralPath $path -PathType Leaf)) { throw "Missing patch: $path" @@ -321,50 +315,65 @@ $patches = @($config.patches | ForEach-Object { throw "A header patch must not change file identity or mode: $_" } $fileHeaders = [regex]::Matches($text, '(?m)^(---|\+\+\+) ([^\r\n]+)') - if (!$fileHeaders.Count -or $fileHeaders.Count % 2) { - throw "A patch must contain complete old/new header pairs: $_" - } - for ($index = 0; $index -lt $fileHeaders.Count; $index += 2) { - $before = $fileHeaders[$index] - $after = $fileHeaders[$index + 1] - $oldPrefix = 'a/generation/WinSDK/RecompiledIdlHeaders/' - $newPrefix = 'b/generation/WinSDK/RecompiledIdlHeaders/' - if ($before.Groups[1].Value -ne '---' -or $after.Groups[1].Value -ne '+++' -or - !$before.Groups[2].Value.StartsWith($oldPrefix, [StringComparison]::Ordinal) -or - !$after.Groups[2].Value.StartsWith($newPrefix, [StringComparison]::Ordinal)) { - throw "Patch headers are not rooted in the admitted SDK mirror: $_" + if ($fileHeaders.Count -ne 2) { + throw "A patch must contain exactly one SDK artifact's old/new pair: $_" + } + $before = $fileHeaders[0] + $after = $fileHeaders[1] + if ($before.Groups[1].Value -ne '---' -or $after.Groups[1].Value -ne '+++' -or + !$before.Groups[2].Value.StartsWith('a/', [StringComparison]::Ordinal) -or + !$after.Groups[2].Value.StartsWith('b/', [StringComparison]::Ordinal)) { + throw "Patch targets must be SDK-relative artifact paths: $_" + } + $oldPath = $before.Groups[2].Value.Substring(2) + $newPath = $after.Groups[2].Value.Substring(2) + if ($oldPath -cne $newPath) { + throw "A patch must modify one admitted SDK artifact without changing its identity: $_" + } + $artifact = $newPath.Replace('/', '\') + $input = @($midlInputs | Where-Object { $_.path -eq $artifact -and [IO.Path]::GetExtension($_.path) -eq '.idl' }) + $isIdl = $input.Count -eq 1 + if ($isIdl) { + $sdk = $input[0].fullPath + } + else { + $headers = @($config.headers | Where-Object path -eq $artifact) + if ($headers.Count -ne 1) { + throw "A patch must target one admitted SDK artifact: $_" } - $oldPath = $before.Groups[2].Value.Substring($oldPrefix.Length) - $newPath = $after.Groups[2].Value.Substring($newPrefix.Length) - if ($oldPath -cne $newPath -or $newPath.Replace('/', '\') -notin $admitted) { - throw "A patch must modify one admitted header without changing its identity: $_" + $header = $headers[0] + $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath + $sdkIdl = [IO.Path]::ChangeExtension($sdk, '.idl') + if ([IO.Path]::GetExtension($header.sdkPath) -eq '.idl' -or + ([IO.File]::ReadAllText((Resolve-Child $SourceRoot $header.path)).Contains('File created by MIDL compiler') -and + (Test-Path -LiteralPath $sdkIdl -PathType Leaf))) { + throw "A shipped-IDL-backed annotation patch belongs before MIDL, on its SDK IDL artifact: $_" } - if ($stage -eq 'post-midl') { - $header = $config.headers | Where-Object path -eq $newPath.Replace('/', '\') - $sdkIdl = [IO.Path]::ChangeExtension((Resolve-Child $SdkPackageRoot $header.sdkPath), '.idl') - if ([IO.Path]::GetExtension($header.sdkPath) -eq '.idl' -or - ([IO.File]::ReadAllText((Resolve-Child $SourceRoot $header.path)).Contains('File created by MIDL compiler') -and - (Test-Path -LiteralPath $sdkIdl -PathType Leaf))) { - throw "A shipped-IDL-backed annotation patch belongs before MIDL: $_" - } + if ($header.sourceSha256 -ne $header.sdkSha256) { + throw "A direct SDK header patch requires the pristine SDK preimage: $_" } } - $statistics = @(& git -C $repoRoot apply -p4 --numstat -- $path) - if ($LASTEXITCODE -ne 0 -or !$statistics.Count) { + if (!$sdk.EndsWith("\$artifact", [StringComparison]::OrdinalIgnoreCase)) { + throw "Patch target does not match its canonical SDK artifact: $_" + } + if (!$patchedArtifacts.Add($sdk)) { + throw "An SDK artifact is patched more than once; consolidate its deltas into one patch: $artifact" + } + if ($_ -cne "$artifact.patch") { + throw "A patch must be named after its SDK artifact: $artifact.patch" + } + $statistics = @(& git -C $repoRoot apply -p1 --numstat -- $path) + if ($LASTEXITCODE -ne 0 -or $statistics.Count -ne 1) { throw "Invalid or empty patch: $_" } foreach ($statistic in $statistics) { if ($statistic -notmatch '^\d+\t\d+\t(.+)$' -or - $Matches[1].Replace('/', '\') -notin $admitted) { - throw "Patch changes a path outside its reviewed header set: $statistic" + $Matches[1].Replace('/', '\') -cne $artifact) { + throw "Patch changes a path other than its admitted SDK artifact: $statistic" } } - [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path; stage = $stage } + [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path; isIdl = $isIdl } }) -if (@($patches.path | Sort-Object -Unique).Count -ne $patches.Count) { - throw 'A patch is listed more than once.' -} - [IO.Directory]::CreateDirectory($OutputRoot) | Out-Null $lock = [IO.File]::Open("$OutputRoot\prepare.lock", [IO.FileMode]::OpenOrCreate, [IO.FileAccess]::ReadWrite, [IO.FileShare]::None) $staging = $null @@ -402,12 +411,12 @@ try { if ((Get-DirectoryState "$staging\headers").sha256 -ne $sourceState.sha256) { throw 'The source header tree changed while it was being copied.' } + foreach ($patch in @($patches | Where-Object { !$_.isIdl })) { + Invoke-HeaderPatch $patch "$staging\headers" + } if ($hasMidl) { Invoke-PreparedMidl $staging } - foreach ($patch in @($patches | Where-Object stage -eq 'post-midl')) { - Invoke-HeaderPatch $patch "$staging\headers" - } if ((Get-DirectoryState $SourceRoot).sha256 -ne $sourceState.sha256) { throw 'The source header tree changed during preparation.' } diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index de686fe80..93c499e8f 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -119,12 +119,69 @@ public void DuplicatePatchesAndRecipePathEscapesAreRejected() Assert.NotEqual(0, duplicate.ExitCode); Assert.Contains("more than once", duplicate.Error); - fixture.WriteRecipe(patches: new[] { @"post-midl\..\..\outside.patch" }); + fixture.WriteRecipe(patches: new[] { @"..\outside.patch" }); var escape = fixture.Run(); Assert.NotEqual(0, escape.ExitCode); Assert.Contains("escapes its root", escape.Error); } + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DifferentPatchFilesCannotLayerChangesOnOneSdkArtifact(bool idl) + { + using var fixture = new Fixture(); + if (idl) + fixture.EnableMidl(); + const string second = @"um\second.patch"; + fixture.CopyPatch(idl ? Fixture.IdlPatchPath : Fixture.PatchPath, second); + fixture.MutateRecipe(recipe => recipe["patches"].AsArray().Add(second)); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("SDK artifact is patched more than once", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + } + + [Theory] + [InlineData(@"um\sample.patch")] + [InlineData(@"post-midl\um\sample.h.patch")] + [InlineData(@"um\um\sample.h.patch")] + public void PatchFilenamesMustIdentifyTheirCanonicalSdkArtifact(string path) + { + using var fixture = new Fixture(); + fixture.CopyPatch(Fixture.PatchPath, path); + fixture.WriteRecipe(patches: new[] { path }); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("must be named after its SDK artifact", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void OnePatchCannotContainRepeatedArtifactDiffs() + { + using var fixture = new Fixture(); + fixture.RepeatPatch(); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("exactly one SDK artifact", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void DirectHeaderPatchesCannotDependOnAnIntermediateMirrorPreimage() + { + using var fixture = new Fixture(); + File.AppendAllText(fixture.Header, "// intermediate\r\n"); + fixture.MutateRecipe(recipe => recipe["headers"][0]["sourceSha256"] = + Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(fixture.Header)))); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("requires the pristine SDK preimage", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + [Fact] public void DifferentOldAndNewPatchTargetsAreRejected() { @@ -262,7 +319,7 @@ public void UnpinnedMidlImportsCannotFallBackToAmbientSdkPaths() } [Fact] - public void ShippedIdlPatchesCannotMoveBackAfterMidlOrFollowHeaderPatches() + public void SdkArtifactKindsDeterminePreparationOrderRatherThanRecipeOrder() { using var fixture = new Fixture(); fixture.EnableMidl(); @@ -273,10 +330,16 @@ public void ShippedIdlPatchesCannotMoveBackAfterMidlOrFollowHeaderPatches() patches.RemoveAt(0); patches.Add(first); }); - var ordering = fixture.Run(); - Assert.NotEqual(0, ordering.ExitCode); - Assert.Contains("wrong side of the MIDL boundary", ordering.Error); + var prepared = fixture.Prepare(); + Assert.Contains("#define IDL_VALUE 2", + File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", "generated.h"))); + Assert.Contains("VALUE 2", File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", "sample.h"))); + } + [Fact] + public void ShippedIdlBackedHeadersCannotBeAnnotationPatchTargets() + { + using var fixture = new Fixture(); fixture.EnableMidl(); fixture.WriteGeneratedHeaderPatch(); var stage = fixture.Run(); @@ -346,7 +409,8 @@ public void SalConversionDoesNotSkipParametersBesideMetadataOrOtherAnnotations() private sealed class Fixture : IDisposable { internal const string Before = "#ifndef SAMPLE_H\r\n#define SAMPLE_H\r\n#define VALUE 1\r\n#endif\r\n"; - internal const string PatchPath = @"post-midl\um\sample.patch"; + internal const string PatchPath = @"um\sample.h.patch"; + internal const string IdlPatchPath = @"um\generated.idl.patch"; private readonly string root; private readonly string source; private readonly string sdk; @@ -369,7 +433,7 @@ internal Fixture() this.patch = Path.Combine(this.root, PatchPath); Header = Path.Combine(this.source, "um", "sample.h"); Unrelated = Path.Combine(this.source, "shared", "unrelated.h"); - SdkHeader = Path.Combine(this.sdk, "c", "include", "sample.h"); + SdkHeader = Path.Combine(this.sdk, "c", "include", "um", "sample.h"); Output = Path.Combine(this.root, "output"); foreach (string path in new[] { Header, Unrelated, SdkHeader, this.patch, Path.Combine(Output, "placeholder") }) { @@ -400,14 +464,22 @@ internal Fixture() internal void WritePatch(int after, int before = 1, string path = "um/sample.h", string metadata = null, string originalPath = null) { - string prefix = "generation/WinSDK/RecompiledIdlHeaders/" + path; - string oldPrefix = "generation/WinSDK/RecompiledIdlHeaders/" + (originalPath ?? path); - string text = $"diff --git a/{oldPrefix} b/{prefix}\n{metadata}" + - $"--- a/{oldPrefix}\n+++ b/{prefix}\n@@ -1,4 +1,4 @@\n #ifndef SAMPLE_H\r\n #define SAMPLE_H\r\n" + + string oldPath = originalPath ?? path; + string text = $"diff --git a/{oldPath} b/{path}\n{metadata}" + + $"--- a/{oldPath}\n+++ b/{path}\n@@ -1,4 +1,4 @@\n #ifndef SAMPLE_H\r\n #define SAMPLE_H\r\n" + $"-#define VALUE {before}\r\n+#define VALUE {after}\r\n #endif\r\n"; File.WriteAllText(this.patch, text, new UTF8Encoding(false)); } + internal void CopyPatch(string source, string target) + { + string path = Path.Combine(this.root, target); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + File.Copy(Path.Combine(this.root, source), path); + } + + internal void RepeatPatch() => File.AppendAllText(this.patch, File.ReadAllText(this.patch)); + internal void WriteRecipe(string stage = "post-midl", string version = "10.0.26100.7705", string[] patches = null) { File.WriteAllText(this.recipe, JsonSerializer.Serialize(new @@ -422,7 +494,7 @@ internal void WriteRecipe(string stage = "post-midl", string version = "10.0.261 { path = @"um\sample.h", sourceSha256 = Hash(Encoding.ASCII.GetBytes(Before)), - sdkPath = @"c\include\sample.h", + sdkPath = @"c\include\um\sample.h", sdkSha256 = Hash(Encoding.ASCII.GetBytes(Before)), }, }, @@ -450,12 +522,11 @@ internal void EnableMidl() const string beforeHeader = "/* File created by MIDL compiler */\r\n"; foreach (string name in new[] { "generated", "dependency" }) File.WriteAllText(Path.Combine(this.source, "um", name + ".h"), beforeHeader); - const string prePatch = @"pre-midl\um\generated.patch"; - string patchFile = Path.Combine(this.root, prePatch); + string patchFile = Path.Combine(this.root, IdlPatchPath); Directory.CreateDirectory(Path.GetDirectoryName(patchFile)); File.WriteAllText(patchFile, - "diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl b/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n" + - "--- a/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n+++ b/generation/WinSDK/RecompiledIdlHeaders/um/generated.idl\n" + + "diff --git a/um/generated.idl b/um/generated.idl\n" + + "--- a/um/generated.idl\n+++ b/um/generated.idl\n" + "@@ -1,3 +1,3 @@\n-cpp_quote(\"#define IDL_VALUE 1\")\r\n+cpp_quote(\"#define IDL_VALUE 2\")\r\n" + " import \"dependency.idl\";\r\n [uuid(7a22f761-442c-4260-9d80-4c937dce56b6), version(1.0), pointer_default(unique)]\r\n", new UTF8Encoding(false)); @@ -488,7 +559,7 @@ internal void EnableMidl() path = @"um\" + name + ".h", }), }); - recipe["patches"] = JsonSerializer.SerializeToNode(new[] { prePatch, PatchPath }); + recipe["patches"] = JsonSerializer.SerializeToNode(new[] { IdlPatchPath, PatchPath }); }); } @@ -501,10 +572,10 @@ internal void MutateRecipe(Action mutate) internal void WriteGeneratedHeaderPatch() { - const string relative = @"post-midl\um\generated.patch"; + const string relative = @"um\generated.h.patch"; File.WriteAllText(Path.Combine(this.root, relative), - "diff --git a/generation/WinSDK/RecompiledIdlHeaders/um/generated.h b/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n" + - "--- a/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n+++ b/generation/WinSDK/RecompiledIdlHeaders/um/generated.h\n" + + "diff --git a/um/generated.h b/um/generated.h\n" + + "--- a/um/generated.h\n+++ b/um/generated.h\n" + "@@ -1 +1,2 @@\n /* File created by MIDL compiler */\r\n+// annotation\r\n"); MutateRecipe(recipe => recipe["patches"].AsArray().Add(relative)); } From 8ca41d84ad43dc80bb1cb881634ea29739cc8cbc Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 14:05:19 -0700 Subject: [PATCH 29/57] Prepare public annotation macros in the bounded pilot Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 60 ++- docs/winhttp-header-annotations.md | 46 +- ...HeaderAnnotations.expected-differences.txt | 52 -- generation/WinSDK/patches/um/Psapi.h.patch | 96 ++-- generation/WinSDK/patches/um/TlHelp32.h.patch | 99 ++-- generation/WinSDK/patches/um/Xinput.h.patch | 479 ++++-------------- generation/WinSDK/patches/um/avrfsdk.h.patch | 21 +- .../WinSDK/patches/um/magnification.h.patch | 21 +- .../WinSDK/patches/um/waasapi.idl.patch | 8 +- generation/WinSDK/patches/um/winhttp.h.patch | 118 +---- scripts/Build-WinHttpMigrationImage.ps1 | 40 +- scripts/Prepare-SdkHeaders.ps1 | 28 +- .../MigrationImageComparisonTests.cs | 119 +++++ .../PreparedSdkHeadersTests.cs | 151 ++++++ .../WinHttpMigrationTests.cs | 12 +- .../WinHttpNativeControlTests.cs | 21 + 16 files changed, 640 insertions(+), 731 deletions(-) delete mode 100644 generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt create mode 100644 tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 0f6e1136d..0e71e0f84 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -80,7 +80,14 @@ never fall back to an old generated header. Run the selected C preprocessor with closed include paths and cleared ambient compiler options; hash its executable/engine and the SAL/helper scripts into the -preparation identity. Verify MIDL's actual saved preprocessor input set against +preparation identity. When `/cpp_opt` overrides MIDL's forwarding, explicitly pass +the same `/D` definitions and private `/I` paths, including `MIDL_PASS=1`. +An IDL that uses `_Win32_AnnotateInterface_(name, annotation)` includes the +canonical shared annotation header during preprocessing as well as emitting its +ordinary generated-header include. Pin that repository header's exact +`sourceSha256` in the existing MIDL input closure; do not pretend it came from the +selected SDK or search an ambient include directory for it. +Verify MIDL's actual saved preprocessor input set against the declared closure. Preserve raw inputs, converted IDLs, commands, diagnostics, outputs and their hashes in the private cache. Keep warnings enabled and compare the exact diagnostic/target/payload multiset against unmodified-IDL regeneration, @@ -136,14 +143,13 @@ module/entrypoint/flags checks even when no header import override is needed. ### Factor SupportedOS facts without broadening coverage Use only the canonical `_Win32_SupportedOS_*_` declaration macros and -`_Win32_SupportedOS_BEGIN_(os)` / `_Win32_SupportedOS_END_()` controls from the -[adopted contract](https://github.com/microsoft/win32metadata/blob/733477d4ecc3ea3e6e979a9ce26930df62d065af/docs/copilot/plans/shift-left-annotation-spec.md#scoped-supportedos-defaults). -There are no public `_Windows_` aliases. An explicit declaration fact wins over -all defaults; otherwise the innermost applicable scope wins, not the greatest -version. A scope applies only to eligible declarations lexically within that same -physical header and include instance. Includes do not inherit a caller's default; -a container's annotation does not imply inheritance by its methods or nested -types. Balance controls on every active preprocessing path. +`_Win32_SupportedOS_BEGIN_(os)` / `_Win32_SupportedOS_END_()` controls. There are no +public `_Windows_` aliases. Scopes use Clang's lexical attribute accumulation: +included declarations inherit an active scope, and distinct conflicting floors +fail rather than selecting an explicit, innermost or greatest-version winner. +A direct container attribute alone does not annotate its methods or nested +types. Balance controls on every active preprocessing path, and move boundaries +instead of relying on a reader-defined override policy. Inventory existing facts before grouping them. End scopes before unannotated declarations, records, typedefs and metadata-only enums; retain direct annotations @@ -156,15 +162,19 @@ B9 producer's 119 authored OS facts, not every declaration in an annotated heade | CEIP | 1 | 0 | 1 | | ApplicationVerifier | 0 | 0 | 0 | | MagApi | 19 | 2 | 0 | -| PsApi1 | 27 | 4 | 11 | +| PsApi1 | 27 | 4 | 12 | | Time | 13 | 5 | 1 | | Ual | 4 | 1 | 0 | | ToolHelp | 16 | 7 | 1 | | UpdateAssessment | 1 | 0 | 1 | | Wsl / Xinput | 0 | 0 | 0 | -The 29 scopes cover 101 existing function declarations: 100 use their default, -and `GetWsChangesEx` retains its explicit Vista floor inside an XP scope. +The planned placements retain 29 scopes and 20 direct annotations. In PsApi1, +`GetWsChanges` uses a direct XP floor, `GetWsChangesEx` keeps its direct Vista +floor, and the XP scope resumes at `GetMappedFileNameW`. No conflicting XP/Vista +attributes accumulate on `GetWsChangesEx`; no active pilot scope encloses an +include. These placements still require the qualified tooling and image gates +below; source inspection is not a replacement metadata grade. PsApi1 controls remain conditional on `PSAPI_VERSION == 1`; PsApi2 stays unconverted and unchanged. Time's scopes stop before the unannotated `Local*` functions. ToolHelp's scopes exclude every record/typedef block. CEIP and @@ -187,6 +197,25 @@ field-annotation differences remain diagnostic evidence, not admitted changes; the normal `43af342a` follow-up restores the default-off boundary and excludes scalar access spans from array inference. +### Express existing logical groups without native symbol additions + +Use `_Win32_Enum_(name, storage, existing_constants...)` or +`_Win32_FlagsEnum_(name, storage, existing_constants...)`, retaining native ABI +types and `_Win32_AssociatedEnum_(group)` at the existing use sites. Both group +macros expand to nothing when `WIN32METADATA` is absent. Their values come from +compiled native expressions, not copied literals or a second source parse. + +Eighteen pilot groups use those public macros. Two existing groups need explicit +historical labels through the same AST transport, guarded by `WIN32METADATA`: +`WINHTTP_INTERNET_SCHEME` maps its four existing `WINHTTP_INTERNET_SCHEME_*` +labels to genuine `INTERNET_SCHEME_*` expressions, and `XINPUT_FLAG` retains its +reviewed `XINPUT_FLAG_ALL` member with compiled value `0` alongside +`XINPUT_FLAG_GAMEPAD`. Use a +`typedef _WIN32META_ANNOTATION_("Enum(labels...)", expressions...) storage GROUP` +carrier (`FlagsEnum` for flags); do not create SDK `#define` aliases, ordinary +consumer symbols or metadata-only constant globals. There are no authored RAII +facts to add in this pilot. + ## 4. Pin OLD, tooling control and NEW separately Freeze a complete OLD image and generated-source/discovery closure from one SDK @@ -196,7 +225,7 @@ the partition migration; never waive a known OLD defect on NEW. Commit producer inputs before publishing a fresh named NEW artifact. Record SDK, producer/tooling commits, binary hashes, recipe/prepared-header identity, complete -source/reference closure and expected-difference hashes. Do not overwrite previous +source/reference closure and raw API-comparison hashes. Do not overwrite previous images or receipts. If only documentation advances the branch, retain the actual producer and CI-run labels on those frozen artifacts; a documentation head is not a new emission or a fresh image grade. @@ -222,6 +251,11 @@ unselected inputs. Reject success-shaped partial images with dangling references Do not suppress faithful native facts or use a blanket allowance to make the grade pass. A declaration comparer plus scoped physical checks is not a comprehensive typed-equivalence oracle. +- Preserve the complete unfiltered API-comparison output. Do not check in a + difference-allowance file or give the image builder a default acceptance list. + Record concrete source-backed differences for review in PR comments. An image + receipt marked `reviewStatus: required` reports differences; it does not admit + them. A failed comparison remains an error, not a review result. - Repeat the normal SDK build with prior discoveries present. Require identical selected source/discovery inputs, shared prepared roots and complete SDK diagnostic inputs. diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 83fdcf70e..227370d3a 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -107,7 +107,7 @@ entries remain in the generated mapping. | 38 OS floors: 27 XP, 11 Windows 8 | Canonical `_Win32_SupportedOS_*_` direct facts and narrowly bounded `_Win32_SupportedOS_BEGIN_` / `_Win32_SupportedOS_END_` defaults | All 38 WinHttp `supportedOS.rsp` rows | | 28 thread-last-error contracts | `_Win32_SetLastError_` | All 28 WinHttp `WithSetLastError.rsp` rows | | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | -| Five logical enums, 21 emitted members, eight uses | Guarded native enums plus `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | +| Five logical enums, 21 emitted members, eight uses | Public enum-group macros, one explicit-name AST carrier, and `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | | Three port constant types | Guarded `constexpr INTERNET_PORT` declarations | Three `ushort` constant overrides | | Four native scheme macros | Untouched native macros initialize the preserved logical members | Four constants-scraper exclusions; no new winmd constants | | One pointer-adding callback alias | Metadata-only guard around `LPWINHTTP_STATUS_CALLBACK` | Partition callback exclusion | @@ -132,9 +132,10 @@ Windows 2000 redistributable availability as an unconditional OS guarantee. The scoped-OS adoption factors those same 38 WinHttp facts into ten lexical scopes and four direct annotations; it must not add floors to unannotated `Ex`/newer APIs, callback aliases, records or enums. All public direct and scoped -names use `_Win32_`, without `_Windows_` aliases. Explicit facts override scoped -defaults, and the innermost same-header/include-instance default wins otherwise; -there is no include leakage or implicit container inheritance. The +names use `_Win32_`, without `_Windows_` aliases. Scopes use Clang's lexical +attribute accumulation: includes inherit active scopes, and distinct conflicting +floors fail rather than being overridden. Keep direct container facts separate +from lexical scopes; the former do not imply method inheritance. The [playbook's scope inventory](header-annotation-migration-playbook.md#factor-supportedos-facts-without-broadening-coverage) requires zero net metadata changes from the immutable completed B9 image, separately from the unchanged 48-difference combined OLD-to-NEW grade. @@ -165,8 +166,11 @@ Logical enum relationships do not replace the native ABI type in metadata: | `URL_COMPONENTS` | `nScheme` | `WINHTTP_INTERNET_SCHEME` | `INTERNET_SCHEME` (`int`) | | `WINHTTP_PROXY_RESULT_ENTRY` | `ProxyScheme` | `WINHTTP_INTERNET_SCHEME` | `INTERNET_SCHEME` (`int`) | -Only the open-request group is a flags enum, matching OLD. All five groups are -unscoped. Macro push/pop pairs preserve genuine macro spellings and native values. +Only the open-request group is a flags enum, matching OLD. Four groups use +`_Win32_Enum_` / `_Win32_FlagsEnum_`; the scheme group uses the same AST transport +with explicit historical labels. Compiled native constants remain authoritative, +without macro push/pop or copied literal enumerators. Both public group macros +are empty for ordinary consumers. The shared create-URL enum is owned by the header; `enums.json` retains only the two unmigrated WinInet `addUsesTo` relationships, not another definition. @@ -175,8 +179,9 @@ was not emitted. The new group preserves the three actually emitted members; genuine `WINHTTP_AUTH_SCHEME_DIGEST` remains a loose constant. The user-selected naming policy preserves the existing C# members -`WINHTTP_INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS` in the metadata-only logical enum. -Each initializer references its genuine `INTERNET_SCHEME_*` macro, yielding +`WINHTTP_INTERNET_SCHEME_HTTP/HTTPS/FTP/SOCKS` through a metadata-only typedef +carrier with explicit annotation labels. Each compiled expression references its +genuine `INTERNET_SCHEME_*` macro, yielding 1/2/3/4 respectively. Those macros are neither undefined nor renamed; ordinary native declarations and integer ABI stay intact. There are no new loose WinHttp winmd constants: ordinary native macros are not the same as added metadata symbols. @@ -256,7 +261,11 @@ pinned complete pointer-fixup response file before the selected discoveries are Producer inputs must be committed before image generation and remain unchanged through receipt publication. The receipt distinguishes the frozen baseline tooling commit from the current producer commit and binds the actual tool, header, generated -source, discovery, and expected-difference hashes. +source, discovery, and raw API-comparison hashes. The builder preserves the full +unfiltered `comparison.log`, displays its output, and records `reviewStatus: +required` when differences need review. It has no checked-in difference-allowance +file or default acceptance list. Record concrete source-backed differences in PR +comments; producing an image and receipt does not itself admit its differences. ```powershell . .\scripts\CommonUtils.ps1 @@ -308,19 +317,20 @@ bin path before running `dotnet test tests\Windows.Win32.Tests -c Release`. `*.remaps` or an empty scratch directory. The pinned full closure contains 393 diagnostic files. Do not substitute the selected partition output for that closure. -The full-image decompiler comparison must consume exact symbol/value-scoped expected -differences, with no unknown or unused expectations. It complements these narrow -SRM checks; neither is presented as a comprehensive typed metadata equivalence -oracle. The ten approved Printing fixes belong to the tooling OLD baseline and -must not appear as new WinHttp migration differences. +Review every difference in the unfiltered full-image decompiler comparison +against exact symbols, values and source evidence; do not hide differences in a +checked-in allowance file. It complements these narrow SRM checks; neither is +presented as a comprehensive typed metadata equivalence oracle. The ten approved +Printing fixes belong to the tooling OLD baseline and must not appear as new +WinHttp migration differences. -The WinHttp entries in `patches\HeaderAnnotations.expected-differences.txt` grade exactly 16 declaration differences for this checkpoint: +The original WinHttp-only checkpoint admitted exactly 16 declaration differences: eight native integer use-site types and eight corresponding `AssociatedEnum` additions. Existing logical enum identities, member names, and values are preserved. This image has no callback renames, import changes, dependent changes, -additional constants or changed values. The image builder applies this exact -grade before publishing its provenance receipt; it is not a general prohibition -on faithfully capturing existing native annotations in future migrations. +additional constants or changed values. That historical measured result is not +an automatic acceptance policy for a new producer. Faithfully capture existing +native annotations and present meaningful differences for review. ## Original native-name candidate (immutable) diff --git a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt b/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt deleted file mode 100644 index 130cf5126..000000000 --- a/generation/WinSDK/patches/HeaderAnnotations.expected-differences.txt +++ /dev/null @@ -1,52 +0,0 @@ -# Same-SDK b5b7b26 OLD to the complete header-annotation NEW. -# Only existing logical-enum use sites become native integers plus AssociatedEnum. -# Preserve OLD logical scheme members and ordinary native constants. -# No import, OS, last-error, callback, port, dependent-partition, or value changes. -Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags) : [In] => [AssociatedEnum(WIN_HTTP_CREATE_URL_FLAGS),In] -Windows.Win32.Networking.WinHttp.Apis.WinHttpCreateUrl : parameter 2 (dwFlags)...Windows.Win32.Networking.WinHttp.WIN_HTTP_CREATE_URL_FLAGS => System.UInt32 -Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType) : [In] => [AssociatedEnum(WINHTTP_ACCESS_TYPE),In] -Windows.Win32.Networking.WinHttp.Apis.WinHttpOpen : parameter 2 (dwAccessType)...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 -Windows.Win32.Networking.WinHttp.Apis.WinHttpOpenRequest : parameter 7 (dwFlags) : [In] => [AssociatedEnum(WINHTTP_OPEN_REQUEST_FLAGS),In] -Windows.Win32.Networking.WinHttp.Apis.WinHttpOpenRequest : parameter 7 (dwFlags)...Windows.Win32.Networking.WinHttp.WINHTTP_OPEN_REQUEST_FLAGS => System.UInt32 -Windows.Win32.Networking.WinHttp.URL_COMPONENTS.nScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] -Windows.Win32.Networking.WinHttp.URL_COMPONENTS.nScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 -Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme : => [AssociatedEnum(WINHTTP_CREDS_AUTHSCHEME)] -Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_EX.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 -Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme : => [AssociatedEnum(WINHTTP_CREDS_AUTHSCHEME)] -Windows.Win32.Networking.WinHttp.WINHTTP_CREDS.dwAuthScheme...Windows.Win32.Networking.WinHttp.WINHTTP_CREDS_AUTHSCHEME => System.UInt32 -Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType : => [AssociatedEnum(WINHTTP_ACCESS_TYPE)] -Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_INFO.dwAccessType...Windows.Win32.Networking.WinHttp.WINHTTP_ACCESS_TYPE => System.UInt32 -Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme : => [AssociatedEnum(WINHTTP_INTERNET_SCHEME)] -Windows.Win32.Networking.WinHttp.WINHTTP_PROXY_RESULT_ENTRY.ProxyScheme...Windows.Win32.Networking.WinHttp.WINHTTP_INTERNET_SCHEME => System.Int32 -Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags) : [In] => [AssociatedEnum(VERIFIER_ENUM_RESOURCE_FLAGS),In] -Windows.Win32.System.ApplicationVerifier.Apis.VerifierEnumerateResource : parameter 2 (Flags)...Windows.Win32.System.ApplicationVerifier.VERIFIER_ENUM_RESOURCE_FLAGS => System.UInt32 -Windows.Win32.System.ProcessStatus.Apis.EnumProcessModulesEx : parameter 5 (dwFilterFlag) : [In] => [AssociatedEnum(ENUM_PROCESS_MODULES_EX_FLAGS),In] -Windows.Win32.System.ProcessStatus.Apis.EnumProcessModulesEx : parameter 5 (dwFilterFlag)...Windows.Win32.System.ProcessStatus.ENUM_PROCESS_MODULES_EX_FLAGS => System.UInt32 -Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilterMode) : [In] => [AssociatedEnum(MW_FILTERMODE),In] -Windows.Win32.UI.Magnification.Apis.MagSetWindowFilterList : parameter 2 (dwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE => System.UInt32 -Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode) : [In,Out] => [AssociatedEnum(MW_FILTERMODE),In,Out] -Windows.Win32.UI.Magnification.Apis.MagGetWindowFilterList : parameter 2 (pdwFilterMode)...Windows.Win32.UI.Magnification.MW_FILTERMODE* => System.UInt32* -Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parameter 1 (dwFlags) : [In] => [AssociatedEnum(CREATE_TOOLHELP_SNAPSHOT_FLAGS),In] -Windows.Win32.System.Diagnostics.ToolHelp.Apis.CreateToolhelp32Snapshot : parameter 1 (dwFlags)...Windows.Win32.System.Diagnostics.ToolHelp.CREATE_TOOLHELP_SNAPSHOT_FLAGS => System.UInt32 -Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags : => [AssociatedEnum(HEAPENTRY32_FLAGS)] -Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32.dwFlags...Windows.Win32.System.Diagnostics.ToolHelp.HEAPENTRY32_FLAGS => System.UInt32 -Windows.Win32.UI.Input.XboxController.Apis.XInputGetBatteryInformation : parameter 2 (devType) : [In] => [AssociatedEnum(BATTERY_DEVTYPE),In] -Windows.Win32.UI.Input.XboxController.Apis.XInputGetBatteryInformation : parameter 2 (devType)...Windows.Win32.UI.Input.XboxController.BATTERY_DEVTYPE => System.Byte -Windows.Win32.UI.Input.XboxController.Apis.XInputGetCapabilities : parameter 2 (dwFlags) : [In] => [AssociatedEnum(XINPUT_FLAG),In] -Windows.Win32.UI.Input.XboxController.Apis.XInputGetCapabilities : parameter 2 (dwFlags)...Windows.Win32.UI.Input.XboxController.XINPUT_FLAG => System.UInt32 -Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryType : => [AssociatedEnum(BATTERY_TYPE)] -Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryType...Windows.Win32.UI.Input.XboxController.BATTERY_TYPE => System.Byte -Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryLevel : => [AssociatedEnum(BATTERY_LEVEL)] -Windows.Win32.UI.Input.XboxController.XINPUT_BATTERY_INFORMATION.BatteryLevel...Windows.Win32.UI.Input.XboxController.BATTERY_LEVEL => System.Byte -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Type : => [AssociatedEnum(XINPUT_DEVTYPE)] -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Type...Windows.Win32.UI.Input.XboxController.XINPUT_DEVTYPE => System.Byte -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.SubType : => [AssociatedEnum(XINPUT_DEVSUBTYPE)] -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.SubType...Windows.Win32.UI.Input.XboxController.XINPUT_DEVSUBTYPE => System.Byte -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Flags : => [AssociatedEnum(XINPUT_CAPABILITIES_FLAGS)] -Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES.Flags...Windows.Win32.UI.Input.XboxController.XINPUT_CAPABILITIES_FLAGS => System.UInt16 -Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD.wButtons : => [AssociatedEnum(XINPUT_GAMEPAD_BUTTON_FLAGS)] -Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD.wButtons...Windows.Win32.UI.Input.XboxController.XINPUT_GAMEPAD_BUTTON_FLAGS => System.UInt16 -Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.VirtualKey : => [AssociatedEnum(XINPUT_VIRTUAL_KEY)] -Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.VirtualKey...Windows.Win32.UI.Input.XboxController.XINPUT_VIRTUAL_KEY => System.UInt16 -Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.Flags : => [AssociatedEnum(XINPUT_KEYSTROKE_FLAGS)] -Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE.Flags...Windows.Win32.UI.Input.XboxController.XINPUT_KEYSTROKE_FLAGS => System.UInt16 diff --git a/generation/WinSDK/patches/um/Psapi.h.patch b/generation/WinSDK/patches/um/Psapi.h.patch index 8a59e4d59..dd36b85be 100644 --- a/generation/WinSDK/patches/um/Psapi.h.patch +++ b/generation/WinSDK/patches/um/Psapi.h.patch @@ -1,7 +1,8 @@ diff --git a/um/Psapi.h b/um/Psapi.h +index d68f6459..7ee851d5 100644 --- a/um/Psapi.h +++ b/um/Psapi.h -@@ -25,6 +25,7 @@ +@@ -25,6 +25,7 @@ Revision History: #pragma once #endif #include @@ -9,7 +10,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h #ifdef __cplusplus extern "C" { -@@ -128,6 +129,10 @@ +@@ -128,6 +129,10 @@ extern "C" { #endif @@ -20,7 +21,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EnumProcesses( -@@ -142,6 +147,10 @@ +@@ -142,6 +147,10 @@ EnumProcesses( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -31,7 +32,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EnumProcessModules( -@@ -151,6 +160,10 @@ +@@ -151,6 +160,10 @@ EnumProcessModules( _Out_ LPDWORD lpcbNeeded ); @@ -42,7 +43,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EnumProcessModulesEx( -@@ -158,6 +171,9 @@ +@@ -158,6 +171,9 @@ EnumProcessModulesEx( _Out_writes_bytes_(cb) HMODULE* lphModule, _In_ DWORD cb, _Out_ LPDWORD lpcbNeeded, @@ -52,7 +53,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h _In_ DWORD dwFilterFlag ); -@@ -167,6 +183,10 @@ +@@ -167,6 +183,10 @@ EnumProcessModulesEx( #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -63,7 +64,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetModuleBaseNameA( -@@ -176,6 +196,9 @@ +@@ -176,6 +196,9 @@ GetModuleBaseNameA( _In_ DWORD nSize ); @@ -73,7 +74,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetModuleBaseNameW( -@@ -193,6 +216,9 @@ +@@ -193,6 +216,9 @@ GetModuleBaseNameW( _Success_(return != 0) _Ret_range_(1, nSize) @@ -83,7 +84,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetModuleFileNameExA( -@@ -206,6 +232,9 @@ +@@ -206,6 +232,9 @@ GetModuleFileNameExA( _Success_(return != 0) _Ret_range_(1, nSize) @@ -93,7 +94,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetModuleFileNameExW( -@@ -216,6 +245,9 @@ +@@ -216,6 +245,9 @@ GetModuleFileNameExW( LPWSTR lpFilename, _In_ DWORD nSize ); @@ -103,7 +104,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h #ifdef UNICODE #define GetModuleFileNameEx GetModuleFileNameExW -@@ -229,6 +261,10 @@ +@@ -229,6 +261,10 @@ typedef struct _MODULEINFO { LPVOID EntryPoint; } MODULEINFO, *LPMODULEINFO; @@ -114,7 +115,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI GetModuleInformation( -@@ -244,6 +280,10 @@ +@@ -244,6 +280,10 @@ GetModuleInformation( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -125,7 +126,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EmptyWorkingSet( -@@ -256,6 +296,10 @@ +@@ -256,6 +296,10 @@ EmptyWorkingSet( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -136,18 +137,18 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI InitializeProcessForWsWatch( -@@ -273,6 +317,10 @@ +@@ -273,6 +317,10 @@ typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { ULONG_PTR Flags; // Reserved } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; +#if PSAPI_VERSION == 1 -+_Win32_SupportedOS_BEGIN_(WindowsXP) ++_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ +#endif BOOL WINAPI GetWsChanges( -@@ -281,6 +329,10 @@ +@@ -281,6 +329,10 @@ GetWsChanges( _In_ DWORD cb ); @@ -158,17 +159,18 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI GetWsChangesEx( -@@ -289,6 +341,9 @@ +@@ -289,6 +341,10 @@ GetWsChangesEx( _Inout_ PDWORD cb ); +#if PSAPI_VERSION == 1 ++_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ +#endif DWORD WINAPI GetMappedFileNameW ( -@@ -298,6 +353,9 @@ +@@ -298,6 +354,9 @@ GetMappedFileNameW ( _In_ DWORD nSize ); @@ -178,7 +180,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetMappedFileNameA ( -@@ -313,6 +371,9 @@ +@@ -313,6 +372,9 @@ GetMappedFileNameA ( #define GetMappedFileName GetMappedFileNameA #endif // !UNICODE @@ -188,7 +190,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EnumDeviceDrivers ( -@@ -321,6 +382,9 @@ +@@ -321,6 +383,9 @@ EnumDeviceDrivers ( _Out_ LPDWORD lpcbNeeded ); @@ -198,7 +200,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetDeviceDriverBaseNameA ( -@@ -329,6 +393,9 @@ +@@ -329,6 +394,9 @@ GetDeviceDriverBaseNameA ( _In_ DWORD nSize ); @@ -208,7 +210,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetDeviceDriverBaseNameW ( -@@ -343,6 +410,9 @@ +@@ -343,6 +411,9 @@ GetDeviceDriverBaseNameW ( #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA #endif // !UNICODE @@ -218,7 +220,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetDeviceDriverFileNameA ( -@@ -351,6 +421,9 @@ +@@ -351,6 +422,9 @@ GetDeviceDriverFileNameA ( _In_ DWORD nSize ); @@ -228,7 +230,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetDeviceDriverFileNameW ( -@@ -358,6 +431,9 @@ +@@ -358,6 +432,9 @@ GetDeviceDriverFileNameW ( _Out_writes_(nSize) LPWSTR lpFilename, _In_ DWORD nSize ); @@ -238,7 +240,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h #ifdef UNICODE #define GetDeviceDriverFileName GetDeviceDriverFileNameW -@@ -445,6 +521,10 @@ +@@ -445,6 +522,10 @@ typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { #pragma warning(default:4201) #endif @@ -249,7 +251,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI QueryWorkingSet( -@@ -453,6 +533,10 @@ +@@ -453,6 +534,10 @@ QueryWorkingSet( _In_ DWORD cb ); @@ -260,7 +262,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI QueryWorkingSetEx( -@@ -517,6 +601,10 @@ +@@ -517,6 +602,10 @@ typedef PROCESS_MEMORY_COUNTERS_EX2 *PPROCESS_MEMORY_COUNTERS_EX2; #endif @@ -271,7 +273,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI GetProcessMemoryInfo ( -@@ -548,6 +636,10 @@ +@@ -548,6 +637,10 @@ typedef struct _PERFORMANCE_INFORMATION { DWORD ThreadCount; } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; @@ -282,7 +284,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI GetPerformanceInfo ( -@@ -573,6 +665,10 @@ +@@ -573,6 +666,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); @@ -293,7 +295,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h BOOL WINAPI EnumPageFilesW ( -@@ -580,12 +676,18 @@ +@@ -580,12 +677,18 @@ EnumPageFilesW ( LPVOID pContext ); @@ -312,7 +314,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h #ifdef UNICODE #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW -@@ -601,6 +703,10 @@ +@@ -601,6 +704,10 @@ EnumPageFilesA ( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -323,7 +325,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetProcessImageFileNameA ( -@@ -609,6 +715,9 @@ +@@ -609,6 +716,9 @@ GetProcessImageFileNameA ( _In_ DWORD nSize ); @@ -333,7 +335,7 @@ diff --git a/um/Psapi.h b/um/Psapi.h DWORD WINAPI GetProcessImageFileNameW ( -@@ -616,6 +725,9 @@ +@@ -616,6 +726,9 @@ GetProcessImageFileNameW ( _Out_writes_(nSize) LPWSTR lpImageFileName, _In_ DWORD nSize ); @@ -343,30 +345,16 @@ diff --git a/um/Psapi.h b/um/Psapi.h #ifdef UNICODE #define GetProcessImageFileName GetProcessImageFileNameW -@@ -630,6 +742,28 @@ +@@ -630,6 +743,14 @@ GetProcessImageFileNameW ( #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -+#if defined(WIN32METADATA) && PSAPI_VERSION == 1 -+#pragma push_macro("LIST_MODULES_ALL") -+#undef LIST_MODULES_ALL -+#pragma push_macro("LIST_MODULES_DEFAULT") -+#undef LIST_MODULES_DEFAULT -+#pragma push_macro("LIST_MODULES_32BIT") -+#undef LIST_MODULES_32BIT -+#pragma push_macro("LIST_MODULES_64BIT") -+#undef LIST_MODULES_64BIT -+enum ENUM_PROCESS_MODULES_EX_FLAGS : DWORD -+{ -+ LIST_MODULES_ALL = 3, -+ LIST_MODULES_DEFAULT = 0, -+ LIST_MODULES_32BIT = 1, -+ LIST_MODULES_64BIT = 2, -+}; -+#pragma pop_macro("LIST_MODULES_64BIT") -+#pragma pop_macro("LIST_MODULES_32BIT") -+#pragma pop_macro("LIST_MODULES_DEFAULT") -+#pragma pop_macro("LIST_MODULES_ALL") ++#if PSAPI_VERSION == 1 ++_Win32_Enum_(ENUM_PROCESS_MODULES_EX_FLAGS, DWORD, ++ LIST_MODULES_ALL, ++ LIST_MODULES_DEFAULT, ++ LIST_MODULES_32BIT, ++ LIST_MODULES_64BIT); +#endif + #ifdef __cplusplus diff --git a/generation/WinSDK/patches/um/TlHelp32.h.patch b/generation/WinSDK/patches/um/TlHelp32.h.patch index 927695535..c1e5b6b47 100644 --- a/generation/WinSDK/patches/um/TlHelp32.h.patch +++ b/generation/WinSDK/patches/um/TlHelp32.h.patch @@ -1,4 +1,5 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h +index c712ccb4..4bc5f617 100644 --- a/um/TlHelp32.h +++ b/um/TlHelp32.h @@ -17,6 +17,7 @@ @@ -9,7 +10,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -29,10 +30,12 @@ +@@ -29,10 +30,12 @@ extern "C" { /* Assume C declarations for C++ */ /****** Shapshot function **********************************************/ @@ -23,7 +24,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h DWORD th32ProcessID ); -@@ -78,6 +81,8 @@ +@@ -78,6 +81,8 @@ typedef HEAPLIST32 * LPHEAPLIST32; #define HF32_DEFAULT 1 // process's default heap #define HF32_SHARED 2 // is shared heap @@ -32,7 +33,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Heap32ListFirst( -@@ -85,12 +90,14 @@ +@@ -85,12 +90,14 @@ Heap32ListFirst( LPHEAPLIST32 lphl ); @@ -47,7 +48,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h typedef struct tagHEAPENTRY32 { -@@ -98,7 +105,7 @@ +@@ -98,7 +105,7 @@ typedef struct tagHEAPENTRY32 HANDLE hHandle; // Handle of this heap block ULONG_PTR dwAddress; // Linear address of start of block SIZE_T dwBlockSize; // Size of block in bytes @@ -56,7 +57,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h DWORD dwLockCount; DWORD dwResvd; DWORD th32ProcessID; // owning process -@@ -113,6 +120,8 @@ +@@ -113,6 +120,8 @@ typedef HEAPENTRY32 * LPHEAPENTRY32; #define LF32_FREE 0x00000002 #define LF32_MOVEABLE 0x00000004 @@ -65,7 +66,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Heap32First( -@@ -121,6 +130,7 @@ +@@ -121,6 +130,7 @@ Heap32First( ULONG_PTR th32HeapID ); @@ -73,7 +74,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Heap32Next( -@@ -136,6 +146,7 @@ +@@ -136,6 +146,7 @@ Toolhelp32ReadProcessMemory( SIZE_T cbRead, SIZE_T* lpNumberOfBytesRead ); @@ -81,7 +82,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h /***** Process walking *************************************************/ -@@ -155,6 +166,8 @@ +@@ -155,6 +166,8 @@ typedef struct tagPROCESSENTRY32W typedef PROCESSENTRY32W * PPROCESSENTRY32W; typedef PROCESSENTRY32W * LPPROCESSENTRY32W; @@ -90,7 +91,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Process32FirstW( -@@ -162,12 +175,14 @@ +@@ -162,12 +175,14 @@ Process32FirstW( LPPROCESSENTRY32W lppe ); @@ -105,7 +106,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h typedef struct tagPROCESSENTRY32 { -@@ -185,6 +200,8 @@ +@@ -185,6 +200,8 @@ typedef struct tagPROCESSENTRY32 typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; @@ -114,7 +115,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Process32First( -@@ -192,12 +209,14 @@ +@@ -192,12 +209,14 @@ Process32First( LPPROCESSENTRY32 lppe ); @@ -129,7 +130,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h #ifdef UNICODE #define Process32First Process32FirstW -@@ -222,6 +241,8 @@ +@@ -222,6 +241,8 @@ typedef struct tagTHREADENTRY32 typedef THREADENTRY32 * PTHREADENTRY32; typedef THREADENTRY32 * LPTHREADENTRY32; @@ -138,7 +139,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Thread32First( -@@ -229,12 +250,14 @@ +@@ -229,12 +250,14 @@ Thread32First( LPTHREADENTRY32 lpte ); @@ -153,7 +154,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h /***** Module walking *************************************************/ -@@ -254,6 +277,8 @@ +@@ -254,6 +277,8 @@ typedef struct tagMODULEENTRY32W typedef MODULEENTRY32W * PMODULEENTRY32W; typedef MODULEENTRY32W * LPMODULEENTRY32W; @@ -162,7 +163,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Module32FirstW( -@@ -261,12 +286,14 @@ +@@ -261,12 +286,14 @@ Module32FirstW( LPMODULEENTRY32W lpme ); @@ -177,7 +178,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h typedef struct tagMODULEENTRY32 { -@@ -289,6 +316,8 @@ +@@ -289,6 +316,8 @@ typedef MODULEENTRY32 * LPMODULEENTRY32; // in th32ProcessID's process context. // @@ -186,7 +187,7 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h BOOL WINAPI Module32First( -@@ -296,12 +325,14 @@ +@@ -296,12 +325,14 @@ Module32First( LPMODULEENTRY32 lpme ); @@ -201,61 +202,23 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h #ifdef UNICODE #define Module32First Module32FirstW -@@ -311,6 +342,58 @@ +@@ -311,6 +342,20 @@ Module32Next( #define LPMODULEENTRY32 LPMODULEENTRY32W #endif // !UNICODE -+#ifdef WIN32METADATA -+#pragma push_macro("TH32CS_INHERIT") -+#undef TH32CS_INHERIT -+#pragma push_macro("TH32CS_SNAPALL") -+#undef TH32CS_SNAPALL -+#pragma push_macro("TH32CS_SNAPHEAPLIST") -+#undef TH32CS_SNAPHEAPLIST -+#pragma push_macro("TH32CS_SNAPMODULE") -+#undef TH32CS_SNAPMODULE -+#pragma push_macro("TH32CS_SNAPMODULE32") -+#undef TH32CS_SNAPMODULE32 -+#pragma push_macro("TH32CS_SNAPPROCESS") -+#undef TH32CS_SNAPPROCESS -+#pragma push_macro("TH32CS_SNAPTHREAD") -+#undef TH32CS_SNAPTHREAD -+enum [[clang::flag_enum]] CREATE_TOOLHELP_SNAPSHOT_FLAGS : DWORD -+{ -+ TH32CS_INHERIT = 0x80000000, -+ TH32CS_SNAPALL = 15, -+ TH32CS_SNAPHEAPLIST = 1, -+ TH32CS_SNAPMODULE = 8, -+ TH32CS_SNAPMODULE32 = 16, -+ TH32CS_SNAPPROCESS = 2, -+ TH32CS_SNAPTHREAD = 4, -+}; -+#pragma pop_macro("TH32CS_SNAPTHREAD") -+#pragma pop_macro("TH32CS_SNAPPROCESS") -+#pragma pop_macro("TH32CS_SNAPMODULE32") -+#pragma pop_macro("TH32CS_SNAPMODULE") -+#pragma pop_macro("TH32CS_SNAPHEAPLIST") -+#pragma pop_macro("TH32CS_SNAPALL") -+#pragma pop_macro("TH32CS_INHERIT") -+#endif ++_Win32_FlagsEnum_(CREATE_TOOLHELP_SNAPSHOT_FLAGS, DWORD, ++ TH32CS_INHERIT, ++ TH32CS_SNAPALL, ++ TH32CS_SNAPHEAPLIST, ++ TH32CS_SNAPMODULE, ++ TH32CS_SNAPMODULE32, ++ TH32CS_SNAPPROCESS, ++ TH32CS_SNAPTHREAD); + -+#ifdef WIN32METADATA -+#pragma push_macro("LF32_FIXED") -+#undef LF32_FIXED -+#pragma push_macro("LF32_FREE") -+#undef LF32_FREE -+#pragma push_macro("LF32_MOVEABLE") -+#undef LF32_MOVEABLE -+enum HEAPENTRY32_FLAGS : DWORD -+{ -+ LF32_FIXED = 1, -+ LF32_FREE = 2, -+ LF32_MOVEABLE = 4, -+}; -+#pragma pop_macro("LF32_MOVEABLE") -+#pragma pop_macro("LF32_FREE") -+#pragma pop_macro("LF32_FIXED") -+#endif ++_Win32_Enum_(HEAPENTRY32_FLAGS, DWORD, ++ LF32_FIXED, ++ LF32_FREE, ++ LF32_MOVEABLE); + #ifdef __cplusplus } diff --git a/generation/WinSDK/patches/um/Xinput.h.patch b/generation/WinSDK/patches/um/Xinput.h.patch index 911e21edc..163924c73 100644 --- a/generation/WinSDK/patches/um/Xinput.h.patch +++ b/generation/WinSDK/patches/um/Xinput.h.patch @@ -1,4 +1,5 @@ diff --git a/um/Xinput.h b/um/Xinput.h +index 4b51b443..eaeaad70 100644 --- a/um/Xinput.h +++ b/um/Xinput.h @@ -13,6 +13,7 @@ @@ -18,7 +19,7 @@ diff --git a/um/Xinput.h b/um/Xinput.h BYTE bLeftTrigger; BYTE bRightTrigger; SHORT sThumbLX; -@@ -216,9 +217,9 @@ +@@ -216,9 +217,9 @@ typedef struct _XINPUT_VIBRATION typedef struct _XINPUT_CAPABILITIES { @@ -31,7 +32,7 @@ diff --git a/um/Xinput.h b/um/Xinput.h XINPUT_GAMEPAD Gamepad; XINPUT_VIBRATION Vibration; } XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; -@@ -227,20 +228,408 @@ +@@ -227,21 +228,124 @@ typedef struct _XINPUT_CAPABILITIES typedef struct _XINPUT_BATTERY_INFORMATION { @@ -53,398 +54,114 @@ diff --git a/um/Xinput.h b/um/Xinput.h } XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; #endif //(_WIN32_WINNT >= _WIN32_WINNT_WIN8) + ++_Win32_Enum_(XINPUT_VIRTUAL_KEY, WORD, ++ VK_PAD_A, ++ VK_PAD_B, ++ VK_PAD_X, ++ VK_PAD_Y, ++ VK_PAD_RSHOULDER, ++ VK_PAD_LSHOULDER, ++ VK_PAD_LTRIGGER, ++ VK_PAD_RTRIGGER, ++ VK_PAD_DPAD_UP, ++ VK_PAD_DPAD_DOWN, ++ VK_PAD_DPAD_LEFT, ++ VK_PAD_DPAD_RIGHT, ++ VK_PAD_START, ++ VK_PAD_BACK, ++ VK_PAD_LTHUMB_PRESS, ++ VK_PAD_RTHUMB_PRESS, ++ VK_PAD_LTHUMB_UP, ++ VK_PAD_LTHUMB_DOWN, ++ VK_PAD_LTHUMB_RIGHT, ++ VK_PAD_LTHUMB_LEFT, ++ VK_PAD_LTHUMB_UPLEFT, ++ VK_PAD_LTHUMB_UPRIGHT, ++ VK_PAD_LTHUMB_DOWNRIGHT, ++ VK_PAD_LTHUMB_DOWNLEFT, ++ VK_PAD_RTHUMB_UP, ++ VK_PAD_RTHUMB_DOWN, ++ VK_PAD_RTHUMB_RIGHT, ++ VK_PAD_RTHUMB_LEFT, ++ VK_PAD_RTHUMB_UPLEFT, ++ VK_PAD_RTHUMB_UPRIGHT, ++ VK_PAD_RTHUMB_DOWNRIGHT, ++ VK_PAD_RTHUMB_DOWNLEFT); + -+#ifdef WIN32METADATA -+#pragma push_macro("VK_PAD_A") -+#undef VK_PAD_A -+#pragma push_macro("VK_PAD_B") -+#undef VK_PAD_B -+#pragma push_macro("VK_PAD_X") -+#undef VK_PAD_X -+#pragma push_macro("VK_PAD_Y") -+#undef VK_PAD_Y -+#pragma push_macro("VK_PAD_RSHOULDER") -+#undef VK_PAD_RSHOULDER -+#pragma push_macro("VK_PAD_LSHOULDER") -+#undef VK_PAD_LSHOULDER -+#pragma push_macro("VK_PAD_LTRIGGER") -+#undef VK_PAD_LTRIGGER -+#pragma push_macro("VK_PAD_RTRIGGER") -+#undef VK_PAD_RTRIGGER -+#pragma push_macro("VK_PAD_DPAD_UP") -+#undef VK_PAD_DPAD_UP -+#pragma push_macro("VK_PAD_DPAD_DOWN") -+#undef VK_PAD_DPAD_DOWN -+#pragma push_macro("VK_PAD_DPAD_LEFT") -+#undef VK_PAD_DPAD_LEFT -+#pragma push_macro("VK_PAD_DPAD_RIGHT") -+#undef VK_PAD_DPAD_RIGHT -+#pragma push_macro("VK_PAD_START") -+#undef VK_PAD_START -+#pragma push_macro("VK_PAD_BACK") -+#undef VK_PAD_BACK -+#pragma push_macro("VK_PAD_LTHUMB_PRESS") -+#undef VK_PAD_LTHUMB_PRESS -+#pragma push_macro("VK_PAD_RTHUMB_PRESS") -+#undef VK_PAD_RTHUMB_PRESS -+#pragma push_macro("VK_PAD_LTHUMB_UP") -+#undef VK_PAD_LTHUMB_UP -+#pragma push_macro("VK_PAD_LTHUMB_DOWN") -+#undef VK_PAD_LTHUMB_DOWN -+#pragma push_macro("VK_PAD_LTHUMB_RIGHT") -+#undef VK_PAD_LTHUMB_RIGHT -+#pragma push_macro("VK_PAD_LTHUMB_LEFT") -+#undef VK_PAD_LTHUMB_LEFT -+#pragma push_macro("VK_PAD_LTHUMB_UPLEFT") -+#undef VK_PAD_LTHUMB_UPLEFT -+#pragma push_macro("VK_PAD_LTHUMB_UPRIGHT") -+#undef VK_PAD_LTHUMB_UPRIGHT -+#pragma push_macro("VK_PAD_LTHUMB_DOWNRIGHT") -+#undef VK_PAD_LTHUMB_DOWNRIGHT -+#pragma push_macro("VK_PAD_LTHUMB_DOWNLEFT") -+#undef VK_PAD_LTHUMB_DOWNLEFT -+#pragma push_macro("VK_PAD_RTHUMB_UP") -+#undef VK_PAD_RTHUMB_UP -+#pragma push_macro("VK_PAD_RTHUMB_DOWN") -+#undef VK_PAD_RTHUMB_DOWN -+#pragma push_macro("VK_PAD_RTHUMB_RIGHT") -+#undef VK_PAD_RTHUMB_RIGHT -+#pragma push_macro("VK_PAD_RTHUMB_LEFT") -+#undef VK_PAD_RTHUMB_LEFT -+#pragma push_macro("VK_PAD_RTHUMB_UPLEFT") -+#undef VK_PAD_RTHUMB_UPLEFT -+#pragma push_macro("VK_PAD_RTHUMB_UPRIGHT") -+#undef VK_PAD_RTHUMB_UPRIGHT -+#pragma push_macro("VK_PAD_RTHUMB_DOWNRIGHT") -+#undef VK_PAD_RTHUMB_DOWNRIGHT -+#pragma push_macro("VK_PAD_RTHUMB_DOWNLEFT") -+#undef VK_PAD_RTHUMB_DOWNLEFT -+enum XINPUT_VIRTUAL_KEY : WORD -+{ -+ VK_PAD_A = 22528, -+ VK_PAD_B = 22529, -+ VK_PAD_X = 22530, -+ VK_PAD_Y = 22531, -+ VK_PAD_RSHOULDER = 22532, -+ VK_PAD_LSHOULDER = 22533, -+ VK_PAD_LTRIGGER = 22534, -+ VK_PAD_RTRIGGER = 22535, -+ VK_PAD_DPAD_UP = 22544, -+ VK_PAD_DPAD_DOWN = 22545, -+ VK_PAD_DPAD_LEFT = 22546, -+ VK_PAD_DPAD_RIGHT = 22547, -+ VK_PAD_START = 22548, -+ VK_PAD_BACK = 22549, -+ VK_PAD_LTHUMB_PRESS = 22550, -+ VK_PAD_RTHUMB_PRESS = 22551, -+ VK_PAD_LTHUMB_UP = 22560, -+ VK_PAD_LTHUMB_DOWN = 22561, -+ VK_PAD_LTHUMB_RIGHT = 22562, -+ VK_PAD_LTHUMB_LEFT = 22563, -+ VK_PAD_LTHUMB_UPLEFT = 22564, -+ VK_PAD_LTHUMB_UPRIGHT = 22565, -+ VK_PAD_LTHUMB_DOWNRIGHT = 22566, -+ VK_PAD_LTHUMB_DOWNLEFT = 22567, -+ VK_PAD_RTHUMB_UP = 22576, -+ VK_PAD_RTHUMB_DOWN = 22577, -+ VK_PAD_RTHUMB_RIGHT = 22578, -+ VK_PAD_RTHUMB_LEFT = 22579, -+ VK_PAD_RTHUMB_UPLEFT = 22580, -+ VK_PAD_RTHUMB_UPRIGHT = 22581, -+ VK_PAD_RTHUMB_DOWNRIGHT = 22582, -+ VK_PAD_RTHUMB_DOWNLEFT = 22583, -+}; -+#pragma pop_macro("VK_PAD_RTHUMB_DOWNLEFT") -+#pragma pop_macro("VK_PAD_RTHUMB_DOWNRIGHT") -+#pragma pop_macro("VK_PAD_RTHUMB_UPRIGHT") -+#pragma pop_macro("VK_PAD_RTHUMB_UPLEFT") -+#pragma pop_macro("VK_PAD_RTHUMB_LEFT") -+#pragma pop_macro("VK_PAD_RTHUMB_RIGHT") -+#pragma pop_macro("VK_PAD_RTHUMB_DOWN") -+#pragma pop_macro("VK_PAD_RTHUMB_UP") -+#pragma pop_macro("VK_PAD_LTHUMB_DOWNLEFT") -+#pragma pop_macro("VK_PAD_LTHUMB_DOWNRIGHT") -+#pragma pop_macro("VK_PAD_LTHUMB_UPRIGHT") -+#pragma pop_macro("VK_PAD_LTHUMB_UPLEFT") -+#pragma pop_macro("VK_PAD_LTHUMB_LEFT") -+#pragma pop_macro("VK_PAD_LTHUMB_RIGHT") -+#pragma pop_macro("VK_PAD_LTHUMB_DOWN") -+#pragma pop_macro("VK_PAD_LTHUMB_UP") -+#pragma pop_macro("VK_PAD_RTHUMB_PRESS") -+#pragma pop_macro("VK_PAD_LTHUMB_PRESS") -+#pragma pop_macro("VK_PAD_BACK") -+#pragma pop_macro("VK_PAD_START") -+#pragma pop_macro("VK_PAD_DPAD_RIGHT") -+#pragma pop_macro("VK_PAD_DPAD_LEFT") -+#pragma pop_macro("VK_PAD_DPAD_DOWN") -+#pragma pop_macro("VK_PAD_DPAD_UP") -+#pragma pop_macro("VK_PAD_RTRIGGER") -+#pragma pop_macro("VK_PAD_LTRIGGER") -+#pragma pop_macro("VK_PAD_LSHOULDER") -+#pragma pop_macro("VK_PAD_RSHOULDER") -+#pragma pop_macro("VK_PAD_Y") -+#pragma pop_macro("VK_PAD_X") -+#pragma pop_macro("VK_PAD_B") -+#pragma pop_macro("VK_PAD_A") -+#endif ++_Win32_Enum_(BATTERY_TYPE, BYTE, ++ BATTERY_TYPE_DISCONNECTED, ++ BATTERY_TYPE_WIRED, ++ BATTERY_TYPE_ALKALINE, ++ BATTERY_TYPE_NIMH, ++ BATTERY_TYPE_UNKNOWN); + -+#ifdef WIN32METADATA -+#pragma push_macro("BATTERY_TYPE_DISCONNECTED") -+#undef BATTERY_TYPE_DISCONNECTED -+#pragma push_macro("BATTERY_TYPE_WIRED") -+#undef BATTERY_TYPE_WIRED -+#pragma push_macro("BATTERY_TYPE_ALKALINE") -+#undef BATTERY_TYPE_ALKALINE -+#pragma push_macro("BATTERY_TYPE_NIMH") -+#undef BATTERY_TYPE_NIMH -+#pragma push_macro("BATTERY_TYPE_UNKNOWN") -+#undef BATTERY_TYPE_UNKNOWN -+enum BATTERY_TYPE : BYTE -+{ -+ BATTERY_TYPE_DISCONNECTED = 0, -+ BATTERY_TYPE_WIRED = 1, -+ BATTERY_TYPE_ALKALINE = 2, -+ BATTERY_TYPE_NIMH = 3, -+ BATTERY_TYPE_UNKNOWN = 255, -+}; -+#pragma pop_macro("BATTERY_TYPE_UNKNOWN") -+#pragma pop_macro("BATTERY_TYPE_NIMH") -+#pragma pop_macro("BATTERY_TYPE_ALKALINE") -+#pragma pop_macro("BATTERY_TYPE_WIRED") -+#pragma pop_macro("BATTERY_TYPE_DISCONNECTED") -+#endif ++_Win32_Enum_(BATTERY_LEVEL, BYTE, ++ BATTERY_LEVEL_EMPTY, ++ BATTERY_LEVEL_LOW, ++ BATTERY_LEVEL_MEDIUM, ++ BATTERY_LEVEL_FULL); + -+#ifdef WIN32METADATA -+#pragma push_macro("BATTERY_LEVEL_EMPTY") -+#undef BATTERY_LEVEL_EMPTY -+#pragma push_macro("BATTERY_LEVEL_LOW") -+#undef BATTERY_LEVEL_LOW -+#pragma push_macro("BATTERY_LEVEL_MEDIUM") -+#undef BATTERY_LEVEL_MEDIUM -+#pragma push_macro("BATTERY_LEVEL_FULL") -+#undef BATTERY_LEVEL_FULL -+enum BATTERY_LEVEL : BYTE -+{ -+ BATTERY_LEVEL_EMPTY = 0, -+ BATTERY_LEVEL_LOW = 1, -+ BATTERY_LEVEL_MEDIUM = 2, -+ BATTERY_LEVEL_FULL = 3, -+}; -+#pragma pop_macro("BATTERY_LEVEL_FULL") -+#pragma pop_macro("BATTERY_LEVEL_MEDIUM") -+#pragma pop_macro("BATTERY_LEVEL_LOW") -+#pragma pop_macro("BATTERY_LEVEL_EMPTY") -+#endif ++_Win32_Enum_(BATTERY_DEVTYPE, BYTE, ++ BATTERY_DEVTYPE_GAMEPAD, ++ BATTERY_DEVTYPE_HEADSET); + -+#ifdef WIN32METADATA -+#pragma push_macro("BATTERY_DEVTYPE_GAMEPAD") -+#undef BATTERY_DEVTYPE_GAMEPAD -+#pragma push_macro("BATTERY_DEVTYPE_HEADSET") -+#undef BATTERY_DEVTYPE_HEADSET -+enum BATTERY_DEVTYPE : BYTE -+{ -+ BATTERY_DEVTYPE_GAMEPAD = 0, -+ BATTERY_DEVTYPE_HEADSET = 1, -+}; -+#pragma pop_macro("BATTERY_DEVTYPE_HEADSET") -+#pragma pop_macro("BATTERY_DEVTYPE_GAMEPAD") -+#endif ++_Win32_Enum_(XINPUT_DEVTYPE, BYTE, ++ XINPUT_DEVTYPE_GAMEPAD); + -+#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_DEVTYPE_GAMEPAD") -+#undef XINPUT_DEVTYPE_GAMEPAD -+enum XINPUT_DEVTYPE : BYTE -+{ -+ XINPUT_DEVTYPE_GAMEPAD = 1, -+}; -+#pragma pop_macro("XINPUT_DEVTYPE_GAMEPAD") -+#endif ++_Win32_Enum_(XINPUT_DEVSUBTYPE, BYTE, ++ XINPUT_DEVSUBTYPE_GAMEPAD, ++ XINPUT_DEVSUBTYPE_UNKNOWN, ++ XINPUT_DEVSUBTYPE_WHEEL, ++ XINPUT_DEVSUBTYPE_ARCADE_STICK, ++ XINPUT_DEVSUBTYPE_FLIGHT_STICK, ++ XINPUT_DEVSUBTYPE_DANCE_PAD, ++ XINPUT_DEVSUBTYPE_GUITAR, ++ XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE, ++ XINPUT_DEVSUBTYPE_DRUM_KIT, ++ XINPUT_DEVSUBTYPE_GUITAR_BASS, ++ XINPUT_DEVSUBTYPE_ARCADE_PAD); + -+#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_DEVSUBTYPE_GAMEPAD") -+#undef XINPUT_DEVSUBTYPE_GAMEPAD -+#pragma push_macro("XINPUT_DEVSUBTYPE_UNKNOWN") -+#undef XINPUT_DEVSUBTYPE_UNKNOWN -+#pragma push_macro("XINPUT_DEVSUBTYPE_WHEEL") -+#undef XINPUT_DEVSUBTYPE_WHEEL -+#pragma push_macro("XINPUT_DEVSUBTYPE_ARCADE_STICK") -+#undef XINPUT_DEVSUBTYPE_ARCADE_STICK -+#pragma push_macro("XINPUT_DEVSUBTYPE_FLIGHT_STICK") -+#undef XINPUT_DEVSUBTYPE_FLIGHT_STICK -+#pragma push_macro("XINPUT_DEVSUBTYPE_DANCE_PAD") -+#undef XINPUT_DEVSUBTYPE_DANCE_PAD -+#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR") -+#undef XINPUT_DEVSUBTYPE_GUITAR -+#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE") -+#undef XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE -+#pragma push_macro("XINPUT_DEVSUBTYPE_DRUM_KIT") -+#undef XINPUT_DEVSUBTYPE_DRUM_KIT -+#pragma push_macro("XINPUT_DEVSUBTYPE_GUITAR_BASS") -+#undef XINPUT_DEVSUBTYPE_GUITAR_BASS -+#pragma push_macro("XINPUT_DEVSUBTYPE_ARCADE_PAD") -+#undef XINPUT_DEVSUBTYPE_ARCADE_PAD -+enum XINPUT_DEVSUBTYPE : BYTE -+{ -+ XINPUT_DEVSUBTYPE_GAMEPAD = 1, -+ XINPUT_DEVSUBTYPE_UNKNOWN = 0, -+ XINPUT_DEVSUBTYPE_WHEEL = 2, -+ XINPUT_DEVSUBTYPE_ARCADE_STICK = 3, -+ XINPUT_DEVSUBTYPE_FLIGHT_STICK = 4, -+ XINPUT_DEVSUBTYPE_DANCE_PAD = 5, -+ XINPUT_DEVSUBTYPE_GUITAR = 6, -+ XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE = 7, -+ XINPUT_DEVSUBTYPE_DRUM_KIT = 8, -+ XINPUT_DEVSUBTYPE_GUITAR_BASS = 11, -+ XINPUT_DEVSUBTYPE_ARCADE_PAD = 19, -+}; -+#pragma pop_macro("XINPUT_DEVSUBTYPE_ARCADE_PAD") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR_BASS") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_DRUM_KIT") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_GUITAR") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_DANCE_PAD") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_FLIGHT_STICK") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_ARCADE_STICK") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_WHEEL") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_UNKNOWN") -+#pragma pop_macro("XINPUT_DEVSUBTYPE_GAMEPAD") -+#endif ++_Win32_FlagsEnum_(XINPUT_CAPABILITIES_FLAGS, WORD, ++ XINPUT_CAPS_VOICE_SUPPORTED, ++ XINPUT_CAPS_FFB_SUPPORTED, ++ XINPUT_CAPS_WIRELESS, ++ XINPUT_CAPS_PMD_SUPPORTED, ++ XINPUT_CAPS_NO_NAVIGATION); + -+#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_CAPS_VOICE_SUPPORTED") -+#undef XINPUT_CAPS_VOICE_SUPPORTED -+#pragma push_macro("XINPUT_CAPS_FFB_SUPPORTED") -+#undef XINPUT_CAPS_FFB_SUPPORTED -+#pragma push_macro("XINPUT_CAPS_WIRELESS") -+#undef XINPUT_CAPS_WIRELESS -+#pragma push_macro("XINPUT_CAPS_PMD_SUPPORTED") -+#undef XINPUT_CAPS_PMD_SUPPORTED -+#pragma push_macro("XINPUT_CAPS_NO_NAVIGATION") -+#undef XINPUT_CAPS_NO_NAVIGATION -+enum [[clang::flag_enum]] XINPUT_CAPABILITIES_FLAGS : WORD -+{ -+ XINPUT_CAPS_VOICE_SUPPORTED = 4, -+ XINPUT_CAPS_FFB_SUPPORTED = 1, -+ XINPUT_CAPS_WIRELESS = 2, -+ XINPUT_CAPS_PMD_SUPPORTED = 8, -+ XINPUT_CAPS_NO_NAVIGATION = 16, -+}; -+#pragma pop_macro("XINPUT_CAPS_NO_NAVIGATION") -+#pragma pop_macro("XINPUT_CAPS_PMD_SUPPORTED") -+#pragma pop_macro("XINPUT_CAPS_WIRELESS") -+#pragma pop_macro("XINPUT_CAPS_FFB_SUPPORTED") -+#pragma pop_macro("XINPUT_CAPS_VOICE_SUPPORTED") -+#endif ++_Win32_FlagsEnum_(XINPUT_GAMEPAD_BUTTON_FLAGS, WORD, ++ XINPUT_GAMEPAD_DPAD_UP, ++ XINPUT_GAMEPAD_DPAD_DOWN, ++ XINPUT_GAMEPAD_DPAD_LEFT, ++ XINPUT_GAMEPAD_DPAD_RIGHT, ++ XINPUT_GAMEPAD_START, ++ XINPUT_GAMEPAD_BACK, ++ XINPUT_GAMEPAD_LEFT_THUMB, ++ XINPUT_GAMEPAD_RIGHT_THUMB, ++ XINPUT_GAMEPAD_LEFT_SHOULDER, ++ XINPUT_GAMEPAD_RIGHT_SHOULDER, ++ XINPUT_GAMEPAD_A, ++ XINPUT_GAMEPAD_B, ++ XINPUT_GAMEPAD_X, ++ XINPUT_GAMEPAD_Y, ++ XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE, ++ XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE, ++ XINPUT_GAMEPAD_TRIGGER_THRESHOLD); + -+#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_GAMEPAD_DPAD_UP") -+#undef XINPUT_GAMEPAD_DPAD_UP -+#pragma push_macro("XINPUT_GAMEPAD_DPAD_DOWN") -+#undef XINPUT_GAMEPAD_DPAD_DOWN -+#pragma push_macro("XINPUT_GAMEPAD_DPAD_LEFT") -+#undef XINPUT_GAMEPAD_DPAD_LEFT -+#pragma push_macro("XINPUT_GAMEPAD_DPAD_RIGHT") -+#undef XINPUT_GAMEPAD_DPAD_RIGHT -+#pragma push_macro("XINPUT_GAMEPAD_START") -+#undef XINPUT_GAMEPAD_START -+#pragma push_macro("XINPUT_GAMEPAD_BACK") -+#undef XINPUT_GAMEPAD_BACK -+#pragma push_macro("XINPUT_GAMEPAD_LEFT_THUMB") -+#undef XINPUT_GAMEPAD_LEFT_THUMB -+#pragma push_macro("XINPUT_GAMEPAD_RIGHT_THUMB") -+#undef XINPUT_GAMEPAD_RIGHT_THUMB -+#pragma push_macro("XINPUT_GAMEPAD_LEFT_SHOULDER") -+#undef XINPUT_GAMEPAD_LEFT_SHOULDER -+#pragma push_macro("XINPUT_GAMEPAD_RIGHT_SHOULDER") -+#undef XINPUT_GAMEPAD_RIGHT_SHOULDER -+#pragma push_macro("XINPUT_GAMEPAD_A") -+#undef XINPUT_GAMEPAD_A -+#pragma push_macro("XINPUT_GAMEPAD_B") -+#undef XINPUT_GAMEPAD_B -+#pragma push_macro("XINPUT_GAMEPAD_X") -+#undef XINPUT_GAMEPAD_X -+#pragma push_macro("XINPUT_GAMEPAD_Y") -+#undef XINPUT_GAMEPAD_Y -+#pragma push_macro("XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE") -+#undef XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE -+#pragma push_macro("XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE") -+#undef XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE -+#pragma push_macro("XINPUT_GAMEPAD_TRIGGER_THRESHOLD") -+#undef XINPUT_GAMEPAD_TRIGGER_THRESHOLD -+enum [[clang::flag_enum]] XINPUT_GAMEPAD_BUTTON_FLAGS : WORD -+{ -+ XINPUT_GAMEPAD_DPAD_UP = 1, -+ XINPUT_GAMEPAD_DPAD_DOWN = 2, -+ XINPUT_GAMEPAD_DPAD_LEFT = 4, -+ XINPUT_GAMEPAD_DPAD_RIGHT = 8, -+ XINPUT_GAMEPAD_START = 16, -+ XINPUT_GAMEPAD_BACK = 32, -+ XINPUT_GAMEPAD_LEFT_THUMB = 64, -+ XINPUT_GAMEPAD_RIGHT_THUMB = 128, -+ XINPUT_GAMEPAD_LEFT_SHOULDER = 256, -+ XINPUT_GAMEPAD_RIGHT_SHOULDER = 512, -+ XINPUT_GAMEPAD_A = 4096, -+ XINPUT_GAMEPAD_B = 8192, -+ XINPUT_GAMEPAD_X = 16384, -+ XINPUT_GAMEPAD_Y = 32768, -+ XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE = 7849, -+ XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE = 8689, -+ XINPUT_GAMEPAD_TRIGGER_THRESHOLD = 30, -+}; -+#pragma pop_macro("XINPUT_GAMEPAD_TRIGGER_THRESHOLD") -+#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE") -+#pragma pop_macro("XINPUT_GAMEPAD_LEFT_THUMB_DEADZONE") -+#pragma pop_macro("XINPUT_GAMEPAD_Y") -+#pragma pop_macro("XINPUT_GAMEPAD_X") -+#pragma pop_macro("XINPUT_GAMEPAD_B") -+#pragma pop_macro("XINPUT_GAMEPAD_A") -+#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_SHOULDER") -+#pragma pop_macro("XINPUT_GAMEPAD_LEFT_SHOULDER") -+#pragma pop_macro("XINPUT_GAMEPAD_RIGHT_THUMB") -+#pragma pop_macro("XINPUT_GAMEPAD_LEFT_THUMB") -+#pragma pop_macro("XINPUT_GAMEPAD_BACK") -+#pragma pop_macro("XINPUT_GAMEPAD_START") -+#pragma pop_macro("XINPUT_GAMEPAD_DPAD_RIGHT") -+#pragma pop_macro("XINPUT_GAMEPAD_DPAD_LEFT") -+#pragma pop_macro("XINPUT_GAMEPAD_DPAD_DOWN") -+#pragma pop_macro("XINPUT_GAMEPAD_DPAD_UP") -+#endif ++_Win32_FlagsEnum_(XINPUT_KEYSTROKE_FLAGS, WORD, ++ XINPUT_KEYSTROKE_KEYDOWN, ++ XINPUT_KEYSTROKE_KEYUP, ++ XINPUT_KEYSTROKE_REPEAT); + +#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_KEYSTROKE_KEYDOWN") -+#undef XINPUT_KEYSTROKE_KEYDOWN -+#pragma push_macro("XINPUT_KEYSTROKE_KEYUP") -+#undef XINPUT_KEYSTROKE_KEYUP -+#pragma push_macro("XINPUT_KEYSTROKE_REPEAT") -+#undef XINPUT_KEYSTROKE_REPEAT -+enum [[clang::flag_enum]] XINPUT_KEYSTROKE_FLAGS : WORD -+{ -+ XINPUT_KEYSTROKE_KEYDOWN = 1, -+ XINPUT_KEYSTROKE_KEYUP = 2, -+ XINPUT_KEYSTROKE_REPEAT = 4, -+}; -+#pragma pop_macro("XINPUT_KEYSTROKE_REPEAT") -+#pragma pop_macro("XINPUT_KEYSTROKE_KEYUP") -+#pragma pop_macro("XINPUT_KEYSTROKE_KEYDOWN") ++typedef _WIN32META_ANNOTATION_("FlagsEnum(XINPUT_FLAG_ALL, XINPUT_FLAG_GAMEPAD)", ++ 0, XINPUT_FLAG_GAMEPAD) DWORD XINPUT_FLAG; +#endif + -+#ifdef WIN32METADATA -+#pragma push_macro("XINPUT_FLAG_ALL") -+#undef XINPUT_FLAG_ALL -+#pragma push_macro("XINPUT_FLAG_GAMEPAD") -+#undef XINPUT_FLAG_GAMEPAD -+enum [[clang::flag_enum]] XINPUT_FLAG : DWORD -+{ -+ XINPUT_FLAG_ALL = 0, -+ XINPUT_FLAG_GAMEPAD = 1, -+}; -+#pragma pop_macro("XINPUT_FLAG_GAMEPAD") -+#pragma pop_macro("XINPUT_FLAG_ALL") -+#endif - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ #pragma endregion -@@ -270,7 +659,7 @@ + +@@ -270,7 +374,7 @@ DWORD WINAPI XInputSetState DWORD WINAPI XInputGetCapabilities ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device @@ -453,7 +170,7 @@ diff --git a/um/Xinput.h b/um/Xinput.h _Out_ XINPUT_CAPABILITIES* pCapabilities // Receives the capabilities ) WIN_NOEXCEPT; -@@ -297,7 +686,7 @@ +@@ -297,7 +401,7 @@ DWORD WINAPI XInputGetAudioDeviceIds DWORD WINAPI XInputGetBatteryInformation ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device diff --git a/generation/WinSDK/patches/um/avrfsdk.h.patch b/generation/WinSDK/patches/um/avrfsdk.h.patch index 79fbdf880..5a626b36a 100644 --- a/generation/WinSDK/patches/um/avrfsdk.h.patch +++ b/generation/WinSDK/patches/um/avrfsdk.h.patch @@ -1,7 +1,8 @@ diff --git a/um/avrfsdk.h b/um/avrfsdk.h +index a2c5a112..d9cbb9b0 100644 --- a/um/avrfsdk.h +++ b/um/avrfsdk.h -@@ -24,6 +24,7 @@ +@@ -24,6 +24,7 @@ Revision History: #ifndef _AVRFSDK_ #define _AVRFSDK_ #include @@ -9,24 +10,14 @@ diff --git a/um/avrfsdk.h b/um/avrfsdk.h #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -140,11 +141,27 @@ +@@ -140,11 +141,17 @@ typedef ULONG #define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x00000001 #define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x00000002 + -+#ifdef WIN32METADATA -+#pragma push_macro("AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES") -+#undef AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES -+#pragma push_macro("AVRF_ENUM_RESOURCES_FLAGS_SUSPEND") -+#undef AVRF_ENUM_RESOURCES_FLAGS_SUSPEND -+enum [[clang::flag_enum]] VERIFIER_ENUM_RESOURCE_FLAGS : ULONG -+{ -+ AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES = 0x00000002, -+ AVRF_ENUM_RESOURCES_FLAGS_SUSPEND = 0x00000001, -+}; -+#pragma pop_macro("AVRF_ENUM_RESOURCES_FLAGS_SUSPEND") -+#pragma pop_macro("AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES") -+#endif ++_Win32_FlagsEnum_(VERIFIER_ENUM_RESOURCE_FLAGS, ULONG, ++ AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES, ++ AVRF_ENUM_RESOURCES_FLAGS_SUSPEND); + +_Win32_ImportLibrary_("verifier.dll") ULONG NTAPI diff --git a/generation/WinSDK/patches/um/magnification.h.patch b/generation/WinSDK/patches/um/magnification.h.patch index ed18da46e..30da3a6b8 100644 --- a/generation/WinSDK/patches/um/magnification.h.patch +++ b/generation/WinSDK/patches/um/magnification.h.patch @@ -1,4 +1,5 @@ diff --git a/um/magnification.h b/um/magnification.h +index 1efaf5a4..d55c562a 100644 --- a/um/magnification.h +++ b/um/magnification.h @@ -11,6 +11,7 @@ @@ -9,7 +10,7 @@ diff --git a/um/magnification.h b/um/magnification.h #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -72,6 +73,7 @@ +@@ -72,6 +73,7 @@ typedef struct tagMAGCOLOREFFECT typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); // Public Functions @@ -17,7 +18,7 @@ diff --git a/um/magnification.h b/um/magnification.h BOOL WINAPI MagInitialize(); BOOL WINAPI MagUninitialize(); -@@ -79,19 +81,37 @@ +@@ -79,19 +81,27 @@ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); @@ -41,19 +42,9 @@ diff --git a/um/magnification.h b/um/magnification.h BOOL WINAPI MagShowSystemCursor(_In_ BOOL fShowCursor); +_Win32_SupportedOS_END_() + -+#ifdef WIN32METADATA -+#pragma push_macro("MW_FILTERMODE_EXCLUDE") -+#undef MW_FILTERMODE_EXCLUDE -+#pragma push_macro("MW_FILTERMODE_INCLUDE") -+#undef MW_FILTERMODE_INCLUDE -+enum MW_FILTERMODE : DWORD -+{ -+ MW_FILTERMODE_EXCLUDE = 0, -+ MW_FILTERMODE_INCLUDE = 1, -+}; -+#pragma pop_macro("MW_FILTERMODE_INCLUDE") -+#pragma pop_macro("MW_FILTERMODE_EXCLUDE") -+#endif ++_Win32_Enum_(MW_FILTERMODE, DWORD, ++ MW_FILTERMODE_EXCLUDE, ++ MW_FILTERMODE_INCLUDE); #ifdef __cplusplus } diff --git a/generation/WinSDK/patches/um/waasapi.idl.patch b/generation/WinSDK/patches/um/waasapi.idl.patch index 45ecacda1..b718cfd8e 100644 --- a/generation/WinSDK/patches/um/waasapi.idl.patch +++ b/generation/WinSDK/patches/um/waasapi.idl.patch @@ -1,10 +1,12 @@ diff --git a/um/waasapi.idl b/um/waasapi.idl +index b1de0c62..568e917c 100644 --- a/um/waasapi.idl +++ b/um/waasapi.idl -@@ -15,12 +15,17 @@ +@@ -15,12 +15,16 @@ cpp_quote("#pragma once") cpp_quote("#endif") cpp_quote("") cpp_quote("#include ") ++#include +cpp_quote("#include ") #pragma region Desktop Family @@ -12,9 +14,7 @@ diff --git a/um/waasapi.idl b/um/waasapi.idl import "WaaSAPITypes.idl"; -+cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)") -+cpp_quote("struct _Win32_SupportedOS_15063_ IWaaSAssessor;") -+cpp_quote("#endif") ++_Win32_AnnotateInterface_(IWaaSAssessor, _Win32_SupportedOS_15063_) + [ object, diff --git a/generation/WinSDK/patches/um/winhttp.h.patch b/generation/WinSDK/patches/um/winhttp.h.patch index 9b63109ba..c337b5a33 100644 --- a/generation/WinSDK/patches/um/winhttp.h.patch +++ b/generation/WinSDK/patches/um/winhttp.h.patch @@ -1,5 +1,5 @@ diff --git a/um/winhttp.h b/um/winhttp.h -index ddcdcb38..caa40f36 100644 +index ddcdcb38..f5702473 100644 --- a/um/winhttp.h +++ b/um/winhttp.h @@ -16,6 +16,7 @@ Abstract: @@ -411,7 +411,7 @@ index ddcdcb38..caa40f36 100644 typedef enum _WINHTTP_PROTOCOL_OPERATION { -@@ -2509,6 +2564,118 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS +@@ -2509,6 +2564,54 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS @@ -431,101 +431,37 @@ index ddcdcb38..caa40f36 100644 +#endif + + -+#ifdef WIN32METADATA -+#pragma push_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") -+#undef WINHTTP_FLAG_BYPASS_PROXY_CACHE -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE") -+#undef WINHTTP_FLAG_ESCAPE_DISABLE -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") -+#undef WINHTTP_FLAG_ESCAPE_DISABLE_QUERY -+#pragma push_macro("WINHTTP_FLAG_ESCAPE_PERCENT") -+#undef WINHTTP_FLAG_ESCAPE_PERCENT -+#pragma push_macro("WINHTTP_FLAG_NULL_CODEPAGE") -+#undef WINHTTP_FLAG_NULL_CODEPAGE -+#pragma push_macro("WINHTTP_FLAG_REFRESH") -+#undef WINHTTP_FLAG_REFRESH -+#pragma push_macro("WINHTTP_FLAG_SECURE") -+#undef WINHTTP_FLAG_SECURE -+enum [[clang::flag_enum]] WINHTTP_OPEN_REQUEST_FLAGS : DWORD -+{ -+ WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, -+ WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, -+ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, -+ WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, -+ WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, -+ WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, -+ WINHTTP_FLAG_SECURE = 0x00800000, -+}; -+#pragma pop_macro("WINHTTP_FLAG_SECURE") -+#pragma pop_macro("WINHTTP_FLAG_REFRESH") -+#pragma pop_macro("WINHTTP_FLAG_NULL_CODEPAGE") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_PERCENT") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE_QUERY") -+#pragma pop_macro("WINHTTP_FLAG_ESCAPE_DISABLE") -+#pragma pop_macro("WINHTTP_FLAG_BYPASS_PROXY_CACHE") -+ -+#pragma push_macro("ICU_ESCAPE") -+#undef ICU_ESCAPE -+#pragma push_macro("ICU_REJECT_USERPWD") -+#undef ICU_REJECT_USERPWD -+#pragma push_macro("ICU_DECODE") -+#undef ICU_DECODE -+enum WIN_HTTP_CREATE_URL_FLAGS : DWORD -+{ -+ ICU_ESCAPE = 0x80000000, -+ ICU_REJECT_USERPWD = 0x00004000, -+ ICU_DECODE = 0x10000000, -+}; -+#pragma pop_macro("ICU_DECODE") -+#pragma pop_macro("ICU_REJECT_USERPWD") -+#pragma pop_macro("ICU_ESCAPE") ++_Win32_FlagsEnum_(WINHTTP_OPEN_REQUEST_FLAGS, DWORD, ++ WINHTTP_FLAG_BYPASS_PROXY_CACHE, ++ WINHTTP_FLAG_ESCAPE_DISABLE, ++ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY, ++ WINHTTP_FLAG_ESCAPE_PERCENT, ++ WINHTTP_FLAG_NULL_CODEPAGE, ++ WINHTTP_FLAG_REFRESH, ++ WINHTTP_FLAG_SECURE); + -+#pragma push_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") -+#undef WINHTTP_ACCESS_TYPE_NO_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") -+#undef WINHTTP_ACCESS_TYPE_DEFAULT_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") -+#undef WINHTTP_ACCESS_TYPE_NAMED_PROXY -+#pragma push_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") -+#undef WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY -+enum WINHTTP_ACCESS_TYPE : DWORD -+{ -+ WINHTTP_ACCESS_TYPE_NO_PROXY = 1, -+ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, -+ WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, -+ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4, -+}; -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_NAMED_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_DEFAULT_PROXY") -+#pragma pop_macro("WINHTTP_ACCESS_TYPE_NO_PROXY") ++_Win32_Enum_(WIN_HTTP_CREATE_URL_FLAGS, DWORD, ++ ICU_ESCAPE, ++ ICU_REJECT_USERPWD, ++ ICU_DECODE); + -+#pragma push_macro("WINHTTP_AUTH_SCHEME_BASIC") -+#undef WINHTTP_AUTH_SCHEME_BASIC -+#pragma push_macro("WINHTTP_AUTH_SCHEME_NTLM") -+#undef WINHTTP_AUTH_SCHEME_NTLM -+#pragma push_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") -+#undef WINHTTP_AUTH_SCHEME_NEGOTIATE -+enum WINHTTP_CREDS_AUTHSCHEME : DWORD -+{ -+ WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, -+ WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, -+ WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, -+}; -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_NEGOTIATE") -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_NTLM") -+#pragma pop_macro("WINHTTP_AUTH_SCHEME_BASIC") ++_Win32_Enum_(WINHTTP_ACCESS_TYPE, DWORD, ++ WINHTTP_ACCESS_TYPE_NO_PROXY, ++ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, ++ WINHTTP_ACCESS_TYPE_NAMED_PROXY, ++ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY); + -+enum WINHTTP_INTERNET_SCHEME : INTERNET_SCHEME -+{ -+ WINHTTP_INTERNET_SCHEME_HTTP = INTERNET_SCHEME_HTTP, -+ WINHTTP_INTERNET_SCHEME_HTTPS = INTERNET_SCHEME_HTTPS, -+ WINHTTP_INTERNET_SCHEME_FTP = INTERNET_SCHEME_FTP, -+ WINHTTP_INTERNET_SCHEME_SOCKS = INTERNET_SCHEME_SOCKS, -+}; ++_Win32_Enum_(WINHTTP_CREDS_AUTHSCHEME, DWORD, ++ WINHTTP_AUTH_SCHEME_BASIC, ++ WINHTTP_AUTH_SCHEME_NTLM, ++ WINHTTP_AUTH_SCHEME_NEGOTIATE); + ++#ifdef WIN32METADATA ++typedef _WIN32META_ANNOTATION_("Enum(WINHTTP_INTERNET_SCHEME_HTTP, WINHTTP_INTERNET_SCHEME_HTTPS, WINHTTP_INTERNET_SCHEME_FTP, WINHTTP_INTERNET_SCHEME_SOCKS)", ++ INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FTP, INTERNET_SCHEME_SOCKS) INTERNET_SCHEME WINHTTP_INTERNET_SCHEME; +#endif + ++ + #if defined(__cplusplus) } diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index c54b2b768..701b391ae 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -5,7 +5,6 @@ param( [string]$BaselineDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\old", [string]$OutputDirectory = "$PSScriptRoot\..\artifacts\winhttp-migration\new", [string]$SelectionDirectory, - [string]$ExpectedDifferencesFile = "$PSScriptRoot\..\generation\WinSDK\patches\HeaderAnnotations.expected-differences.txt", [switch]$ToolingControl, [string]$ToolingControlDirectory ) @@ -15,7 +14,6 @@ Set-StrictMode -Version Latest $repo = [IO.Path]::GetFullPath("$PSScriptRoot\..").TrimEnd('\') $BaselineDirectory = [IO.Path]::GetFullPath($BaselineDirectory).TrimEnd('\') $OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory).TrimEnd('\') -$ExpectedDifferencesFile = [IO.Path]::GetFullPath($ExpectedDifferencesFile) if (!$SelectionDirectory) { $SelectionDirectory = "$OutputDirectory\selection" } @@ -50,6 +48,29 @@ function Invoke-Dotnet([string[]]$Arguments, [string]$Log) { } } +function Get-ApiComparison([string]$First, [string]$Second, [string]$Log) { + & dotnet "$repo\bin\Release\net10.0\WinmdUtils.dll" compare --first $First --second $Second *> $Log + $comparisonExitCode = $LASTEXITCODE + $comparisonLines = @(Get-Content -LiteralPath $Log) + $hasDifferences = $comparisonExitCode -eq -1 -and $comparisonLines.Count -gt 1 -and + $comparisonLines[0] -ceq 'Unknown differences found:' + if ((!$hasDifferences -and $comparisonExitCode -ne 0) -or + ($comparisonExitCode -eq 0 -and + ($comparisonLines.Count -ne 1 -or $comparisonLines[0] -cne 'No unknown differences found.'))) { + throw "Metadata comparison failed; see $Log`n$($comparisonLines -join "`n")" + } + $comparisonLines | ForEach-Object { Write-Host $_ } + if ($hasDifferences) { + Write-Warning 'Raw OLD-to-NEW API differences require source-backed review. This image has not been admitted by a difference allowlist.' + } + [pscustomobject]@{ + exitCode = $comparisonExitCode + logSha256 = Get-Sha256 $Log + rawDifferenceLines = if ($hasDifferences) { $comparisonLines.Count - 1 } else { 0 } + reviewStatus = if ($hasDifferences) { 'required' } else { 'unchanged' } + } +} + function Get-PointerReductions([IO.FileInfo[]]$Remaps) { $reduce = [Collections.Generic.HashSet[string]]::new([StringComparer]::Ordinal) $preserve = [Collections.Generic.HashSet[string]]::new([StringComparer]::Ordinal) @@ -296,9 +317,8 @@ try { Invoke-Dotnet @('build', 'generation\WinSDK', '-c', 'Release', '-t:EmitWinmd', "-p:ObjDir=$obj", "-p:OutputWinmd=$winmd", '-p:SkipScraping=true', '--no-restore', '--verbosity', 'minimal') "$OutputDirectory\emit.log" - Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', - '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd, - '--knownDiffsFile', $ExpectedDifferencesFile) "$OutputDirectory\comparison.log" + $comparisonLog = "$OutputDirectory\comparison.log" + $comparison = Get-ApiComparison "$BaselineDirectory\Windows.Win32.winmd" $winmd $comparisonLog Assert-CommittedProducer $receipt = [ordered]@{ kind = 'header-annotation-migration' @@ -316,7 +336,7 @@ try { sourceCommit = $sourceCommit toolFiles = $toolFiles toolingControl = $ToolingControlDirectory - expectedDifferencesSha256 = Get-Sha256 $ExpectedDifferencesFile + apiComparison = $comparison generatedFiles = @(Get-ChildItem -LiteralPath $generated -Recurse -File | ForEach-Object { [ordered]@{ path = [IO.Path]::GetRelativePath($generated, $_.FullName); sha256 = Get-Sha256 $_.FullName } }) @@ -325,7 +345,13 @@ try { }) } [IO.File]::WriteAllText("$OutputDirectory\provenance.json", ($receipt | ConvertTo-Json -Depth 8), [Text.UTF8Encoding]::new($false)) - [pscustomobject]@{ Winmd = $winmd; Sha256 = $receipt.newWinmdSha256; Provenance = "$OutputDirectory\provenance.json" } + [pscustomobject]@{ + Winmd = $winmd + Sha256 = $receipt.newWinmdSha256 + Provenance = "$OutputDirectory\provenance.json" + RawApiDifferences = $comparisonLog + ReviewStatus = $receipt.apiComparison.reviewStatus + } } finally { Pop-Location diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index 202b80902..cca42d214 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -89,7 +89,7 @@ function Invoke-PreparedMidl([string]$Staging) { [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($target)) | Out-Null [IO.File]::Copy($input.fullPath, $target) if ((Get-Sha256 $target) -ne $input.sha256) { - throw "The SDK MIDL input changed while being copied: $($input.path)" + throw "A pinned MIDL input changed while being copied: $($input.path)" } } foreach ($patch in @($patches | Where-Object isIdl)) { @@ -132,7 +132,10 @@ function Invoke-PreparedMidl([string]$Staging) { [IO.Directory]::CreateDirectory([IO.Path]::GetDirectoryName($header)) | Out-Null $arguments = @(Get-MidlHeaderArguments -InputFile (Resolve-Child $sal $output.source) ` -OutputDirectory $generated -OutputHeader $header -IncludeDirectories $includes) - $arguments += '/cpp_cmd', 'cl.exe', '/cpp_opt', '/nologo /E /TC /X', '/savePP' + $cppArguments = @('/nologo', '/E', '/TC', '/X') + + @($arguments | Where-Object { $_.StartsWith('/D', [StringComparison]::Ordinal) }) + + @($includes | ForEach-Object { "/I`"$_`"" }) + $arguments += '/cpp_cmd', 'cl.exe', '/cpp_opt', ($cppArguments -join ' '), '/savePP' $log = "$generated\$([IO.Path]::GetFileNameWithoutExtension($output.source)).log" & $midlCompiler @arguments *> $log $exitCode = $LASTEXITCODE @@ -255,11 +258,24 @@ if ($hasMidl) { throw "Unsupported MIDL input: $($_.path)" } Resolve-Child $SourceRoot $_.path | Out-Null + if ($null -ne $_.PSObject.Properties['sourceSha256']) { + if ($_.path -cne 'shared\win32metadata_annotations.h' -or + $null -ne $_.PSObject.Properties['sdkPath'] -or $null -ne $_.PSObject.Properties['sdkSha256']) { + throw 'Only the canonical repository annotation header may be a source-pinned MIDL input, without an SDK binding.' + } + $path = Resolve-Child $SourceRoot $_.path + if ((Get-Sha256 $path) -ne $_.sourceSha256) { + throw "Selected repository MIDL input mismatch: $($_.path)" + } + return [pscustomobject]@{ + path = $_.path; fullPath = $path; sdkPath = $null; sourceKind = 'repository'; sha256 = $_.sourceSha256 + } + } $path = Resolve-Child $SdkPackageRoot $_.sdkPath if ((Get-Sha256 $path) -ne $_.sdkSha256) { throw "Selected SDK MIDL input mismatch: $($_.sdkPath)" } - [pscustomobject]@{ path = $_.path; fullPath = $path; sdkPath = $_.sdkPath; sha256 = $_.sdkSha256 } + [pscustomobject]@{ path = $_.path; fullPath = $path; sdkPath = $_.sdkPath; sourceKind = 'sdk'; sha256 = $_.sdkSha256 } }) if (!$midlInputs.Count -or @($midlInputs.path | Sort-Object -Unique).Count -ne $midlInputs.Count) { throw 'The MIDL input closure must be nonempty and contain no duplicate paths.' @@ -267,7 +283,7 @@ if ($hasMidl) { foreach ($output in $config.midl.outputs) { $header = @($config.headers | Where-Object path -eq $output.path) $input = @($midlInputs | Where-Object path -eq $output.source) - if ($header.Count -ne 1 -or $input.Count -ne 1 -or + if ($header.Count -ne 1 -or $input.Count -ne 1 -or $input[0].sourceKind -ne 'sdk' -or [IO.Path]::GetExtension($output.source) -ne '.idl' -or $header[0].sdkPath -ne $input[0].sdkPath -or $header[0].sdkSha256 -ne $input[0].sha256) { throw "A MIDL output must bind one admitted header to its exact SDK IDL: $($output.path)" @@ -422,7 +438,7 @@ try { } foreach ($input in $midlInputs) { if ((Get-Sha256 $input.fullPath) -ne $input.sha256) { - throw "The selected SDK MIDL input changed during preparation: $($input.path)" + throw "A pinned MIDL input changed during preparation: $($input.path)" } } foreach ($tool in @($midlTools + $midlScripts)) { @@ -445,7 +461,7 @@ try { files = $prepared.files } if ($hasMidl) { - $manifest.midlInputs = @($midlInputs | Select-Object path, sdkPath, sha256) + $manifest.midlInputs = @($midlInputs | Select-Object path, sourceKind, sdkPath, sha256) $manifest.midlTools = $midlTools $manifest.midlScripts = $midlScripts $manifest.midlSha256 = (Get-DirectoryState "$staging\midl").sha256 diff --git a/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs b/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs new file mode 100644 index 000000000..4f8faaa01 --- /dev/null +++ b/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs @@ -0,0 +1,119 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Text.Json; +using Xunit; + +namespace Win32MetadataScraperTests +{ + public class MigrationImageComparisonTests + { + [Theory] + [InlineData(0, "No unknown differences found.", false, "unchanged", 0)] + [InlineData(-1, "Unknown differences found:\nsource-backed difference one\nsource-backed difference two", false, "required", 2)] + [InlineData(1, "Error: invalid metadata", true, null, 0)] + [InlineData(-1, "Unhandled exception: invalid metadata", true, null, 0)] + [InlineData(0, "", true, null, 0)] + [InlineData(0, "Unknown differences found:\ninconsistent success", true, null, 0)] + [InlineData(-1, "Unknown differences found:", true, null, 0)] + public void RawComparisonPreservesReviewResultsWithoutAcceptingToolFailures( + int toolExitCode, string toolOutput, bool throws, string reviewStatus, int differenceLines) + { + string root = Path.Combine(Path.GetTempPath(), "WinmdComparisonTests-" + Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(root); + try + { + string[] lines = toolOutput.Length == 0 ? Array.Empty() : toolOutput.Split('\n'); + string data = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new + { + repo = WinHttpMigrationTests.RepositoryRoot, + directory = root, + toolExitCode, + lines, + }))); + string script = "$data = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('" + data + @"')) | ConvertFrom-Json +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest +$repo = $data.repo +$tokens = $null; $errors = $null +$ast = [Management.Automation.Language.Parser]::ParseFile( + (Join-Path $repo 'scripts\Build-WinHttpMigrationImage.ps1'), [ref]$tokens, [ref]$errors) +if ($errors.Count) { throw ($errors.Message -join ""`n"") } +$definitions = @($ast.FindAll({ + param($node) + $node -is [Management.Automation.Language.FunctionDefinitionAst] -and + $node.Name -in @('Get-Sha256', 'Get-ApiComparison') +}, $true)) +if ($definitions.Count -ne 2) { throw 'The actual comparison functions were not found.' } +foreach ($definition in $definitions) { . ([scriptblock]::Create($definition.Extent.Text)) } +$script:actualArguments = @() +function dotnet { + $script:actualArguments = @($args) + $data.lines | ForEach-Object { Write-Output $_ } + $global:LASTEXITCODE = [int]$data.toolExitCode +} +$log = Join-Path $data.directory 'comparison.log' +try { + $comparison = Get-ApiComparison 'OLD.winmd' 'NEW.winmd' $log 3>$null 6>$null + $result = [ordered]@{ threw = $false; comparison = $comparison } +} +catch { + $result = [ordered]@{ threw = $true; error = $_.ToString() } +} +$result.arguments = $script:actualArguments +$result | ConvertTo-Json -Depth 6 -Compress +"; + var start = new ProcessStartInfo("pwsh") + { + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = WinHttpMigrationTests.RepositoryRoot, + }; + foreach (string argument in new[] { "-NoProfile", "-NonInteractive", "-EncodedCommand", + Convert.ToBase64String(Encoding.Unicode.GetBytes(script)) }) + start.ArgumentList.Add(argument); + using var process = Process.Start(start); + var output = process.StandardOutput.ReadToEndAsync(); + var error = process.StandardError.ReadToEndAsync(); + if (!process.WaitForExit(60_000)) + { + process.Kill(entireProcessTree: true); + throw new TimeoutException("The image comparison regression did not finish."); + } + Assert.True(process.ExitCode == 0, error.GetAwaiter().GetResult() + output.GetAwaiter().GetResult()); + using var result = JsonDocument.Parse(output.GetAwaiter().GetResult()); + Assert.Equal(throws, result.RootElement.GetProperty("threw").GetBoolean()); + string[] arguments = result.RootElement.GetProperty("arguments").EnumerateArray() + .Select(value => value.GetString()).ToArray(); + Assert.DoesNotContain("--knownDiffsFile", arguments); + Assert.Contains("--first", arguments); + Assert.Contains("--second", arguments); + Assert.Contains("OLD.winmd", arguments); + Assert.Contains("NEW.winmd", arguments); + string log = Path.Combine(root, "comparison.log"); + Assert.Equal(lines, File.ReadAllLines(log)); + if (throws) + { + Assert.Contains("Metadata comparison failed", result.RootElement.GetProperty("error").GetString()); + } + else + { + var comparison = result.RootElement.GetProperty("comparison"); + Assert.Equal(toolExitCode, comparison.GetProperty("exitCode").GetInt32()); + Assert.Equal(reviewStatus, comparison.GetProperty("reviewStatus").GetString()); + Assert.Equal(differenceLines, comparison.GetProperty("rawDifferenceLines").GetInt32()); + Assert.Equal(Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(log))), + comparison.GetProperty("logSha256").GetString()); + } + } + finally + { + Directory.Delete(root, recursive: true); + } + } + } +} diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 93c499e8f..0987066c7 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -285,6 +285,134 @@ public void PreMidlRegenerationPreservesSalImportsSourcesAndRepeatBytes() Assert.Contains("/X", commands); } + [Fact] + public void SourcePinnedAnnotationHeaderAndMidlDefinesReachTheActualPreprocessor() + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + byte[] original = File.ReadAllBytes(fixture.AnnotationHeader); + var prepared = fixture.Prepare(); + string root = Path.GetDirectoryName(prepared.IncludeRoot); + const string relative = @"shared\win32metadata_annotations.h"; + Assert.Equal(original, File.ReadAllBytes(Path.Combine(root, "midl", "source", relative))); + Assert.Equal(original, File.ReadAllBytes(Path.Combine(root, "midl", "sal", relative))); + Assert.Equal(original, File.ReadAllBytes(Path.Combine(prepared.IncludeRoot, relative))); + Assert.Contains("shared\\\\win32metadata_annotations.h", + File.ReadAllText(Path.Combine(root, "midl", "preprocessed-inputs.json"))); + using var manifest = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "manifest.json"))); + var helper = manifest.RootElement.GetProperty("midlInputs").EnumerateArray() + .Single(input => input.GetProperty("path").GetString() == relative); + Assert.Equal("repository", helper.GetProperty("sourceKind").GetString()); + Assert.Equal(JsonValueKind.Null, helper.GetProperty("sdkPath").ValueKind); + using var commands = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "midl", "commands.json"))); + foreach (var command in commands.RootElement.EnumerateArray()) + { + string[] arguments = command.GetProperty("arguments").EnumerateArray().Select(value => value.GetString()).ToArray(); + string cpp = arguments[Array.IndexOf(arguments, "/cpp_opt") + 1]; + Assert.Contains("/DMIDL_PASS=1", cpp); + Assert.Contains("/I\"\\midl\\sal\\shared\"", cpp); + foreach (string definition in arguments.Where(value => value.StartsWith("/D", StringComparison.Ordinal))) + Assert.Contains(definition, cpp); + } + Assert.True(fixture.Prepare().Reused); + var repeated = fixture.Prepare(outputRoot: fixture.Output + "-repeat"); + Assert.Equal(prepared.Identity, repeated.Identity); + Assert.Equal(File.ReadAllBytes(Path.Combine(prepared.IncludeRoot, "um", "generated.h")), + File.ReadAllBytes(Path.Combine(repeated.IncludeRoot, "um", "generated.h"))); + Assert.Equal(original, File.ReadAllBytes(fixture.AnnotationHeader)); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void ChangedRepositoryAnnotationHeaderCannotFallBackOrReuseACache(bool publishFirst) + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + if (publishFirst) fixture.Prepare(); + File.AppendAllText(fixture.AnnotationHeader, "// changed"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("Selected repository MIDL input mismatch", result.Error); + } + + [Fact] + public void SourcePinnedAnnotationHeaderUsesQuotedPrivateIncludePaths() + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + var prepared = fixture.Prepare(outputRoot: fixture.Output + " with spaces"); + Assert.Contains("IDL_VALUE 2", + File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", "generated.h"))); + Assert.Equal(File.ReadAllBytes(fixture.AnnotationHeader), + File.ReadAllBytes(Path.Combine(prepared.IncludeRoot, "shared", "win32metadata_annotations.h"))); + Assert.True(fixture.Prepare(outputRoot: fixture.Output + " with spaces").Reused); + } + + [Fact] + public void AnUnusedRepositoryAnnotationHeaderCannotBeAdmittedAsAnActualInput() + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + File.WriteAllText(fixture.MidlInput, File.ReadAllText(fixture.MidlInput) + .Replace("#include \r\n", "")); + fixture.MutateRecipe(recipe => + { + string hash = Convert.ToHexString(System.Security.Cryptography.SHA256.HashData(File.ReadAllBytes(fixture.MidlInput))); + recipe["midl"]["inputs"][0]["sdkSha256"] = hash; + recipe["headers"][1]["sdkSha256"] = hash; + }); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("declared MIDL input closure does not match the actual preprocessed inputs", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void UnpinnedRepositoryAnnotationHeaderCannotUseAmbientIncludes() + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + fixture.MutateRecipe(recipe => recipe["midl"]["inputs"].AsArray().RemoveAt(2)); + var result = fixture.Run(ambientInclude: Path.GetDirectoryName(fixture.AnnotationHeader)); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("MIDL failed", result.Error); + Assert.Contains("win32metadata_annotations.h", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Theory] + [InlineData("path")] + [InlineData("sdk")] + public void RepositoryMidlInputsCannotDisguiseAnotherArtifactOrSdkBinding(string mutation) + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + fixture.MutateRecipe(recipe => + { + var helper = recipe["midl"]["inputs"][2]; + if (mutation == "path") helper["path"] = @"shared\unrelated.h"; + else helper["sdkPath"] = @"c\include\um\sample.h"; + }); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("Only the canonical repository annotation header", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void DuplicateRepositoryMidlInputsAreRejected() + { + using var fixture = new Fixture(); + fixture.EnableMidlAnnotationHeader(); + fixture.MutateRecipe(recipe => + recipe["midl"]["inputs"].AsArray().Add(recipe["midl"]["inputs"][2].DeepClone())); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("contain no duplicate paths", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + [Theory] [InlineData("source", "Selected SDK input mismatch")] [InlineData("import", "Selected SDK input mismatch")] @@ -457,6 +585,7 @@ internal Fixture() internal string MidlInput => Path.Combine(this.sdk, "c", "include", "um", "generated.idl"); internal string MidlDependency => Path.Combine(this.sdk, "c", "include", "um", "dependency.idl"); internal string MidlCompiler => Path.Combine(this.sdk, "c", "bin", "x64", "midl.exe"); + internal string AnnotationHeader => Path.Combine(this.source, "shared", "win32metadata_annotations.h"); internal string BuildEvents => Path.Combine(this.root, "build-events.txt"); internal string[] ScrapeMarkers => new[] { "scannedheaders.crossarch.txt", "scannedheaders.x86.txt", "scannedheaders.x64.txt", "scannedheaders.arm64.txt", "constants.scraped.txt" } @@ -563,6 +692,28 @@ internal void EnableMidl() }); } + internal void EnableMidlAnnotationHeader() + { + EnableMidl(); + File.Copy(Path.Combine(RepositoryRoot, "generation", "WinSDK", "RecompiledIdlHeaders", + "shared", "win32metadata_annotations.h"), AnnotationHeader); + File.AppendAllText(MidlInput, + "\r\n#if !defined(MIDL_PASS) || MIDL_PASS != 1 || WINVER != 0x0A00 || !defined(UNICODE)\r\n" + + "#error The pinned MIDL preprocessor definitions were not forwarded.\r\n#endif\r\n" + + "#include \r\n"); + MutateRecipe(recipe => + { + string hash = Hash(File.ReadAllBytes(MidlInput)); + recipe["midl"]["inputs"][0]["sdkSha256"] = hash; + recipe["headers"][1]["sdkSha256"] = hash; + recipe["midl"]["inputs"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"shared\win32metadata_annotations.h", + sourceSha256 = Hash(File.ReadAllBytes(AnnotationHeader)), + })); + }); + } + internal void MutateRecipe(Action mutate) { var recipe = JsonNode.Parse(File.ReadAllText(this.recipe)).AsObject(); diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 81477d8cd..e405256fe 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -106,7 +106,11 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() { string root = Path.Combine(RepositoryRoot, "generation", "WinSDK", "patches"); using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "SdkHeaders.json"))); - foreach (string patch in recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString())) + var patches = recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString()).ToArray(); + Assert.Equal(new[] { @"um\winhttp.h.patch" }, + patches.Where(path => Path.GetFileName(path).StartsWith("winhttp.", StringComparison.Ordinal))); + Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, @"um\winhttp.h.patch"))); + foreach (string patch in patches) Assert.DoesNotContain("_Windows_SupportedOS_", File.ReadAllText(Path.Combine(root, patch))); } @@ -440,12 +444,6 @@ public void EmittedWinHttpScopeUsesSdkBindingsWithoutAuthoredSemanticFallback() Assert.Equal(59, names.Count); foreach (string name in names) Assert.Equal("WINHTTP.dll", bindings[name]); - using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "SdkHeaders.json"))); - var patches = recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString()) - .Where(path => Path.GetFileName(path).StartsWith("winhttp.", StringComparison.Ordinal)).ToArray(); - Assert.Equal(6, patches.Length); - foreach (string patch in patches) - Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", patch))); foreach (string file in new[] { "libMappingsManual.rsp", "supportedOS.rsp", "WithSetLastError.rsp", "emitter.settings.rsp" }) { foreach (string line in File.ReadLines(Path.Combine(root, "generation", "WinSDK", file))) diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 1fd9c7f9f..5ca2dab7e 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -32,11 +32,17 @@ public unsafe void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string p string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); string[] headers = partition == "WinHttp" ? new[] { "winhttp.h", "httprequest.h" } : new[] { "winhttp.h", "httprequest.h", "http.h" }; + // Reusing group names rejects metadata-only types or symbols leaking into ordinary headers. const string checks = @" static_assert(INTERNET_SCHEME_HTTP == 1); static_assert(INTERNET_SCHEME_HTTPS == 2); static_assert(INTERNET_SCHEME_FTP == 3); static_assert(INTERNET_SCHEME_SOCKS == 4); +using WINHTTP_OPEN_REQUEST_FLAGS = void; +using WIN_HTTP_CREATE_URL_FLAGS = void; +using WINHTTP_ACCESS_TYPE = void; +using WINHTTP_CREDS_AUTHSCHEME = void; +using WINHTTP_INTERNET_SCHEME = void; "; var before = Surface(root, original, partition, architecture, target, headers, checks); var after = Surface(root, prepared, partition, architecture, target, headers, checks); @@ -78,16 +84,19 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, "ApplicationVerifier" => @" static_assert(AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES == 2); static_assert(AVRF_ENUM_RESOURCES_FLAGS_SUSPEND == 1); +using VERIFIER_ENUM_RESOURCE_FLAGS = void; ", "MagApi" => @" static_assert(MW_FILTERMODE_EXCLUDE == 0); static_assert(MW_FILTERMODE_INCLUDE == 1); +using MW_FILTERMODE = void; ", "PsApi1" or "PsApi2" => @" static_assert(LIST_MODULES_ALL == 3); static_assert(LIST_MODULES_DEFAULT == 0); static_assert(LIST_MODULES_32BIT == 1); static_assert(LIST_MODULES_64BIT == 2); +using ENUM_PROCESS_MODULES_EX_FLAGS = void; ", "ToolHelp" => @" static_assert(TH32CS_INHERIT == 0x80000000u); @@ -100,6 +109,8 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, static_assert(LF32_FIXED == 1); static_assert(LF32_FREE == 2); static_assert(LF32_MOVEABLE == 4); +using CREATE_TOOLHELP_SNAPSHOT_FLAGS = void; +using HEAPENTRY32_FLAGS = void; ", "Wsl" => @" static_assert(WSL_DISTRIBUTION_FLAGS_NONE == 0); @@ -192,6 +203,16 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, static_assert(XINPUT_KEYSTROKE_KEYUP == 2); static_assert(XINPUT_KEYSTROKE_REPEAT == 4); static_assert(XINPUT_FLAG_GAMEPAD == 1); +using XINPUT_VIRTUAL_KEY = void; +using BATTERY_TYPE = void; +using BATTERY_LEVEL = void; +using BATTERY_DEVTYPE = void; +using XINPUT_DEVTYPE = void; +using XINPUT_DEVSUBTYPE = void; +using XINPUT_CAPABILITIES_FLAGS = void; +using XINPUT_GAMEPAD_BUTTON_FLAGS = void; +using XINPUT_KEYSTROKE_FLAGS = void; +using XINPUT_FLAG = void; ", _ => "", }; From db6e7a4ebe092c1538b2fd20a7dacf7909d4111f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 14:14:58 -0700 Subject: [PATCH 30/57] Pin the qualified first-AST helper in the pilot recipe Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- generation/WinSDK/patches/SdkHeaders.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 3342e5485..6d1e32bca 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "sdkPackageVersion": "10.0.26100.7705", "sourceStage": "post-midl", - "sourceGitTree": "d3dc662e56c715c1e0c000a0300ff3088e9a9f17", + "sourceGitTree": "d0db69b032faf7de0cf39fee599bc9827900f3e3", "headers": [ { "path": "um\\winhttp.h", @@ -101,6 +101,10 @@ } ], "inputs": [ + { + "path": "shared\\win32metadata_annotations.h", + "sourceSha256": "5C02968168112A7DA993056680041C458CEAFFEA31AFE37A8FE17444C3D1F246" + }, { "path": "um\\waasapi.idl", "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", From 8bf75f20c315d9fee2bf7898daecc3618391d952 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 14:38:18 -0700 Subject: [PATCH 31/57] Bind pilot groups before their first native association Keep the four late SDK constant groups on their original constants with guarded native-storage forward typedefs. Pin the MIDL interface helper and use the canonical first-AST annotation payload in native controls. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 29 +++ docs/winhttp-header-annotations.md | 9 +- generation/WinSDK/patches/um/Psapi.h.patch | 88 ++++---- generation/WinSDK/patches/um/TlHelp32.h.patch | 88 ++++---- generation/WinSDK/patches/um/Xinput.h.patch | 103 +++++---- .../WinSDK/patches/um/magnification.h.patch | 22 +- generation/WinSDK/patches/um/winhttp.h.patch | 204 +++++++++++------- .../WinHttpMigrationTests.cs | 11 + .../WinHttpNativeControlTests.cs | 5 +- 9 files changed, 348 insertions(+), 211 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 0e71e0f84..9bbbcd743 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -216,6 +216,16 @@ carrier (`FlagsEnum` for flags); do not create SDK `#define` aliases, ordinary consumer symbols or metadata-only constant globals. There are no authored RAII facts to add in this pilot. +Place each group before its first associated use, after its native constants. +Four SDK source-order exceptions instead use an early, unannotated +`typedef DWORD GROUP;` under `WIN32METADATA`, followed by the one annotated +public group typedef at the existing constants: `WINHTTP_ACCESS_TYPE`, +`WINHTTP_CREDS_AUTHSCHEME`, `CREATE_TOOLHELP_SNAPSHOT_FLAGS` and +`HEAPENTRY32_FLAGS`. Keep the same native storage and declaration scope, outside +unintended OS scopes. This is a compiler-bound redeclaration of the same +metadata-only type, not another logical group or an SDK alias. Do not move +native constant blocks to accommodate the annotation. + ## 4. Pin OLD, tooling control and NEW separately Freeze a complete OLD image and generated-source/discovery closure from one SDK @@ -582,6 +592,25 @@ all-partition scrape or emission is needed for this mechanical cleanup, and no API-difference expectations change. Historical image qualification remains tied to its original producer; the new head's CI state is recorded in the draft PR. +### First-parse public-macro adoption + +The adoption source is tooling commit +`746d812dd15a93d77b24285708fd51727b293bba`, merged without rewriting the pilot's +history. Its canonical shared helper is pinned as a thirteenth MIDL input, +SHA256 `5C02968168112A7DA993056680041C458CEAFFEA31AFE37A8FE17444C3D1F246`. +The twelve original selected-SDK inputs remain separately hash-bound. +`_Win32_AnnotateInterface_(IWaaSAssessor, _Win32_SupportedOS_15063_)` expands +during MIDL preprocessing to the existing C++ target-specific forward carrier; +the same helper bytes are included by the regenerated header. + +MIDL's explicit C-preprocessor options retain every required define, including +`MIDL_PASS=1`, and each quoted private include directory. Saved preprocessing +must read exactly the declared SDK/helper closure. There is no ambient SDK or +environment fallback, second parse, or backend-specific transport gate. +Preparation and native controls are not final-image admission: the new image, +119-floor and physical-equivalence grades and exact-head CI must be recorded +separately before publication is qualified. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 227370d3a..d0d50815d 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -104,7 +104,7 @@ entries remain in the generated mapping. | Functional fact | Current authority | Authored legacy input removed | | --- | --- | --- | | 59 DLL bindings | SDK `.lib` scan in generated `libMappings.rsp` | None: derived scan entries remain; there is no WinHttp header override | -| 38 OS floors: 27 XP, 11 Windows 8 | Canonical `_Win32_SupportedOS_*_` direct facts and narrowly bounded `_Win32_SupportedOS_BEGIN_` / `_Win32_SupportedOS_END_` defaults | All 38 WinHttp `supportedOS.rsp` rows | +| 38 OS floors: 27 XP, 11 Windows 8 | Canonical `_Win32_SupportedOS_*_` direct facts and narrowly bounded `_Win32_SupportedOS_BEGIN_` / `_Win32_SupportedOS_END_` lexical scopes | All 38 WinHttp `supportedOS.rsp` rows | | 28 thread-last-error contracts | `_Win32_SetLastError_` | All 28 WinHttp `WithSetLastError.rsp` rows | | One same-allocation buffer | `_Win32_ContainsInteriorPointers_` on `WinHttpQueryHeadersEx::pBuffer`, with its original byte-count SAL | Interior-pointer member remap | | Five logical enums, 21 emitted members, eight uses | Public enum-group macros, one explicit-name AST carrier, and `_Win32_AssociatedEnum_` at each native use | WinHttp enum definitions and all eight enum substitutions | @@ -190,6 +190,13 @@ spelling rule for these four existing logical members, not a general renaming ru No semantic sidecar, consumer alias, WinHttp-specific consumer behavior, or fabricated handle is introduced to preserve source compatibility. +Group types precede their associated uses. Where the SDK defines the constants +after a use, `WINHTTP_ACCESS_TYPE` and `WINHTTP_CREDS_AUTHSCHEME` have an early, +unannotated `typedef DWORD` under `WIN32METADATA`; the single annotated group +typedef follows the existing native constants. The corresponding ToolHelp +exceptions are documented in the playbook. Native constant blocks are neither +moved nor copied, and no group declaration is visible to ordinary consumers. + CsWin32 generated-source compatibility is the primary acceptance gate. A metadata declaration diff is supporting evidence, not a substitute for generating both marshaling legs, comparing their public surfaces, and compiling the same unchanged diff --git a/generation/WinSDK/patches/um/Psapi.h.patch b/generation/WinSDK/patches/um/Psapi.h.patch index dd36b85be..47732605e 100644 --- a/generation/WinSDK/patches/um/Psapi.h.patch +++ b/generation/WinSDK/patches/um/Psapi.h.patch @@ -1,5 +1,5 @@ diff --git a/um/Psapi.h b/um/Psapi.h -index d68f6459..7ee851d5 100644 +index d68f6459..9fb616c8 100644 --- a/um/Psapi.h +++ b/um/Psapi.h @@ -25,6 +25,7 @@ Revision History: @@ -10,7 +10,22 @@ index d68f6459..7ee851d5 100644 #ifdef __cplusplus extern "C" { -@@ -128,6 +129,10 @@ extern "C" { +@@ -58,6 +59,14 @@ extern "C" { + #endif + #endif + ++#if PSAPI_VERSION == 1 ++_Win32_Enum_(ENUM_PROCESS_MODULES_EX_FLAGS, DWORD, ++ LIST_MODULES_ALL, ++ LIST_MODULES_DEFAULT, ++ LIST_MODULES_32BIT, ++ LIST_MODULES_64BIT); ++#endif ++ + #if (PSAPI_VERSION > 1) + #define EnumProcessModules K32EnumProcessModules + #define EnumProcessModulesEx K32EnumProcessModulesEx +@@ -128,6 +137,10 @@ extern "C" { #endif @@ -21,7 +36,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EnumProcesses( -@@ -142,6 +147,10 @@ EnumProcesses( +@@ -142,6 +155,10 @@ EnumProcesses( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -32,7 +47,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EnumProcessModules( -@@ -151,6 +160,10 @@ EnumProcessModules( +@@ -151,6 +168,10 @@ EnumProcessModules( _Out_ LPDWORD lpcbNeeded ); @@ -43,7 +58,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EnumProcessModulesEx( -@@ -158,6 +171,9 @@ EnumProcessModulesEx( +@@ -158,6 +179,9 @@ EnumProcessModulesEx( _Out_writes_bytes_(cb) HMODULE* lphModule, _In_ DWORD cb, _Out_ LPDWORD lpcbNeeded, @@ -53,7 +68,7 @@ index d68f6459..7ee851d5 100644 _In_ DWORD dwFilterFlag ); -@@ -167,6 +183,10 @@ EnumProcessModulesEx( +@@ -167,6 +191,10 @@ EnumProcessModulesEx( #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -64,7 +79,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetModuleBaseNameA( -@@ -176,6 +196,9 @@ GetModuleBaseNameA( +@@ -176,6 +204,9 @@ GetModuleBaseNameA( _In_ DWORD nSize ); @@ -74,7 +89,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetModuleBaseNameW( -@@ -193,6 +216,9 @@ GetModuleBaseNameW( +@@ -193,6 +224,9 @@ GetModuleBaseNameW( _Success_(return != 0) _Ret_range_(1, nSize) @@ -84,7 +99,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetModuleFileNameExA( -@@ -206,6 +232,9 @@ GetModuleFileNameExA( +@@ -206,6 +240,9 @@ GetModuleFileNameExA( _Success_(return != 0) _Ret_range_(1, nSize) @@ -94,7 +109,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetModuleFileNameExW( -@@ -216,6 +245,9 @@ GetModuleFileNameExW( +@@ -216,6 +253,9 @@ GetModuleFileNameExW( LPWSTR lpFilename, _In_ DWORD nSize ); @@ -104,7 +119,7 @@ index d68f6459..7ee851d5 100644 #ifdef UNICODE #define GetModuleFileNameEx GetModuleFileNameExW -@@ -229,6 +261,10 @@ typedef struct _MODULEINFO { +@@ -229,6 +269,10 @@ typedef struct _MODULEINFO { LPVOID EntryPoint; } MODULEINFO, *LPMODULEINFO; @@ -115,7 +130,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI GetModuleInformation( -@@ -244,6 +280,10 @@ GetModuleInformation( +@@ -244,6 +288,10 @@ GetModuleInformation( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -126,7 +141,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EmptyWorkingSet( -@@ -256,6 +296,10 @@ EmptyWorkingSet( +@@ -256,6 +304,10 @@ EmptyWorkingSet( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -137,7 +152,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI InitializeProcessForWsWatch( -@@ -273,6 +317,10 @@ typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { +@@ -273,6 +325,10 @@ typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { ULONG_PTR Flags; // Reserved } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; @@ -148,7 +163,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI GetWsChanges( -@@ -281,6 +329,10 @@ GetWsChanges( +@@ -281,6 +337,10 @@ GetWsChanges( _In_ DWORD cb ); @@ -159,7 +174,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI GetWsChangesEx( -@@ -289,6 +341,10 @@ GetWsChangesEx( +@@ -289,6 +349,10 @@ GetWsChangesEx( _Inout_ PDWORD cb ); @@ -170,7 +185,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetMappedFileNameW ( -@@ -298,6 +354,9 @@ GetMappedFileNameW ( +@@ -298,6 +362,9 @@ GetMappedFileNameW ( _In_ DWORD nSize ); @@ -180,7 +195,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetMappedFileNameA ( -@@ -313,6 +372,9 @@ GetMappedFileNameA ( +@@ -313,6 +380,9 @@ GetMappedFileNameA ( #define GetMappedFileName GetMappedFileNameA #endif // !UNICODE @@ -190,7 +205,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EnumDeviceDrivers ( -@@ -321,6 +383,9 @@ EnumDeviceDrivers ( +@@ -321,6 +391,9 @@ EnumDeviceDrivers ( _Out_ LPDWORD lpcbNeeded ); @@ -200,7 +215,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetDeviceDriverBaseNameA ( -@@ -329,6 +394,9 @@ GetDeviceDriverBaseNameA ( +@@ -329,6 +402,9 @@ GetDeviceDriverBaseNameA ( _In_ DWORD nSize ); @@ -210,7 +225,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetDeviceDriverBaseNameW ( -@@ -343,6 +411,9 @@ GetDeviceDriverBaseNameW ( +@@ -343,6 +419,9 @@ GetDeviceDriverBaseNameW ( #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA #endif // !UNICODE @@ -220,7 +235,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetDeviceDriverFileNameA ( -@@ -351,6 +422,9 @@ GetDeviceDriverFileNameA ( +@@ -351,6 +430,9 @@ GetDeviceDriverFileNameA ( _In_ DWORD nSize ); @@ -230,7 +245,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetDeviceDriverFileNameW ( -@@ -358,6 +432,9 @@ GetDeviceDriverFileNameW ( +@@ -358,6 +440,9 @@ GetDeviceDriverFileNameW ( _Out_writes_(nSize) LPWSTR lpFilename, _In_ DWORD nSize ); @@ -240,7 +255,7 @@ index d68f6459..7ee851d5 100644 #ifdef UNICODE #define GetDeviceDriverFileName GetDeviceDriverFileNameW -@@ -445,6 +522,10 @@ typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { +@@ -445,6 +530,10 @@ typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { #pragma warning(default:4201) #endif @@ -251,7 +266,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI QueryWorkingSet( -@@ -453,6 +534,10 @@ QueryWorkingSet( +@@ -453,6 +542,10 @@ QueryWorkingSet( _In_ DWORD cb ); @@ -262,7 +277,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI QueryWorkingSetEx( -@@ -517,6 +602,10 @@ typedef PROCESS_MEMORY_COUNTERS_EX2 *PPROCESS_MEMORY_COUNTERS_EX2; +@@ -517,6 +610,10 @@ typedef PROCESS_MEMORY_COUNTERS_EX2 *PPROCESS_MEMORY_COUNTERS_EX2; #endif @@ -273,7 +288,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI GetProcessMemoryInfo ( -@@ -548,6 +637,10 @@ typedef struct _PERFORMANCE_INFORMATION { +@@ -548,6 +645,10 @@ typedef struct _PERFORMANCE_INFORMATION { DWORD ThreadCount; } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; @@ -284,7 +299,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI GetPerformanceInfo ( -@@ -573,6 +666,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE +@@ -573,6 +674,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); @@ -295,7 +310,7 @@ index d68f6459..7ee851d5 100644 BOOL WINAPI EnumPageFilesW ( -@@ -580,12 +677,18 @@ EnumPageFilesW ( +@@ -580,12 +685,18 @@ EnumPageFilesW ( LPVOID pContext ); @@ -314,7 +329,7 @@ index d68f6459..7ee851d5 100644 #ifdef UNICODE #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW -@@ -601,6 +704,10 @@ EnumPageFilesA ( +@@ -601,6 +712,10 @@ EnumPageFilesA ( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -325,7 +340,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetProcessImageFileNameA ( -@@ -609,6 +716,9 @@ GetProcessImageFileNameA ( +@@ -609,6 +724,9 @@ GetProcessImageFileNameA ( _In_ DWORD nSize ); @@ -335,7 +350,7 @@ index d68f6459..7ee851d5 100644 DWORD WINAPI GetProcessImageFileNameW ( -@@ -616,6 +726,9 @@ GetProcessImageFileNameW ( +@@ -616,6 +734,9 @@ GetProcessImageFileNameW ( _Out_writes_(nSize) LPWSTR lpImageFileName, _In_ DWORD nSize ); @@ -345,17 +360,10 @@ index d68f6459..7ee851d5 100644 #ifdef UNICODE #define GetProcessImageFileName GetProcessImageFileNameW -@@ -630,6 +743,14 @@ GetProcessImageFileNameW ( +@@ -630,6 +751,7 @@ GetProcessImageFileNameW ( #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -+#if PSAPI_VERSION == 1 -+_Win32_Enum_(ENUM_PROCESS_MODULES_EX_FLAGS, DWORD, -+ LIST_MODULES_ALL, -+ LIST_MODULES_DEFAULT, -+ LIST_MODULES_32BIT, -+ LIST_MODULES_64BIT); -+#endif + #ifdef __cplusplus } diff --git a/generation/WinSDK/patches/um/TlHelp32.h.patch b/generation/WinSDK/patches/um/TlHelp32.h.patch index c1e5b6b47..48c4f95be 100644 --- a/generation/WinSDK/patches/um/TlHelp32.h.patch +++ b/generation/WinSDK/patches/um/TlHelp32.h.patch @@ -1,5 +1,5 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h -index c712ccb4..4bc5f617 100644 +index c712ccb4..15284e50 100644 --- a/um/TlHelp32.h +++ b/um/TlHelp32.h @@ -17,6 +17,7 @@ @@ -10,10 +10,14 @@ index c712ccb4..4bc5f617 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -29,10 +30,12 @@ extern "C" { /* Assume C declarations for C++ */ +@@ -29,10 +30,16 @@ extern "C" { /* Assume C declarations for C++ */ /****** Shapshot function **********************************************/ ++#ifdef WIN32METADATA ++typedef DWORD CREATE_TOOLHELP_SNAPSHOT_FLAGS; ++#endif ++ +_Win32_SupportedOS_WindowsXP_ +_Win32_SetLastError_ HANDLE @@ -24,7 +28,24 @@ index c712ccb4..4bc5f617 100644 DWORD th32ProcessID ); -@@ -78,6 +81,8 @@ typedef HEAPLIST32 * LPHEAPLIST32; +@@ -57,6 +64,16 @@ CreateToolhelp32Snapshot( + #define TH32CS_SNAPMODULE32 0x00000010 + #define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE) + #define TH32CS_INHERIT 0x80000000 ++ ++_Win32_FlagsEnum_(CREATE_TOOLHELP_SNAPSHOT_FLAGS, DWORD, ++ TH32CS_INHERIT, ++ TH32CS_SNAPALL, ++ TH32CS_SNAPHEAPLIST, ++ TH32CS_SNAPMODULE, ++ TH32CS_SNAPMODULE32, ++ TH32CS_SNAPPROCESS, ++ TH32CS_SNAPTHREAD); ++ + // + // Use CloseHandle to destroy the snapshot + // +@@ -78,6 +95,8 @@ typedef HEAPLIST32 * LPHEAPLIST32; #define HF32_DEFAULT 1 // process's default heap #define HF32_SHARED 2 // is shared heap @@ -33,7 +54,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Heap32ListFirst( -@@ -85,12 +90,14 @@ Heap32ListFirst( +@@ -85,12 +104,18 @@ Heap32ListFirst( LPHEAPLIST32 lphl ); @@ -45,10 +66,14 @@ index c712ccb4..4bc5f617 100644 LPHEAPLIST32 lphl ); +_Win32_SupportedOS_END_() ++ ++#ifdef WIN32METADATA ++typedef DWORD HEAPENTRY32_FLAGS; ++#endif typedef struct tagHEAPENTRY32 { -@@ -98,7 +105,7 @@ typedef struct tagHEAPENTRY32 +@@ -98,7 +123,7 @@ typedef struct tagHEAPENTRY32 HANDLE hHandle; // Handle of this heap block ULONG_PTR dwAddress; // Linear address of start of block SIZE_T dwBlockSize; // Size of block in bytes @@ -57,16 +82,22 @@ index c712ccb4..4bc5f617 100644 DWORD dwLockCount; DWORD dwResvd; DWORD th32ProcessID; // owning process -@@ -113,6 +120,8 @@ typedef HEAPENTRY32 * LPHEAPENTRY32; +@@ -113,6 +138,14 @@ typedef HEAPENTRY32 * LPHEAPENTRY32; #define LF32_FREE 0x00000002 #define LF32_MOVEABLE 0x00000004 ++_Win32_Enum_(HEAPENTRY32_FLAGS, DWORD, ++ LF32_FIXED, ++ LF32_FREE, ++ LF32_MOVEABLE); ++ ++ +_Win32_SupportedOS_BEGIN_(WindowsXP) +_Win32_SetLastError_ BOOL WINAPI Heap32First( -@@ -121,6 +130,7 @@ Heap32First( +@@ -121,6 +154,7 @@ Heap32First( ULONG_PTR th32HeapID ); @@ -74,7 +105,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Heap32Next( -@@ -136,6 +146,7 @@ Toolhelp32ReadProcessMemory( +@@ -136,6 +170,7 @@ Toolhelp32ReadProcessMemory( SIZE_T cbRead, SIZE_T* lpNumberOfBytesRead ); @@ -82,7 +113,7 @@ index c712ccb4..4bc5f617 100644 /***** Process walking *************************************************/ -@@ -155,6 +166,8 @@ typedef struct tagPROCESSENTRY32W +@@ -155,6 +190,8 @@ typedef struct tagPROCESSENTRY32W typedef PROCESSENTRY32W * PPROCESSENTRY32W; typedef PROCESSENTRY32W * LPPROCESSENTRY32W; @@ -91,7 +122,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Process32FirstW( -@@ -162,12 +175,14 @@ Process32FirstW( +@@ -162,12 +199,14 @@ Process32FirstW( LPPROCESSENTRY32W lppe ); @@ -106,7 +137,7 @@ index c712ccb4..4bc5f617 100644 typedef struct tagPROCESSENTRY32 { -@@ -185,6 +200,8 @@ typedef struct tagPROCESSENTRY32 +@@ -185,6 +224,8 @@ typedef struct tagPROCESSENTRY32 typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; @@ -115,7 +146,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Process32First( -@@ -192,12 +209,14 @@ Process32First( +@@ -192,12 +233,14 @@ Process32First( LPPROCESSENTRY32 lppe ); @@ -130,7 +161,7 @@ index c712ccb4..4bc5f617 100644 #ifdef UNICODE #define Process32First Process32FirstW -@@ -222,6 +241,8 @@ typedef struct tagTHREADENTRY32 +@@ -222,6 +265,8 @@ typedef struct tagTHREADENTRY32 typedef THREADENTRY32 * PTHREADENTRY32; typedef THREADENTRY32 * LPTHREADENTRY32; @@ -139,7 +170,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Thread32First( -@@ -229,12 +250,14 @@ Thread32First( +@@ -229,12 +274,14 @@ Thread32First( LPTHREADENTRY32 lpte ); @@ -154,7 +185,7 @@ index c712ccb4..4bc5f617 100644 /***** Module walking *************************************************/ -@@ -254,6 +277,8 @@ typedef struct tagMODULEENTRY32W +@@ -254,6 +301,8 @@ typedef struct tagMODULEENTRY32W typedef MODULEENTRY32W * PMODULEENTRY32W; typedef MODULEENTRY32W * LPMODULEENTRY32W; @@ -163,7 +194,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Module32FirstW( -@@ -261,12 +286,14 @@ Module32FirstW( +@@ -261,12 +310,14 @@ Module32FirstW( LPMODULEENTRY32W lpme ); @@ -178,7 +209,7 @@ index c712ccb4..4bc5f617 100644 typedef struct tagMODULEENTRY32 { -@@ -289,6 +316,8 @@ typedef MODULEENTRY32 * LPMODULEENTRY32; +@@ -289,6 +340,8 @@ typedef MODULEENTRY32 * LPMODULEENTRY32; // in th32ProcessID's process context. // @@ -187,7 +218,7 @@ index c712ccb4..4bc5f617 100644 BOOL WINAPI Module32First( -@@ -296,12 +325,14 @@ Module32First( +@@ -296,12 +349,14 @@ Module32First( LPMODULEENTRY32 lpme ); @@ -202,24 +233,3 @@ index c712ccb4..4bc5f617 100644 #ifdef UNICODE #define Module32First Module32FirstW -@@ -311,6 +342,20 @@ Module32Next( - #define LPMODULEENTRY32 LPMODULEENTRY32W - #endif // !UNICODE - -+_Win32_FlagsEnum_(CREATE_TOOLHELP_SNAPSHOT_FLAGS, DWORD, -+ TH32CS_INHERIT, -+ TH32CS_SNAPALL, -+ TH32CS_SNAPHEAPLIST, -+ TH32CS_SNAPMODULE, -+ TH32CS_SNAPMODULE32, -+ TH32CS_SNAPPROCESS, -+ TH32CS_SNAPTHREAD); -+ -+_Win32_Enum_(HEAPENTRY32_FLAGS, DWORD, -+ LF32_FIXED, -+ LF32_FREE, -+ LF32_MOVEABLE); -+ - #ifdef __cplusplus - } - #endif diff --git a/generation/WinSDK/patches/um/Xinput.h.patch b/generation/WinSDK/patches/um/Xinput.h.patch index 163924c73..2bae3e7f0 100644 --- a/generation/WinSDK/patches/um/Xinput.h.patch +++ b/generation/WinSDK/patches/um/Xinput.h.patch @@ -1,5 +1,5 @@ diff --git a/um/Xinput.h b/um/Xinput.h -index 4b51b443..eaeaad70 100644 +index 4b51b443..1d4d2cbf 100644 --- a/um/Xinput.h +++ b/um/Xinput.h @@ -13,6 +13,7 @@ @@ -10,48 +10,7 @@ index 4b51b443..eaeaad70 100644 #pragma region Application Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -@@ -193,7 +194,7 @@ - // - typedef struct _XINPUT_GAMEPAD - { -- WORD wButtons; -+ _Win32_AssociatedEnum_(XINPUT_GAMEPAD_BUTTON_FLAGS) WORD wButtons; - BYTE bLeftTrigger; - BYTE bRightTrigger; - SHORT sThumbLX; -@@ -216,9 +217,9 @@ typedef struct _XINPUT_VIBRATION - - typedef struct _XINPUT_CAPABILITIES - { -- BYTE Type; -- BYTE SubType; -- WORD Flags; -+ _Win32_AssociatedEnum_(XINPUT_DEVTYPE) BYTE Type; -+ _Win32_AssociatedEnum_(XINPUT_DEVSUBTYPE) BYTE SubType; -+ _Win32_AssociatedEnum_(XINPUT_CAPABILITIES_FLAGS) WORD Flags; - XINPUT_GAMEPAD Gamepad; - XINPUT_VIBRATION Vibration; - } XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; -@@ -227,21 +228,124 @@ typedef struct _XINPUT_CAPABILITIES - - typedef struct _XINPUT_BATTERY_INFORMATION - { -- BYTE BatteryType; -- BYTE BatteryLevel; -+ _Win32_AssociatedEnum_(BATTERY_TYPE) BYTE BatteryType; -+ _Win32_AssociatedEnum_(BATTERY_LEVEL) BYTE BatteryLevel; - } XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; - - typedef struct _XINPUT_KEYSTROKE - { -- WORD VirtualKey; -+ _Win32_AssociatedEnum_(XINPUT_VIRTUAL_KEY) WORD VirtualKey; - WCHAR Unicode; -- WORD Flags; -+ _Win32_AssociatedEnum_(XINPUT_KEYSTROKE_FLAGS) WORD Flags; - BYTE UserIndex; - BYTE HidCode; - } XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; +@@ -188,12 +189,125 @@ #endif //(_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -89,6 +48,7 @@ index 4b51b443..eaeaad70 100644 + VK_PAD_RTHUMB_DOWNRIGHT, + VK_PAD_RTHUMB_DOWNLEFT); + ++ +_Win32_Enum_(BATTERY_TYPE, BYTE, + BATTERY_TYPE_DISCONNECTED, + BATTERY_TYPE_WIRED, @@ -96,19 +56,23 @@ index 4b51b443..eaeaad70 100644 + BATTERY_TYPE_NIMH, + BATTERY_TYPE_UNKNOWN); + ++ +_Win32_Enum_(BATTERY_LEVEL, BYTE, + BATTERY_LEVEL_EMPTY, + BATTERY_LEVEL_LOW, + BATTERY_LEVEL_MEDIUM, + BATTERY_LEVEL_FULL); + ++ +_Win32_Enum_(BATTERY_DEVTYPE, BYTE, + BATTERY_DEVTYPE_GAMEPAD, + BATTERY_DEVTYPE_HEADSET); + ++ +_Win32_Enum_(XINPUT_DEVTYPE, BYTE, + XINPUT_DEVTYPE_GAMEPAD); + ++ +_Win32_Enum_(XINPUT_DEVSUBTYPE, BYTE, + XINPUT_DEVSUBTYPE_GAMEPAD, + XINPUT_DEVSUBTYPE_UNKNOWN, @@ -122,6 +86,7 @@ index 4b51b443..eaeaad70 100644 + XINPUT_DEVSUBTYPE_GUITAR_BASS, + XINPUT_DEVSUBTYPE_ARCADE_PAD); + ++ +_Win32_FlagsEnum_(XINPUT_CAPABILITIES_FLAGS, WORD, + XINPUT_CAPS_VOICE_SUPPORTED, + XINPUT_CAPS_FFB_SUPPORTED, @@ -129,6 +94,7 @@ index 4b51b443..eaeaad70 100644 + XINPUT_CAPS_PMD_SUPPORTED, + XINPUT_CAPS_NO_NAVIGATION); + ++ +_Win32_FlagsEnum_(XINPUT_GAMEPAD_BUTTON_FLAGS, WORD, + XINPUT_GAMEPAD_DPAD_UP, + XINPUT_GAMEPAD_DPAD_DOWN, @@ -148,20 +114,63 @@ index 4b51b443..eaeaad70 100644 + XINPUT_GAMEPAD_RIGHT_THUMB_DEADZONE, + XINPUT_GAMEPAD_TRIGGER_THRESHOLD); + ++ +_Win32_FlagsEnum_(XINPUT_KEYSTROKE_FLAGS, WORD, + XINPUT_KEYSTROKE_KEYDOWN, + XINPUT_KEYSTROKE_KEYUP, + XINPUT_KEYSTROKE_REPEAT); + ++ +#ifdef WIN32METADATA +typedef _WIN32META_ANNOTATION_("FlagsEnum(XINPUT_FLAG_ALL, XINPUT_FLAG_GAMEPAD)", + 0, XINPUT_FLAG_GAMEPAD) DWORD XINPUT_FLAG; +#endif + - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ - #pragma endregion ++ + // + // Structures used by XInput APIs + // + typedef struct _XINPUT_GAMEPAD + { +- WORD wButtons; ++ _Win32_AssociatedEnum_(XINPUT_GAMEPAD_BUTTON_FLAGS) WORD wButtons; + BYTE bLeftTrigger; + BYTE bRightTrigger; + SHORT sThumbLX; +@@ -216,9 +330,9 @@ typedef struct _XINPUT_VIBRATION + + typedef struct _XINPUT_CAPABILITIES + { +- BYTE Type; +- BYTE SubType; +- WORD Flags; ++ _Win32_AssociatedEnum_(XINPUT_DEVTYPE) BYTE Type; ++ _Win32_AssociatedEnum_(XINPUT_DEVSUBTYPE) BYTE SubType; ++ _Win32_AssociatedEnum_(XINPUT_CAPABILITIES_FLAGS) WORD Flags; + XINPUT_GAMEPAD Gamepad; + XINPUT_VIBRATION Vibration; + } XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; +@@ -227,15 +341,15 @@ typedef struct _XINPUT_CAPABILITIES + + typedef struct _XINPUT_BATTERY_INFORMATION + { +- BYTE BatteryType; +- BYTE BatteryLevel; ++ _Win32_AssociatedEnum_(BATTERY_TYPE) BYTE BatteryType; ++ _Win32_AssociatedEnum_(BATTERY_LEVEL) BYTE BatteryLevel; + } XINPUT_BATTERY_INFORMATION, *PXINPUT_BATTERY_INFORMATION; -@@ -270,7 +374,7 @@ DWORD WINAPI XInputSetState + typedef struct _XINPUT_KEYSTROKE + { +- WORD VirtualKey; ++ _Win32_AssociatedEnum_(XINPUT_VIRTUAL_KEY) WORD VirtualKey; + WCHAR Unicode; +- WORD Flags; ++ _Win32_AssociatedEnum_(XINPUT_KEYSTROKE_FLAGS) WORD Flags; + BYTE UserIndex; + BYTE HidCode; + } XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; +@@ -270,7 +384,7 @@ DWORD WINAPI XInputSetState DWORD WINAPI XInputGetCapabilities ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device @@ -170,7 +179,7 @@ index 4b51b443..eaeaad70 100644 _Out_ XINPUT_CAPABILITIES* pCapabilities // Receives the capabilities ) WIN_NOEXCEPT; -@@ -297,7 +401,7 @@ DWORD WINAPI XInputGetAudioDeviceIds +@@ -297,7 +411,7 @@ DWORD WINAPI XInputGetAudioDeviceIds DWORD WINAPI XInputGetBatteryInformation ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device diff --git a/generation/WinSDK/patches/um/magnification.h.patch b/generation/WinSDK/patches/um/magnification.h.patch index 30da3a6b8..4bfde88e0 100644 --- a/generation/WinSDK/patches/um/magnification.h.patch +++ b/generation/WinSDK/patches/um/magnification.h.patch @@ -1,5 +1,5 @@ diff --git a/um/magnification.h b/um/magnification.h -index 1efaf5a4..d55c562a 100644 +index 1efaf5a4..f2170ba2 100644 --- a/um/magnification.h +++ b/um/magnification.h @@ -11,6 +11,7 @@ @@ -10,7 +10,19 @@ index 1efaf5a4..d55c562a 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -72,6 +73,7 @@ typedef struct tagMAGCOLOREFFECT +@@ -49,6 +50,11 @@ extern "C" { // we need to export the C interface + #define MW_FILTERMODE_EXCLUDE 0 + #define MW_FILTERMODE_INCLUDE 1 + ++_Win32_Enum_(MW_FILTERMODE, DWORD, ++ MW_FILTERMODE_EXCLUDE, ++ MW_FILTERMODE_INCLUDE); ++ ++ + typedef struct tagMAGTRANSFORM + { + float v[3][3]; +@@ -72,6 +78,7 @@ typedef struct tagMAGCOLOREFFECT typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); // Public Functions @@ -18,7 +30,7 @@ index 1efaf5a4..d55c562a 100644 BOOL WINAPI MagInitialize(); BOOL WINAPI MagUninitialize(); -@@ -79,19 +81,27 @@ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); +@@ -79,19 +86,23 @@ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); @@ -41,10 +53,6 @@ index 1efaf5a4..d55c562a 100644 BOOL WINAPI MagGetInputTransform(_Out_ BOOL *pfEnabled, _Out_ LPRECT pRectSource, _Out_ LPRECT pRectDest); BOOL WINAPI MagShowSystemCursor(_In_ BOOL fShowCursor); +_Win32_SupportedOS_END_() -+ -+_Win32_Enum_(MW_FILTERMODE, DWORD, -+ MW_FILTERMODE_EXCLUDE, -+ MW_FILTERMODE_INCLUDE); #ifdef __cplusplus } diff --git a/generation/WinSDK/patches/um/winhttp.h.patch b/generation/WinSDK/patches/um/winhttp.h.patch index c337b5a33..9f55527b9 100644 --- a/generation/WinSDK/patches/um/winhttp.h.patch +++ b/generation/WinSDK/patches/um/winhttp.h.patch @@ -1,5 +1,5 @@ diff --git a/um/winhttp.h b/um/winhttp.h -index ddcdcb38..f5702473 100644 +index ddcdcb38..a783c119 100644 --- a/um/winhttp.h +++ b/um/winhttp.h @@ -16,6 +16,7 @@ Abstract: @@ -10,7 +10,37 @@ index ddcdcb38..f5702473 100644 #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -168,7 +169,7 @@ typedef struct _WINHTTP_URL_COMPONENTS +@@ -90,6 +91,16 @@ typedef INTERNET_PORT * LPINTERNET_PORT; + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID) + + ++_Win32_FlagsEnum_(WINHTTP_OPEN_REQUEST_FLAGS, DWORD, ++ WINHTTP_FLAG_BYPASS_PROXY_CACHE, ++ WINHTTP_FLAG_ESCAPE_DISABLE, ++ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY, ++ WINHTTP_FLAG_ESCAPE_PERCENT, ++ WINHTTP_FLAG_NULL_CODEPAGE, ++ WINHTTP_FLAG_REFRESH, ++ WINHTTP_FLAG_SECURE); ++ ++ + // + // WINHTTP_ASYNC_RESULT - this structure is returned to the application via + // the callback with WINHTTP_CALLBACK_STATUS_REQUEST_COMPLETE. It is not sufficient to +@@ -141,6 +152,12 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME; + #endif + + ++#ifdef WIN32METADATA ++typedef _WIN32META_ANNOTATION_("Enum(WINHTTP_INTERNET_SCHEME_HTTP, WINHTTP_INTERNET_SCHEME_HTTPS, WINHTTP_INTERNET_SCHEME_FTP, WINHTTP_INTERNET_SCHEME_SOCKS)", ++ INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FTP, INTERNET_SCHEME_SOCKS) INTERNET_SCHEME WINHTTP_INTERNET_SCHEME; ++#endif ++ ++ + // + // URL_COMPONENTS - the constituent parts of an URL. Used in WinHttpCrackUrl() + // and WinHttpCreateUrl() +@@ -168,7 +185,7 @@ typedef struct _WINHTTP_URL_COMPONENTS DWORD dwStructSize; // size of this structure. Used in version check LPWSTR lpszScheme; // pointer to scheme name DWORD dwSchemeLength; // length of scheme name @@ -19,8 +49,14 @@ index ddcdcb38..f5702473 100644 LPWSTR lpszHostName; // pointer to host name DWORD dwHostNameLength; // length of host name INTERNET_PORT nPort; // converted port number -@@ -196,7 +197,7 @@ typedef LPURL_COMPONENTS LPURL_COMPONENTSW; +@@ -194,9 +211,13 @@ typedef LPURL_COMPONENTS LPURL_COMPONENTSW; + // set proxy information on a WinHttpOpen() handle + // ++#ifdef WIN32METADATA ++typedef DWORD WINHTTP_ACCESS_TYPE; ++#endif ++ typedef struct _WINHTTP_PROXY_INFO { - DWORD dwAccessType; // see WINHTTP_ACCESS_* types below @@ -28,7 +64,7 @@ index ddcdcb38..f5702473 100644 LPWSTR lpszProxy; // proxy server list LPWSTR lpszProxyBypass; // proxy bypass list } WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO, *PWINHTTP_PROXY_INFO; -@@ -253,7 +254,7 @@ typedef struct _WINHTTP_PROXY_RESULT_ENTRY +@@ -253,7 +274,7 @@ typedef struct _WINHTTP_PROXY_RESULT_ENTRY { BOOL fProxy; // Is this a proxy or DIRECT? BOOL fBypass; // If DIRECT, is it bypassing a proxy (intranet) or is all traffic DIRECT (internet) @@ -37,7 +73,16 @@ index ddcdcb38..f5702473 100644 PWSTR pwszProxy; // Hostname of the proxy. INTERNET_PORT ProxyPort; // Port of the proxy. } WINHTTP_PROXY_RESULT_ENTRY; -@@ -944,7 +945,7 @@ typedef struct tagWINHTTP_CREDS +@@ -939,12 +960,16 @@ typedef struct _WINHTTP_FAILED_CONNECTION_RETRIES + #define WINHTTP_ENABLE_SPN_SERVER_PORT 0x00000001 + #define WINHTTP_OPTION_SPN_MASK WINHTTP_ENABLE_SPN_SERVER_PORT + ++#ifdef WIN32METADATA ++typedef DWORD WINHTTP_CREDS_AUTHSCHEME; ++#endif ++ + typedef struct tagWINHTTP_CREDS + { LPSTR lpszUserName; LPSTR lpszPassword; LPSTR lpszRealm; @@ -46,7 +91,7 @@ index ddcdcb38..f5702473 100644 LPSTR lpszHostName; DWORD dwPort; } WINHTTP_CREDS, *PWINHTTP_CREDS; -@@ -956,7 +957,7 @@ typedef struct tagWINHTTP_CREDS_EX +@@ -956,7 +981,7 @@ typedef struct tagWINHTTP_CREDS_EX LPSTR lpszUserName; LPSTR lpszPassword; LPSTR lpszRealm; @@ -55,7 +100,20 @@ index ddcdcb38..f5702473 100644 LPSTR lpszHostName; DWORD dwPort; LPSTR lpszUrl; -@@ -1034,7 +1035,9 @@ VOID +@@ -981,6 +1006,12 @@ typedef struct tagWINHTTP_CREDS_EX + #define WINHTTP_AUTH_SCHEME_DIGEST 0x00000008 + #define WINHTTP_AUTH_SCHEME_NEGOTIATE 0x00000010 + ++_Win32_Enum_(WINHTTP_CREDS_AUTHSCHEME, DWORD, ++ WINHTTP_AUTH_SCHEME_BASIC, ++ WINHTTP_AUTH_SCHEME_NTLM, ++ WINHTTP_AUTH_SCHEME_NEGOTIATE); ++ ++ + // WinHttp supported Authentication Targets + + #define WINHTTP_AUTH_TARGET_SERVER 0x00000000 +@@ -1034,7 +1065,9 @@ VOID IN DWORD dwStatusInformationLength ); @@ -65,7 +123,33 @@ index ddcdcb38..f5702473 100644 // -@@ -1584,6 +1587,8 @@ typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG +@@ -1349,12 +1382,25 @@ typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; + #define ICU_REJECT_USERPWD 0x00004000 // Rejects URLs whick have username/pwd sections + #define ICU_ESCAPE_AUTHORITY 0x00002000 // Escape chars in authority components (user, pwd, host) + ++_Win32_Enum_(WIN_HTTP_CREATE_URL_FLAGS, DWORD, ++ ICU_ESCAPE, ++ ICU_REJECT_USERPWD, ++ ICU_DECODE); ++ ++ + // WinHttpOpen dwAccessType values (also for WINHTTP_PROXY_INFO::dwAccessType) + #define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY 0 + #define WINHTTP_ACCESS_TYPE_NO_PROXY 1 + #define WINHTTP_ACCESS_TYPE_NAMED_PROXY 3 + #define WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY 4 + ++_Win32_Enum_(WINHTTP_ACCESS_TYPE, DWORD, ++ WINHTTP_ACCESS_TYPE_NO_PROXY, ++ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, ++ WINHTTP_ACCESS_TYPE_NAMED_PROXY, ++ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY); ++ ++ + // WinHttpOpen prettifiers for optional parameters + #define WINHTTP_NO_PROXY_NAME NULL + #define WINHTTP_NO_PROXY_BYPASS NULL +@@ -1584,6 +1630,8 @@ typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG // prototypes // @@ -74,7 +158,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1595,6 +1600,7 @@ WinHttpSetStatusCallback +@@ -1595,6 +1643,7 @@ WinHttpSetStatusCallback IN DWORD_PTR dwReserved ); @@ -82,7 +166,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1604,6 +1610,7 @@ WinHttpTimeFromSystemTime +@@ -1604,6 +1653,7 @@ WinHttpTimeFromSystemTime _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer ); @@ -90,7 +174,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1613,6 +1620,7 @@ WinHttpTimeToSystemTime +@@ -1613,6 +1663,7 @@ WinHttpTimeToSystemTime _Out_ SYSTEMTIME *pst // output in GMT time ); @@ -98,7 +182,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1625,16 +1633,18 @@ WinHttpCrackUrl +@@ -1625,16 +1676,18 @@ WinHttpCrackUrl ); _Success_(return != FALSE) @@ -118,7 +202,7 @@ index ddcdcb38..f5702473 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1642,10 +1652,15 @@ WinHttpCreateUrl +@@ -1642,10 +1695,15 @@ WinHttpCreateUrl #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -134,7 +218,7 @@ index ddcdcb38..f5702473 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ #pragma endregion -@@ -1653,18 +1668,21 @@ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INF +@@ -1653,18 +1711,21 @@ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INF #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -157,7 +241,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1673,6 +1691,7 @@ WinHttpCloseHandle +@@ -1673,6 +1734,7 @@ WinHttpCloseHandle IN HINTERNET hInternet ); @@ -165,7 +249,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI HINTERNET WINAPI -@@ -1684,6 +1703,7 @@ WinHttpConnect +@@ -1684,6 +1746,7 @@ WinHttpConnect IN DWORD dwReserved ); @@ -173,7 +257,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1694,6 +1714,7 @@ WinHttpReadData +@@ -1694,6 +1757,7 @@ WinHttpReadData IN DWORD dwNumberOfBytesToRead, OUT LPDWORD lpdwNumberOfBytesRead ); @@ -181,7 +265,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD -@@ -1709,6 +1730,8 @@ WinHttpReadDataEx +@@ -1709,6 +1773,8 @@ WinHttpReadDataEx _In_reads_bytes_opt_(cbProperty) PVOID pvProperty ); @@ -190,7 +274,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1720,6 +1743,7 @@ WinHttpWriteData +@@ -1720,6 +1786,7 @@ WinHttpWriteData OUT LPDWORD lpdwNumberOfBytesWritten ); @@ -198,7 +282,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1730,6 +1754,7 @@ WinHttpQueryDataAvailable +@@ -1730,6 +1797,7 @@ WinHttpQueryDataAvailable ); _Success_(return != FALSE) @@ -206,7 +290,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1741,6 +1766,7 @@ WinHttpQueryOption +@@ -1741,6 +1809,7 @@ WinHttpQueryOption IN OUT LPDWORD lpdwBufferLength ); @@ -214,7 +298,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1767,6 +1793,7 @@ WinHttpSetOption +@@ -1767,6 +1836,7 @@ WinHttpSetOption _In_ DWORD dwBufferLength ); @@ -222,7 +306,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1778,6 +1805,7 @@ WinHttpSetTimeouts +@@ -1778,6 +1848,7 @@ WinHttpSetTimeouts IN int nSendTimeout, IN int nReceiveTimeout ); @@ -230,7 +314,7 @@ index ddcdcb38..f5702473 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1807,6 +1835,8 @@ WinHttpIsHostInProxyBypassList +@@ -1807,6 +1878,8 @@ WinHttpIsHostInProxyBypassList // prototypes // @@ -239,7 +323,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI HINTERNET WINAPI -@@ -1818,9 +1848,10 @@ WinHttpOpenRequest +@@ -1818,9 +1891,10 @@ WinHttpOpenRequest IN LPCWSTR pwszVersion, IN LPCWSTR pwszReferrer OPTIONAL, IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, @@ -251,7 +335,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1833,6 +1864,7 @@ WinHttpAddRequestHeaders +@@ -1833,6 +1907,7 @@ WinHttpAddRequestHeaders IN DWORD dwHeadersLength, IN DWORD dwModifiers ); @@ -259,7 +343,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD -@@ -1847,6 +1879,8 @@ WinHttpAddRequestHeadersEx +@@ -1847,6 +1922,8 @@ WinHttpAddRequestHeadersEx _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders ); @@ -268,7 +352,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1861,6 +1895,7 @@ WinHttpSendRequest +@@ -1861,6 +1938,7 @@ WinHttpSendRequest IN DWORD_PTR dwContext ); @@ -276,7 +360,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1881,6 +1916,7 @@ WinHttpSetCredentials +@@ -1881,6 +1959,7 @@ WinHttpSetCredentials IN LPVOID pAuthParams ); @@ -284,7 +368,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1891,6 +1927,7 @@ WinHttpQueryAuthSchemes +@@ -1891,6 +1970,7 @@ WinHttpQueryAuthSchemes OUT LPDWORD lpdwFirstScheme, // returns the first auth scheme returned by the server OUT LPDWORD pdwAuthTarget ); @@ -292,7 +376,7 @@ index ddcdcb38..f5702473 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1914,6 +1951,8 @@ WinHttpQueryAuthParams +@@ -1914,6 +1994,8 @@ WinHttpQueryAuthParams #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -301,7 +385,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1924,6 +1963,7 @@ WinHttpReceiveResponse +@@ -1924,6 +2006,7 @@ WinHttpReceiveResponse ); _Success_(return != FALSE) @@ -309,7 +393,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1936,6 +1976,7 @@ WinHttpQueryHeaders +@@ -1936,6 +2019,7 @@ WinHttpQueryHeaders IN OUT LPDWORD lpdwBufferLength, IN OUT LPDWORD lpdwIndex OPTIONAL ); @@ -317,7 +401,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD -@@ -1948,7 +1989,7 @@ WinHttpQueryHeadersEx +@@ -1948,7 +2032,7 @@ WinHttpQueryHeadersEx _In_ UINT uiCodePage, _Inout_opt_ PDWORD pdwIndex, _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, @@ -326,7 +410,7 @@ index ddcdcb38..f5702473 100644 _Inout_ PDWORD pdwBufferLength, _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER *ppHeaders, _Out_ PDWORD pdwHeadersCount -@@ -1979,6 +2020,8 @@ WinHttpFreeQueryConnectionGroupResult +@@ -1979,6 +2063,8 @@ WinHttpFreeQueryConnectionGroupResult #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -335,7 +419,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1988,6 +2031,7 @@ WinHttpDetectAutoProxyConfigUrl +@@ -1988,6 +2074,7 @@ WinHttpDetectAutoProxyConfigUrl _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl ); @@ -343,7 +427,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -1998,7 +2042,9 @@ WinHttpGetProxyForUrl +@@ -1998,7 +2085,9 @@ WinHttpGetProxyForUrl IN WINHTTP_AUTOPROXY_OPTIONS * pAutoProxyOptions, OUT WINHTTP_PROXY_INFO * pProxyInfo ); @@ -353,7 +437,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD WINAPI -@@ -2018,6 +2064,7 @@ WinHttpGetProxyForUrlEx +@@ -2018,6 +2107,7 @@ WinHttpGetProxyForUrlEx _In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, _In_opt_ DWORD_PTR pContext ); @@ -361,7 +445,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD -@@ -2032,6 +2079,7 @@ WinHttpGetProxyForUrlEx2 +@@ -2032,6 +2122,7 @@ WinHttpGetProxyForUrlEx2 _In_opt_ DWORD_PTR pContext ); @@ -369,7 +453,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD WINAPI -@@ -2050,6 +2098,7 @@ WinHttpGetProxyResultEx +@@ -2050,6 +2141,7 @@ WinHttpGetProxyResultEx _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -377,7 +461,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI VOID WINAPI -@@ -2066,6 +2115,7 @@ WinHttpFreeProxyResultEx +@@ -2066,6 +2158,7 @@ WinHttpFreeProxyResultEx _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -385,7 +469,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI DWORD WINAPI -@@ -2075,6 +2125,8 @@ WinHttpResetAutoProxy +@@ -2075,6 +2168,8 @@ WinHttpResetAutoProxy _In_ DWORD dwFlags ); @@ -394,7 +478,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI BOOL WINAPI -@@ -2181,6 +2233,8 @@ typedef struct _WINHTTP_WEB_SOCKET_STATUS +@@ -2181,6 +2276,8 @@ typedef struct _WINHTTP_WEB_SOCKET_STATUS #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 @@ -403,7 +487,7 @@ index ddcdcb38..f5702473 100644 WINHTTPAPI HINTERNET WINAPI -@@ -2246,6 +2300,7 @@ WinHttpWebSocketQueryCloseStatus +@@ -2246,6 +2343,7 @@ WinHttpWebSocketQueryCloseStatus _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength, _Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed ); @@ -411,7 +495,7 @@ index ddcdcb38..f5702473 100644 typedef enum _WINHTTP_PROTOCOL_OPERATION { -@@ -2509,6 +2564,54 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS +@@ -2509,6 +2607,24 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS @@ -431,36 +515,6 @@ index ddcdcb38..f5702473 100644 +#endif + + -+_Win32_FlagsEnum_(WINHTTP_OPEN_REQUEST_FLAGS, DWORD, -+ WINHTTP_FLAG_BYPASS_PROXY_CACHE, -+ WINHTTP_FLAG_ESCAPE_DISABLE, -+ WINHTTP_FLAG_ESCAPE_DISABLE_QUERY, -+ WINHTTP_FLAG_ESCAPE_PERCENT, -+ WINHTTP_FLAG_NULL_CODEPAGE, -+ WINHTTP_FLAG_REFRESH, -+ WINHTTP_FLAG_SECURE); -+ -+_Win32_Enum_(WIN_HTTP_CREATE_URL_FLAGS, DWORD, -+ ICU_ESCAPE, -+ ICU_REJECT_USERPWD, -+ ICU_DECODE); -+ -+_Win32_Enum_(WINHTTP_ACCESS_TYPE, DWORD, -+ WINHTTP_ACCESS_TYPE_NO_PROXY, -+ WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, -+ WINHTTP_ACCESS_TYPE_NAMED_PROXY, -+ WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY); -+ -+_Win32_Enum_(WINHTTP_CREDS_AUTHSCHEME, DWORD, -+ WINHTTP_AUTH_SCHEME_BASIC, -+ WINHTTP_AUTH_SCHEME_NTLM, -+ WINHTTP_AUTH_SCHEME_NEGOTIATE); -+ -+#ifdef WIN32METADATA -+typedef _WIN32META_ANNOTATION_("Enum(WINHTTP_INTERNET_SCHEME_HTTP, WINHTTP_INTERNET_SCHEME_HTTPS, WINHTTP_INTERNET_SCHEME_FTP, WINHTTP_INTERNET_SCHEME_SOCKS)", -+ INTERNET_SCHEME_HTTP, INTERNET_SCHEME_HTTPS, INTERNET_SCHEME_FTP, INTERNET_SCHEME_SOCKS) INTERNET_SCHEME WINHTTP_INTERNET_SCHEME; -+#endif -+ + + #if defined(__cplusplus) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index e405256fe..ba873bae9 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -9,6 +9,7 @@ using System.Reflection.PortableExecutable; using System.Security.Cryptography; using System.Text.Json; +using System.Text.RegularExpressions; using Xunit; using Xunit.Abstractions; using Xunit.Sdk; @@ -110,8 +111,18 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() Assert.Equal(new[] { @"um\winhttp.h.patch" }, patches.Where(path => Path.GetFileName(path).StartsWith("winhttp.", StringComparison.Ordinal))); Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, @"um\winhttp.h.patch"))); + string[] patchTexts = patches.Select(path => File.ReadAllText(Path.Combine(root, path)).Replace("\r\n", "\n")).ToArray(); + Assert.Equal(18, patchTexts.Sum(text => Regex.Matches(text, @"(?m)^\+_Win32_(?:FlagsEnum|Enum)_\(").Count)); + Assert.Equal(2, patchTexts.Sum(text => Regex.Matches(text, @"(?m)^\+typedef _WIN32META_ANNOTATION_\(""(?:FlagsEnum|Enum)\(").Count)); + foreach (string group in new[] { "WINHTTP_ACCESS_TYPE", "WINHTTP_CREDS_AUTHSCHEME", + "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "HEAPENTRY32_FLAGS" }) + Assert.Contains(patchTexts, text => text.Contains("+#ifdef WIN32METADATA\n+typedef DWORD " + group + ";\n+#endif\n", + StringComparison.Ordinal)); foreach (string patch in patches) + { Assert.DoesNotContain("_Windows_SupportedOS_", File.ReadAllText(Path.Combine(root, patch))); + Assert.DoesNotContain("WIN32METADATA_CSHARP", File.ReadAllText(Path.Combine(root, patch))); + } } [MigrationFact] diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 5ca2dab7e..3ba85f650 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -356,8 +356,9 @@ CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor child.Kind == CXCursorKind.CXCursor_AnnotateAttr) { string value = Text(child.Spelling); - if (value.StartsWith("SupportedOSPlatform(", StringComparison.Ordinal)) - annotations.Add(owner + name + "|" + value); + const string prefix = "Win32Metadata."; + if (value.StartsWith(prefix + "SupportedOSPlatform(", StringComparison.Ordinal)) + annotations.Add(owner + name + "|" + value.Substring(prefix.Length)); } if (child.IsDeclaration || child.IsTranslationUnit) Walk(child, childOwner); From 5df1154cabb7bd30990d2c9bcd96a27ebc114f30 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 15:12:02 -0700 Subject: [PATCH 32/57] Preserve compiler-projected type companions in pilot images Include each selected partition's header-types companion in overlays, repeat grades and provenance; reject incomplete or changing source closures. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 5 +- docs/winhttp-header-annotations.md | 7 +- scripts/Build-WinHttpMigrationImage.ps1 | 45 ++++-- .../MigrationImageComparisonTests.cs | 139 +++++++++++++++--- 4 files changed, 159 insertions(+), 37 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 9bbbcd743..8cb491e0e 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -243,7 +243,10 @@ a new emission or a fresh image grade. Use the existing selected scrape/full-source overlay loop where appropriate. `PartitionFilter` alone does not narrow constants, manual files or emission closure. Recompute complete constants and pointer discoveries, retaining -unselected inputs. Reject success-shaped partial images with dangling references. +unselected inputs. Include compiler-projected `partition.header-types.cs` +companions in selected overlays, repeat-input hashes and source provenance; +reject an orphan companion or a changed repeat source-file set. Reject +success-shaped partial images with dangling references. ## 5. Validate the actual output, not a proxy diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index d0d50815d..a03a54489 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -253,7 +253,9 @@ dotnet build BuildTools -c Release Use fresh output names; previous images and receipts must not be overwritten. The image builder verifies the frozen inputs and tools, reads the recipe's owner and affected-dependent partition list, and overlays their actual generated common -and architecture-specific sources onto the complete source closure. The isolated +and architecture-specific sources, including compiler-projected +`partition.header-types.cs` companions, onto the complete source closure. A +companion without its main partition source is an error. The isolated WinHttp recipe selected WinHttp/HttpServer; the expanded recipe also includes the playbook's additional owners and dependents. It recomputes constants with all partition inputs, preserves the other @@ -262,7 +264,8 @@ overwriting an existing consumer-fixture or selection directory. Each image gets a fresh selected scrape so prior aggregate discoveries cannot become configured remap authority. Before emission it forces a second normal SDK scrape with that selection's aggregate discovery present, requiring byte-identical selected C# -sources and pointer discoveries. The frozen discovery inputs must reproduce the +sources and pointer discoveries. Recompute the source-file set after that repeat, +so an added or removed companion cannot escape the grade. The frozen discovery inputs must reproduce the pinned complete pointer-fixup response file before the selected discoveries are overlaid. `PartitionFilter` alone is not a complete constants/manual/emission closure. Producer inputs must be committed before image generation and remain unchanged diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index 701b391ae..b38dd20cb 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -88,6 +88,31 @@ function Get-PointerReductions([IO.FileInfo[]]$Remaps) { return ,$reduce } +function Get-SelectedSources([string]$Obj, [string[]]$Partitions) { + foreach ($partition in $Partitions) { + $hasMainSource = $false + foreach ($architecture in @('common', 'x86', 'x64', 'arm64')) { + $relative = "$architecture\$partition.cs" + $companion = "$architecture\$partition.header-types.cs" + $hasMain = Test-Path -LiteralPath "$Obj\generated\$relative" -PathType Leaf + $hasCompanion = Test-Path -LiteralPath "$Obj\generated\$companion" -PathType Leaf + if ($hasCompanion -and !$hasMain) { + throw "A selected header-types companion has no main source: $companion" + } + if ($hasMain) { + $hasMainSource = $true + $relative + if ($hasCompanion) { + $companion + } + } + } + if (!$hasMainSource) { + throw "The selected scrape produced no source for $partition." + } + } +} + function Get-SelectedInputs([string]$Obj, [string[]]$Overlays) { $paths = @($Overlays | ForEach-Object { "$Obj\generated\$_" }) $paths += "$Obj\generated\scraper.autoRemaps.generated.rsp", "$Obj\generated\emitter.autoFnPtr.crossarch.generated.rsp" @@ -227,19 +252,7 @@ try { "-p:ObjDir=$selectedObj", "-p:PartitionFilter=$($partitions -join '%3B')", '-p:MaxProcessors=2', '-p:ScanArch=crossarch', '--no-restore', '--verbosity', 'minimal') Invoke-Dotnet $scrapeArguments "$OutputDirectory\scrape.log" - $overlays = @($partitions | ForEach-Object { - $partition = $_ - $sources = @(foreach ($architecture in @('common', 'x86', 'x64', 'arm64')) { - $relative = "$architecture\$partition.cs" - if (Test-Path -LiteralPath "$selectedObj\generated\$relative") { - $relative - } - }) - if (!$sources.Count) { - throw "The selected scrape produced no source for $partition." - } - $sources - }) + $overlays = @(Get-SelectedSources $selectedObj $partitions) $includeRoot = (Get-Content -LiteralPath "$selectedObj\prepared-sdk.txt" -Raw).Trim() $firstInputs = Get-SelectedInputs $selectedObj $overlays [IO.File]::WriteAllText("$OutputDirectory\first-selection.json", ($firstInputs | ConvertTo-Json -Depth 3), @@ -254,7 +267,11 @@ try { Remove-Item -LiteralPath $scrapeMarker } Invoke-Dotnet $scrapeArguments "$OutputDirectory\repeat-scrape.log" - $repeatedInputs = Get-SelectedInputs $selectedObj $overlays + $repeatedOverlays = @(Get-SelectedSources $selectedObj $partitions) + if (($overlays -join "`n") -cne ($repeatedOverlays -join "`n")) { + throw 'A repeated normal SDK scrape changed the selected source closure.' + } + $repeatedInputs = Get-SelectedInputs $selectedObj $repeatedOverlays [IO.File]::WriteAllText("$OutputDirectory\repeated-selection.json", ($repeatedInputs | ConvertTo-Json -Depth 3), [Text.UTF8Encoding]::new($false)) if (($firstInputs | ConvertTo-Json -Depth 3) -cne ($repeatedInputs | ConvertTo-Json -Depth 3)) { diff --git a/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs b/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs index 4f8faaa01..92fb9a784 100644 --- a/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs +++ b/tests/Win32MetadataScraperTests/MigrationImageComparisonTests.cs @@ -66,26 +66,7 @@ function dotnet { $result.arguments = $script:actualArguments $result | ConvertTo-Json -Depth 6 -Compress "; - var start = new ProcessStartInfo("pwsh") - { - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - WorkingDirectory = WinHttpMigrationTests.RepositoryRoot, - }; - foreach (string argument in new[] { "-NoProfile", "-NonInteractive", "-EncodedCommand", - Convert.ToBase64String(Encoding.Unicode.GetBytes(script)) }) - start.ArgumentList.Add(argument); - using var process = Process.Start(start); - var output = process.StandardOutput.ReadToEndAsync(); - var error = process.StandardError.ReadToEndAsync(); - if (!process.WaitForExit(60_000)) - { - process.Kill(entireProcessTree: true); - throw new TimeoutException("The image comparison regression did not finish."); - } - Assert.True(process.ExitCode == 0, error.GetAwaiter().GetResult() + output.GetAwaiter().GetResult()); - using var result = JsonDocument.Parse(output.GetAwaiter().GetResult()); + using var result = RunPowerShell(script); Assert.Equal(throws, result.RootElement.GetProperty("threw").GetBoolean()); string[] arguments = result.RootElement.GetProperty("arguments").EnumerateArray() .Select(value => value.GetString()).ToArray(); @@ -115,5 +96,123 @@ function dotnet { Directory.Delete(root, recursive: true); } } + + [Theory] + [InlineData("main")] + [InlineData("companions")] + [InlineData("orphan")] + [InlineData("missing")] + [InlineData("repeat-addition")] + public void SelectedSourceClosureIncludesAndRechecksHeaderTypeCompanions(string scenario) + { + string root = Path.Combine(Path.GetTempPath(), "WinmdSourceClosureTests-" + Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(root); + try + { + string[] files = scenario switch + { + "companions" => new[] { @"x64\WinHttp.cs", @"x64\WinHttp.header-types.cs", + @"common\Xinput.cs", @"common\Xinput.header-types.cs", @"common\Unselected.header-types.cs" }, + "orphan" => new[] { @"x64\WinHttp.header-types.cs" }, + "missing" => Array.Empty(), + _ => new[] { @"x64\WinHttp.cs" }, + }; + foreach (string relative in files.Concat(new[] { "scraper.autoRemaps.generated.rsp", "emitter.autoFnPtr.crossarch.generated.rsp" })) + { + string path = Path.Combine(root, "generated", relative); + Directory.CreateDirectory(Path.GetDirectoryName(path)); + File.WriteAllText(path, relative); + } + Directory.CreateDirectory(Path.Combine(root, "scratch")); + File.WriteAllText(Path.Combine(root, "scratch", "WinHttp.remaps"), "PRESERVE_PTR_LEVEL:fixture"); + string data = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonSerializer.Serialize(new + { + repo = WinHttpMigrationTests.RepositoryRoot, + directory = root, + scenario, + partitions = scenario == "companions" ? new[] { "WinHttp", "Xinput" } : new[] { "WinHttp" }, + }))); + string script = "$data = [Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('" + data + @"')) | ConvertFrom-Json +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version Latest +$tokens = $null; $errors = $null +$ast = [Management.Automation.Language.Parser]::ParseFile( + (Join-Path $data.repo 'scripts\Build-WinHttpMigrationImage.ps1'), [ref]$tokens, [ref]$errors) +if ($errors.Count) { throw ($errors.Message -join ""`n"") } +$definitions = @($ast.FindAll({ + param($node) + $node -is [Management.Automation.Language.FunctionDefinitionAst] -and + $node.Name -in @('Get-Sha256', 'Get-SelectedSources', 'Get-SelectedInputs') +}, $true)) +if ($definitions.Count -ne 3) { throw 'The actual source-closure functions were not found.' } +foreach ($definition in $definitions) { . ([scriptblock]::Create($definition.Extent.Text)) } +try { + $sources = @(Get-SelectedSources $data.directory $data.partitions) + $inputs = @(Get-SelectedInputs $data.directory $sources) + if ($data.scenario -eq 'repeat-addition') { + [IO.File]::WriteAllText((Join-Path $data.directory 'generated\x64\WinHttp.header-types.cs'), 'new compiler-projected group') + } + $repeated = @(Get-SelectedSources $data.directory $data.partitions) + $result = [ordered]@{ threw = $false; sources = $sources; inputs = $inputs; repeated = $repeated } +} +catch { + $result = [ordered]@{ threw = $true; error = $_.ToString() } +} +$result | ConvertTo-Json -Depth 6 -Compress +"; + using var result = RunPowerShell(script); + bool throws = scenario is "orphan" or "missing"; + Assert.Equal(throws, result.RootElement.GetProperty("threw").GetBoolean()); + if (throws) + { + Assert.Contains(scenario == "orphan" ? "companion has no main source" : "produced no source", + result.RootElement.GetProperty("error").GetString()); + } + else + { + string[] sources = result.RootElement.GetProperty("sources").EnumerateArray() + .Select(value => value.GetString()).ToArray(); + Assert.Equal(files.Where(path => !path.Contains("Unselected", StringComparison.Ordinal)), sources); + string[] inputs = result.RootElement.GetProperty("inputs").EnumerateArray() + .Select(value => value.GetProperty("path").GetString()).ToArray(); + Assert.Equal(sources.Length + 3, inputs.Length); + Assert.All(sources, source => Assert.Contains(Path.Combine("generated", source), inputs)); + string[] repeated = result.RootElement.GetProperty("repeated").EnumerateArray() + .Select(value => value.GetString()).ToArray(); + if (scenario == "repeat-addition") + Assert.Equal(sources.Concat(new[] { @"x64\WinHttp.header-types.cs" }), repeated); + else + Assert.Equal(sources, repeated); + } + } + finally + { + Directory.Delete(root, recursive: true); + } + } + + private static JsonDocument RunPowerShell(string script) + { + var start = new ProcessStartInfo("pwsh") + { + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + WorkingDirectory = WinHttpMigrationTests.RepositoryRoot, + }; + foreach (string argument in new[] { "-NoProfile", "-NonInteractive", "-EncodedCommand", + Convert.ToBase64String(Encoding.Unicode.GetBytes(script)) }) + start.ArgumentList.Add(argument); + using var process = Process.Start(start); + var output = process.StandardOutput.ReadToEndAsync(); + var error = process.StandardError.ReadToEndAsync(); + if (!process.WaitForExit(60_000)) + { + process.Kill(entireProcessTree: true); + throw new TimeoutException("The migration image regression did not finish."); + } + Assert.True(process.ExitCode == 0, error.GetAwaiter().GetResult() + output.GetAwaiter().GetResult()); + return JsonDocument.Parse(output.GetAwaiter().GetResult()); + } } } From b660cb324022572d9b05fdfedef48c78ff6dcdd9 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 15:43:00 -0700 Subject: [PATCH 33/57] Record source-bound local public-macro pilot grades Keep the current pilot CI and downloaded-image gate separate from the measured local 119-floor, 24-site and whole-physical controls. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 8cb491e0e..27f0cc938 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -614,6 +614,27 @@ Preparation and native controls are not final-image admission: the new image, 119-floor and physical-equivalence grades and exact-head CI must be recorded separately before publication is qualified. +Local producer `5df1154cabb7bd30990d2c9bcd96a27ebc114f30` emits the complete +pilot image, SHA256 +`7D63CE48046A6E4D759D206E0CF9493BAEBB97484FD32CE1735F0019BCEA6673`. +Its two selected scrapes reproduce all 25 main/companion sources and discovery +inputs byte-for-byte. The image preserves all 119 effective floors on all three +architectures, all 7,791 enum identities and all 37,314 physical types against +both the immutable accepted B9 and canonical-direct controls, without scope +normalization. The frozen-input tooling control is declaration-zero against OLD +and physically changes only the 39 previously measured constructor instance bits. + +The raw OLD comparison is still exactly 48 declaration differences at the 24 +existing native-integer/`AssociatedEnum` sites. There are no new API symbols, +logical groups or members. The 140 focused preparation, comparison, native and +physical-metadata cases and 14 integrity cases pass without skips, using the +complete 393-file diagnostic closure. The local receipt is +`artifacts\public-macro-adoption\locally-qualified-5df1154c.json`; it does not +claim the separate current pilot CI/downloaded-image gate. Exact published-head +CI and source-bound artifact qualification are recorded in draft PR #2365. +The prerequisite's direct-source CI `38966888753` is independently green at +`746d812dd15a93d77b24285708fd51727b293bba`, with zero image declaration changes. + ### Historical COM finding under the earlier policy The proposed SecurityCenter/WinSat conversions were excluded under the earlier, From 0fa2577df3639bf469aff0e9afac05d0c3c13421 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 18:48:40 -0700 Subject: [PATCH 34/57] Exercise property-storage source IDL in the annotation pilot Move the existing property fields, enum group, interface floors and enumerator result facts into one shipped propidlbase.idl patch. Bind both generated header owners to the immutable MIDL closure and cover missing outputs, unrelated dependencies, native contracts and exact physical targets. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 15 ++ docs/winhttp-header-annotations.md | 31 +++- .../Com.StructuredStorage/settings.rsp | 2 + generation/WinSDK/emitter.settings.rsp | 6 - generation/WinSDK/enums.json | 17 -- generation/WinSDK/patches/SdkHeaders.json | 32 ++++ .../WinSDK/patches/um/propidlbase.idl.patch | 67 +++++++ generation/WinSDK/supportedOS.rsp | 4 - scripts/Prepare-SdkHeaders.ps1 | 7 + .../PreparedSdkHeadersTests.cs | 107 +++++++++++ .../WinHttpMigrationTests.cs | 169 ++++++++++++++++-- .../WinHttpNativeControlTests.cs | 101 ++++++++++- 12 files changed, 509 insertions(+), 49 deletions(-) create mode 100644 generation/WinSDK/patches/um/propidlbase.idl.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 27f0cc938..372611f5c 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -77,6 +77,12 @@ post-MIDL annotation patches or patches on generated headers. Scraping and constants still consume one private root. Reject generated-header patches, unpinned imports, changed tools/preimages, failed generation and modified caches; never fall back to an old generated header. +Every admitted header whose source IDL participates in the MIDL input closure +must have its own pinned output, including an unpatched IDL that includes a +patched source. A shared declaration guard can otherwise make an unchanged +including header hide all of the regenerated base header's annotations. +Unrelated pinned IDL-backed dependencies outside that closure retain their mirror +bytes; this check does not expand the bounded regeneration scope. Run the selected C preprocessor with closed include paths and cleared ambient compiler options; hash its executable/engine and the SAL/helper scripts into the @@ -93,6 +99,15 @@ outputs and their hashes in the private cache. Keep warnings enabled and compare the exact diagnostic/target/payload multiset against unmodified-IDL regeneration, accounting only for source line shifts. Do not add native `[local]` attributes or suppress diagnostics to make an annotation compile. +For source-IDL methods that cannot legally carry native MIDL annotations, use +the shared `_Win32_AnnotateMethod_(Interface::Method, annotation)` helper after +the complete interface declarations. Keep related calls in an existing trailing +quote region. Do not place a bare annotation or documentation comment in +`cpp_quote` inside an interface: MIDL hoists it outside the method. Do not +change a remotable method to `[local]`. Even legal annotations on a local method +also decorate its generated proxy, so verify the actual target in final metadata. +Group interface forward carriers in an existing opening quote region to avoid +creating new compiler-generated standard-interface regions between interfaces. The same SDK stage copies its verified manifest and MIDL evidence to `obj\prepared-sdk-provenance\\` so existing generated-asset CI artifacts preserve actual compiler identities and closed inputs, not just an diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index a03a54489..ee75cd4e3 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -56,7 +56,7 @@ layers are not separate patch inputs. Patch filenames and diff targets use the SDK-relative artifact path, without stage directories. The package supplies `httprequest.idl`, not `httprequest.h`; the recipe separately pins the checked-in post-MIDL header and the identical selected-SDK IDL. WinHttp itself -needs no IDL patch or recompilation. In the expanded eleven-owner pilot, +needs no IDL patch or recompilation. In the original eleven-owner pilot, UpdateAssessment instead patches shipped `waasapi.idl` before private MIDL regeneration; see the [source-artifact audit and provenance](header-annotation-migration-playbook.md#pre-midl-source-adoption). @@ -87,6 +87,35 @@ transactional and serialized; a modified published cache is rejected, not repair while a scraper might be reading it. Unmodified files retain their exact bytes. The tracked SDK mirror is never an output. +The bounded Com.StructuredStorage addition patches only shipped +`um\propidlbase.idl`. Shipped `propidl.idl` includes that source and generates +another complete copy of its declarations. Both `PropIdl.h` and `PropIdlBase.h` +therefore regenerate from the same pinned closure; updating only the base header +would lose the annotations whenever the including header defines `_PROPIDLBASE_` +first. An admitted header in that MIDL input closure without its pinned output +is rejected instead of silently retaining its mirror copy. Unrelated pinned +IDL-backed dependencies, including `httprequest.h`, are not regenerated. + +This addition moves the existing `PROPSPEC_KIND` group and `PROPSPEC::ulKind` +relationship, the two existing `VARENUM` field relationships, four Windows 2000 +interface floors, and the four enumerator `Next`/`Skip` multiple-success facts. +It does not migrate other APIs in this partition or add structure OS floors. +`PRSPEC_INVALID` remains outside the two-member logical group, and `VARENUM` +remains owned by the Variant partition. + +The fields use MIDL `annotation(...)` while retaining their native `ULONG` and +`VARTYPE` declarations. Interface carriers share the existing opening quote +region. All four `_Win32_AnnotateMethod_` calls share the existing trailing quote +region after the complete interfaces: their compiled method references identify +the intended C++ declarations without copying a signature or annotating a proxy. +This handles the non-local `Skip` methods without changing RPC locality; direct +annotations on local `Next` would also reach generated proxy declarations. +Native SAL, `call_as` relationships, union branches and wire layouts remain +control inputs, not annotation targets. Generated documentation mappings and +global type-storage/namespace fixups remain derived or shared configuration. +Actual source/header/native/image qualification is recorded separately; the +earlier eleven-owner receipts do not qualify the expanded source. + Changing its identity invalidates the constants marker and every architecture's header-scrape marker before any consumer runs. An unchanged identity retains the markers. Namespace, diff --git a/generation/WinSDK/Partitions/Com.StructuredStorage/settings.rsp b/generation/WinSDK/Partitions/Com.StructuredStorage/settings.rsp index 97c3f694d..17a0bb45a 100644 --- a/generation/WinSDK/Partitions/Com.StructuredStorage/settings.rsp +++ b/generation/WinSDK/Partitions/Com.StructuredStorage/settings.rsp @@ -15,3 +15,5 @@ PMemoryAllocator=IMemoryAllocator /manual.h --namespace Windows.Win32.System.Com.StructuredStorage +--config +parse-win32-annotations diff --git a/generation/WinSDK/emitter.settings.rsp b/generation/WinSDK/emitter.settings.rsp index e70216580..b0f04d7da 100644 --- a/generation/WinSDK/emitter.settings.rsp +++ b/generation/WinSDK/emitter.settings.rsp @@ -443,14 +443,10 @@ IDirectorySearch::GetNextColumnName=[CanReturnMultipleSuccessValues] IEnumSpellingError::Next=[CanReturnMultipleSuccessValues] IEnumString::Next=[CanReturnMultipleSuccessValues] IEnumString::Skip=[CanReturnMultipleSuccessValues] -IEnumSTATPROPSTG::Next=[CanReturnMultipleSuccessValues] -IEnumSTATPROPSTG::Skip=[CanReturnMultipleSuccessValues] IEnumMoniker::Next=[CanReturnMultipleSuccessValues] IEnumMoniker::Skip=[CanReturnMultipleSuccessValues] IEnumWorkItems::Next=[CanReturnMultipleSuccessValues] IEnumWorkItems::Skip=[CanReturnMultipleSuccessValues] -IEnumSTATPROPSETSTG::Next=[CanReturnMultipleSuccessValues] -IEnumSTATPROPSETSTG::Skip=[CanReturnMultipleSuccessValues] IEnumVARIANT::Next=[CanReturnMultipleSuccessValues] IEnumVARIANT::Skip=[CanReturnMultipleSuccessValues] IEnumGUID::Next=[CanReturnMultipleSuccessValues] @@ -836,8 +832,6 @@ IDebugFormatter::GetStringForVarType::vt=VARENUM DBPROPINFO::vtType=VARENUM KAGREQDIAG::vt=VARENUM SHCOLUMNINFO::vt=VARENUM -PROPVARIANT::_Anonymous_e__Union::_Anonymous_e__Struct::vt=VARENUM -STATPROPSTG::vt=VARENUM TYPEDESC::vt=VARENUM PARAMDATA::vt=VARENUM METHODDATA::vtReturn=VARENUM diff --git a/generation/WinSDK/enums.json b/generation/WinSDK/enums.json index d6cf9896b..89397d19c 100644 --- a/generation/WinSDK/enums.json +++ b/generation/WinSDK/enums.json @@ -21145,23 +21145,6 @@ } ] }, - { - "name": "PROPSPEC_KIND", - "members": [ - { - "name": "PRSPEC_LPWSTR" - }, - { - "name": "PRSPEC_PROPID" - } - ], - "uses": [ - { - "struct": "PROPSPEC", - "field": "ulKind" - } - ] - }, { "name": "CLAIM_SECURITY_ATTRIBUTE_FLAGS", "flags": true, diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 6d1e32bca..a8fffc29c 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -76,6 +76,18 @@ "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapitypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" }, + { + "path": "um\\PropIdlBase.h", + "sourceSha256": "D5F5F8E552BE2D9E7313CA0D4522B02A071ADCA0507642299A2D2293CFBBDD01", + "sdkPath": "c\\include\\10.0.26100.0\\um\\propidlbase.idl", + "sdkSha256": "0C7803172E592422CB636DD6E6224F61381CD3D1E043041D0A94854A0C51252C" + }, + { + "path": "um\\PropIdl.h", + "sourceSha256": "8B76E3D535F092F914F8B82B020318AEC557049E98A6C327419321873868FCE7", + "sdkPath": "c\\include\\10.0.26100.0\\um\\propidl.idl", + "sdkSha256": "6F81BD32D2160425665A7EFB79C16D8FF327BFE0F070E4F2E7DED05817409A6A" + }, { "path": "um\\wslapi.h", "sourceSha256": "8FC3666F77C58986F0F6E8427536F4AE301239C8C31844117ED22162EB6D5D49", @@ -115,6 +127,16 @@ "sdkPath": "c\\include\\10.0.26100.0\\um\\WaaSAPITypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" }, + { + "path": "um\\propidlbase.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\propidlbase.idl", + "sdkSha256": "0C7803172E592422CB636DD6E6224F61381CD3D1E043041D0A94854A0C51252C" + }, + { + "path": "um\\propidl.idl", + "sdkPath": "c\\include\\10.0.26100.0\\um\\propidl.idl", + "sdkSha256": "6F81BD32D2160425665A7EFB79C16D8FF327BFE0F070E4F2E7DED05817409A6A" + }, { "path": "um\\oaidl.idl", "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.idl", @@ -174,6 +196,14 @@ { "source": "um\\waasapi.idl", "path": "um\\waasapi.h" + }, + { + "source": "um\\propidlbase.idl", + "path": "um\\PropIdlBase.h" + }, + { + "source": "um\\propidl.idl", + "path": "um\\PropIdl.h" } ] }, @@ -191,11 +221,13 @@ "Ual", "ToolHelp", "UpdateAssessment", + "Com.StructuredStorage", "Wsl", "Xinput" ], "patches": [ "um\\waasapi.idl.patch", + "um\\propidlbase.idl.patch", "um\\winhttp.h.patch", "um\\windowsceip.h.patch", "um\\avrfsdk.h.patch", diff --git a/generation/WinSDK/patches/um/propidlbase.idl.patch b/generation/WinSDK/patches/um/propidlbase.idl.patch new file mode 100644 index 000000000..2ff36b00b --- /dev/null +++ b/generation/WinSDK/patches/um/propidlbase.idl.patch @@ -0,0 +1,67 @@ +diff --git a/um/propidlbase.idl b/um/propidlbase.idl +index ad551dd7..88be6d94 100644 +--- a/um/propidlbase.idl ++++ b/um/propidlbase.idl +@@ -1,4 +1,6 @@ + cpp_quote("#include ") ++#include ++cpp_quote("#include ") + + //+--------------------------------------------------------------------------- + // +@@ -44,6 +46,11 @@ cpp_quote("#ifndef _PROPIDLBASE_") + #pragma region Application Family or OneCore Family or Games Family + cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)") + ++_Win32_AnnotateInterface_(IPropertyStorage, _Win32_SupportedOS_Windows2000_) ++_Win32_AnnotateInterface_(IPropertySetStorage, _Win32_SupportedOS_Windows2000_) ++_Win32_AnnotateInterface_(IEnumSTATPROPSTG, _Win32_SupportedOS_Windows2000_) ++_Win32_AnnotateInterface_(IEnumSTATPROPSETSTG, _Win32_SupportedOS_Windows2000_) ++ + interface IPropertyStorage; + interface IEnumSTATPROPSTG; + interface IEnumSTATPROPSETSTG; +@@ -159,7 +166,7 @@ cpp_quote(" union {") + cpp_quote("#endif") + struct tag_inner_PROPVARIANT + { +- VARTYPE vt; ++ [annotation("_Win32_AssociatedEnum_(VARENUM)")] VARTYPE vt; + PROPVAR_PAD1 wReserved1; + PROPVAR_PAD2 wReserved2; + PROPVAR_PAD3 wReserved3; +@@ -323,10 +330,12 @@ const ULONG PRSPEC_INVALID = 0xffffffff; + const ULONG PRSPEC_LPWSTR = 0; + const ULONG PRSPEC_PROPID = 1; + ++cpp_quote("_Win32_Enum_(PROPSPEC_KIND, ULONG, PRSPEC_LPWSTR, PRSPEC_PROPID);") ++ + typedef struct tagPROPSPEC + { + +- ULONG ulKind; ++ [annotation("_Win32_AssociatedEnum_(PROPSPEC_KIND)")] ULONG ulKind; + [switch_is(ulKind)] union + { + [case(PRSPEC_PROPID)] +@@ -343,7 +352,7 @@ typedef struct tagSTATPROPSTG + + LPOLESTR lpwstrName; + PROPID propid; +- VARTYPE vt; ++ [annotation("_Win32_AssociatedEnum_(VARENUM)")] VARTYPE vt; + + } STATPROPSTG; + +@@ -617,6 +626,11 @@ interface IEnumSTATPROPSETSTG : IUnknown + + typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE; + ++_Win32_AnnotateMethod_(IEnumSTATPROPSTG::Next, _Win32_PreserveResult_) ++_Win32_AnnotateMethod_(IEnumSTATPROPSTG::Skip, _Win32_PreserveResult_) ++_Win32_AnnotateMethod_(IEnumSTATPROPSETSTG::Next, _Win32_PreserveResult_) ++_Win32_AnnotateMethod_(IEnumSTATPROPSETSTG::Skip, _Win32_PreserveResult_) ++ + cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */") + #pragma endregion + cpp_quote("") diff --git a/generation/WinSDK/supportedOS.rsp b/generation/WinSDK/supportedOS.rsp index 5dd79f940..6f8041892 100644 --- a/generation/WinSDK/supportedOS.rsp +++ b/generation/WinSDK/supportedOS.rsp @@ -7822,10 +7822,6 @@ StgPropertyLengthAsVariant=SupportedOSPlatform("windows5.0") PropVariantInit=SupportedOSPlatform("windows5.0") StgConvertPropertyToVariant=SupportedOSPlatform("windows5.0") StgConvertVariantToProperty=SupportedOSPlatform("windows5.0") -IEnumSTATPROPSETSTG=SupportedOSPlatform("windows5.0") -IEnumSTATPROPSTG=SupportedOSPlatform("windows5.0") -IPropertySetStorage=SupportedOSPlatform("windows5.0") -IPropertyStorage=SupportedOSPlatform("windows5.0") DEFINE_PROPERTYKEY=SupportedOSPlatform("windows6.0.6000") IsEqualPropertyKey=SupportedOSPlatform("windows6.0.6000") PropVariantToWinRTPropertyValue=SupportedOSPlatform("windows8.0") diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index cca42d214..75ff240ea 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -293,6 +293,13 @@ if ($hasMidl) { @($config.midl.outputs.path | Sort-Object -Unique).Count -ne $config.midl.outputs.Count) { throw 'MIDL outputs must be nonempty and contain no duplicate headers.' } + foreach ($header in $config.headers | Where-Object { + [IO.Path]::GetExtension($_.sdkPath) -eq '.idl' -and $_.sdkPath -in $midlInputs.sdkPath + }) { + if (@($config.midl.outputs | Where-Object path -eq $header.path).Count -ne 1) { + throw "A header in the admitted MIDL input closure must have one pinned MIDL output: $($header.path)" + } + } $midlTools = @($config.midl.tools | ForEach-Object { $path = Resolve-Child $SdkPackageRoot $_.sdkPath if ((Get-Sha256 $path) -ne $_.sha256) { diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 0987066c7..3359cf7b8 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -285,6 +285,65 @@ public void PreMidlRegenerationPreservesSalImportsSourcesAndRepeatBytes() Assert.Contains("/X", commands); } + [Fact] + public void IncludedIdlPatchRegeneratesBothOriginalArtifactOwners() + { + using var fixture = new Fixture(); + fixture.EnableIncludedMidl(); + byte[] original = File.ReadAllBytes(fixture.MidlInput); + var prepared = fixture.Prepare(); + foreach (string name in new[] { "generated", "including" }) + { + string header = File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", name + ".h")); + Assert.Contains("#define IDL_VALUE 2", header); + Assert.Contains("_Out_", header); + Assert.Contains("_Win32_Retval_", header); + } + using var inputs = JsonDocument.Parse(File.ReadAllText(Path.Combine(Path.GetDirectoryName(prepared.IncludeRoot), + "midl", "preprocessed-inputs.json"))); + Assert.Equal(new[] { @"um\dependency.idl", @"um\generated.idl", @"um\including.idl" }, + inputs.RootElement.EnumerateArray().Select(value => value.GetString())); + Assert.Equal(original, File.ReadAllBytes(fixture.MidlInput)); + Assert.True(fixture.Prepare().Reused); + var repeated = fixture.Prepare(outputRoot: fixture.Output + "-repeat"); + Assert.False(repeated.Reused); + Assert.Equal(prepared.Identity, repeated.Identity); + foreach (string name in new[] { "generated", "including", "dependency" }) + Assert.Equal(File.ReadAllBytes(Path.Combine(prepared.IncludeRoot, "um", name + ".h")), + File.ReadAllBytes(Path.Combine(repeated.IncludeRoot, "um", name + ".h"))); + } + + [Fact] + public void HeaderInTheMidlInputClosureCannotFallBackToItsMirrorWhenItsOutputIsMissing() + { + using var fixture = new Fixture(); + fixture.EnableIncludedMidl(); + fixture.MutateRecipe(recipe => recipe["midl"]["outputs"].AsArray().RemoveAt(2)); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("A header in the admitted MIDL input closure must have one pinned MIDL output: um\\including.h", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + + [Fact] + public void UnrelatedIdlBackedHeaderRetainsItsPinnedMirrorWithoutExpandingTheMidlClosure() + { + using var fixture = new Fixture(); + fixture.EnableMidl(); + byte[] original = fixture.AddUnrelatedIdlBackedHeader(); + var prepared = fixture.Prepare(); + string header = Path.Combine(prepared.IncludeRoot, "um", "unrelated.h"); + Assert.Equal(original, File.ReadAllBytes(header)); + using var inputs = JsonDocument.Parse(File.ReadAllText(Path.Combine(Path.GetDirectoryName(prepared.IncludeRoot), + "midl", "preprocessed-inputs.json"))); + Assert.Equal(new[] { @"um\dependency.idl", @"um\generated.idl" }, + inputs.RootElement.EnumerateArray().Select(value => value.GetString())); + Assert.True(fixture.Prepare().Reused); + var repeated = fixture.Prepare(outputRoot: fixture.Output + "-repeat"); + Assert.Equal(prepared.Identity, repeated.Identity); + Assert.Equal(original, File.ReadAllBytes(Path.Combine(repeated.IncludeRoot, "um", "unrelated.h"))); + } + [Fact] public void SourcePinnedAnnotationHeaderAndMidlDefinesReachTheActualPreprocessor() { @@ -714,6 +773,54 @@ internal void EnableMidlAnnotationHeader() }); } + internal void EnableIncludedMidl() + { + EnableMidl(); + const string input = "#include \"generated.idl\"\r\n"; + const string preimage = "/* File created by MIDL compiler */\r\n"; + string path = Path.Combine(this.sdk, "c", "include", "um", "including.idl"); + File.WriteAllText(path, input, new UTF8Encoding(false)); + File.WriteAllText(Path.Combine(this.source, "um", "including.h"), preimage, new UTF8Encoding(false)); + MutateRecipe(recipe => + { + recipe["headers"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"um\including.h", + sourceSha256 = Hash(Encoding.UTF8.GetBytes(preimage)), + sdkPath = @"c\include\um\including.idl", + sdkSha256 = Hash(File.ReadAllBytes(path)), + })); + recipe["midl"]["inputs"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"um\including.idl", + sdkPath = @"c\include\um\including.idl", + sdkSha256 = Hash(File.ReadAllBytes(path)), + })); + recipe["midl"]["outputs"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + source = @"um\including.idl", + path = @"um\including.h", + })); + }); + } + + internal byte[] AddUnrelatedIdlBackedHeader() + { + string input = Path.Combine(this.sdk, "c", "include", "um", "unrelated.idl"); + const string idl = "typedef long UNRELATED;\r\n"; + byte[] header = Encoding.ASCII.GetBytes("/* File created by MIDL compiler */\r\ntypedef long UNRELATED;\r\n"); + File.WriteAllText(input, idl, new UTF8Encoding(false)); + File.WriteAllBytes(Path.Combine(this.source, "um", "unrelated.h"), header); + MutateRecipe(recipe => recipe["headers"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"um\unrelated.h", + sourceSha256 = Hash(header), + sdkPath = @"c\include\um\unrelated.idl", + sdkSha256 = Hash(File.ReadAllBytes(input)), + }))); + return header; + } + internal void MutateRecipe(Action mutate) { var recipe = JsonNode.Parse(File.ReadAllText(this.recipe)).AsObject(); diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index ba873bae9..696be5490 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -19,6 +19,7 @@ namespace Win32MetadataScraperTests public class WinHttpMigrationTests { internal const string WinHttpNamespace = "Windows.Win32.Networking.WinHttp"; + private const string PropertyStorageNamespace = "Windows.Win32.System.Com.StructuredStorage"; private const string MetadataNamespace = "Windows.Win32.Foundation.Metadata"; private readonly ITestOutputHelper output; private static readonly SignatureNames Signatures = new SignatureNames(); @@ -54,6 +55,13 @@ private static readonly (string Owner, string Member, string Enum, string Native new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_KEYSTROKE", "VirtualKey", "XINPUT_VIRTUAL_KEY", "UInt16"), new EnumUse("Windows.Win32.UI.Input.XboxController", "XINPUT_KEYSTROKE", "Flags", "XINPUT_KEYSTROKE_FLAGS", "UInt16"), }).ToArray(); + private static readonly EnumUse[] PropertyStorageEnumUses = + { + new EnumUse(PropertyStorageNamespace, "PROPSPEC", "ulKind", "PROPSPEC_KIND", "UInt32"), + new EnumUse(PropertyStorageNamespace, "STATPROPSTG", "vt", "VARENUM", "UInt16", "Windows.Win32.System.Variant"), + new EnumUse(PropertyStorageNamespace, "PROPVARIANT+_Anonymous_e__Union+_Anonymous_e__Struct", "vt", + "VARENUM", "UInt16", "Windows.Win32.System.Variant"), + }; private static readonly string[] AdditionalOwnedMethods = { "CeipIsOptedIn", @@ -113,6 +121,8 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, @"um\winhttp.h.patch"))); string[] patchTexts = patches.Select(path => File.ReadAllText(Path.Combine(root, path)).Replace("\r\n", "\n")).ToArray(); Assert.Equal(18, patchTexts.Sum(text => Regex.Matches(text, @"(?m)^\+_Win32_(?:FlagsEnum|Enum)_\(").Count)); + Assert.Single(patchTexts.Where(text => text.Contains( + "+cpp_quote(\"_Win32_Enum_(PROPSPEC_KIND, ULONG, PRSPEC_LPWSTR, PRSPEC_PROPID);\")", StringComparison.Ordinal))); Assert.Equal(2, patchTexts.Sum(text => Regex.Matches(text, @"(?m)^\+typedef _WIN32META_ANNOTATION_\(""(?:FlagsEnum|Enum)\(").Count)); foreach (string group in new[] { "WINHTTP_ACCESS_TYPE", "WINHTTP_CREDS_AUTHSCHEME", "CREATE_TOOLHELP_SNAPSHOT_FLAGS", "HEAPENTRY32_FLAGS" }) @@ -143,6 +153,124 @@ public void RegeneratedAssessorKeepsItsSingleTypeFloorWithoutMethodInheritance() } } + [Fact] + public void PropertyStorageIdlFactsHaveOneOriginalArtifactAndNoSemanticFallback() + { + string project = Path.Combine(RepositoryRoot, "generation", "WinSDK"); + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(project, "patches", "SdkHeaders.json"))); + var patches = recipe.RootElement.GetProperty("patches").EnumerateArray().Select(value => value.GetString()).ToArray(); + Assert.Equal(new[] { @"um\propidlbase.idl.patch" }, + patches.Where(path => Path.GetFileName(path).StartsWith("propidl", StringComparison.OrdinalIgnoreCase))); + foreach (var pair in new[] { ("propidlbase.idl", "PropIdlBase.h"), ("propidl.idl", "PropIdl.h") }) + { + var output = recipe.RootElement.GetProperty("midl").GetProperty("outputs").EnumerateArray() + .Single(value => value.GetProperty("source").GetString() == @"um\" + pair.Item1); + Assert.Equal(@"um\" + pair.Item2, output.GetProperty("path").GetString()); + } + string emitter = File.ReadAllText(Path.Combine(project, "emitter.settings.rsp")); + string os = File.ReadAllText(Path.Combine(project, "supportedOS.rsp")); + foreach (string name in new[] { "IPropertyStorage", "IPropertySetStorage", "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) + Assert.DoesNotContain(name + "=", os); + foreach (string name in new[] { "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) + foreach (string method in new[] { "Next", "Skip" }) + Assert.DoesNotContain(name + "::" + method + "=", emitter); + Assert.DoesNotContain("PROPVARIANT::_Anonymous_e__Union::_Anonymous_e__Struct::vt=", emitter); + Assert.DoesNotContain("STATPROPSTG::vt=", emitter); + using var enums = JsonDocument.Parse(File.ReadAllText(Path.Combine(project, "enums.json"))); + Assert.DoesNotContain(enums.RootElement.GetProperty("items").EnumerateArray(), + item => item.TryGetProperty("name", out var name) && name.GetString() == "PROPSPEC_KIND"); + Assert.Contains("parse-win32-annotations", + File.ReadAllText(Path.Combine(project, "Partitions", "Com.StructuredStorage", "settings.rsp"))); + + string patch = File.ReadAllText(Path.Combine(project, "patches", @"um\propidlbase.idl.patch")); + Assert.Contains("+cpp_quote(\"_Win32_Enum_(PROPSPEC_KIND, ULONG, PRSPEC_LPWSTR, PRSPEC_PROPID);\")", patch); + Assert.Equal(4, Regex.Matches(patch, @"(?m)^\+_Win32_AnnotateInterface_\(").Count); + Assert.Equal(4, Regex.Matches(patch, @"(?m)^\+_Win32_AnnotateMethod_\(").Count); + Assert.DoesNotContain("+ [local", patch); + Assert.DoesNotContain("_Win32_SupportedOS_BEGIN_", patch); + Assert.DoesNotContain("PRSPEC_INVALID);", patch); + Assert.Contains("VARIANT::_Anonymous_e__Union::_Anonymous_e__Struct::vt=VARENUM", emitter); + Assert.Contains("IEnumString::Next=[CanReturnMultipleSuccessValues]", emitter); + Assert.Contains("PropVariantInit=SupportedOSPlatform(\"windows5.0\")", os); + } + + [MigrationTheory] + [InlineData(1)] + [InlineData(2)] + [InlineData(4)] + public void SourceIdlPropertyStorageFactsReachOnlyTheirExistingPhysicalTargets(int architecture) + { + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var current = Open("WINHTTP_MIGRATION_NEW"); + foreach (string name in new[] { "IPropertyStorage", "IPropertySetStorage", "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) + { + var before = Find(old.Reader, PropertyStorageNamespace + "." + name); + var after = Find(current.Reader, PropertyStorageNamespace + "." + name); + Assert.Equal(SnapshotType(old.Reader, before), SnapshotType(current.Reader, after)); + Assert.Equal(new[] { "windows5.0" }, + AttributeValues(current.Reader, after.GetCustomAttributes(), "SupportedOSPlatformAttribute")); + foreach (var method in after.GetMethods().Select(current.Reader.GetMethodDefinition)) + { + string methodName = current.Reader.GetString(method.Name); + Assert.Empty(AttributeValues(current.Reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute")); + bool preserve = name.StartsWith("IEnum", StringComparison.Ordinal) && (methodName == "Next" || methodName == "Skip"); + Assert.Equal(preserve ? 1 : 0, + method.GetCustomAttributes().Count(handle => AttributeName(current.Reader, handle) == "CanReturnMultipleSuccessValuesAttribute")); + } + } + var group = Find(current.Reader, PropertyStorageNamespace + ".PROPSPEC_KIND"); + Assert.Equal(SnapshotType(old.Reader, Find(old.Reader, PropertyStorageNamespace + ".PROPSPEC_KIND")), + SnapshotType(current.Reader, group)); + var values = group.GetFields().Select(current.Reader.GetFieldDefinition).Where(field => !field.GetDefaultValue().IsNil) + .Select(field => current.Reader.GetString(field.Name) + "=" + + current.Reader.GetBlobReader(current.Reader.GetConstant(field.GetDefaultValue()).Value).ReadUInt32()); + Assert.Equal(new[] { "PRSPEC_LPWSTR=0", "PRSPEC_PROPID=1" }, values); + foreach (var use in PropertyStorageEnumUses) + { + var beforeType = Find(old.Reader, use.Namespace + "." + use.Owner); + var afterType = Find(current.Reader, use.Namespace + "." + use.Owner); + var before = beforeType.GetFields().Select(old.Reader.GetFieldDefinition) + .Single(field => old.Reader.GetString(field.Name) == use.Member); + var after = afterType.GetFields().Select(current.Reader.GetFieldDefinition) + .Single(field => current.Reader.GetString(field.Name) == use.Member); + Assert.Equal(use.OldType, before.DecodeSignature(Signatures, null)); + Assert.Equal(use.Native, after.DecodeSignature(Signatures, null)); + Assert.Empty(AttributeValues(old.Reader, before.GetCustomAttributes(), "AssociatedEnumAttribute")); + Assert.Equal(new[] { use.Enum }, AttributeValues(current.Reader, after.GetCustomAttributes(), "AssociatedEnumAttribute")); + Assert.Equal(before.Attributes, after.Attributes); + Assert.Equal(before.GetOffset(), after.GetOffset()); + Assert.Equal(beforeType.Attributes, afterType.Attributes); + Assert.Equal(beforeType.GetLayout().PackingSize, afterType.GetLayout().PackingSize); + Assert.Equal(beforeType.GetLayout().Size, afterType.GetLayout().Size); + Assert.Equal(FieldAttributes(old.Reader, before), FieldAttributes(current.Reader, after)); + } + foreach (string name in new[] { "STATPROPSETSTG", "VERSIONEDSTREAM" }) + Assert.Equal(SnapshotType(old.Reader, Find(old.Reader, PropertyStorageNamespace + "." + name)), + SnapshotType(current.Reader, Find(current.Reader, PropertyStorageNamespace + "." + name))); + this.output.WriteLine($"Architecture {architecture}: four unchanged type-only floors and method contracts, " + + "one unchanged two-member enum, and exactly three native-storage/AssociatedEnum field uses."); + + TypeDefinition Find(MetadataReader reader, string name) => reader.TypeDefinitions.Select(reader.GetTypeDefinition) + .Single(type => (type.GetDeclaringType().IsNil ? reader.GetString(type.Namespace) + "." + reader.GetString(type.Name) : + FullName(reader, type.GetDeclaringType()) + "+" + reader.GetString(type.Name)) == name && Applies(reader, type)); + + bool Applies(MetadataReader reader, TypeDefinition type) + { + while (true) + { + if (!Supports(reader, type.GetCustomAttributes(), architecture)) return false; + if (type.GetDeclaringType().IsNil) return true; + type = reader.GetTypeDefinition(type.GetDeclaringType()); + } + } + + string[] FieldAttributes(MetadataReader reader, FieldDefinition field) => field.GetCustomAttributes() + .Where(handle => AttributeName(reader, handle) != "AssociatedEnumAttribute") + .Select(handle => AttributeTypeName(reader, handle) + ":" + + Convert.ToHexString(reader.GetBlobBytes(reader.GetCustomAttribute(handle).Value))) + .OrderBy(value => value, StringComparer.Ordinal).ToArray(); + } + [MigrationTheory] [InlineData(1)] [InlineData(2)] @@ -239,35 +367,37 @@ public void EveryPhysicalTypeHasOnlyReviewedEnumUseSiteChanges() int unchanged = 0; foreach (var entry in before) { - string expected = SnapshotType(control.Reader, entry.Value, normalizeReviewedEnumUses: true, usedEnumSites: used); + string expected = SnapshotType(control.Reader, entry.Value, normalizeReviewedEnumUses: true, + usedEnumSites: used, normalizePropertyStorageEnumUses: true); string actual = SnapshotType(current.Reader, after[entry.Key]); Assert.True(expected == actual, $"Unexpected physical metadata change in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); unchanged += SnapshotType(control.Reader, entry.Value) == actual ? 1 : 0; } - Assert.Equal(ReviewedEnumUses.Select(value => value.Site).OrderBy(value => value), used.OrderBy(value => value)); + Assert.Equal(ReviewedEnumUses.Concat(PropertyStorageEnumUses).Select(value => value.Site).OrderBy(value => value), + used.OrderBy(value => value)); this.output.WriteLine($"All {before.Count} physical types graded: {unchanged} unchanged; only {used.Count} exact native-type/AssociatedEnum sites normalized."); } [MigrationFact("WINHTTP_MIGRATION_ACCEPTED")] - public void ScopedSupportedOSPreservesEveryAcceptedPhysicalType() + public void ExpandedPilotPreservesAcceptedScopeFactsExceptThreeSourceIdlFieldUses() { string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_ACCEPTED"); Assert.Equal("A0C321735141D55C98BCD7D048F822AAA0DA1D9434309ABA1782F79C220773BB", Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); using var accepted = Open("WINHTTP_MIGRATION_ACCEPTED"); using var current = Open("WINHTTP_MIGRATION_NEW"); - AssertEveryPhysicalTypeUnchanged(accepted.Reader, current.Reader, "accepted B9"); + AssertOnlyPropertyStorageFieldTransitions(accepted.Reader, current.Reader, "accepted B9"); } [MigrationFact("WINHTTP_MIGRATION_DIRECT_CONTROL")] - public void ScopedSupportedOSPreservesEveryMatchedDirectPhysicalType() + public void ExpandedPilotPreservesMatchedDirectScopeFactsExceptThreeSourceIdlFieldUses() { string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_DIRECT_CONTROL"); Assert.Equal("AA7B0D71E535787D2A5B623F8B144AEDCF66A464F1E769C7ADC56CF83EA2EE43", Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); using var direct = Open("WINHTTP_MIGRATION_DIRECT_CONTROL"); using var current = Open("WINHTTP_MIGRATION_NEW"); - AssertEveryPhysicalTypeUnchanged(direct.Reader, current.Reader, "matched canonical-direct control"); + AssertOnlyPropertyStorageFieldTransitions(direct.Reader, current.Reader, "matched canonical-direct control"); } [MigrationTheory] @@ -679,24 +809,28 @@ internal static string[] SnapshotNamespace(MetadataReader reader, string ns) .Select(reader.GetTypeDefinition) .Select(type => SnapshotType(reader, type)).OrderBy(value => value, StringComparer.Ordinal).ToArray(); - private void AssertEveryPhysicalTypeUnchanged(MetadataReader expectedReader, MetadataReader actualReader, string baseline) + private void AssertOnlyPropertyStorageFieldTransitions(MetadataReader expectedReader, MetadataReader actualReader, string baseline) { var before = Types(expectedReader); var after = Types(actualReader); + var used = new HashSet(StringComparer.Ordinal); Assert.Equal(37314, before.Count); Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); foreach (var entry in before) { - string expected = SnapshotType(expectedReader, entry.Value); + string expected = SnapshotType(expectedReader, entry.Value, + usedEnumSites: used, normalizePropertyStorageEnumUses: true); string actual = SnapshotType(actualReader, after[entry.Key]); Assert.True(expected == actual, - $"Scoped SupportedOS changed {baseline} metadata in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); + $"Unexpected expanded-pilot change against {baseline} in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); } - this.output.WriteLine($"All {before.Count} {baseline} physical types unchanged; no scope-adoption normalization or allowances."); + Assert.Equal(PropertyStorageEnumUses.Select(value => value.Site).OrderBy(value => value), used.OrderBy(value => value)); + this.output.WriteLine($"All {before.Count} {baseline} physical types graded: zero scope-adoption changes, " + + "only the three separately asserted source-IDL native-storage/AssociatedEnum field transitions."); } internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false, - bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null) + bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null, bool normalizePropertyStorageEnumUses = false) { string Attributes(CustomAttributeHandleCollection values, string associatedEnum = null) { @@ -716,7 +850,10 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum string Blob(BlobHandle blob) => blob.IsNil ? "" : Convert.ToHexString(reader.GetBlobBytes(blob)); string ns = reader.GetString(type.Namespace); string typeName = reader.GetString(type.Name); - var uses = normalizeReviewedEnumUses ? ReviewedEnumUses.Where(value => value.Namespace == ns).ToArray() : Array.Empty(); + string fullTypeName = type.GetDeclaringType().IsNil ? ns + "." + typeName : + FullName(reader, type.GetDeclaringType()) + "+" + typeName; + var uses = (normalizeReviewedEnumUses ? ReviewedEnumUses : Array.Empty()) + .Concat(normalizePropertyStorageEnumUses ? PropertyStorageEnumUses : Array.Empty()).ToArray(); var rows = new List { reader.GetString(type.Namespace) + "." + reader.GetString(type.Name), @@ -733,7 +870,7 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum var field = reader.GetFieldDefinition(handle); string name = reader.GetString(field.Name); string fieldType = field.DecodeSignature(Signatures, null); - var use = uses.SingleOrDefault(value => value.Owner == typeName && value.Member == name); + var use = uses.SingleOrDefault(value => value.Namespace + "." + value.Owner == fullTypeName && value.Member == name); if (use != null) { Assert.Equal(use.OldType, fieldType); @@ -753,7 +890,7 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum var parameters = method.GetParameters().Select(reader.GetParameter).ToArray(); var parameterTypes = signature.ParameterTypes.ToArray(); var parameterEnums = new Dictionary(); - foreach (var use in uses.Where(value => typeName == "Apis" && value.Owner == methodName)) + foreach (var use in uses.Where(value => typeName == "Apis" && value.Namespace == ns && value.Owner == methodName)) { var parameter = parameters.Single(value => reader.GetString(value.Name) == use.Member); Assert.True(parameter.SequenceNumber > 0); @@ -877,10 +1014,10 @@ private static string Signature(MethodSignature signature, int? header = => $"{header ?? signature.Header.RawValue}|{signature.GenericParameterCount}|{signature.RequiredParameterCount}|{signature.ReturnType}|" + string.Join(",", parameterTypes ?? signature.ParameterTypes); - private sealed record EnumUse(string Namespace, string Owner, string Member, string Enum, string Native) + private sealed record EnumUse(string Namespace, string Owner, string Member, string Enum, string Native, string EnumNamespace = null) { internal string Site => Namespace + "." + Owner + "::" + Member; - internal string OldType => Namespace + "." + Enum + new string('*', Native.Length - Native.TrimEnd('*').Length); + internal string OldType => (EnumNamespace ?? Namespace) + "." + Enum + new string('*', Native.Length - Native.TrimEnd('*').Length); } private static Image Open(string variable) => new Image(Environment.GetEnvironmentVariable(variable)); diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 3ba85f650..0668bdf02 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -264,8 +264,97 @@ public void RegeneratedSdkIdlKeepsNativeAbiAndOnlyTheIntendedAnnotation(string a $"{annotations.Distinct(StringComparer.Ordinal).Count()} exact type-only OS annotation."); } + [NativeMigrationTheory] + [MemberData(nameof(PropertyStorageIdlControls))] + public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string header, string architecture, + string target, bool enabled) + { + string root = WinHttpMigrationTests.RepositoryRoot; + string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); + string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); + // Make either generated artifact the first owner of the guarded property-storage declarations. + string source = "#define WIN32_LEAN_AND_MEAN 1\n#define COM_NO_WINDOWS_H 1\n" + + "#include \n#include \n#include \n" + + "#include \n#include \n#include \n" + + "#include <" + header + ">\n"; + string checks = @" +static_assert(PRSPEC_INVALID == 0xffffffffu); +static_assert(PRSPEC_LPWSTR == 0); +static_assert(PRSPEC_PROPID == 1); +static_assert(sizeof(((PROPSPEC*)0)->ulKind) == 4); +static_assert(sizeof(((STATPROPSTG*)0)->vt) == 2); +static_assert(sizeof(((PROPVARIANT*)0)->vt) == 2); +"; + string[] headers = { header }; + var annotations = new List(); + var originalSal = new List(); + var preparedSal = new List(); + var before = Surface(root, original, "Com.StructuredStorage", architecture, target, headers, checks, + sourceText: source, salAnnotations: originalSal); + var after = Surface(root, prepared, "Com.StructuredStorage", architecture, target, headers, + checks + (enabled ? "" : "\nusing PROPSPEC_KIND = void;\n"), metadataEnabled: enabled, + annotations: annotations, sourceText: source, salAnnotations: preparedSal); + const string group = "typedef PROPSPEC_KIND unsigned long"; + Assert.Equal(enabled ? new[] { group } : Array.Empty(), after.Where(value => value == group)); + Assert.Equal(before, after.Where(value => value != group)); + Assert.Equal(originalSal.OrderBy(value => value, StringComparer.Ordinal), + preparedSal.OrderBy(value => value, StringComparer.Ordinal)); + Assert.Contains(before, value => value.StartsWith("field ", StringComparison.Ordinal) && + value.Contains("::wReserved1 unsigned short ", StringComparison.Ordinal)); + Assert.Contains(before, value => value.StartsWith("field ", StringComparison.Ordinal) && + value.Contains("::wReserved3 unsigned short ", StringComparison.Ordinal)); + foreach (string name in new[] { "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) + { + Assert.Contains(before, value => value.StartsWith("function " + name + "::Skip ", StringComparison.Ordinal)); + Assert.Contains(before, value => value.StartsWith("function " + name + "_Next_Proxy ", StringComparison.Ordinal)); + Assert.Contains(before, value => value.StartsWith("function " + name + "_Next_Stub ", StringComparison.Ordinal)); + } + + string[] facts = annotations.Distinct(StringComparer.Ordinal).OrderBy(value => value, StringComparer.Ordinal).ToArray(); + if (!enabled) + Assert.Empty(facts); + else + { + Assert.Equal(new[] + { + "IEnumSTATPROPSETSTG|SupportedOSPlatform(\"windows5.0\")", + "IEnumSTATPROPSTG|SupportedOSPlatform(\"windows5.0\")", + "IPropertySetStorage|SupportedOSPlatform(\"windows5.0\")", + "IPropertyStorage|SupportedOSPlatform(\"windows5.0\")", + }, facts.Where(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal))); + Assert.Contains("PROPSPEC_KIND|Enum(PRSPEC_LPWSTR, PRSPEC_PROPID)", facts); + string[] associations = facts.Where(value => value.EndsWith("|AssociatedEnum", StringComparison.Ordinal)).ToArray(); + Assert.Equal(3, associations.Length); + Assert.Contains("tagPROPSPEC::ulKind|AssociatedEnum", associations); + Assert.Contains("tagSTATPROPSTG::vt|AssociatedEnum", associations); + Assert.Single(associations.Where(value => value.Contains("PROPVARIANT::", StringComparison.Ordinal) && + value.EndsWith("::vt|AssociatedEnum", StringComparison.Ordinal))); + Assert.Equal(8, facts.Count(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal) || + value.EndsWith("|AssociatedEnum", StringComparison.Ordinal) || value.Contains("|Enum(", StringComparison.Ordinal))); + foreach (string name in new[] { "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) + Assert.DoesNotContain(facts, value => value.StartsWith(name + "_Next_Proxy|", StringComparison.Ordinal)); + } + this.output.WriteLine($"{header}/{architecture}/metadata={enabled}: " + + $"{before.Length} identical native/layout/RPC facts, {originalSal.Count} unchanged SAL attributes, " + + $"{facts.Length} native AST metadata facts; method targets are checked in the physical winmd."); + } + + public static IEnumerable PropertyStorageIdlControls() + { + foreach (string header in new[] { "PropIdl.h", "PropIdlBase.h" }) + foreach (var architecture in new[] + { + ("x86", "i686-pc-windows-msvc"), + ("x64", "x86_64-pc-windows-msvc"), + ("arm64", "aarch64-pc-windows-msvc"), + }) + foreach (bool enabled in new[] { false, true }) + yield return new object[] { header, architecture.Item1, architecture.Item2, enabled }; + } + private static unsafe string[] Surface(string root, string includeRoot, string partition, string architecture, - string target, string[] headers, string checks, bool metadataEnabled = false, List annotations = null) + string target, string[] headers, string checks, bool metadataEnabled = false, List annotations = null, + string sourceText = null, List salAnnotations = null) { string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); var arguments = new List @@ -292,7 +381,7 @@ private static unsafe string[] Surface(string root, string includeRoot, string p Assert.DoesNotContain(arguments, argument => argument.Contains("WIN32METADATA", StringComparison.Ordinal)); if (metadataEnabled) arguments.Add("-DWIN32METADATA=1"); - using var unsaved = CXUnsavedFile.Create(source, File.ReadAllText(source) + checks); + using var unsaved = CXUnsavedFile.Create(source, (sourceText ?? File.ReadAllText(source)) + checks); using var index = CXIndex.Create(false, false); Assert.Equal(CXErrorCode.CXError_Success, CXTranslationUnit.TryParse(index, source, arguments.ToArray(), new[] { unsaved }, CXTranslationUnit_Flags.CXTranslationUnit_IncludeAttributedTypes, out var handle)); @@ -352,13 +441,15 @@ CX_DeclKind.CX_DeclKind_CXXConstructor or CX_DeclKind.CX_DeclKind_CXXDestructor } cursor.VisitChildren((child, parent, data) => { - if (annotations != null && headers.Contains(header, StringComparer.OrdinalIgnoreCase) && + if ((annotations != null || salAnnotations != null) && headers.Contains(header, StringComparer.OrdinalIgnoreCase) && child.Kind == CXCursorKind.CXCursor_AnnotateAttr) { string value = Text(child.Spelling); const string prefix = "Win32Metadata."; - if (value.StartsWith(prefix + "SupportedOSPlatform(", StringComparison.Ordinal)) - annotations.Add(owner + name + "|" + value.Substring(prefix.Length)); + if (value.StartsWith(prefix, StringComparison.Ordinal)) + annotations?.Add(owner + name + "|" + value.Substring(prefix.Length)); + else + salAnnotations?.Add(owner + name + "|" + value); } if (child.IsDeclaration || child.IsTranslationUnit) Walk(child, childOwner); From e6620642885ae35adc811337b0499805b17c856b Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 18:54:05 -0700 Subject: [PATCH 35/57] Pin the qualified method helper and SDK mirror for the IDL pilot Bind immutable preparation to tooling 8d6d5290 and its exact shared annotation header; retain original SDK artifact patches and the closed two-header property-storage regeneration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 2 +- generation/WinSDK/patches/SdkHeaders.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 372611f5c..2bf2d9618 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -2,7 +2,7 @@ Move authored semantic facts to reviewed header patches without changing native contracts. Keep the C# scraper/emitter, matched ClangSharp stack and selected SDK. -The [adopted annotation specification](https://github.com/microsoft/win32metadata/blob/733477d4ecc3ea3e6e979a9ce26930df62d065af/docs/copilot/plans/shift-left-annotation-spec.md) defines +The [adopted annotation specification](https://github.com/microsoft/win32metadata/blob/8d6d5290e8a5421ba6e565752e79c011ea40d470/docs/copilot/plans/shift-left-annotation-spec.md) defines the vocabulary; the [WinHttp pilot](winhttp-header-annotations.md) records one complete example and its immutable evidence. diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index a8fffc29c..92e7fb2b9 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "sdkPackageVersion": "10.0.26100.7705", "sourceStage": "post-midl", - "sourceGitTree": "d0db69b032faf7de0cf39fee599bc9827900f3e3", + "sourceGitTree": "8b7d1b2d7806c4767ac056cc9c8d2db3a6ab677d", "headers": [ { "path": "um\\winhttp.h", @@ -115,7 +115,7 @@ "inputs": [ { "path": "shared\\win32metadata_annotations.h", - "sourceSha256": "5C02968168112A7DA993056680041C458CEAFFEA31AFE37A8FE17444C3D1F246" + "sourceSha256": "082E725995B988C14B66FA79FEF3B1E2373529EC3E8AE5703B57293579BC1C07" }, { "path": "um\\waasapi.idl", From 4fce2e6495d146a18ddca8eaaeb70f5ab86a806f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 22:04:24 -0700 Subject: [PATCH 36/57] Bootstrap pilot annotations through shared SAL Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/header-annotation-migration-playbook.md | 15 ++- docs/winhttp-header-annotations.md | 14 +++ generation/WinSDK/patches/SdkHeaders.json | 17 +++ generation/WinSDK/patches/shared/sal.h.patch | 13 +++ generation/WinSDK/patches/um/Psapi.h.patch | 76 ++++++------- generation/WinSDK/patches/um/TlHelp32.h.patch | 46 ++++---- generation/WinSDK/patches/um/Xinput.h.patch | 22 ++-- generation/WinSDK/patches/um/avrfsdk.h.patch | 12 +- .../WinSDK/patches/um/magnification.h.patch | 16 +-- .../WinSDK/patches/um/propidlbase.idl.patch | 17 ++- .../WinSDK/patches/um/timezoneapi.h.patch | 58 ++++------ generation/WinSDK/patches/um/ual.h.patch | 13 +-- .../WinSDK/patches/um/waasapi.idl.patch | 7 +- .../WinSDK/patches/um/windowsceip.h.patch | 11 +- generation/WinSDK/patches/um/winhttp.h.patch | 106 ++++++++---------- generation/WinSDK/patches/um/wslapi.h.patch | 21 ++-- scripts/Prepare-SdkHeaders.ps1 | 14 ++- .../PreparedSdkHeadersTests.cs | 52 +++++++++ .../WinHttpMigrationTests.cs | 13 +++ 19 files changed, 289 insertions(+), 254 deletions(-) create mode 100644 generation/WinSDK/patches/shared/sal.h.patch diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index 2bf2d9618..9df7bfcbe 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -88,11 +88,16 @@ Run the selected C preprocessor with closed include paths and cleared ambient compiler options; hash its executable/engine and the SAL/helper scripts into the preparation identity. When `/cpp_opt` overrides MIDL's forwarding, explicitly pass the same `/D` definitions and private `/I` paths, including `MIDL_PASS=1`. -An IDL that uses `_Win32_AnnotateInterface_(name, annotation)` includes the -canonical shared annotation header during preprocessing as well as emitting its -ordinary generated-header include. Pin that repository header's exact -`sourceSha256` in the existing MIDL input closure; do not pretend it came from the -selected SDK or search an ambient include directory for it. +The shared SDK SAL patch and metadata SAL shim provide the common annotation +bootstrap; do not repeat annotation-header includes in individual API patches. +An original IDL must obtain SAL before using annotation carriers. MIDL imports +do not establish C-preprocessor macro visibility, so the two annotated pilot +IDLs need ordinary `#include ` directives. Their generated headers already +obtain SAL through native RPC headers. Pin every actual SAL dependency and the +canonical repository helper's exact `sourceSha256` in the MIDL closure; do not +pretend the helper came from the selected SDK or search ambient include paths. +A header patch consumed by MIDL must bind the same pristine SDK input as its +native-header copy and apply to both private snapshots before conversion. Verify MIDL's actual saved preprocessor input set against the declared closure. Preserve raw inputs, converted IDLs, commands, diagnostics, outputs and their hashes in the private cache. Keep warnings enabled and compare diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index ee75cd4e3..a18b9de3c 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -87,6 +87,16 @@ transactional and serialized; a modified published cache is rejected, not repair while a scraper might be reading it. Unmodified files retain their exact bytes. The tracked SDK mirror is never an output. +The annotation header is bootstrapped by the cumulative `shared\sal.h.patch` +and the scraper's metadata SAL shim, not repeated in every API patch. +The two annotated original IDLs include ordinary `sal.h` before their first +carrier: MIDL imports have separate C-preprocessor streams and do not make +macros visible to their importer. Their generated headers already obtain SAL +through the native RPC headers and need no quoted helper include. +The pinned SDK SAL and concurrency-SAL inputs join the closed MIDL input set. +The same original SAL patch applies to both the private native-header and +MIDL-source snapshots, which must bind the identical pristine SDK artifact. + The bounded Com.StructuredStorage addition patches only shipped `um\propidlbase.idl`. Shipped `propidl.idl` includes that source and generates another complete copy of its declarations. Both `PropIdl.h` and `PropIdlBase.h` @@ -110,6 +120,10 @@ region after the complete interfaces: their compiled method references identify the intended C++ declarations without copying a signature or annotating a proxy. This handles the non-local `Skip` methods without changing RPC locality; direct annotations on local `Next` would also reach generated proxy declarations. +The four methods use the canonical `PreserveResult` encoding, CLR `PreserveSig`, +rather than retaining the legacy `CanReturnMultipleSuccessValues` custom +attribute. This intentional representation change follows the same encoding +for both legacy success-marker forms; it is not a consumer-equivalence claim. Native SAL, `call_as` relationships, union branches and wire layouts remain control inputs, not annotation targets. Generated documentation mappings and global type-storage/namespace fixups remain derived or shared configuration. diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 92e7fb2b9..ed979e738 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -4,6 +4,12 @@ "sourceStage": "post-midl", "sourceGitTree": "8b7d1b2d7806c4767ac056cc9c8d2db3a6ab677d", "headers": [ + { + "path": "shared\\sal.h", + "sourceSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\sal.h", + "sdkSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1" + }, { "path": "um\\winhttp.h", "sourceSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2", @@ -117,6 +123,16 @@ "path": "shared\\win32metadata_annotations.h", "sourceSha256": "082E725995B988C14B66FA79FEF3B1E2373529EC3E8AE5703B57293579BC1C07" }, + { + "path": "shared\\sal.h", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\sal.h", + "sdkSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1" + }, + { + "path": "shared\\concurrencysal.h", + "sdkPath": "c\\include\\10.0.26100.0\\shared\\concurrencysal.h", + "sdkSha256": "1EA9A2E32A6FF298AD7904610CC71028CAA9B172399A579CA90A120D1B1AEC12" + }, { "path": "um\\waasapi.idl", "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", @@ -226,6 +242,7 @@ "Xinput" ], "patches": [ + "shared\\sal.h.patch", "um\\waasapi.idl.patch", "um\\propidlbase.idl.patch", "um\\winhttp.h.patch", diff --git a/generation/WinSDK/patches/shared/sal.h.patch b/generation/WinSDK/patches/shared/sal.h.patch new file mode 100644 index 000000000..77b44ca29 --- /dev/null +++ b/generation/WinSDK/patches/shared/sal.h.patch @@ -0,0 +1,13 @@ +diff --git a/shared/sal.h b/shared/sal.h +index 23ff7c79..add3e91a 100644 +--- a/shared/sal.h ++++ b/shared/sal.h +@@ -15,6 +15,8 @@ + ****/ + #pragma once + ++#include ++ + /*========================================================================== + + The comments in this file are intended to give basic understanding of diff --git a/generation/WinSDK/patches/um/Psapi.h.patch b/generation/WinSDK/patches/um/Psapi.h.patch index 47732605e..8e1394248 100644 --- a/generation/WinSDK/patches/um/Psapi.h.patch +++ b/generation/WinSDK/patches/um/Psapi.h.patch @@ -1,16 +1,8 @@ diff --git a/um/Psapi.h b/um/Psapi.h -index d68f6459..9fb616c8 100644 +index d68f6459..29912339 100644 --- a/um/Psapi.h +++ b/um/Psapi.h -@@ -25,6 +25,7 @@ Revision History: - #pragma once - #endif - #include -+#include - - #ifdef __cplusplus - extern "C" { -@@ -58,6 +59,14 @@ extern "C" { +@@ -58,6 +58,14 @@ extern "C" { #endif #endif @@ -25,7 +17,7 @@ index d68f6459..9fb616c8 100644 #if (PSAPI_VERSION > 1) #define EnumProcessModules K32EnumProcessModules #define EnumProcessModulesEx K32EnumProcessModulesEx -@@ -128,6 +137,10 @@ extern "C" { +@@ -128,6 +136,10 @@ extern "C" { #endif @@ -36,7 +28,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EnumProcesses( -@@ -142,6 +155,10 @@ EnumProcesses( +@@ -142,6 +154,10 @@ EnumProcesses( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -47,7 +39,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EnumProcessModules( -@@ -151,6 +168,10 @@ EnumProcessModules( +@@ -151,6 +167,10 @@ EnumProcessModules( _Out_ LPDWORD lpcbNeeded ); @@ -58,7 +50,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EnumProcessModulesEx( -@@ -158,6 +179,9 @@ EnumProcessModulesEx( +@@ -158,6 +178,9 @@ EnumProcessModulesEx( _Out_writes_bytes_(cb) HMODULE* lphModule, _In_ DWORD cb, _Out_ LPDWORD lpcbNeeded, @@ -68,7 +60,7 @@ index d68f6459..9fb616c8 100644 _In_ DWORD dwFilterFlag ); -@@ -167,6 +191,10 @@ EnumProcessModulesEx( +@@ -167,6 +190,10 @@ EnumProcessModulesEx( #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -79,7 +71,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetModuleBaseNameA( -@@ -176,6 +204,9 @@ GetModuleBaseNameA( +@@ -176,6 +203,9 @@ GetModuleBaseNameA( _In_ DWORD nSize ); @@ -89,7 +81,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetModuleBaseNameW( -@@ -193,6 +224,9 @@ GetModuleBaseNameW( +@@ -193,6 +223,9 @@ GetModuleBaseNameW( _Success_(return != 0) _Ret_range_(1, nSize) @@ -99,7 +91,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetModuleFileNameExA( -@@ -206,6 +240,9 @@ GetModuleFileNameExA( +@@ -206,6 +239,9 @@ GetModuleFileNameExA( _Success_(return != 0) _Ret_range_(1, nSize) @@ -109,7 +101,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetModuleFileNameExW( -@@ -216,6 +253,9 @@ GetModuleFileNameExW( +@@ -216,6 +252,9 @@ GetModuleFileNameExW( LPWSTR lpFilename, _In_ DWORD nSize ); @@ -119,7 +111,7 @@ index d68f6459..9fb616c8 100644 #ifdef UNICODE #define GetModuleFileNameEx GetModuleFileNameExW -@@ -229,6 +269,10 @@ typedef struct _MODULEINFO { +@@ -229,6 +268,10 @@ typedef struct _MODULEINFO { LPVOID EntryPoint; } MODULEINFO, *LPMODULEINFO; @@ -130,7 +122,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI GetModuleInformation( -@@ -244,6 +288,10 @@ GetModuleInformation( +@@ -244,6 +287,10 @@ GetModuleInformation( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -141,7 +133,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EmptyWorkingSet( -@@ -256,6 +304,10 @@ EmptyWorkingSet( +@@ -256,6 +303,10 @@ EmptyWorkingSet( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -152,7 +144,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI InitializeProcessForWsWatch( -@@ -273,6 +325,10 @@ typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { +@@ -273,6 +324,10 @@ typedef struct _PSAPI_WS_WATCH_INFORMATION_EX { ULONG_PTR Flags; // Reserved } PSAPI_WS_WATCH_INFORMATION_EX, *PPSAPI_WS_WATCH_INFORMATION_EX; @@ -163,7 +155,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI GetWsChanges( -@@ -281,6 +337,10 @@ GetWsChanges( +@@ -281,6 +336,10 @@ GetWsChanges( _In_ DWORD cb ); @@ -174,7 +166,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI GetWsChangesEx( -@@ -289,6 +349,10 @@ GetWsChangesEx( +@@ -289,6 +348,10 @@ GetWsChangesEx( _Inout_ PDWORD cb ); @@ -185,7 +177,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetMappedFileNameW ( -@@ -298,6 +362,9 @@ GetMappedFileNameW ( +@@ -298,6 +361,9 @@ GetMappedFileNameW ( _In_ DWORD nSize ); @@ -195,7 +187,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetMappedFileNameA ( -@@ -313,6 +380,9 @@ GetMappedFileNameA ( +@@ -313,6 +379,9 @@ GetMappedFileNameA ( #define GetMappedFileName GetMappedFileNameA #endif // !UNICODE @@ -205,7 +197,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EnumDeviceDrivers ( -@@ -321,6 +391,9 @@ EnumDeviceDrivers ( +@@ -321,6 +390,9 @@ EnumDeviceDrivers ( _Out_ LPDWORD lpcbNeeded ); @@ -215,7 +207,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetDeviceDriverBaseNameA ( -@@ -329,6 +402,9 @@ GetDeviceDriverBaseNameA ( +@@ -329,6 +401,9 @@ GetDeviceDriverBaseNameA ( _In_ DWORD nSize ); @@ -225,7 +217,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetDeviceDriverBaseNameW ( -@@ -343,6 +419,9 @@ GetDeviceDriverBaseNameW ( +@@ -343,6 +418,9 @@ GetDeviceDriverBaseNameW ( #define GetDeviceDriverBaseName GetDeviceDriverBaseNameA #endif // !UNICODE @@ -235,7 +227,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetDeviceDriverFileNameA ( -@@ -351,6 +430,9 @@ GetDeviceDriverFileNameA ( +@@ -351,6 +429,9 @@ GetDeviceDriverFileNameA ( _In_ DWORD nSize ); @@ -245,7 +237,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetDeviceDriverFileNameW ( -@@ -358,6 +440,9 @@ GetDeviceDriverFileNameW ( +@@ -358,6 +439,9 @@ GetDeviceDriverFileNameW ( _Out_writes_(nSize) LPWSTR lpFilename, _In_ DWORD nSize ); @@ -255,7 +247,7 @@ index d68f6459..9fb616c8 100644 #ifdef UNICODE #define GetDeviceDriverFileName GetDeviceDriverFileNameW -@@ -445,6 +530,10 @@ typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { +@@ -445,6 +529,10 @@ typedef struct _PSAPI_WORKING_SET_EX_INFORMATION { #pragma warning(default:4201) #endif @@ -266,7 +258,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI QueryWorkingSet( -@@ -453,6 +542,10 @@ QueryWorkingSet( +@@ -453,6 +541,10 @@ QueryWorkingSet( _In_ DWORD cb ); @@ -277,7 +269,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI QueryWorkingSetEx( -@@ -517,6 +610,10 @@ typedef PROCESS_MEMORY_COUNTERS_EX2 *PPROCESS_MEMORY_COUNTERS_EX2; +@@ -517,6 +609,10 @@ typedef PROCESS_MEMORY_COUNTERS_EX2 *PPROCESS_MEMORY_COUNTERS_EX2; #endif @@ -288,7 +280,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI GetProcessMemoryInfo ( -@@ -548,6 +645,10 @@ typedef struct _PERFORMANCE_INFORMATION { +@@ -548,6 +644,10 @@ typedef struct _PERFORMANCE_INFORMATION { DWORD ThreadCount; } PERFORMANCE_INFORMATION, *PPERFORMANCE_INFORMATION, PERFORMACE_INFORMATION, *PPERFORMACE_INFORMATION; @@ -299,7 +291,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI GetPerformanceInfo ( -@@ -573,6 +674,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE +@@ -573,6 +673,10 @@ typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKW) (LPVOID pContext, PENUM_PAGE typedef BOOL (__stdcall *PENUM_PAGE_FILE_CALLBACKA) (LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCSTR lpFilename); @@ -310,7 +302,7 @@ index d68f6459..9fb616c8 100644 BOOL WINAPI EnumPageFilesW ( -@@ -580,12 +685,18 @@ EnumPageFilesW ( +@@ -580,12 +684,18 @@ EnumPageFilesW ( LPVOID pContext ); @@ -329,7 +321,7 @@ index d68f6459..9fb616c8 100644 #ifdef UNICODE #define PENUM_PAGE_FILE_CALLBACK PENUM_PAGE_FILE_CALLBACKW -@@ -601,6 +712,10 @@ EnumPageFilesA ( +@@ -601,6 +711,10 @@ EnumPageFilesA ( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -340,7 +332,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetProcessImageFileNameA ( -@@ -609,6 +724,9 @@ GetProcessImageFileNameA ( +@@ -609,6 +723,9 @@ GetProcessImageFileNameA ( _In_ DWORD nSize ); @@ -350,7 +342,7 @@ index d68f6459..9fb616c8 100644 DWORD WINAPI GetProcessImageFileNameW ( -@@ -616,6 +734,9 @@ GetProcessImageFileNameW ( +@@ -616,6 +733,9 @@ GetProcessImageFileNameW ( _Out_writes_(nSize) LPWSTR lpImageFileName, _In_ DWORD nSize ); @@ -360,7 +352,7 @@ index d68f6459..9fb616c8 100644 #ifdef UNICODE #define GetProcessImageFileName GetProcessImageFileNameW -@@ -630,6 +751,7 @@ GetProcessImageFileNameW ( +@@ -630,6 +750,7 @@ GetProcessImageFileNameW ( #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion diff --git a/generation/WinSDK/patches/um/TlHelp32.h.patch b/generation/WinSDK/patches/um/TlHelp32.h.patch index 48c4f95be..85fd32433 100644 --- a/generation/WinSDK/patches/um/TlHelp32.h.patch +++ b/generation/WinSDK/patches/um/TlHelp32.h.patch @@ -1,16 +1,8 @@ diff --git a/um/TlHelp32.h b/um/TlHelp32.h -index c712ccb4..15284e50 100644 +index c712ccb4..d4202bf5 100644 --- a/um/TlHelp32.h +++ b/um/TlHelp32.h -@@ -17,6 +17,7 @@ - #pragma once - #endif - #include -+#include - - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -29,10 +30,16 @@ extern "C" { /* Assume C declarations for C++ */ +@@ -29,10 +29,16 @@ extern "C" { /* Assume C declarations for C++ */ /****** Shapshot function **********************************************/ @@ -28,7 +20,7 @@ index c712ccb4..15284e50 100644 DWORD th32ProcessID ); -@@ -57,6 +64,16 @@ CreateToolhelp32Snapshot( +@@ -57,6 +63,16 @@ CreateToolhelp32Snapshot( #define TH32CS_SNAPMODULE32 0x00000010 #define TH32CS_SNAPALL (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE) #define TH32CS_INHERIT 0x80000000 @@ -45,7 +37,7 @@ index c712ccb4..15284e50 100644 // // Use CloseHandle to destroy the snapshot // -@@ -78,6 +95,8 @@ typedef HEAPLIST32 * LPHEAPLIST32; +@@ -78,6 +94,8 @@ typedef HEAPLIST32 * LPHEAPLIST32; #define HF32_DEFAULT 1 // process's default heap #define HF32_SHARED 2 // is shared heap @@ -54,7 +46,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Heap32ListFirst( -@@ -85,12 +104,18 @@ Heap32ListFirst( +@@ -85,12 +103,18 @@ Heap32ListFirst( LPHEAPLIST32 lphl ); @@ -73,7 +65,7 @@ index c712ccb4..15284e50 100644 typedef struct tagHEAPENTRY32 { -@@ -98,7 +123,7 @@ typedef struct tagHEAPENTRY32 +@@ -98,7 +122,7 @@ typedef struct tagHEAPENTRY32 HANDLE hHandle; // Handle of this heap block ULONG_PTR dwAddress; // Linear address of start of block SIZE_T dwBlockSize; // Size of block in bytes @@ -82,7 +74,7 @@ index c712ccb4..15284e50 100644 DWORD dwLockCount; DWORD dwResvd; DWORD th32ProcessID; // owning process -@@ -113,6 +138,14 @@ typedef HEAPENTRY32 * LPHEAPENTRY32; +@@ -113,6 +137,14 @@ typedef HEAPENTRY32 * LPHEAPENTRY32; #define LF32_FREE 0x00000002 #define LF32_MOVEABLE 0x00000004 @@ -97,7 +89,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Heap32First( -@@ -121,6 +154,7 @@ Heap32First( +@@ -121,6 +153,7 @@ Heap32First( ULONG_PTR th32HeapID ); @@ -105,7 +97,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Heap32Next( -@@ -136,6 +170,7 @@ Toolhelp32ReadProcessMemory( +@@ -136,6 +169,7 @@ Toolhelp32ReadProcessMemory( SIZE_T cbRead, SIZE_T* lpNumberOfBytesRead ); @@ -113,7 +105,7 @@ index c712ccb4..15284e50 100644 /***** Process walking *************************************************/ -@@ -155,6 +190,8 @@ typedef struct tagPROCESSENTRY32W +@@ -155,6 +189,8 @@ typedef struct tagPROCESSENTRY32W typedef PROCESSENTRY32W * PPROCESSENTRY32W; typedef PROCESSENTRY32W * LPPROCESSENTRY32W; @@ -122,7 +114,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Process32FirstW( -@@ -162,12 +199,14 @@ Process32FirstW( +@@ -162,12 +198,14 @@ Process32FirstW( LPPROCESSENTRY32W lppe ); @@ -137,7 +129,7 @@ index c712ccb4..15284e50 100644 typedef struct tagPROCESSENTRY32 { -@@ -185,6 +224,8 @@ typedef struct tagPROCESSENTRY32 +@@ -185,6 +223,8 @@ typedef struct tagPROCESSENTRY32 typedef PROCESSENTRY32 * PPROCESSENTRY32; typedef PROCESSENTRY32 * LPPROCESSENTRY32; @@ -146,7 +138,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Process32First( -@@ -192,12 +233,14 @@ Process32First( +@@ -192,12 +232,14 @@ Process32First( LPPROCESSENTRY32 lppe ); @@ -161,7 +153,7 @@ index c712ccb4..15284e50 100644 #ifdef UNICODE #define Process32First Process32FirstW -@@ -222,6 +265,8 @@ typedef struct tagTHREADENTRY32 +@@ -222,6 +264,8 @@ typedef struct tagTHREADENTRY32 typedef THREADENTRY32 * PTHREADENTRY32; typedef THREADENTRY32 * LPTHREADENTRY32; @@ -170,7 +162,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Thread32First( -@@ -229,12 +274,14 @@ Thread32First( +@@ -229,12 +273,14 @@ Thread32First( LPTHREADENTRY32 lpte ); @@ -185,7 +177,7 @@ index c712ccb4..15284e50 100644 /***** Module walking *************************************************/ -@@ -254,6 +301,8 @@ typedef struct tagMODULEENTRY32W +@@ -254,6 +300,8 @@ typedef struct tagMODULEENTRY32W typedef MODULEENTRY32W * PMODULEENTRY32W; typedef MODULEENTRY32W * LPMODULEENTRY32W; @@ -194,7 +186,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Module32FirstW( -@@ -261,12 +310,14 @@ Module32FirstW( +@@ -261,12 +309,14 @@ Module32FirstW( LPMODULEENTRY32W lpme ); @@ -209,7 +201,7 @@ index c712ccb4..15284e50 100644 typedef struct tagMODULEENTRY32 { -@@ -289,6 +340,8 @@ typedef MODULEENTRY32 * LPMODULEENTRY32; +@@ -289,6 +339,8 @@ typedef MODULEENTRY32 * LPMODULEENTRY32; // in th32ProcessID's process context. // @@ -218,7 +210,7 @@ index c712ccb4..15284e50 100644 BOOL WINAPI Module32First( -@@ -296,12 +349,14 @@ Module32First( +@@ -296,12 +348,14 @@ Module32First( LPMODULEENTRY32 lpme ); diff --git a/generation/WinSDK/patches/um/Xinput.h.patch b/generation/WinSDK/patches/um/Xinput.h.patch index 2bae3e7f0..64e26ebd8 100644 --- a/generation/WinSDK/patches/um/Xinput.h.patch +++ b/generation/WinSDK/patches/um/Xinput.h.patch @@ -1,16 +1,8 @@ diff --git a/um/Xinput.h b/um/Xinput.h -index 4b51b443..1d4d2cbf 100644 +index 4b51b443..af301890 100644 --- a/um/Xinput.h +++ b/um/Xinput.h -@@ -13,6 +13,7 @@ - - #include - #include -+#include - - #pragma region Application Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) -@@ -188,12 +189,125 @@ +@@ -188,12 +188,127 @@ #endif //(_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -122,6 +114,8 @@ index 4b51b443..1d4d2cbf 100644 + + +#ifdef WIN32METADATA ++// The SDK defines GAMEPAD but no ALL token. Preserve the historical metadata-only ++// XINPUT_FLAG_ALL=0 explicitly; the compact macro requires native identifiers. +typedef _WIN32META_ANNOTATION_("FlagsEnum(XINPUT_FLAG_ALL, XINPUT_FLAG_GAMEPAD)", + 0, XINPUT_FLAG_GAMEPAD) DWORD XINPUT_FLAG; +#endif @@ -137,7 +131,7 @@ index 4b51b443..1d4d2cbf 100644 BYTE bLeftTrigger; BYTE bRightTrigger; SHORT sThumbLX; -@@ -216,9 +330,9 @@ typedef struct _XINPUT_VIBRATION +@@ -216,9 +331,9 @@ typedef struct _XINPUT_VIBRATION typedef struct _XINPUT_CAPABILITIES { @@ -150,7 +144,7 @@ index 4b51b443..1d4d2cbf 100644 XINPUT_GAMEPAD Gamepad; XINPUT_VIBRATION Vibration; } XINPUT_CAPABILITIES, *PXINPUT_CAPABILITIES; -@@ -227,15 +341,15 @@ typedef struct _XINPUT_CAPABILITIES +@@ -227,15 +342,15 @@ typedef struct _XINPUT_CAPABILITIES typedef struct _XINPUT_BATTERY_INFORMATION { @@ -170,7 +164,7 @@ index 4b51b443..1d4d2cbf 100644 BYTE UserIndex; BYTE HidCode; } XINPUT_KEYSTROKE, *PXINPUT_KEYSTROKE; -@@ -270,7 +384,7 @@ DWORD WINAPI XInputSetState +@@ -270,7 +385,7 @@ DWORD WINAPI XInputSetState DWORD WINAPI XInputGetCapabilities ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device @@ -179,7 +173,7 @@ index 4b51b443..1d4d2cbf 100644 _Out_ XINPUT_CAPABILITIES* pCapabilities // Receives the capabilities ) WIN_NOEXCEPT; -@@ -297,7 +411,7 @@ DWORD WINAPI XInputGetAudioDeviceIds +@@ -297,7 +412,7 @@ DWORD WINAPI XInputGetAudioDeviceIds DWORD WINAPI XInputGetBatteryInformation ( _In_ DWORD dwUserIndex, // Index of the gamer associated with the device diff --git a/generation/WinSDK/patches/um/avrfsdk.h.patch b/generation/WinSDK/patches/um/avrfsdk.h.patch index 5a626b36a..e22abbfba 100644 --- a/generation/WinSDK/patches/um/avrfsdk.h.patch +++ b/generation/WinSDK/patches/um/avrfsdk.h.patch @@ -1,16 +1,8 @@ diff --git a/um/avrfsdk.h b/um/avrfsdk.h -index a2c5a112..d9cbb9b0 100644 +index a2c5a112..4d23b1f7 100644 --- a/um/avrfsdk.h +++ b/um/avrfsdk.h -@@ -24,6 +24,7 @@ Revision History: - #ifndef _AVRFSDK_ - #define _AVRFSDK_ - #include -+#include - - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -140,11 +141,17 @@ typedef ULONG +@@ -140,11 +140,17 @@ typedef ULONG #define AVRF_ENUM_RESOURCES_FLAGS_SUSPEND 0x00000001 #define AVRF_ENUM_RESOURCES_FLAGS_DONT_RESOLVE_TRACES 0x00000002 diff --git a/generation/WinSDK/patches/um/magnification.h.patch b/generation/WinSDK/patches/um/magnification.h.patch index 4bfde88e0..320d6c38e 100644 --- a/generation/WinSDK/patches/um/magnification.h.patch +++ b/generation/WinSDK/patches/um/magnification.h.patch @@ -1,16 +1,8 @@ diff --git a/um/magnification.h b/um/magnification.h -index 1efaf5a4..f2170ba2 100644 +index 1efaf5a4..014c8bf9 100644 --- a/um/magnification.h +++ b/um/magnification.h -@@ -11,6 +11,7 @@ - #define _INC_MAGNIFIER - - #include -+#include - - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -49,6 +50,11 @@ extern "C" { // we need to export the C interface +@@ -49,6 +49,11 @@ extern "C" { // we need to export the C interface #define MW_FILTERMODE_EXCLUDE 0 #define MW_FILTERMODE_INCLUDE 1 @@ -22,7 +14,7 @@ index 1efaf5a4..f2170ba2 100644 typedef struct tagMAGTRANSFORM { float v[3][3]; -@@ -72,6 +78,7 @@ typedef struct tagMAGCOLOREFFECT +@@ -72,6 +77,7 @@ typedef struct tagMAGCOLOREFFECT typedef BOOL (CALLBACK* MagImageScalingCallback)(HWND hwnd, void * srcdata, MAGIMAGEHEADER srcheader, void * destdata, MAGIMAGEHEADER destheader, RECT unclipped, RECT clipped, HRGN dirty ); // Public Functions @@ -30,7 +22,7 @@ index 1efaf5a4..f2170ba2 100644 BOOL WINAPI MagInitialize(); BOOL WINAPI MagUninitialize(); -@@ -79,19 +86,23 @@ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); +@@ -79,19 +85,23 @@ BOOL WINAPI MagSetWindowSource(HWND hwnd, RECT rect); BOOL WINAPI MagGetWindowSource(HWND hwnd, RECT *pRect); BOOL WINAPI MagSetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); BOOL WINAPI MagGetWindowTransform(HWND hwnd, PMAGTRANSFORM pTransform); diff --git a/generation/WinSDK/patches/um/propidlbase.idl.patch b/generation/WinSDK/patches/um/propidlbase.idl.patch index 2ff36b00b..f3f633fd8 100644 --- a/generation/WinSDK/patches/um/propidlbase.idl.patch +++ b/generation/WinSDK/patches/um/propidlbase.idl.patch @@ -1,15 +1,14 @@ diff --git a/um/propidlbase.idl b/um/propidlbase.idl -index ad551dd7..88be6d94 100644 +index ad551dd7..d0332652 100644 --- a/um/propidlbase.idl +++ b/um/propidlbase.idl -@@ -1,4 +1,6 @@ +@@ -1,4 +1,5 @@ cpp_quote("#include ") -+#include -+cpp_quote("#include ") ++#include //+--------------------------------------------------------------------------- // -@@ -44,6 +46,11 @@ cpp_quote("#ifndef _PROPIDLBASE_") +@@ -44,6 +45,11 @@ cpp_quote("#ifndef _PROPIDLBASE_") #pragma region Application Family or OneCore Family or Games Family cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)") @@ -21,7 +20,7 @@ index ad551dd7..88be6d94 100644 interface IPropertyStorage; interface IEnumSTATPROPSTG; interface IEnumSTATPROPSETSTG; -@@ -159,7 +166,7 @@ cpp_quote(" union {") +@@ -159,7 +165,7 @@ cpp_quote(" union {") cpp_quote("#endif") struct tag_inner_PROPVARIANT { @@ -30,7 +29,7 @@ index ad551dd7..88be6d94 100644 PROPVAR_PAD1 wReserved1; PROPVAR_PAD2 wReserved2; PROPVAR_PAD3 wReserved3; -@@ -323,10 +330,12 @@ const ULONG PRSPEC_INVALID = 0xffffffff; +@@ -323,10 +329,12 @@ const ULONG PRSPEC_INVALID = 0xffffffff; const ULONG PRSPEC_LPWSTR = 0; const ULONG PRSPEC_PROPID = 1; @@ -44,7 +43,7 @@ index ad551dd7..88be6d94 100644 [switch_is(ulKind)] union { [case(PRSPEC_PROPID)] -@@ -343,7 +352,7 @@ typedef struct tagSTATPROPSTG +@@ -343,7 +351,7 @@ typedef struct tagSTATPROPSTG LPOLESTR lpwstrName; PROPID propid; @@ -53,7 +52,7 @@ index ad551dd7..88be6d94 100644 } STATPROPSTG; -@@ -617,6 +626,11 @@ interface IEnumSTATPROPSETSTG : IUnknown +@@ -617,6 +625,11 @@ interface IEnumSTATPROPSETSTG : IUnknown typedef [unique] IPropertyStorage * LPPROPERTYSTORAGE; diff --git a/generation/WinSDK/patches/um/timezoneapi.h.patch b/generation/WinSDK/patches/um/timezoneapi.h.patch index d00a2de1c..a91454fa9 100644 --- a/generation/WinSDK/patches/um/timezoneapi.h.patch +++ b/generation/WinSDK/patches/um/timezoneapi.h.patch @@ -1,15 +1,8 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h +index 7b72887b..50dcde4f 100644 --- a/um/timezoneapi.h +++ b/um/timezoneapi.h -@@ -15,6 +15,7 @@ - #define _TIMEZONEAPI_H_ - - #include -+#include - #include - #include - #include -@@ -56,6 +57,8 @@ +@@ -56,6 +56,8 @@ typedef struct _TIME_DYNAMIC_ZONE_INFORMATION { WINBASEAPI _Success_(return != FALSE) @@ -18,20 +11,18 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h BOOL WINAPI SystemTimeToTzSpecificLocalTime( -@@ -64,8 +67,10 @@ +@@ -64,8 +66,10 @@ SystemTimeToTzSpecificLocalTime( _Out_ LPSYSTEMTIME lpLocalTime ); --WINBASEAPI --_Success_(return != FALSE) +_Win32_SupportedOS_BEGIN_(WindowsXP) -+WINBASEAPI -+_Success_(return != FALSE) + WINBASEAPI + _Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI TzSpecificLocalTimeToSystemTime( -@@ -76,15 +81,19 @@ +@@ -76,15 +80,19 @@ TzSpecificLocalTimeToSystemTime( WINBASEAPI _Success_(return != FALSE) @@ -42,19 +33,16 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h _In_ CONST FILETIME* lpFileTime, _Out_ LPSYSTEMTIME lpSystemTime ); -- --WINBASEAPI --_Success_(return != FALSE) +_Win32_SupportedOS_END_() -+ + +_Win32_SupportedOS_BEGIN_(Windows2000) -+WINBASEAPI -+_Success_(return != FALSE) + WINBASEAPI + _Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI SystemTimeToFileTime( -@@ -94,6 +103,7 @@ +@@ -94,6 +102,7 @@ SystemTimeToFileTime( WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) @@ -62,7 +50,7 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h DWORD WINAPI GetTimeZoneInformation( -@@ -101,15 +111,19 @@ +@@ -101,15 +110,19 @@ GetTimeZoneInformation( ); WINBASEAPI @@ -72,9 +60,8 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h SetTimeZoneInformation( _In_ CONST TIME_ZONE_INFORMATION* lpTimeZoneInformation ); -- +_Win32_SupportedOS_END_() -+ + +_Win32_SupportedOS_BEGIN_(WindowsVista) #if (_WIN32_WINNT >= 0x0600) @@ -83,7 +70,7 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h BOOL WINAPI SetDynamicTimeZoneInformation( -@@ -122,6 +136,7 @@ +@@ -122,6 +135,7 @@ SetDynamicTimeZoneInformation( WINBASEAPI _Success_(return != TIME_ZONE_ID_INVALID) @@ -91,7 +78,7 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h DWORD WINAPI GetDynamicTimeZoneInformation( -@@ -133,6 +148,7 @@ +@@ -133,6 +147,7 @@ GetDynamicTimeZoneInformation( #if (_WIN32_WINNT >= 0x0601) _Success_(return != FALSE) @@ -99,7 +86,7 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h BOOL WINAPI GetTimeZoneInformationForYear( -@@ -142,11 +158,13 @@ +@@ -142,11 +157,13 @@ GetTimeZoneInformationForYear( ); #endif // _WIN32_WINNT >= 0x0601 @@ -113,23 +100,20 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h WINBASEAPI _Success_(return == ERROR_SUCCESS) DWORD -@@ -165,9 +183,12 @@ +@@ -165,9 +182,12 @@ GetDynamicTimeZoneInformationEffectiveYears( _Out_ LPDWORD FirstYear, _Out_ LPDWORD LastYear ); -- --WINBASEAPI --_Success_(return != FALSE) +_Win32_SupportedOS_END_() -+ + +_Win32_SupportedOS_BEGIN_(Windows7) -+WINBASEAPI -+_Success_(return != FALSE) + WINBASEAPI + _Success_(return != FALSE) +_Win32_SetLastError_ BOOL WINAPI SystemTimeToTzSpecificLocalTimeEx( -@@ -178,6 +199,7 @@ +@@ -178,6 +198,7 @@ SystemTimeToTzSpecificLocalTimeEx( WINBASEAPI _Success_(return != FALSE) @@ -137,7 +121,7 @@ diff --git a/um/timezoneapi.h b/um/timezoneapi.h BOOL WINAPI TzSpecificLocalTimeToSystemTimeEx( -@@ -185,6 +207,7 @@ +@@ -185,6 +206,7 @@ TzSpecificLocalTimeToSystemTimeEx( _In_ CONST SYSTEMTIME* lpLocalTime, _Out_ LPSYSTEMTIME lpUniversalTime ); diff --git a/generation/WinSDK/patches/um/ual.h.patch b/generation/WinSDK/patches/um/ual.h.patch index 10cb41472..666edf9fa 100644 --- a/generation/WinSDK/patches/um/ual.h.patch +++ b/generation/WinSDK/patches/um/ual.h.patch @@ -1,15 +1,8 @@ diff --git a/um/ual.h b/um/ual.h +index 99de3830..30116479 100644 --- a/um/ual.h +++ b/um/ual.h -@@ -9,6 +9,7 @@ - #define _UAL_H_INCLUDED - - #include -+#include - #include - - #if defined (_MSC_VER) -@@ -33,6 +34,7 @@ +@@ -33,6 +33,7 @@ typedef struct tagUAL_DATA_BLOB WCHAR UserName[MAX_PATH]; } UAL_DATA_BLOB, *PUAL_DATA_BLOB; @@ -17,7 +10,7 @@ diff --git a/um/ual.h b/um/ual.h HRESULT WINAPI UalStart( -@@ -54,6 +56,7 @@ +@@ -54,6 +55,7 @@ UalRegisterProduct( _In_z_ const WCHAR* wszProductName, _In_z_ const WCHAR* wszRoleName, _In_z_ const WCHAR* wszGuid); diff --git a/generation/WinSDK/patches/um/waasapi.idl.patch b/generation/WinSDK/patches/um/waasapi.idl.patch index b718cfd8e..a241b9bbb 100644 --- a/generation/WinSDK/patches/um/waasapi.idl.patch +++ b/generation/WinSDK/patches/um/waasapi.idl.patch @@ -1,13 +1,12 @@ diff --git a/um/waasapi.idl b/um/waasapi.idl -index b1de0c62..568e917c 100644 +index b1de0c62..6ddd4689 100644 --- a/um/waasapi.idl +++ b/um/waasapi.idl -@@ -15,12 +15,16 @@ cpp_quote("#pragma once") +@@ -15,12 +15,15 @@ cpp_quote("#pragma once") cpp_quote("#endif") cpp_quote("") cpp_quote("#include ") -+#include -+cpp_quote("#include ") ++#include #pragma region Desktop Family cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") diff --git a/generation/WinSDK/patches/um/windowsceip.h.patch b/generation/WinSDK/patches/um/windowsceip.h.patch index 05bb95525..8c1de42e9 100644 --- a/generation/WinSDK/patches/um/windowsceip.h.patch +++ b/generation/WinSDK/patches/um/windowsceip.h.patch @@ -1,15 +1,8 @@ diff --git a/um/windowsceip.h b/um/windowsceip.h +index dcfabac7..bb114e21 100644 --- a/um/windowsceip.h +++ b/um/windowsceip.h -@@ -17,6 +17,7 @@ - #endif // _MSC_VER - - #include -+#include - - #ifdef __cplusplus - extern "C" { -@@ -27,6 +28,7 @@ +@@ -27,6 +27,7 @@ extern "C" { #if (NTDDI_VERSION >= NTDDI_WIN8) diff --git a/generation/WinSDK/patches/um/winhttp.h.patch b/generation/WinSDK/patches/um/winhttp.h.patch index 9f55527b9..14c4d6bbd 100644 --- a/generation/WinSDK/patches/um/winhttp.h.patch +++ b/generation/WinSDK/patches/um/winhttp.h.patch @@ -1,16 +1,8 @@ diff --git a/um/winhttp.h b/um/winhttp.h -index ddcdcb38..a783c119 100644 +index ddcdcb38..797d6599 100644 --- a/um/winhttp.h +++ b/um/winhttp.h -@@ -16,6 +16,7 @@ Abstract: - #define _WINHTTPX_ - - #include -+#include - - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -90,6 +91,16 @@ typedef INTERNET_PORT * LPINTERNET_PORT; +@@ -90,6 +90,16 @@ typedef INTERNET_PORT * LPINTERNET_PORT; SECURITY_FLAG_IGNORE_CERT_DATE_INVALID) @@ -27,7 +19,7 @@ index ddcdcb38..a783c119 100644 // // WINHTTP_ASYNC_RESULT - this structure is returned to the application via // the callback with WINHTTP_CALLBACK_STATUS_REQUEST_COMPLETE. It is not sufficient to -@@ -141,6 +152,12 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME; +@@ -141,6 +151,12 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME; #endif @@ -40,7 +32,7 @@ index ddcdcb38..a783c119 100644 // // URL_COMPONENTS - the constituent parts of an URL. Used in WinHttpCrackUrl() // and WinHttpCreateUrl() -@@ -168,7 +185,7 @@ typedef struct _WINHTTP_URL_COMPONENTS +@@ -168,7 +184,7 @@ typedef struct _WINHTTP_URL_COMPONENTS DWORD dwStructSize; // size of this structure. Used in version check LPWSTR lpszScheme; // pointer to scheme name DWORD dwSchemeLength; // length of scheme name @@ -49,7 +41,7 @@ index ddcdcb38..a783c119 100644 LPWSTR lpszHostName; // pointer to host name DWORD dwHostNameLength; // length of host name INTERNET_PORT nPort; // converted port number -@@ -194,9 +211,13 @@ typedef LPURL_COMPONENTS LPURL_COMPONENTSW; +@@ -194,9 +210,13 @@ typedef LPURL_COMPONENTS LPURL_COMPONENTSW; // set proxy information on a WinHttpOpen() handle // @@ -64,7 +56,7 @@ index ddcdcb38..a783c119 100644 LPWSTR lpszProxy; // proxy server list LPWSTR lpszProxyBypass; // proxy bypass list } WINHTTP_PROXY_INFO, *LPWINHTTP_PROXY_INFO, *PWINHTTP_PROXY_INFO; -@@ -253,7 +274,7 @@ typedef struct _WINHTTP_PROXY_RESULT_ENTRY +@@ -253,7 +273,7 @@ typedef struct _WINHTTP_PROXY_RESULT_ENTRY { BOOL fProxy; // Is this a proxy or DIRECT? BOOL fBypass; // If DIRECT, is it bypassing a proxy (intranet) or is all traffic DIRECT (internet) @@ -73,7 +65,7 @@ index ddcdcb38..a783c119 100644 PWSTR pwszProxy; // Hostname of the proxy. INTERNET_PORT ProxyPort; // Port of the proxy. } WINHTTP_PROXY_RESULT_ENTRY; -@@ -939,12 +960,16 @@ typedef struct _WINHTTP_FAILED_CONNECTION_RETRIES +@@ -939,12 +959,16 @@ typedef struct _WINHTTP_FAILED_CONNECTION_RETRIES #define WINHTTP_ENABLE_SPN_SERVER_PORT 0x00000001 #define WINHTTP_OPTION_SPN_MASK WINHTTP_ENABLE_SPN_SERVER_PORT @@ -91,7 +83,7 @@ index ddcdcb38..a783c119 100644 LPSTR lpszHostName; DWORD dwPort; } WINHTTP_CREDS, *PWINHTTP_CREDS; -@@ -956,7 +981,7 @@ typedef struct tagWINHTTP_CREDS_EX +@@ -956,7 +980,7 @@ typedef struct tagWINHTTP_CREDS_EX LPSTR lpszUserName; LPSTR lpszPassword; LPSTR lpszRealm; @@ -100,7 +92,7 @@ index ddcdcb38..a783c119 100644 LPSTR lpszHostName; DWORD dwPort; LPSTR lpszUrl; -@@ -981,6 +1006,12 @@ typedef struct tagWINHTTP_CREDS_EX +@@ -981,6 +1005,12 @@ typedef struct tagWINHTTP_CREDS_EX #define WINHTTP_AUTH_SCHEME_DIGEST 0x00000008 #define WINHTTP_AUTH_SCHEME_NEGOTIATE 0x00000010 @@ -113,7 +105,7 @@ index ddcdcb38..a783c119 100644 // WinHttp supported Authentication Targets #define WINHTTP_AUTH_TARGET_SERVER 0x00000000 -@@ -1034,7 +1065,9 @@ VOID +@@ -1034,7 +1064,9 @@ VOID IN DWORD dwStatusInformationLength ); @@ -123,7 +115,7 @@ index ddcdcb38..a783c119 100644 // -@@ -1349,12 +1382,25 @@ typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; +@@ -1349,12 +1381,25 @@ typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK; #define ICU_REJECT_USERPWD 0x00004000 // Rejects URLs whick have username/pwd sections #define ICU_ESCAPE_AUTHORITY 0x00002000 // Escape chars in authority components (user, pwd, host) @@ -149,7 +141,7 @@ index ddcdcb38..a783c119 100644 // WinHttpOpen prettifiers for optional parameters #define WINHTTP_NO_PROXY_NAME NULL #define WINHTTP_NO_PROXY_BYPASS NULL -@@ -1584,6 +1630,8 @@ typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG +@@ -1584,6 +1629,8 @@ typedef struct _WINHTTP_CURRENT_USER_IE_PROXY_CONFIG // prototypes // @@ -158,7 +150,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI WINHTTP_STATUS_CALLBACK WINAPI -@@ -1595,6 +1643,7 @@ WinHttpSetStatusCallback +@@ -1595,6 +1642,7 @@ WinHttpSetStatusCallback IN DWORD_PTR dwReserved ); @@ -166,7 +158,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1604,6 +1653,7 @@ WinHttpTimeFromSystemTime +@@ -1604,6 +1652,7 @@ WinHttpTimeFromSystemTime _Out_writes_bytes_(WINHTTP_TIME_FORMAT_BUFSIZE) LPWSTR pwszTime // output string buffer ); @@ -174,7 +166,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1613,6 +1663,7 @@ WinHttpTimeToSystemTime +@@ -1613,6 +1662,7 @@ WinHttpTimeToSystemTime _Out_ SYSTEMTIME *pst // output in GMT time ); @@ -182,7 +174,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1625,16 +1676,18 @@ WinHttpCrackUrl +@@ -1625,16 +1675,18 @@ WinHttpCrackUrl ); _Success_(return != FALSE) @@ -202,7 +194,7 @@ index ddcdcb38..a783c119 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1642,10 +1695,15 @@ WinHttpCreateUrl +@@ -1642,10 +1694,15 @@ WinHttpCreateUrl #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -218,7 +210,7 @@ index ddcdcb38..a783c119 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ #pragma endregion -@@ -1653,18 +1711,21 @@ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INF +@@ -1653,18 +1710,21 @@ WINHTTPAPI BOOL WINAPI WinHttpSetDefaultProxyConfiguration( IN WINHTTP_PROXY_INF #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -241,7 +233,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1673,6 +1734,7 @@ WinHttpCloseHandle +@@ -1673,6 +1733,7 @@ WinHttpCloseHandle IN HINTERNET hInternet ); @@ -249,7 +241,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI HINTERNET WINAPI -@@ -1684,6 +1746,7 @@ WinHttpConnect +@@ -1684,6 +1745,7 @@ WinHttpConnect IN DWORD dwReserved ); @@ -257,7 +249,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1694,6 +1757,7 @@ WinHttpReadData +@@ -1694,6 +1756,7 @@ WinHttpReadData IN DWORD dwNumberOfBytesToRead, OUT LPDWORD lpdwNumberOfBytesRead ); @@ -265,7 +257,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD -@@ -1709,6 +1773,8 @@ WinHttpReadDataEx +@@ -1709,6 +1772,8 @@ WinHttpReadDataEx _In_reads_bytes_opt_(cbProperty) PVOID pvProperty ); @@ -274,7 +266,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1720,6 +1786,7 @@ WinHttpWriteData +@@ -1720,6 +1785,7 @@ WinHttpWriteData OUT LPDWORD lpdwNumberOfBytesWritten ); @@ -282,7 +274,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1730,6 +1797,7 @@ WinHttpQueryDataAvailable +@@ -1730,6 +1796,7 @@ WinHttpQueryDataAvailable ); _Success_(return != FALSE) @@ -290,7 +282,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1741,6 +1809,7 @@ WinHttpQueryOption +@@ -1741,6 +1808,7 @@ WinHttpQueryOption IN OUT LPDWORD lpdwBufferLength ); @@ -298,7 +290,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1767,6 +1836,7 @@ WinHttpSetOption +@@ -1767,6 +1835,7 @@ WinHttpSetOption _In_ DWORD dwBufferLength ); @@ -306,7 +298,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1778,6 +1848,7 @@ WinHttpSetTimeouts +@@ -1778,6 +1847,7 @@ WinHttpSetTimeouts IN int nSendTimeout, IN int nReceiveTimeout ); @@ -314,7 +306,7 @@ index ddcdcb38..a783c119 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1807,6 +1878,8 @@ WinHttpIsHostInProxyBypassList +@@ -1807,6 +1877,8 @@ WinHttpIsHostInProxyBypassList // prototypes // @@ -323,7 +315,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI HINTERNET WINAPI -@@ -1818,9 +1891,10 @@ WinHttpOpenRequest +@@ -1818,9 +1890,10 @@ WinHttpOpenRequest IN LPCWSTR pwszVersion, IN LPCWSTR pwszReferrer OPTIONAL, IN LPCWSTR FAR * ppwszAcceptTypes OPTIONAL, @@ -335,7 +327,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1833,6 +1907,7 @@ WinHttpAddRequestHeaders +@@ -1833,6 +1906,7 @@ WinHttpAddRequestHeaders IN DWORD dwHeadersLength, IN DWORD dwModifiers ); @@ -343,7 +335,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD -@@ -1847,6 +1922,8 @@ WinHttpAddRequestHeadersEx +@@ -1847,6 +1921,8 @@ WinHttpAddRequestHeadersEx _In_reads_(cHeaders) WINHTTP_EXTENDED_HEADER *pHeaders ); @@ -352,7 +344,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1861,6 +1938,7 @@ WinHttpSendRequest +@@ -1861,6 +1937,7 @@ WinHttpSendRequest IN DWORD_PTR dwContext ); @@ -360,7 +352,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1881,6 +1959,7 @@ WinHttpSetCredentials +@@ -1881,6 +1958,7 @@ WinHttpSetCredentials IN LPVOID pAuthParams ); @@ -368,7 +360,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1891,6 +1970,7 @@ WinHttpQueryAuthSchemes +@@ -1891,6 +1969,7 @@ WinHttpQueryAuthSchemes OUT LPDWORD lpdwFirstScheme, // returns the first auth scheme returned by the server OUT LPDWORD pdwAuthTarget ); @@ -376,7 +368,7 @@ index ddcdcb38..a783c119 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1914,6 +1994,8 @@ WinHttpQueryAuthParams +@@ -1914,6 +1993,8 @@ WinHttpQueryAuthParams #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -385,7 +377,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1924,6 +2006,7 @@ WinHttpReceiveResponse +@@ -1924,6 +2005,7 @@ WinHttpReceiveResponse ); _Success_(return != FALSE) @@ -393,7 +385,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1936,6 +2019,7 @@ WinHttpQueryHeaders +@@ -1936,6 +2018,7 @@ WinHttpQueryHeaders IN OUT LPDWORD lpdwBufferLength, IN OUT LPDWORD lpdwIndex OPTIONAL ); @@ -401,7 +393,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD -@@ -1948,7 +2032,7 @@ WinHttpQueryHeadersEx +@@ -1948,7 +2031,7 @@ WinHttpQueryHeadersEx _In_ UINT uiCodePage, _Inout_opt_ PDWORD pdwIndex, _In_opt_ PWINHTTP_HEADER_NAME pHeaderName, @@ -410,7 +402,7 @@ index ddcdcb38..a783c119 100644 _Inout_ PDWORD pdwBufferLength, _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER *ppHeaders, _Out_ PDWORD pdwHeadersCount -@@ -1979,6 +2063,8 @@ WinHttpFreeQueryConnectionGroupResult +@@ -1979,6 +2062,8 @@ WinHttpFreeQueryConnectionGroupResult #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -419,7 +411,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1988,6 +2074,7 @@ WinHttpDetectAutoProxyConfigUrl +@@ -1988,6 +2073,7 @@ WinHttpDetectAutoProxyConfigUrl _Outptr_result_maybenull_ LPWSTR * ppwstrAutoConfigUrl ); @@ -427,7 +419,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -1998,7 +2085,9 @@ WinHttpGetProxyForUrl +@@ -1998,7 +2084,9 @@ WinHttpGetProxyForUrl IN WINHTTP_AUTOPROXY_OPTIONS * pAutoProxyOptions, OUT WINHTTP_PROXY_INFO * pProxyInfo ); @@ -437,7 +429,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD WINAPI -@@ -2018,6 +2107,7 @@ WinHttpGetProxyForUrlEx +@@ -2018,6 +2106,7 @@ WinHttpGetProxyForUrlEx _In_ WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, _In_opt_ DWORD_PTR pContext ); @@ -445,7 +437,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD -@@ -2032,6 +2122,7 @@ WinHttpGetProxyForUrlEx2 +@@ -2032,6 +2121,7 @@ WinHttpGetProxyForUrlEx2 _In_opt_ DWORD_PTR pContext ); @@ -453,7 +445,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD WINAPI -@@ -2050,6 +2141,7 @@ WinHttpGetProxyResultEx +@@ -2050,6 +2140,7 @@ WinHttpGetProxyResultEx _Out_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -461,7 +453,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI VOID WINAPI -@@ -2066,6 +2158,7 @@ WinHttpFreeProxyResultEx +@@ -2066,6 +2157,7 @@ WinHttpFreeProxyResultEx _Inout_ WINHTTP_PROXY_RESULT_EX *pProxyResultEx ); @@ -469,7 +461,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI DWORD WINAPI -@@ -2075,6 +2168,8 @@ WinHttpResetAutoProxy +@@ -2075,6 +2167,8 @@ WinHttpResetAutoProxy _In_ DWORD dwFlags ); @@ -478,7 +470,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI BOOL WINAPI -@@ -2181,6 +2276,8 @@ typedef struct _WINHTTP_WEB_SOCKET_STATUS +@@ -2181,6 +2275,8 @@ typedef struct _WINHTTP_WEB_SOCKET_STATUS #define WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 #define WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE 15000 @@ -487,7 +479,7 @@ index ddcdcb38..a783c119 100644 WINHTTPAPI HINTERNET WINAPI -@@ -2246,6 +2343,7 @@ WinHttpWebSocketQueryCloseStatus +@@ -2246,6 +2342,7 @@ WinHttpWebSocketQueryCloseStatus _In_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD dwReasonLength, _Out_range_(0, WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH) DWORD *pdwReasonLengthConsumed ); @@ -495,7 +487,7 @@ index ddcdcb38..a783c119 100644 typedef enum _WINHTTP_PROTOCOL_OPERATION { -@@ -2509,6 +2607,24 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS +@@ -2509,6 +2606,24 @@ typedef struct _WINHTTP_FAST_FORWARDING_STATUS diff --git a/generation/WinSDK/patches/um/wslapi.h.patch b/generation/WinSDK/patches/um/wslapi.h.patch index eaf6c6905..1a2b1ddda 100644 --- a/generation/WinSDK/patches/um/wslapi.h.patch +++ b/generation/WinSDK/patches/um/wslapi.h.patch @@ -1,15 +1,8 @@ diff --git a/um/wslapi.h b/um/wslapi.h +index 2531a6f8..2c61ca6f 100644 --- a/um/wslapi.h +++ b/um/wslapi.h -@@ -15,6 +15,7 @@ - - #include - #include -+#include - - #ifdef _CONTRACT_GEN - #include -@@ -31,12 +32,14 @@ +@@ -31,12 +31,14 @@ extern "C" { #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SERVER) /* Determines if a distribution is already registered */ @@ -24,7 +17,7 @@ diff --git a/um/wslapi.h b/um/wslapi.h HRESULT WslRegisterDistribution( _In_ PCWSTR distributionName, -@@ -44,6 +47,7 @@ +@@ -44,6 +46,7 @@ WslRegisterDistribution( ); /* Unregisters the specified distribution */ @@ -32,7 +25,7 @@ diff --git a/um/wslapi.h b/um/wslapi.h HRESULT WslUnregisterDistribution( _In_ PCWSTR distributionName -@@ -63,6 +67,7 @@ +@@ -63,6 +66,7 @@ DEFINE_ENUM_FLAG_OPERATORS(WSL_DISTRIBUTION_FLAGS); #define WSL_DISTRIBUTION_FLAGS_DEFAULT (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING) /* Configure the given distribution */ @@ -40,7 +33,7 @@ diff --git a/um/wslapi.h b/um/wslapi.h HRESULT WslConfigureDistribution( _In_ PCWSTR distributionName, -@@ -71,6 +76,7 @@ +@@ -71,6 +75,7 @@ WslConfigureDistribution( ); /* Get the given distribution's configuration info */ @@ -48,7 +41,7 @@ diff --git a/um/wslapi.h b/um/wslapi.h HRESULT WslGetDistributionConfiguration( _In_ PCWSTR distributionName, -@@ -81,6 +87,7 @@ +@@ -81,6 +86,7 @@ WslGetDistributionConfiguration( _Out_ ULONG* defaultEnvironmentVariableCount ); @@ -56,7 +49,7 @@ diff --git a/um/wslapi.h b/um/wslapi.h HRESULT WslLaunchInteractive( _In_ PCWSTR distributionName, -@@ -89,6 +96,7 @@ +@@ -89,6 +95,7 @@ WslLaunchInteractive( _Out_ DWORD* exitCode ); diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index 75ff240ea..b937de407 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -92,7 +92,7 @@ function Invoke-PreparedMidl([string]$Staging) { throw "A pinned MIDL input changed while being copied: $($input.path)" } } - foreach ($patch in @($patches | Where-Object isIdl)) { + foreach ($patch in @($patches | Where-Object isMidlInput)) { Invoke-HeaderPatch $patch $raw } foreach ($input in $midlInputs) { @@ -354,8 +354,8 @@ $patches = @($config.patches | ForEach-Object { throw "A patch must modify one admitted SDK artifact without changing its identity: $_" } $artifact = $newPath.Replace('/', '\') - $input = @($midlInputs | Where-Object { $_.path -eq $artifact -and [IO.Path]::GetExtension($_.path) -eq '.idl' }) - $isIdl = $input.Count -eq 1 + $input = @($midlInputs | Where-Object path -eq $artifact) + $isIdl = $input.Count -eq 1 -and [IO.Path]::GetExtension($artifact) -eq '.idl' if ($isIdl) { $sdk = $input[0].fullPath } @@ -375,6 +375,10 @@ $patches = @($config.patches | ForEach-Object { if ($header.sourceSha256 -ne $header.sdkSha256) { throw "A direct SDK header patch requires the pristine SDK preimage: $_" } + if ($input.Count -eq 1 -and ($input[0].sourceKind -ne 'sdk' -or + $input[0].fullPath -ne $sdk -or $input[0].sha256 -ne $header.sdkSha256)) { + throw "A patched header shared with MIDL must bind the same pristine SDK input: $artifact" + } } if (!$sdk.EndsWith("\$artifact", [StringComparison]::OrdinalIgnoreCase)) { throw "Patch target does not match its canonical SDK artifact: $_" @@ -395,7 +399,9 @@ $patches = @($config.patches | ForEach-Object { throw "Patch changes a path other than its admitted SDK artifact: $statistic" } } - [pscustomobject]@{ path = $_; fullPath = $path; sha256 = Get-Sha256 $path; isIdl = $isIdl } + [pscustomobject]@{ + path = $_; fullPath = $path; sha256 = Get-Sha256 $path; isIdl = $isIdl; isMidlInput = $input.Count -eq 1 + } }) [IO.Directory]::CreateDirectory($OutputRoot) | Out-Null $lock = [IO.File]::Open("$OutputRoot\prepare.lock", [IO.FileMode]::OpenOrCreate, [IO.FileAccess]::ReadWrite, [IO.FileShare]::None) diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 3359cf7b8..cf629e90f 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -344,6 +344,38 @@ public void UnrelatedIdlBackedHeaderRetainsItsPinnedMirrorWithoutExpandingTheMid Assert.Equal(original, File.ReadAllBytes(Path.Combine(repeated.IncludeRoot, "um", "unrelated.h"))); } + [Fact] + public void SharedSdkHeaderPatchReachesBothNativeAndMidlInputs() + { + using var fixture = new Fixture(); + fixture.EnableMidlSharedHeader(); + byte[] original = File.ReadAllBytes(fixture.SdkHeader); + var prepared = fixture.Prepare(); + byte[] header = File.ReadAllBytes(Path.Combine(prepared.IncludeRoot, "um", "sample.h")); + Assert.Contains("#define VALUE 2", Encoding.UTF8.GetString(header)); + string midl = Path.Combine(Path.GetDirectoryName(prepared.IncludeRoot), "midl"); + foreach (string stage in new[] { "source", "sal" }) + Assert.Equal(header, File.ReadAllBytes(Path.Combine(midl, stage, "um", "sample.h"))); + Assert.Equal(original, File.ReadAllBytes(fixture.SdkHeader)); + Assert.Equal(original, File.ReadAllBytes(fixture.Header)); + using var inputs = JsonDocument.Parse(File.ReadAllText(Path.Combine(midl, "preprocessed-inputs.json"))); + Assert.Contains(@"um\sample.h", inputs.RootElement.EnumerateArray().Select(value => value.GetString())); + Assert.True(fixture.Prepare().Reused); + } + + [Fact] + public void SharedSdkHeaderCannotBindDifferentNativeAndMidlArtifacts() + { + using var fixture = new Fixture(); + fixture.EnableMidlSharedHeader(); + File.Copy(fixture.SdkHeader, Path.Combine(Path.GetDirectoryName(fixture.SdkHeader), "other.h")); + fixture.MutateRecipe(recipe => recipe["midl"]["inputs"][2]["sdkPath"] = @"c\include\um\other.h"); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("same pristine SDK input", result.Error); + Assert.Empty(Directory.GetDirectories(fixture.Output)); + } + [Fact] public void SourcePinnedAnnotationHeaderAndMidlDefinesReachTheActualPreprocessor() { @@ -751,6 +783,26 @@ internal void EnableMidl() }); } + internal void EnableMidlSharedHeader() + { + EnableMidl(); + File.AppendAllText(MidlInput, + "\r\n#include \"sample.h\"\r\n#if VALUE != 2\r\n" + + "#error The shared SDK header patch did not reach MIDL preprocessing.\r\n#endif\r\n"); + MutateRecipe(recipe => + { + string hash = Hash(File.ReadAllBytes(MidlInput)); + recipe["midl"]["inputs"][0]["sdkSha256"] = hash; + recipe["headers"][1]["sdkSha256"] = hash; + recipe["midl"]["inputs"].AsArray().Add(JsonSerializer.SerializeToNode(new + { + path = @"um\sample.h", + sdkPath = @"c\include\um\sample.h", + sdkSha256 = Hash(File.ReadAllBytes(SdkHeader)), + })); + }); + } + internal void EnableMidlAnnotationHeader() { EnableMidl(); diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 696be5490..dd273593f 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -120,6 +120,19 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() patches.Where(path => Path.GetFileName(path).StartsWith("winhttp.", StringComparison.Ordinal))); Assert.DoesNotContain("_Win32_ImportLibrary_", File.ReadAllText(Path.Combine(root, @"um\winhttp.h.patch"))); string[] patchTexts = patches.Select(path => File.ReadAllText(Path.Combine(root, path)).Replace("\r\n", "\n")).ToArray(); + Assert.Equal(new[] { @"shared\sal.h.patch" }, patches.Where(path => + File.ReadAllText(Path.Combine(root, path)).Contains("win32metadata_annotations.h", StringComparison.Ordinal))); + Assert.Contains("+#include ", + File.ReadAllText(Path.Combine(root, @"shared\sal.h.patch"))); + foreach (string idl in new[] { "waasapi", "propidlbase" }) + { + string text = File.ReadAllText(Path.Combine(root, @"um\" + idl + ".idl.patch")); + Assert.Contains("+#include ", text); + Assert.DoesNotContain("win32metadata_annotations.h", text); + } + foreach (string input in new[] { @"shared\sal.h", @"shared\concurrencysal.h" }) + Assert.Single(recipe.RootElement.GetProperty("midl").GetProperty("inputs").EnumerateArray() + .Where(value => value.GetProperty("path").GetString() == input)); Assert.Equal(18, patchTexts.Sum(text => Regex.Matches(text, @"(?m)^\+_Win32_(?:FlagsEnum|Enum)_\(").Count)); Assert.Single(patchTexts.Where(text => text.Contains( "+cpp_quote(\"_Win32_Enum_(PROPSPEC_KIND, ULONG, PRSPEC_LPWSTR, PRSPEC_PROPID);\")", StringComparison.Ordinal))); From c47967079a1ccfb0739b0958f0d43f9c62fc172e Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 22:13:02 -0700 Subject: [PATCH 37/57] Grade canonical result encoding and native warning parity Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 3 + scripts/Build-WinHttpMigrationImage.ps1 | 4 +- .../WinHttpMigrationTests.cs | 64 ++++++++++++------- .../WinHttpNativeControlTests.cs | 40 ++++++++---- 4 files changed, 76 insertions(+), 35 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index a18b9de3c..a942a2fae 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -6,6 +6,9 @@ migration layer above the tooling PR, not a replacement for that tooling. This document's inventory and image grades describe the isolated WinHttp checkpoint. The [migration playbook](header-annotation-migration-playbook.md) records the subsequently authorized ten partitions and their combined-image grades. +The [SDK-wide adoption playbook](copilot/plans/header-annotation-migration-playbook.md) +defines the current rollout procedure; this document retains the pilot's +bounded ownership and historical evidence. ## Partition review playbook diff --git a/scripts/Build-WinHttpMigrationImage.ps1 b/scripts/Build-WinHttpMigrationImage.ps1 index b38dd20cb..95a53870b 100644 --- a/scripts/Build-WinHttpMigrationImage.ps1 +++ b/scripts/Build-WinHttpMigrationImage.ps1 @@ -216,8 +216,7 @@ try { "@$generated\emitter.functionPointerFixups.generated.rsp", "@$generated\emitter.autoFnPtr.crossarch.generated.rsp", "@$generated\enumsMakeFlags.generated.rsp", "@$generated\enumsRemap.rsp") Invoke-Dotnet $arguments "$OutputDirectory\emit.log" - Invoke-Dotnet @("$repo\bin\Release\net10.0\WinmdUtils.dll", 'compare', - '--first', "$BaselineDirectory\Windows.Win32.winmd", '--second', $winmd) "$OutputDirectory\comparison.log" + $comparison = Get-ApiComparison "$BaselineDirectory\Windows.Win32.winmd" $winmd "$OutputDirectory\comparison.log" Assert-CommittedProducer $receipt = [ordered]@{ kind = 'tooling-control' @@ -228,6 +227,7 @@ try { newWinmdSha256 = Get-Sha256 $winmd sourceCommit = $sourceCommit toolFiles = $toolFiles + comparison = $comparison frozenEmitterInputs = @(Get-ChildItem -LiteralPath $inputs -File | ForEach-Object { [ordered]@{ path = $_.Name; sha256 = Get-Sha256 $_.FullName } }) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index dd273593f..8e172ced0 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -219,7 +219,7 @@ public void SourceIdlPropertyStorageFactsReachOnlyTheirExistingPhysicalTargets(i { var before = Find(old.Reader, PropertyStorageNamespace + "." + name); var after = Find(current.Reader, PropertyStorageNamespace + "." + name); - Assert.Equal(SnapshotType(old.Reader, before), SnapshotType(current.Reader, after)); + Assert.Equal(SnapshotType(old.Reader, before, canonicalizeLegacyResults: true), SnapshotType(current.Reader, after)); Assert.Equal(new[] { "windows5.0" }, AttributeValues(current.Reader, after.GetCustomAttributes(), "SupportedOSPlatformAttribute")); foreach (var method in after.GetMethods().Select(current.Reader.GetMethodDefinition)) @@ -227,8 +227,8 @@ public void SourceIdlPropertyStorageFactsReachOnlyTheirExistingPhysicalTargets(i string methodName = current.Reader.GetString(method.Name); Assert.Empty(AttributeValues(current.Reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute")); bool preserve = name.StartsWith("IEnum", StringComparison.Ordinal) && (methodName == "Next" || methodName == "Skip"); - Assert.Equal(preserve ? 1 : 0, - method.GetCustomAttributes().Count(handle => AttributeName(current.Reader, handle) == "CanReturnMultipleSuccessValuesAttribute")); + Assert.Equal(preserve, method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig)); + Assert.DoesNotContain(method.GetCustomAttributes(), handle => IsLegacyResultAttribute(current.Reader, handle)); } } var group = Find(current.Reader, PropertyStorageNamespace + ".PROPSPEC_KIND"); @@ -260,7 +260,7 @@ public void SourceIdlPropertyStorageFactsReachOnlyTheirExistingPhysicalTargets(i foreach (string name in new[] { "STATPROPSETSTG", "VERSIONEDSTREAM" }) Assert.Equal(SnapshotType(old.Reader, Find(old.Reader, PropertyStorageNamespace + "." + name)), SnapshotType(current.Reader, Find(current.Reader, PropertyStorageNamespace + "." + name))); - this.output.WriteLine($"Architecture {architecture}: four unchanged type-only floors and method contracts, " + + this.output.WriteLine($"Architecture {architecture}: four unchanged type-only floors, canonical PreserveSig on four Next/Skip methods, " + "one unchanged two-member enum, and exactly three native-storage/AssociatedEnum field uses."); TypeDefinition Find(MetadataReader reader, string name) => reader.TypeDefinitions.Select(reader.GetTypeDefinition) @@ -343,7 +343,7 @@ static string[] EnumIdentities(MetadataReader reader) => Types(reader) } [MigrationFact] - public void FrozenInputToolingControlChangesOnlyMissingConstructorInstanceBits() + public void FrozenInputToolingControlChangesOnlyConstructorBitsAndCanonicalResultEncoding() { using var old = Open("WINHTTP_MIGRATION_OLD"); using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); @@ -352,20 +352,28 @@ public void FrozenInputToolingControlChangesOnlyMissingConstructorInstanceBits() var before = Types(old.Reader); var after = Types(control.Reader); Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); - int corrected = 0, constructors = 0; + int corrected = 0, constructors = 0, resultSites = 0, resultAttributes = 0; foreach (var entry in before) { var original = SnapshotType(old.Reader, entry.Value); - var expected = SnapshotType(old.Reader, entry.Value, correctConstructorInstanceBits: true); + var constructorControl = SnapshotType(old.Reader, entry.Value, correctConstructorInstanceBits: true); + var expected = SnapshotType(old.Reader, entry.Value, correctConstructorInstanceBits: true, canonicalizeLegacyResults: true); Assert.Equal(expected, SnapshotType(control.Reader, after[entry.Key])); - corrected += original == expected ? 0 : 1; - constructors += entry.Value.GetMethods().Select(old.Reader.GetMethodDefinition).Count(method => + corrected += original == constructorControl ? 0 : 1; + var methods = entry.Value.GetMethods().Select(old.Reader.GetMethodDefinition).ToArray(); + constructors += methods.Count(method => old.Reader.GetString(method.Name) == ".ctor" && !method.Attributes.HasFlag(MethodAttributes.Static) && !method.DecodeSignature(Signatures, null).Header.IsInstance); + resultSites += methods.Count(method => method.GetCustomAttributes().Any(handle => IsLegacyResultAttribute(old.Reader, handle))); + resultAttributes += methods.Sum(method => method.GetCustomAttributes().Count(handle => IsLegacyResultAttribute(old.Reader, handle))); } Assert.Equal(39, constructors); Assert.Equal(39, corrected); - this.output.WriteLine($"Frozen-input tooling control: {constructors} constructor rows in {corrected} types gain HASTHIS; all other type snapshots are identical."); + Assert.Equal(149, resultSites); + Assert.Equal(resultSites, resultAttributes); + Assert.DoesNotContain(control.Reader.CustomAttributes, handle => IsLegacyResultAttribute(control.Reader, handle)); + this.output.WriteLine($"Frozen-input tooling control: {constructors} constructor rows in {corrected} types gain HASTHIS; " + + $"all {resultSites} legacy success-marker sites use PreserveSig, with no other physical changes."); } [MigrationFact] @@ -392,25 +400,25 @@ public void EveryPhysicalTypeHasOnlyReviewedEnumUseSiteChanges() } [MigrationFact("WINHTTP_MIGRATION_ACCEPTED")] - public void ExpandedPilotPreservesAcceptedScopeFactsExceptThreeSourceIdlFieldUses() + public void ExpandedPilotPreservesAcceptedScopeFactsApartFromReviewedFieldsAndCanonicalResults() { string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_ACCEPTED"); Assert.Equal("A0C321735141D55C98BCD7D048F822AAA0DA1D9434309ABA1782F79C220773BB", Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); using var accepted = Open("WINHTTP_MIGRATION_ACCEPTED"); using var current = Open("WINHTTP_MIGRATION_NEW"); - AssertOnlyPropertyStorageFieldTransitions(accepted.Reader, current.Reader, "accepted B9"); + AssertOnlyPropertyStorageFieldsAndCanonicalResults(accepted.Reader, current.Reader, "accepted B9"); } [MigrationFact("WINHTTP_MIGRATION_DIRECT_CONTROL")] - public void ExpandedPilotPreservesMatchedDirectScopeFactsExceptThreeSourceIdlFieldUses() + public void ExpandedPilotPreservesMatchedDirectScopeFactsApartFromReviewedFieldsAndCanonicalResults() { string path = Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_DIRECT_CONTROL"); Assert.Equal("AA7B0D71E535787D2A5B623F8B144AEDCF66A464F1E769C7ADC56CF83EA2EE43", Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); using var direct = Open("WINHTTP_MIGRATION_DIRECT_CONTROL"); using var current = Open("WINHTTP_MIGRATION_NEW"); - AssertOnlyPropertyStorageFieldTransitions(direct.Reader, current.Reader, "matched canonical-direct control"); + AssertOnlyPropertyStorageFieldsAndCanonicalResults(direct.Reader, current.Reader, "matched canonical-direct control"); } [MigrationTheory] @@ -822,7 +830,7 @@ internal static string[] SnapshotNamespace(MetadataReader reader, string ns) .Select(reader.GetTypeDefinition) .Select(type => SnapshotType(reader, type)).OrderBy(value => value, StringComparer.Ordinal).ToArray(); - private void AssertOnlyPropertyStorageFieldTransitions(MetadataReader expectedReader, MetadataReader actualReader, string baseline) + private void AssertOnlyPropertyStorageFieldsAndCanonicalResults(MetadataReader expectedReader, MetadataReader actualReader, string baseline) { var before = Types(expectedReader); var after = Types(actualReader); @@ -832,22 +840,24 @@ private void AssertOnlyPropertyStorageFieldTransitions(MetadataReader expectedRe foreach (var entry in before) { string expected = SnapshotType(expectedReader, entry.Value, - usedEnumSites: used, normalizePropertyStorageEnumUses: true); + usedEnumSites: used, normalizePropertyStorageEnumUses: true, canonicalizeLegacyResults: true); string actual = SnapshotType(actualReader, after[entry.Key]); Assert.True(expected == actual, $"Unexpected expanded-pilot change against {baseline} in {entry.Key}.\nExpected:\n{expected}\nActual:\n{actual}"); } Assert.Equal(PropertyStorageEnumUses.Select(value => value.Site).OrderBy(value => value), used.OrderBy(value => value)); this.output.WriteLine($"All {before.Count} {baseline} physical types graded: zero scope-adoption changes, " + - "only the three separately asserted source-IDL native-storage/AssociatedEnum field transitions."); + "only canonical result encoding and the three separately asserted source-IDL native-storage/AssociatedEnum field transitions."); } internal static string SnapshotType(MetadataReader reader, TypeDefinition type, bool correctConstructorInstanceBits = false, - bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null, bool normalizePropertyStorageEnumUses = false) + bool normalizeReviewedEnumUses = false, ISet usedEnumSites = null, bool normalizePropertyStorageEnumUses = false, + bool canonicalizeLegacyResults = false) { - string Attributes(CustomAttributeHandleCollection values, string associatedEnum = null) + string Attributes(CustomAttributeHandleCollection values, string associatedEnum = null, bool omitLegacyResults = false) { - var attributes = values.Select(handle => AttributeTypeName(reader, handle) + ":" + + var attributes = values.Where(handle => !omitLegacyResults || !IsLegacyResultAttribute(reader, handle)) + .Select(handle => AttributeTypeName(reader, handle) + ":" + Convert.ToHexString(reader.GetBlobBytes(reader.GetCustomAttribute(handle).Value))).ToList(); if (associatedEnum != null) { @@ -919,8 +929,11 @@ string Attributes(CustomAttributeHandleCollection values, string associatedEnum Assert.Equal(0, header); header |= 0x20; } - rows.Add($"M|{methodName}|{method.Attributes}|{method.ImplAttributes}|{Signature(signature, header, parameterTypes)}|" + - $"{Import(reader, method)}|{Attributes(method.GetCustomAttributes())}"); + bool canonicalResult = canonicalizeLegacyResults && + method.GetCustomAttributes().Any(handle => IsLegacyResultAttribute(reader, handle)); + var implementation = canonicalResult ? method.ImplAttributes | MethodImplAttributes.PreserveSig : method.ImplAttributes; + rows.Add($"M|{methodName}|{method.Attributes}|{implementation}|{Signature(signature, header, parameterTypes)}|" + + $"{Import(reader, method)}|{Attributes(method.GetCustomAttributes(), omitLegacyResults: canonicalResult)}"); foreach (var parameter in parameters) { string attributes = Attributes(parameter.GetCustomAttributes(), parameterEnums.GetValueOrDefault(parameter.SequenceNumber)); @@ -990,6 +1003,13 @@ private static string[] AttributeValues(MetadataReader reader, CustomAttributeHa private static string AttributeName(MetadataReader reader, CustomAttributeHandle handle) => AttributeTypeName(reader, handle).Split('.').Last(); + private static bool IsLegacyResultAttribute(MetadataReader reader, CustomAttributeHandle handle) + { + string name = AttributeTypeName(reader, handle); + return name == MetadataNamespace + ".CanReturnErrorsAsSuccessAttribute" || + name == MetadataNamespace + ".CanReturnMultipleSuccessValuesAttribute"; + } + private static string AttributeTypeName(MetadataReader reader, CustomAttributeHandle handle) { var constructor = reader.GetCustomAttribute(handle).Constructor; diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 0668bdf02..46019a326 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -44,8 +44,12 @@ public unsafe void MetadataDisabledHeadersCompileWithIdenticalNativeAbi(string p using WINHTTP_CREDS_AUTHSCHEME = void; using WINHTTP_INTERNET_SCHEME = void; "; - var before = Surface(root, original, partition, architecture, target, headers, checks); - var after = Surface(root, prepared, partition, architecture, target, headers, checks); + var originalDiagnostics = new List(); + var preparedDiagnostics = new List(); + var before = Surface(root, original, partition, architecture, target, headers, checks, diagnostics: originalDiagnostics); + var after = Surface(root, prepared, partition, architecture, target, headers, checks, diagnostics: preparedDiagnostics); + Assert.Equal(originalDiagnostics.OrderBy(value => value, StringComparer.Ordinal), + preparedDiagnostics.OrderBy(value => value, StringComparer.Ordinal)); Assert.Equal(61, before.Count(value => value.StartsWith("function WinHttp", StringComparison.Ordinal))); Assert.True(before.Count(value => value.StartsWith("field ", StringComparison.Ordinal)) > 50); Assert.Contains(before, value => value.StartsWith("typedef LPWINHTTP_STATUS_CALLBACK ", StringComparison.Ordinal)); @@ -216,8 +220,12 @@ public void AdditionalPreparedPartitionsKeepOrdinaryNativeAbi(string partition, ", _ => "", }; - var before = Surface(root, original, partition, architecture, target, headers, checks); - var after = Surface(root, prepared, partition, architecture, target, headers, checks); + var originalDiagnostics = new List(); + var preparedDiagnostics = new List(); + var before = Surface(root, original, partition, architecture, target, headers, checks, diagnostics: originalDiagnostics); + var after = Surface(root, prepared, partition, architecture, target, headers, checks, diagnostics: preparedDiagnostics); + Assert.Equal(originalDiagnostics.OrderBy(value => value, StringComparer.Ordinal), + preparedDiagnostics.OrderBy(value => value, StringComparer.Ordinal)); Assert.NotEmpty(before); Assert.Contains(before, value => value.StartsWith("function ", StringComparison.Ordinal) || value.StartsWith("record ", StringComparison.Ordinal)); Assert.Equal(before, after); @@ -252,11 +260,15 @@ public void RegeneratedSdkIdlKeepsNativeAbiAndOnlyTheIntendedAnnotation(string a string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); string[] headers = { "waasapi.h", "waasapitypes.h" }; var annotations = new List(); - var before = Surface(root, original, "UpdateAssessment", architecture, target, headers, ""); + var originalDiagnostics = new List(); + var preparedDiagnostics = new List(); + var before = Surface(root, original, "UpdateAssessment", architecture, target, headers, "", diagnostics: originalDiagnostics); var after = Surface(root, prepared, "UpdateAssessment", architecture, target, headers, "", - metadataEnabled: enabled, annotations: annotations); + metadataEnabled: enabled, annotations: annotations, diagnostics: preparedDiagnostics); Assert.NotEmpty(before); Assert.Equal(before, after); + Assert.Equal(originalDiagnostics.OrderBy(value => value, StringComparer.Ordinal), + preparedDiagnostics.OrderBy(value => value, StringComparer.Ordinal)); Assert.Equal(enabled ? new[] { "IWaaSAssessor|SupportedOSPlatform(\"windows10.0.15063\")" } : Array.Empty(), annotations.Distinct(StringComparer.Ordinal).OrderBy(value => value, StringComparer.Ordinal)); Assert.Contains("_Out_retval_ OSUpdateAssessment *result", File.ReadAllText(Path.Combine(prepared, "um", "waasapi.h"))); @@ -289,16 +301,20 @@ public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string head var annotations = new List(); var originalSal = new List(); var preparedSal = new List(); + var originalDiagnostics = new List(); + var preparedDiagnostics = new List(); var before = Surface(root, original, "Com.StructuredStorage", architecture, target, headers, checks, - sourceText: source, salAnnotations: originalSal); + sourceText: source, salAnnotations: originalSal, diagnostics: originalDiagnostics); var after = Surface(root, prepared, "Com.StructuredStorage", architecture, target, headers, checks + (enabled ? "" : "\nusing PROPSPEC_KIND = void;\n"), metadataEnabled: enabled, - annotations: annotations, sourceText: source, salAnnotations: preparedSal); + annotations: annotations, sourceText: source, salAnnotations: preparedSal, diagnostics: preparedDiagnostics); const string group = "typedef PROPSPEC_KIND unsigned long"; Assert.Equal(enabled ? new[] { group } : Array.Empty(), after.Where(value => value == group)); Assert.Equal(before, after.Where(value => value != group)); Assert.Equal(originalSal.OrderBy(value => value, StringComparer.Ordinal), preparedSal.OrderBy(value => value, StringComparer.Ordinal)); + Assert.Equal(originalDiagnostics.OrderBy(value => value, StringComparer.Ordinal), + preparedDiagnostics.OrderBy(value => value, StringComparer.Ordinal)); Assert.Contains(before, value => value.StartsWith("field ", StringComparison.Ordinal) && value.Contains("::wReserved1 unsigned short ", StringComparison.Ordinal)); Assert.Contains(before, value => value.StartsWith("field ", StringComparison.Ordinal) && @@ -354,7 +370,7 @@ public static IEnumerable PropertyStorageIdlControls() private static unsafe string[] Surface(string root, string includeRoot, string partition, string architecture, string target, string[] headers, string checks, bool metadataEnabled = false, List annotations = null, - string sourceText = null, List salAnnotations = null) + string sourceText = null, List salAnnotations = null, List diagnostics = null) { string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); var arguments = new List @@ -390,8 +406,10 @@ private static unsafe string[] Surface(string root, string includeRoot, string p for (uint i = 0; i < handle.NumDiagnostics; i++) { using var diagnostic = handle.GetDiagnostic(i); - Assert.True(diagnostic.Severity < CXDiagnosticSeverity.CXDiagnostic_Error, - diagnostic.Format(CXDiagnostic.DefaultDisplayOptions).ToString()); + string text = Text(diagnostic.Format(CXDiagnostic.DefaultDisplayOptions)); + Assert.True(diagnostic.Severity < CXDiagnosticSeverity.CXDiagnostic_Error, text); + diagnostics?.Add(Regex.Replace(text.Replace(includeRoot, "", StringComparison.OrdinalIgnoreCase), + @":\d+:\d+:", "::")); } var result = new List(); // Clang's anonymous names embed paths and line numbers; retain declaration identity without those incidental coordinates. From 4d276d050137a8239ba24c17de797128bd887ae6 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 16 Oct 2026 22:55:44 -0700 Subject: [PATCH 38/57] Reconcile historical constructor baseline with actual root images Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinHttpMigrationTests.cs | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 8e172ced0..f8386c294 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -376,6 +376,54 @@ public void FrozenInputToolingControlChangesOnlyConstructorBitsAndCanonicalResul $"all {resultSites} legacy success-marker sites use PreserveSig, with no other physical changes."); } + [MigrationFact("WINHTTP_MIGRATION_QUALIFIED_ROOT")] + public void HistoricalFrozenOldConstructorDefectsAreAlreadyFixedInQualifiedRoot() + { + Assert.Equal("1361407C2888102CB5161D83503235C09C36F917837C7107CA0A80E5CF4FAC43", + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_OLD"))))); + Assert.Equal("D2C9C2BD1ECECB9371773FB3888FB88BD3F56E301F146FC7F6FE029B13140A67", + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_QUALIFIED_ROOT"))))); + using var old = Open("WINHTTP_MIGRATION_OLD"); + using var root = Open("WINHTTP_MIGRATION_QUALIFIED_ROOT"); + var before = Types(old.Reader); + var after = Types(root.Reader); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + var sites = new List(); + foreach (var entry in before) + { + Assert.Equal(SnapshotType(old.Reader, entry.Value, correctConstructorInstanceBits: true), + SnapshotType(root.Reader, after[entry.Key])); + foreach (var method in entry.Value.GetMethods().Select(old.Reader.GetMethodDefinition)) + { + var signature = method.DecodeSignature(Signatures, null); + if (old.Reader.GetString(method.Name) == ".ctor" && + !method.Attributes.HasFlag(MethodAttributes.Static) && !signature.Header.IsInstance) + sites.Add(entry.Key + "::.ctor|" + Signature(signature) + "|OLD header=0x00; qualified8d6 header=0x20"); + } + } + Assert.Equal(39, sites.Count); + this.output.WriteLine("All39 defects belong only to the historical b5b7 frozen OLD image; actual qualified8d6 already fixes them:"); + foreach (string site in sites.OrderBy(value => value, StringComparer.Ordinal)) + this.output.WriteLine(site); + } + + [MigrationFact("WINHTTP_MIGRATION_CANONICAL_ROOT")] + public void ActualCanonicalRootMatchesTheCompleteToolingControlWithoutAdditionalConstructorChanges() + { + Assert.Equal("41A9406EE85E90FBD68BEC29C03405CC3B1A8436FB78344FC3D480F6DAC437B1", + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(Environment.GetEnvironmentVariable("WINHTTP_MIGRATION_CANONICAL_ROOT"))))); + using var root = Open("WINHTTP_MIGRATION_CANONICAL_ROOT"); + using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); + var before = Types(root.Reader); + var after = Types(control.Reader); + Assert.Equal(before.Keys.OrderBy(value => value), after.Keys.OrderBy(value => value)); + foreach (var entry in before) + Assert.Equal(SnapshotType(root.Reader, entry.Value), SnapshotType(control.Reader, after[entry.Key])); + AssertClosure(root.Reader); + this.output.WriteLine($"All {before.Count} physical types match the actual canonical3dc root image exactly; " + + "zero additional constructor, method-flag, signature or attribute changes."); + } + [MigrationFact] public void EveryPhysicalTypeHasOnlyReviewedEnumUseSiteChanges() { From ac21a51523ecdf550326951c14c616f5fdf23b4a Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 17 Oct 2026 00:59:33 -0700 Subject: [PATCH 39/57] Use native C enum tags in property IDL annotations Keep both VARENUM associations compiler-resolved without adding a C typedef or changing the canonical helper. Exercise both property-header include orders in C, C++, and CINTERFACE across all architectures and metadata modes, and retain physical enum-name/storage checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 11 +++- .../WinSDK/patches/um/propidlbase.idl.patch | 4 +- .../HeaderAnnotationWinmdTests.cs | 31 +++++++++ .../WinHttpMigrationTests.cs | 2 + .../WinHttpNativeControlTests.cs | 63 +++++++++++-------- 5 files changed, 83 insertions(+), 28 deletions(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index a942a2fae..021018f2e 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -117,7 +117,10 @@ It does not migrate other APIs in this partition or add structure OS floors. remains owned by the Variant partition. The fields use MIDL `annotation(...)` while retaining their native `ULONG` and -`VARTYPE` declarations. Interface carriers share the existing opening quote +`VARTYPE` declarations. The two native enum associations spell their compiled +target `enum VARENUM`: the SDK declares an enum tag, not a C typedef named +`VARENUM`. This works in both C and C++ and resolves the same `VARENUM` metadata +declaration without introducing an alias. Interface carriers share the existing opening quote region. All four `_Win32_AnnotateMethod_` calls share the existing trailing quote region after the complete interfaces: their compiled method references identify the intended C++ declarations without copying a signature or annotating a proxy. @@ -133,6 +136,12 @@ global type-storage/namespace fixups remain derived or shared configuration. Actual source/header/native/image qualification is recorded separately; the earlier eleven-owner receipts do not qualify the expanded source. +The property native matrix covers C, C++, and C++ `CINTERFACE`, metadata off/on, +both property-header include orders, and x86/x64/ARM64. Set +`WINHTTP_NATIVE_TOOLSET_INCLUDE` to the pinned MSVC standard-library include +directory when running the native controls; they do not consume ambient +`INCLUDE`. + Changing its identity invalidates the constants marker and every architecture's header-scrape marker before any consumer runs. An unchanged identity retains the markers. Namespace, diff --git a/generation/WinSDK/patches/um/propidlbase.idl.patch b/generation/WinSDK/patches/um/propidlbase.idl.patch index f3f633fd8..53f15173d 100644 --- a/generation/WinSDK/patches/um/propidlbase.idl.patch +++ b/generation/WinSDK/patches/um/propidlbase.idl.patch @@ -25,7 +25,7 @@ index ad551dd7..d0332652 100644 struct tag_inner_PROPVARIANT { - VARTYPE vt; -+ [annotation("_Win32_AssociatedEnum_(VARENUM)")] VARTYPE vt; ++ [annotation("_Win32_AssociatedEnum_(enum VARENUM)")] VARTYPE vt; PROPVAR_PAD1 wReserved1; PROPVAR_PAD2 wReserved2; PROPVAR_PAD3 wReserved3; @@ -48,7 +48,7 @@ index ad551dd7..d0332652 100644 LPOLESTR lpwstrName; PROPID propid; - VARTYPE vt; -+ [annotation("_Win32_AssociatedEnum_(VARENUM)")] VARTYPE vt; ++ [annotation("_Win32_AssociatedEnum_(enum VARENUM)")] VARTYPE vt; } STATPROPSTG; diff --git a/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs b/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs index 0291ef457..3cf64e389 100644 --- a/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs +++ b/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs @@ -103,6 +103,37 @@ struct __declspec(uuid(""b3dd7ce4-3a4c-42d8-b506-b32919dc848e"")) _Win32_Support }; "; + [Theory] + [InlineData("x86", "i686-pc-windows-msvc", "c", "c11")] + [InlineData("x64", "x86_64-pc-windows-msvc", "c", "c11")] + [InlineData("arm64", "aarch64-pc-windows-msvc", "c", "c11")] + [InlineData("x86", "i686-pc-windows-msvc", "c++", "c++17")] + [InlineData("x64", "x86_64-pc-windows-msvc", "c++", "c++17")] + [InlineData("arm64", "aarch64-pc-windows-msvc", "c++", "c++17")] + public void NativeEnumTagsResolveAssociationDeclarationsInCAndCpp( + string architecture, string target, string language, string standard) + { + using var fixture = new HeaderAnnotationTests.NativeFixture(architecture, target, @" +enum VARENUM { VT_EMPTY = 0, VT_I4 = 3 }; +typedef struct NATIVE_VARIANT +{ + _Win32_AssociatedEnum_(enum VARENUM) unsigned short vt; +} NATIVE_VARIANT; +", extraSettings: $"--language\n{language}\n--std\n{standard}\n"); + Assert.True(fixture.Run() == 0, fixture.Diagnostics); + using var image = Emit(fixture, architecture); + var reader = image.Reader; + var field = FindType(reader, "NATIVE_VARIANT").GetFields().Select(reader.GetFieldDefinition).Single(); + Assert.Equal("UInt16", field.DecodeSignature(new SignatureNames(), null)); + AssertStringAttribute(reader, field.GetCustomAttributes(), "AssociatedEnumAttribute", "VARENUM"); + var values = FindType(reader, "VARENUM").GetFields().Select(reader.GetFieldDefinition) + .Where(value => !value.GetDefaultValue().IsNil) + .Select(value => reader.GetString(value.Name) + "=" + + reader.GetBlobReader(reader.GetConstant(value.GetDefaultValue()).Value).ReadInt32()); + Assert.Equal(new[] { "VT_EMPTY=0", "VT_I4=3" }, values); + AssertMetadataClosure(reader); + } + [Theory] [InlineData("x86", "i686-pc-windows-msvc", true)] [InlineData("x64", "x86_64-pc-windows-msvc", true)] diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index f8386c294..fa3b41ffb 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -197,6 +197,8 @@ public void PropertyStorageIdlFactsHaveOneOriginalArtifactAndNoSemanticFallback( string patch = File.ReadAllText(Path.Combine(project, "patches", @"um\propidlbase.idl.patch")); Assert.Contains("+cpp_quote(\"_Win32_Enum_(PROPSPEC_KIND, ULONG, PRSPEC_LPWSTR, PRSPEC_PROPID);\")", patch); + Assert.Equal(2, Regex.Matches(patch, Regex.Escape("[annotation(\"_Win32_AssociatedEnum_(enum VARENUM)\")]")).Count); + Assert.DoesNotContain("_Win32_AssociatedEnum_(VARENUM)", patch); Assert.Equal(4, Regex.Matches(patch, @"(?m)^\+_Win32_AnnotateInterface_\(").Count); Assert.Equal(4, Regex.Matches(patch, @"(?m)^\+_Win32_AnnotateMethod_\(").Count); Assert.DoesNotContain("+ [local", patch); diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 46019a326..0c02dde08 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -279,35 +279,40 @@ public void RegeneratedSdkIdlKeepsNativeAbiAndOnlyTheIntendedAnnotation(string a [NativeMigrationTheory] [MemberData(nameof(PropertyStorageIdlControls))] public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string header, string architecture, - string target, bool enabled) + string target, bool enabled, string language, bool cInterface) { string root = WinHttpMigrationTests.RepositoryRoot; string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); - // Make either generated artifact the first owner of the guarded property-storage declarations. + // Make either generated artifact the first owner, then include the other guarded declaration copy. + string otherHeader = header == "PropIdl.h" ? "PropIdlBase.h" : "PropIdl.h"; string source = "#define WIN32_LEAN_AND_MEAN 1\n#define COM_NO_WINDOWS_H 1\n" + "#include \n#include \n#include \n" + "#include \n#include \n#include \n" + - "#include <" + header + ">\n"; - string checks = @" -static_assert(PRSPEC_INVALID == 0xffffffffu); -static_assert(PRSPEC_LPWSTR == 0); -static_assert(PRSPEC_PROPID == 1); -static_assert(sizeof(((PROPSPEC*)0)->ulKind) == 4); -static_assert(sizeof(((STATPROPSTG*)0)->vt) == 2); -static_assert(sizeof(((PROPVARIANT*)0)->vt) == 2); + "#include <" + header + ">\n#include <" + otherHeader + ">\n"; + string assertion = language == "c" ? "_Static_assert" : "static_assert"; + string checks = $@" +{assertion}(PRSPEC_INVALID == 0xffffffffu, ""PRSPEC_INVALID""); +{assertion}(PRSPEC_LPWSTR == 0, ""PRSPEC_LPWSTR""); +{assertion}(PRSPEC_PROPID == 1, ""PRSPEC_PROPID""); +{assertion}(sizeof(((PROPSPEC*)0)->ulKind) == 4, ""PROPSPEC::ulKind""); +{assertion}(sizeof(((STATPROPSTG*)0)->vt) == 2, ""STATPROPSTG::vt""); +{assertion}(sizeof(((PROPVARIANT*)0)->vt) == 2, ""PROPVARIANT::vt""); +{assertion}(sizeof(enum VARENUM) == 4, ""native enum VARENUM""); "; - string[] headers = { header }; + string[] headers = { header, otherHeader }; var annotations = new List(); var originalSal = new List(); var preparedSal = new List(); var originalDiagnostics = new List(); var preparedDiagnostics = new List(); var before = Surface(root, original, "Com.StructuredStorage", architecture, target, headers, checks, - sourceText: source, salAnnotations: originalSal, diagnostics: originalDiagnostics); + sourceText: source, salAnnotations: originalSal, diagnostics: originalDiagnostics, + language: language, cInterface: cInterface); var after = Surface(root, prepared, "Com.StructuredStorage", architecture, target, headers, - checks + (enabled ? "" : "\nusing PROPSPEC_KIND = void;\n"), metadataEnabled: enabled, - annotations: annotations, sourceText: source, salAnnotations: preparedSal, diagnostics: preparedDiagnostics); + checks + (enabled ? "" : language == "c" ? "\ntypedef void PROPSPEC_KIND;\n" : "\nusing PROPSPEC_KIND = void;\n"), + metadataEnabled: enabled, annotations: annotations, sourceText: source, salAnnotations: preparedSal, + diagnostics: preparedDiagnostics, language: language, cInterface: cInterface); const string group = "typedef PROPSPEC_KIND unsigned long"; Assert.Equal(enabled ? new[] { group } : Array.Empty(), after.Where(value => value == group)); Assert.Equal(before, after.Where(value => value != group)); @@ -321,7 +326,9 @@ public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string head value.Contains("::wReserved3 unsigned short ", StringComparison.Ordinal)); foreach (string name in new[] { "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) { - Assert.Contains(before, value => value.StartsWith("function " + name + "::Skip ", StringComparison.Ordinal)); + string skip = language == "c++" && !cInterface ? "function " + name + "::Skip " : + "field " + name + "Vtbl::Skip "; + Assert.Contains(before, value => value.StartsWith(skip, StringComparison.Ordinal)); Assert.Contains(before, value => value.StartsWith("function " + name + "_Next_Proxy ", StringComparison.Ordinal)); Assert.Contains(before, value => value.StartsWith("function " + name + "_Next_Stub ", StringComparison.Ordinal)); } @@ -331,13 +338,13 @@ public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string head Assert.Empty(facts); else { - Assert.Equal(new[] + Assert.Equal(language == "c++" ? new[] { "IEnumSTATPROPSETSTG|SupportedOSPlatform(\"windows5.0\")", "IEnumSTATPROPSTG|SupportedOSPlatform(\"windows5.0\")", "IPropertySetStorage|SupportedOSPlatform(\"windows5.0\")", "IPropertyStorage|SupportedOSPlatform(\"windows5.0\")", - }, facts.Where(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal))); + } : Array.Empty(), facts.Where(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal))); Assert.Contains("PROPSPEC_KIND|Enum(PRSPEC_LPWSTR, PRSPEC_PROPID)", facts); string[] associations = facts.Where(value => value.EndsWith("|AssociatedEnum", StringComparison.Ordinal)).ToArray(); Assert.Equal(3, associations.Length); @@ -345,12 +352,12 @@ public void RegeneratedPropertyStorageIdlKeepsNativeLayoutsSalAndRpc(string head Assert.Contains("tagSTATPROPSTG::vt|AssociatedEnum", associations); Assert.Single(associations.Where(value => value.Contains("PROPVARIANT::", StringComparison.Ordinal) && value.EndsWith("::vt|AssociatedEnum", StringComparison.Ordinal))); - Assert.Equal(8, facts.Count(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal) || + Assert.Equal(language == "c++" ? 8 : 4, facts.Count(value => value.Contains("|SupportedOSPlatform(", StringComparison.Ordinal) || value.EndsWith("|AssociatedEnum", StringComparison.Ordinal) || value.Contains("|Enum(", StringComparison.Ordinal))); foreach (string name in new[] { "IEnumSTATPROPSTG", "IEnumSTATPROPSETSTG" }) Assert.DoesNotContain(facts, value => value.StartsWith(name + "_Next_Proxy|", StringComparison.Ordinal)); } - this.output.WriteLine($"{header}/{architecture}/metadata={enabled}: " + + this.output.WriteLine($"{header} then {otherHeader}/{architecture}/{language}/CINTERFACE={cInterface}/metadata={enabled}: " + $"{before.Length} identical native/layout/RPC facts, {originalSal.Count} unchanged SAL attributes, " + $"{facts.Length} native AST metadata facts; method targets are checked in the physical winmd."); } @@ -365,23 +372,29 @@ public static IEnumerable PropertyStorageIdlControls() ("arm64", "aarch64-pc-windows-msvc"), }) foreach (bool enabled in new[] { false, true }) - yield return new object[] { header, architecture.Item1, architecture.Item2, enabled }; + foreach (var mode in new[] { ("c++", false), ("c++", true), ("c", false) }) + yield return new object[] { header, architecture.Item1, architecture.Item2, enabled, mode.Item1, mode.Item2 }; } private static unsafe string[] Surface(string root, string includeRoot, string partition, string architecture, string target, string[] headers, string checks, bool metadataEnabled = false, List annotations = null, - string sourceText = null, List salAnnotations = null, List diagnostics = null) + string sourceText = null, List salAnnotations = null, List diagnostics = null, + string language = "c++", bool cInterface = false) { string source = Path.Combine(root, "generation", "WinSDK", "Partitions", partition, "main.cpp"); var arguments = new List { - "--language=c++", "--std=c++17", "--target=" + target, + "--language=" + language, "--std=" + (language == "c" ? "c11" : "c++17"), "--target=" + target, "--include-directory=" + Path.Combine(root, "generation", "WinSDK", "inc"), }; arguments.AddRange(new[] { "shared", "um", "ucrt", "winrt" } .Select(directory => "--include-directory=" + Path.Combine(includeRoot, directory))); - arguments.AddRange((Environment.GetEnvironmentVariable("INCLUDE") ?? "").Split(';', StringSplitOptions.RemoveEmptyEntries) - .Select(directory => "--include-directory=" + directory)); + string toolsetInclude = Environment.GetEnvironmentVariable("WINHTTP_NATIVE_TOOLSET_INCLUDE"); + Assert.True(!string.IsNullOrEmpty(toolsetInclude) && Directory.Exists(toolsetInclude), + "Set WINHTTP_NATIVE_TOOLSET_INCLUDE to the pinned MSVC include directory; ambient INCLUDE is not used."); + arguments.Add("--include-directory=" + toolsetInclude); + if (cInterface) + arguments.Add("-DCINTERFACE=1"); string settings = Path.Combine(root, "sources", "GeneratorSdk", "tools", "assets", "scraper"); foreach (string path in new[] { Path.Combine(settings, "baseSettings.rsp"), Path.Combine(settings, "baseSettings." + architecture + ".rsp") }) { @@ -417,7 +430,7 @@ private static unsafe string[] Surface(string root, string includeRoot, string p var ordinals = new Dictionary(StringComparer.Ordinal); Walk(unit.Cursor, ""); return result.Select(value => Regex.Replace(value, - @"\((?:anonymous|unnamed) (?:struct|union|enum) at (?[^)]+:\d+:\d+)\)", + @"\((?:anonymous|unnamed)(?: (?:struct|union|enum))? at (?[^)]+:\d+:\d+)\)", match => anonymous[match.Groups["location"].Value.Replace('\\', '/')])) .OrderBy(value => value, StringComparer.Ordinal).ToArray(); From 9dc3f51ee847353e182d5184b9769a2c0504f090 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 17 Oct 2026 01:02:24 -0700 Subject: [PATCH 40/57] Document native C enum spelling for association carriers Require the existing enum tag spelling, canonical enum resolution, and metadata-on C coverage without typedef or helper workarounds. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/copilot/plans/header-annotation-migration-playbook.md | 5 +++++ docs/winhttp-header-annotations.md | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/copilot/plans/header-annotation-migration-playbook.md b/docs/copilot/plans/header-annotation-migration-playbook.md index 45214be8f..cf82a8ef0 100644 --- a/docs/copilot/plans/header-annotation-migration-playbook.md +++ b/docs/copilot/plans/header-annotation-migration-playbook.md @@ -60,6 +60,11 @@ either output without claiming to have migrated their APIs. | Agile | Do not migrate the old Agile fact into SDK headers; its intentional removal is not a missing annotation to restore. | | Removed SDK APIs | Do not restore headers or declarations missing from the selected shipped SDK. Compare same-SDK controls so SDK surface changes are not mistaken for annotation omissions. | +For an existing native enum with only a C tag, use its actual C type spelling in +the association carrier: `_Win32_AssociatedEnum_(enum VARENUM)`, not the nonexistent +C typedef `VARENUM`. The compiled target must still resolve to the same canonical +enum; do not add a typedef or helper workaround. Test metadata-on C as well as C++. + The helper is an SDK asset. Exercise both packaged and repository-backed GeneratorSdk samples when changing the common bootstrap: a helper available through the main SDK's include paths can still be missing from another asset layout. diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 021018f2e..1c84a951c 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -120,8 +120,8 @@ The fields use MIDL `annotation(...)` while retaining their native `ULONG` and `VARTYPE` declarations. The two native enum associations spell their compiled target `enum VARENUM`: the SDK declares an enum tag, not a C typedef named `VARENUM`. This works in both C and C++ and resolves the same `VARENUM` metadata -declaration without introducing an alias. Interface carriers share the existing opening quote -region. All four `_Win32_AnnotateMethod_` calls share the existing trailing quote +declaration without introducing an alias. Interface carriers share the existing +opening quote region. All four `_Win32_AnnotateMethod_` calls share the existing trailing quote region after the complete interfaces: their compiled method references identify the intended C++ declarations without copying a signature or annotating a proxy. This handles the non-local `Skip` methods without changing RPC locality; direct From e263bb3bcadcb0da5915e18caf91d1b69250cd88 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 17 Oct 2026 01:30:26 -0700 Subject: [PATCH 41/57] Identify anonymous C records through the native cursor API Keep the native comparison strict when C cursor spellings include their enclosing tag. Use Clang's anonymous-record identity instead of depending only on C++ spelling conventions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 0c02dde08..183c7cb7c 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -445,7 +445,7 @@ void Walk(CXCursor cursor, string owner) string name = Text(cursor.Spelling); if (record || enumeration) { - if (name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) + if (cursor.IsAnonymousRecordDecl || name.Length == 0 || name.StartsWith("(", StringComparison.Ordinal)) { ordinals.TryGetValue(header, out int ordinal); ordinals[header] = ordinal + 1; From 1bdfd550979044be92ed417b2863c525a92d8a0a Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 17 Oct 2026 03:39:26 -0700 Subject: [PATCH 42/57] Use native C enum tag for ApplicationVerifier association Preserve the existing enum identity and ULONG parameter storage, with actual native C off/on and compiler-to-physical regression coverage on all three architectures. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/winhttp-header-annotations.md | 6 ++++ generation/WinSDK/patches/um/avrfsdk.h.patch | 2 +- .../HeaderAnnotationWinmdTests.cs | 14 ++++++++ .../WinHttpMigrationTests.cs | 22 ++++++++++++ .../WinHttpNativeControlTests.cs | 36 +++++++++++++++++++ 5 files changed, 79 insertions(+), 1 deletion(-) diff --git a/docs/winhttp-header-annotations.md b/docs/winhttp-header-annotations.md index 1c84a951c..12b4679f1 100644 --- a/docs/winhttp-header-annotations.md +++ b/docs/winhttp-header-annotations.md @@ -142,6 +142,12 @@ both property-header include orders, and x86/x64/ARM64. Set directory when running the native controls; they do not consume ambient `INCLUDE`. +ApplicationVerifier's existing native tag likewise requires +`_Win32_AssociatedEnum_(enum eAvrfResourceTypes)` on `ResourceType`; it is not a +C typedef. Its original-header C controls cover metadata off/on on all three +architectures, and compiler-to-physical controls preserve the canonical enum +identity and native `ULONG` parameter storage without an alias or helper change. + Changing its identity invalidates the constants marker and every architecture's header-scrape marker before any consumer runs. An unchanged identity retains the markers. Namespace, diff --git a/generation/WinSDK/patches/um/avrfsdk.h.patch b/generation/WinSDK/patches/um/avrfsdk.h.patch index e22abbfba..e070b5174 100644 --- a/generation/WinSDK/patches/um/avrfsdk.h.patch +++ b/generation/WinSDK/patches/um/avrfsdk.h.patch @@ -18,7 +18,7 @@ index a2c5a112..4d23b1f7 100644 - ULONG Flags, - ULONG ResourceType, + _Win32_AssociatedEnum_(VERIFIER_ENUM_RESOURCE_FLAGS) ULONG Flags, -+ _Win32_AssociatedEnum_(eAvrfResourceTypes) ULONG ResourceType, ++ _Win32_AssociatedEnum_(enum eAvrfResourceTypes) ULONG ResourceType, AVRF_RESOURCE_ENUMERATE_CALLBACK ResourceCallback, PVOID EnumerationContext ); diff --git a/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs b/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs index 99379ff23..7587ff7a6 100644 --- a/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs +++ b/tests/Win32MetadataScraperTests/HeaderAnnotationWinmdTests.cs @@ -119,6 +119,10 @@ typedef struct NATIVE_VARIANT { _Win32_AssociatedEnum_(enum VARENUM) unsigned short vt; } NATIVE_VARIANT; +enum eAvrfResourceTypes { AvrfResourceHeapAllocation, AvrfResourceHandleTrace, AvrfResourceMax }; +_Win32_ImportLibrary_(""verifier.dll"") +unsigned long __stdcall NativeResourceType( + _Win32_AssociatedEnum_(enum eAvrfResourceTypes) unsigned long ResourceType); ", extraSettings: $"--language\n{language}\n--std\n{standard}\n"); Assert.True(fixture.Run() == 0, fixture.Diagnostics); using var image = Emit(fixture, architecture); @@ -131,6 +135,16 @@ typedef struct NATIVE_VARIANT .Select(value => reader.GetString(value.Name) + "=" + reader.GetBlobReader(reader.GetConstant(value.GetDefaultValue()).Value).ReadInt32()); Assert.Equal(new[] { "VT_EMPTY=0", "VT_I4=3" }, values); + var method = FindMethod(reader, "Apis", "NativeResourceType"); + var parameter = method.GetParameters().Select(reader.GetParameter) + .Single(value => reader.GetString(value.Name) == "ResourceType"); + Assert.Equal(new[] { "UInt32" }, method.DecodeSignature(new SignatureNames(), null).ParameterTypes); + AssertStringAttribute(reader, parameter.GetCustomAttributes(), "AssociatedEnumAttribute", "eAvrfResourceTypes"); + Assert.Equal(new[] { "AvrfResourceHeapAllocation=0", "AvrfResourceHandleTrace=1", "AvrfResourceMax=2" }, + FindType(reader, "eAvrfResourceTypes").GetFields().Select(reader.GetFieldDefinition) + .Where(value => !value.GetDefaultValue().IsNil) + .Select(value => reader.GetString(value.Name) + "=" + + reader.GetBlobReader(reader.GetConstant(value.GetDefaultValue()).Value).ReadInt32())); AssertMetadataClosure(reader); } diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index fa3b41ffb..319db5580 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -146,6 +146,28 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() Assert.DoesNotContain("_Windows_SupportedOS_", File.ReadAllText(Path.Combine(root, patch))); Assert.DoesNotContain("WIN32METADATA_CSHARP", File.ReadAllText(Path.Combine(root, patch))); } + string verifierPatch = File.ReadAllText(Path.Combine(root, @"um\avrfsdk.h.patch")); + Assert.Contains("_Win32_AssociatedEnum_(enum eAvrfResourceTypes) ULONG ResourceType", verifierPatch); + Assert.DoesNotContain("_Win32_AssociatedEnum_(eAvrfResourceTypes)", verifierPatch); + } + + [MigrationFact] + public void ApplicationVerifierNativeEnumTagKeepsCanonicalIdentityAndParameterStorage() + { + using var current = Open("WINHTTP_MIGRATION_NEW"); + var reader = current.Reader; + const string ns = "Windows.Win32.System.ApplicationVerifier"; + var currentTypes = Types(reader); + var method = currentTypes[ns + ".Apis"].GetMethods().Select(reader.GetMethodDefinition) + .Single(value => reader.GetString(value.Name) == "VerifierEnumerateResource"); + var parameter = method.GetParameters().Select(reader.GetParameter) + .Single(value => reader.GetString(value.Name) == "ResourceType"); + Assert.Equal("UInt32", method.DecodeSignature(Signatures, null).ParameterTypes[parameter.SequenceNumber - 1]); + Assert.Equal(new[] { "eAvrfResourceTypes" }, + AttributeValues(reader, parameter.GetCustomAttributes(), "AssociatedEnumAttribute")); + using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); + Assert.Equal(SnapshotType(control.Reader, Types(control.Reader)[ns + ".eAvrfResourceTypes"]), + SnapshotType(reader, currentTypes[ns + ".eAvrfResourceTypes"])); } [MigrationFact] diff --git a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs index 183c7cb7c..261d23690 100644 --- a/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpNativeControlTests.cs @@ -246,6 +246,42 @@ public static IEnumerable AdditionalPartitions() } } + [NativeMigrationTheory] + [InlineData("x86", "i686-pc-windows-msvc", false)] + [InlineData("x64", "x86_64-pc-windows-msvc", false)] + [InlineData("arm64", "aarch64-pc-windows-msvc", false)] + [InlineData("x86", "i686-pc-windows-msvc", true)] + [InlineData("x64", "x86_64-pc-windows-msvc", true)] + [InlineData("arm64", "aarch64-pc-windows-msvc", true)] + public void ApplicationVerifierNativeEnumTagCompilesInCWithoutChangingAbiOrSal( + string architecture, string target, bool enabled) + { + string root = WinHttpMigrationTests.RepositoryRoot; + string original = Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders"); + string prepared = Environment.GetEnvironmentVariable("WINHTTP_PREPARED_HEADERS"); + string[] headers = { "avrfsdk.h" }; + var originalSal = new List(); + var preparedSal = new List(); + var originalDiagnostics = new List(); + var preparedDiagnostics = new List(); + var before = Surface(root, original, "ApplicationVerifier", architecture, target, headers, "", + salAnnotations: originalSal, diagnostics: originalDiagnostics, language: "c"); + var after = Surface(root, prepared, "ApplicationVerifier", architecture, target, headers, "", + metadataEnabled: enabled, salAnnotations: preparedSal, diagnostics: preparedDiagnostics, language: "c"); + const string metadataCarrier = "typedef VERIFIER_ENUM_RESOURCE_FLAGS unsigned long"; + Assert.Equal(enabled ? new[] { metadataCarrier } : Array.Empty(), after.Except(before)); + Assert.Equal(before, after.Where(value => value != metadataCarrier)); + Assert.Equal(originalSal.OrderBy(value => value, StringComparer.Ordinal), + preparedSal.OrderBy(value => value, StringComparer.Ordinal)); + Assert.Equal(originalDiagnostics.OrderBy(value => value, StringComparer.Ordinal), + preparedDiagnostics.OrderBy(value => value, StringComparer.Ordinal)); + Assert.Contains("value eAvrfResourceTypes::AvrfResourceHeapAllocation 0", before); + Assert.Contains("value eAvrfResourceTypes::AvrfResourceHandleTrace 1", before); + Assert.Contains("value eAvrfResourceTypes::AvrfResourceMax 2", before); + this.output.WriteLine($"ApplicationVerifier/{architecture}/C/metadata={enabled}: " + + $"{before.Length} unchanged native facts, {originalSal.Count} unchanged SAL facts."); + } + [NativeMigrationTheory] [InlineData("x86", "i686-pc-windows-msvc", false)] [InlineData("x64", "x86_64-pc-windows-msvc", false)] From 3767ccd6f10c9b1a4af717bb660cb964a620519b Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 17 Oct 2026 04:10:35 -0700 Subject: [PATCH 43/57] Check Avrf metadata with architecture-qualified identities Use the existing per-architecture method lookup and exact enum identity set in the physical regression. Production headers, tools and native controls are unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinHttpMigrationTests.cs | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 319db5580..d8ec5a93a 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -158,16 +158,25 @@ public void ApplicationVerifierNativeEnumTagKeepsCanonicalIdentityAndParameterSt var reader = current.Reader; const string ns = "Windows.Win32.System.ApplicationVerifier"; var currentTypes = Types(reader); - var method = currentTypes[ns + ".Apis"].GetMethods().Select(reader.GetMethodDefinition) - .Single(value => reader.GetString(value.Name) == "VerifierEnumerateResource"); - var parameter = method.GetParameters().Select(reader.GetParameter) - .Single(value => reader.GetString(value.Name) == "ResourceType"); - Assert.Equal("UInt32", method.DecodeSignature(Signatures, null).ParameterTypes[parameter.SequenceNumber - 1]); - Assert.Equal(new[] { "eAvrfResourceTypes" }, - AttributeValues(reader, parameter.GetCustomAttributes(), "AssociatedEnumAttribute")); + foreach (int architecture in new[] { 1, 2, 4 }) + { + var method = Methods(reader, ns, "Apis", architecture)["VerifierEnumerateResource"]; + var parameter = method.GetParameters().Select(reader.GetParameter) + .Single(value => reader.GetString(value.Name) == "ResourceType"); + Assert.Equal("UInt32", method.DecodeSignature(Signatures, null).ParameterTypes[parameter.SequenceNumber - 1]); + Assert.Equal(new[] { "eAvrfResourceTypes" }, + AttributeValues(reader, parameter.GetCustomAttributes(), "AssociatedEnumAttribute")); + } using var control = Open("WINHTTP_MIGRATION_TOOLING_CONTROL"); - Assert.Equal(SnapshotType(control.Reader, Types(control.Reader)[ns + ".eAvrfResourceTypes"]), - SnapshotType(reader, currentTypes[ns + ".eAvrfResourceTypes"])); + var controlTypes = Types(control.Reader); + string enumPrefix = ns + ".eAvrfResourceTypes#"; + var enumKeys = currentTypes.Keys.Where(key => key.StartsWith(enumPrefix, StringComparison.Ordinal)) + .OrderBy(key => key, StringComparer.Ordinal).ToArray(); + Assert.NotEmpty(enumKeys); + Assert.Equal(controlTypes.Keys.Where(key => key.StartsWith(enumPrefix, StringComparison.Ordinal)) + .OrderBy(key => key, StringComparer.Ordinal), enumKeys); + foreach (string key in enumKeys) + Assert.Equal(SnapshotType(control.Reader, controlTypes[key]), SnapshotType(reader, currentTypes[key])); } [MigrationFact] From 03959c8048b4891b851bf81adabd42355810ac5f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 23 Oct 2026 21:38:28 -0700 Subject: [PATCH 44/57] Rebase SDK annotation patches onto SDK 28000 contexts Retain existing annotation facts while refreshing exact native context and coordinates, including the shipped SAL physical line splitting. Keep removed and relocated targets held; recipe alignment and full preparation remain pending. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinSDK/patches/shared/bugcodes.h.patch | 3 +- .../WinSDK/patches/shared/dxgi.idl.patch | 35 +- .../WinSDK/patches/shared/evntrace.h.patch | 2 +- .../WinSDK/patches/shared/pciprop.h.patch | 3 +- .../WinSDK/patches/shared/winerror.h.patch | 14 +- generation/WinSDK/patches/um/appmodel.h.patch | 5 +- generation/WinSDK/patches/um/cimfs.h.patch | 5 +- .../WinSDK/patches/um/combaseapi.h.patch | 293 ++-- .../WinSDK/patches/um/minidumpapiset.h.patch | 20 +- generation/WinSDK/patches/um/oleidl.idl.patch | 12 +- generation/WinSDK/patches/um/winddi.h.patch | 3 +- generation/WinSDK/patches/um/winnt.h.patch | 7 +- generation/WinSDK/patches/um/winuser.h.patch | 1449 +++++++++-------- 13 files changed, 1007 insertions(+), 844 deletions(-) diff --git a/generation/WinSDK/patches/shared/bugcodes.h.patch b/generation/WinSDK/patches/shared/bugcodes.h.patch index 70d092c08..594625eb7 100644 --- a/generation/WinSDK/patches/shared/bugcodes.h.patch +++ b/generation/WinSDK/patches/shared/bugcodes.h.patch @@ -2,10 +2,11 @@ diff --git a/shared/bugcodes.h b/shared/bugcodes.h index 35889c9f..fcfa9f2f 100644 --- a/shared/bugcodes.h +++ b/shared/bugcodes.h -@@ -4899,4 +4899,555 @@ Notes: +@@ -4899,5 +4899,556 @@ Notes: #define WINLOGON_FATAL_ERROR ((ULONG)0xC000021AL) #define MANUALLY_INITIATED_CRASH1 ((ULONG)0xDEADDEAD) #define BUGCHECK_CONTEXT_MODIFIER 0x80000000 + #define SMBD_BUGCHECK_CODE ((ULONG)0x534D4244) +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) +#include +_Win32_Enum_(BUGCHECK_ERROR, unsigned long, diff --git a/generation/WinSDK/patches/shared/dxgi.idl.patch b/generation/WinSDK/patches/shared/dxgi.idl.patch index f1b97a82f..871bb7035 100644 --- a/generation/WinSDK/patches/shared/dxgi.idl.patch +++ b/generation/WinSDK/patches/shared/dxgi.idl.patch @@ -1,5 +1,5 @@ diff --git a/shared/dxgi.idl b/shared/dxgi.idl -index 1899f8f2..aedd3208 100644 +index 18926530..89047782 100644 --- a/shared/dxgi.idl +++ b/shared/dxgi.idl @@ -1,3 +1,4 @@ @@ -37,9 +37,10 @@ index 1899f8f2..aedd3208 100644 typedef enum DXGI_SWAP_CHAIN_FLAG { DXGI_SWAP_CHAIN_FLAG_NONPREROTATED = 1, -@@ -179,8 +189,13 @@ typedef enum DXGI_SWAP_CHAIN_FLAG +@@ -179,9 +189,14 @@ typedef enum DXGI_SWAP_CHAIN_FLAG DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING = 2048, DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS = 4096, + DXGI_SWAP_CHAIN_FLAG_USE_DEFAULT_COLOR_SPACE = 32768, } DXGI_SWAP_CHAIN_FLAG; +cpp_quote("#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS)") +cpp_quote("#pragma clang attribute pop") @@ -51,7 +52,7 @@ index 1899f8f2..aedd3208 100644 typedef struct DXGI_SWAP_CHAIN_DESC { DXGI_MODE_DESC BufferDesc; -@@ -243,6 +258,9 @@ interface IDXGIDeviceSubObject : +@@ -244,6 +259,9 @@ interface IDXGIDeviceSubObject : //-------------------------------------------------------------------------------------------------------- @@ -61,7 +62,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 035f3ab4-482e-4e50-b41f-8a7f8bd8960b ), -@@ -281,7 +299,12 @@ interface IDXGIKeyedMutex : +@@ -282,7 +300,12 @@ interface IDXGIKeyedMutex : const UINT DXGI_MAP_READ = 1UL; const UINT DXGI_MAP_WRITE = 2UL; const UINT DXGI_MAP_DISCARD = 4UL; @@ -74,7 +75,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( cafcb56c-6ac3-4889-bf47-9e23bbd260ec), -@@ -303,6 +326,7 @@ interface IDXGISurface : +@@ -304,6 +327,7 @@ interface IDXGISurface : // The DXGISurface1 //-------------------------------------------------------------------------------------------------------- @@ -82,7 +83,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 4AE63092-6327-4c1b-80AE-BFE12EA32B86), -@@ -325,6 +349,7 @@ interface IDXGISurface1 : +@@ -326,6 +350,7 @@ interface IDXGISurface1 : //forward declarations: interface IDXGIOutput; @@ -90,7 +91,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 2411e7e1-12ac-4ccf-bd14-9798e8534dc0 ), -@@ -341,16 +366,21 @@ interface IDXGIAdapter : IDXGIObject +@@ -342,16 +367,21 @@ interface IDXGIAdapter : IDXGIObject [in, annotation("_In_")] REFGUID InterfaceName, [out, annotation("_Out_")] LARGE_INTEGER * pUMDVersion ); }; @@ -112,7 +113,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( ae02eedb-c735-4690-8d52-5a8dc20213aa ), -@@ -400,7 +430,13 @@ cpp_quote( "#define DXGI_PRESENT_RESTRICT_TO_OUTPUT 0x00000040UL" ) +@@ -401,7 +431,13 @@ cpp_quote( "#define DXGI_PRESENT_RESTRICT_TO_OUTPUT 0x00000040UL" ) //cpp_quote( "#define DXGI_PRESENT_DDA_PROTECTED_CONTENT 0x00000080UL" ) reserved cpp_quote( "#define DXGI_PRESENT_USE_DURATION 0x00000100UL" ) cpp_quote( "#define DXGI_PRESENT_ALLOW_TEARING 0x00000200UL" ) @@ -126,7 +127,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 310d36a0-d2e7-4c0a-aa04-6a9d23b8886a ), -@@ -428,6 +464,7 @@ interface IDXGISwapChain : +@@ -429,6 +465,7 @@ interface IDXGISwapChain : HRESULT GetFrameStatistics( [out, annotation("_Out_")] DXGI_FRAME_STATISTICS *pStats ); HRESULT GetLastPresentCount( [out, annotation("_Out_")] UINT *pLastPresentCount ); }; @@ -134,7 +135,7 @@ index 1899f8f2..aedd3208 100644 //-------------------------------------------------------------------------------------------------------- // The DXGIFactory -@@ -437,7 +474,11 @@ cpp_quote( "#define DXGI_MWA_NO_WINDOW_CHANGES ( 1 << 0 )" ) +@@ -438,7 +475,11 @@ cpp_quote( "#define DXGI_MWA_NO_WINDOW_CHANGES ( 1 << 0 )" ) cpp_quote( "#define DXGI_MWA_NO_ALT_ENTER ( 1 << 1 )" ) cpp_quote( "#define DXGI_MWA_NO_PRINT_SCREEN ( 1 << 2 )" ) cpp_quote( "#define DXGI_MWA_VALID ( 0x7 )" ) @@ -146,7 +147,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 7b7166ec-21c7-44ae-b21a-c9ae321ae369 ), -@@ -460,6 +501,7 @@ interface IDXGIFactory : +@@ -461,6 +502,7 @@ interface IDXGIFactory : [in] HMODULE Module, [out, annotation("_COM_Outptr_")] IDXGIAdapter **ppAdapter ); }; @@ -154,7 +155,7 @@ index 1899f8f2..aedd3208 100644 //-------------------------------------------------------------------------------------------------------- // DXGI instantiation -@@ -472,10 +514,12 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") +@@ -473,10 +515,12 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") #pragma endregion cpp_quote( "HRESULT WINAPI CreateDXGIFactory1(REFIID riid, _COM_Outptr_ void **ppFactory);" ) @@ -167,7 +168,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 54ec77fa-1377-44e6-8c32-88fd5f44c84c ), -@@ -507,6 +551,9 @@ interface IDXGIDevice : +@@ -508,6 +552,9 @@ interface IDXGIDevice : //-------------------------------------------------------------------------------------------------------- @@ -177,7 +178,7 @@ index 1899f8f2..aedd3208 100644 typedef enum DXGI_ADAPTER_FLAG { DXGI_ADAPTER_FLAG_NONE = 0, -@@ -514,8 +561,12 @@ typedef enum DXGI_ADAPTER_FLAG +@@ -515,8 +562,12 @@ typedef enum DXGI_ADAPTER_FLAG DXGI_ADAPTER_FLAG_SOFTWARE = 2, DXGI_ADAPTER_FLAG_FORCE_DWORD = 0xFFFFFFFF, } DXGI_ADAPTER_FLAG; @@ -190,7 +191,7 @@ index 1899f8f2..aedd3208 100644 typedef struct DXGI_ADAPTER_DESC1 { WCHAR Description[128]; -@@ -550,6 +601,7 @@ interface IDXGIAdapter1; +@@ -551,6 +602,7 @@ interface IDXGIAdapter1; // The DXGIFactory1 //-------------------------------------------------------------------------------------------------------- @@ -198,7 +199,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 770aae78-f26f-4dba-a829-253c83d1b387 ), -@@ -564,10 +616,13 @@ interface IDXGIFactory1 : +@@ -565,10 +617,13 @@ interface IDXGIFactory1 : [out, annotation("_COM_Outptr_")] IDXGIAdapter1 **ppAdapter ); BOOL IsCurrent(); }; @@ -212,7 +213,7 @@ index 1899f8f2..aedd3208 100644 [ object, uuid( 29038f61-3839-4626-91fd-086879011a05 ), -@@ -584,6 +639,7 @@ interface IDXGIAdapter1 : +@@ -585,6 +640,7 @@ interface IDXGIAdapter1 : // The DXGIDevice1 //-------------------------------------------------------------------------------------------------------- diff --git a/generation/WinSDK/patches/shared/evntrace.h.patch b/generation/WinSDK/patches/shared/evntrace.h.patch index 8fc7995e0..71cde2b1b 100644 --- a/generation/WinSDK/patches/shared/evntrace.h.patch +++ b/generation/WinSDK/patches/shared/evntrace.h.patch @@ -424,7 +424,7 @@ CloseTrace ( _In_ PROCESSTRACE_HANDLE TraceHandle @@ -2789,7 +2882,8 @@ - + #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) EXTERN_C ETW_APP_DECLSPEC_DEPRECATED -ULONG diff --git a/generation/WinSDK/patches/shared/pciprop.h.patch b/generation/WinSDK/patches/shared/pciprop.h.patch index 915fb951e..a79964e55 100644 --- a/generation/WinSDK/patches/shared/pciprop.h.patch +++ b/generation/WinSDK/patches/shared/pciprop.h.patch @@ -199,9 +199,10 @@ index 909fbc73..4ff7fee2 100644 DEFINE_PCI_DEVICE_DEVPKEY(DEVPKEY_PciDevice_InterruptSupport, 14); // -@@ -452,6 +572,15 @@ DEFINE_PCI_DEVICE_DEVPKEY(DEVPKEY_PciDevice_S0WakeupSupported, 25); +@@ -452,7 +572,16 @@ DEFINE_PCI_DEVICE_DEVPKEY(DEVPKEY_PciDevice_S0WakeupSupported, 25); #define DevProp_PciDevice_SriovSupport_NoBusResource 0x3 #define DevProp_PciDevice_SriovSupport_DidntGetVfBarSpace 0x4 + #define DevProp_PciDevice_SriovSupport_NoSriovCap 0x5 +#if defined(WIN32METADATA) && !defined(MIDL_PASS) +_Win32_Enum_(DEVPROP_PCIDEVICE_SRIOVSUPPORT, unsigned long, diff --git a/generation/WinSDK/patches/shared/winerror.h.patch b/generation/WinSDK/patches/shared/winerror.h.patch index a2f4f8106..294188281 100644 --- a/generation/WinSDK/patches/shared/winerror.h.patch +++ b/generation/WinSDK/patches/shared/winerror.h.patch @@ -27,7 +27,7 @@ // // MessageId: ERROR_NO_MORE_ITEMS // -@@ -25521,6 +25527,103 @@ +@@ -25593,6 +25599,103 @@ // Name based IPSEC policy could not be added. // #define WSA_IPSEC_NAME_POLICY_ERROR 11033L @@ -131,7 +131,7 @@ #endif // defined(WSABASEERR) -@@ -30329,6 +30432,50 @@ +@@ -30401,6 +30504,50 @@ #define FACILITY_NT_BIT 0x10000000 @@ -182,13 +182,13 @@ // // HRESULT_FROM_WIN32(x) used to be a macro, however we now run it as an inline function // to prevent double evaluation of 'x'. If you still need the macro, you can use __HRESULT_FROM_WIN32(x) -@@ -30338,4 +30485,5 @@ +@@ -30410,4 +30557,5 @@ #if !defined(_HRESULT_DEFINED) && !defined(__midl) #define _HRESULT_DEFINED +_Win32_NativeTypedef_ typedef _Return_type_success_(return >= 0) long HRESULT; #endif -@@ -35862,6 +36010,111 @@ +@@ -35934,6 +36082,111 @@ // OLE is waiting before retrying a request. // #define RPC_S_WAITONTIMER _HRESULT_TYPEDEF_(0x80010116L) @@ -300,15 +300,15 @@ // // MessageId: RPC_E_CALL_COMPLETE -@@ -39938,4 +40191,5 @@ +@@ -40019,4 +40272,5 @@ #if !defined(_HRESULT_DEFINED) && !defined(__midl) #define _HRESULT_DEFINED +_Win32_NativeTypedef_ typedef _Return_type_success_(return >= 0) long HRESULT; #endif -@@ -66990,4 +67244,3295 @@ +@@ -67494,4 +67748,3295 @@ // - #define PPF_E_TRANSFORM_DIGEST_ALGO_NOT_PRESENT _HRESULT_TYPEDEF_(0xC9280004L) + #define PPF_E_JSONTX_EVENT_TYPE_ERROR _HRESULT_TYPEDEF_(0xC928000DL) +#if !defined(MIDL_PASS) +_Win32_Enum_(WIN32_ERROR, unsigned long, diff --git a/generation/WinSDK/patches/um/appmodel.h.patch b/generation/WinSDK/patches/um/appmodel.h.patch index d72f9ee67..ee15089e9 100644 --- a/generation/WinSDK/patches/um/appmodel.h.patch +++ b/generation/WinSDK/patches/um/appmodel.h.patch @@ -459,8 +459,9 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI FindPackagesByPackageFamily( _In_ PCWSTR packageFamilyName, -@@ -480,10 +508,11 @@ - PackageOrigin_LineOfBusiness = 6 +@@ -480,11 +508,12 @@ + PackageOrigin_LineOfBusiness = 6, + PackageOrigin_SignedSBOM = 7 } PackageOrigin; -WINBASEAPI diff --git a/generation/WinSDK/patches/um/cimfs.h.patch b/generation/WinSDK/patches/um/cimfs.h.patch index aee3e1a09..2a6cbedfb 100644 --- a/generation/WinSDK/patches/um/cimfs.h.patch +++ b/generation/WinSDK/patches/um/cimfs.h.patch @@ -73,8 +73,11 @@ diff --git a/um/cimfs.h b/um/cimfs.h STDAPI_(void) CimCloseImage(_In_ CIMFS_IMAGE_HANDLE cimImageHandle); -@@ -171,6 +180,7 @@ +@@ -171,9 +180,10 @@ // as a volume with the volume GUID specified by volumeId. + // If this API is used to mount a sealed, verified CIM, the CIM + // will be mounted in attest mode. The BlockDeviceHash will only + // be validated against the hash stored in the CIM. // +_Win32_SupportedOS_19041_ diff --git a/generation/WinSDK/patches/um/combaseapi.h.patch b/generation/WinSDK/patches/um/combaseapi.h.patch index bf4ee40d7..1763abef0 100644 --- a/generation/WinSDK/patches/um/combaseapi.h.patch +++ b/generation/WinSDK/patches/um/combaseapi.h.patch @@ -6,19 +6,21 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h //+--------------------------------------------------------------------------- // // Microsoft Windows -@@ -379,7 +380,7 @@ +@@ -379,8 +380,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetMalloc( +_Win32_SupportedOS_Windows2000_ CoGetMalloc( _In_ DWORD dwMemContext, _Outptr_ LPMALLOC FAR * ppMalloc ); -@@ -391,20 +392,21 @@ +@@ -392,22 +393,23 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CreateStreamOnHGlobal( - HGLOBAL hGlobal, +_Win32_SupportedOS_Windows2000_ CreateStreamOnHGlobal( @@ -27,7 +29,8 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Outptr_ LPSTREAM FAR * ppstm ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -GetHGlobalFromStream( +_Win32_SupportedOS_Windows2000_ GetHGlobalFromStream( _In_ LPSTREAM pstm, @@ -40,7 +43,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(void) CoUninitialize( void -@@ -416,6 +418,7 @@ +@@ -419,6 +421,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -48,11 +51,12 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(DWORD) CoGetCurrentProcess( void -@@ -430,10 +433,14 @@ +@@ -433,11 +436,15 @@ #pragma region Application or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) --_Check_return_ WINOLEAPI +-_Check_return_ +-WINOLEAPI -CoInitializeEx( - _In_opt_ LPVOID pvReserved, - _In_ DWORD dwCoInit @@ -60,14 +64,15 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h +typedef enum tagCOINIT COINIT; +#endif + -+_Check_return_ WINOLEAPI ++_Check_return_ ++WINOLEAPI +_Win32_SupportedOS_Windows2000_ _Win32_PreserveResult_ CoInitializeEx( + _In_opt_ _Win32_Reserved_ LPVOID pvReserved, + _In_ _Win32_AssociatedEnum_(COINIT) DWORD dwCoInit ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -442,6 +449,7 @@ +@@ -446,6 +453,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -75,7 +80,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoGetCallerTID( _Out_ LPDWORD lpdwTID -@@ -453,6 +461,7 @@ +@@ -457,6 +465,7 @@ #pragma region Application or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -83,34 +88,37 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoGetCurrentLogicalThreadId( _Out_ GUID* pguid -@@ -469,7 +478,7 @@ +@@ -473,8 +482,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetContextToken( +_Win32_SupportedOS_Windows2000_ CoGetContextToken( _Out_ ULONG_PTR* pToken ); -@@ -480,7 +489,7 @@ +@@ -485,8 +494,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetDefaultContext( +_Win32_SupportedOS_WindowsXP_ CoGetDefaultContext( _In_ APTTYPE aptType, _In_ REFIID riid, _Outptr_ void** ppv -@@ -499,7 +508,7 @@ +@@ -505,8 +514,8 @@ #if (NTDDI_VERSION >= NTDDI_WIN7) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetApartmentType( +_Win32_SupportedOS_Windows7_ CoGetApartmentType( _Out_ APTTYPE* pAptType, _Out_ APTTYPEQUALIFIER* pAptQualifier ); -@@ -543,6 +552,9 @@ +@@ -551,7 +560,10 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) DECLARE_HANDLE(CO_MTA_USAGE_COOKIE); @@ -118,9 +126,10 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h +_Win32_NativeTypedef_ typedef CO_MTA_USAGE_COOKIE CO_MTA_USAGE_COOKIE; +#endif - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI CoIncrementMTAUsage( -@@ -560,6 +572,7 @@ +@@ -569,6 +581,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -128,10 +137,11 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoAllowUnmarshalerCLSID( _In_ REFCLSID clsid -@@ -589,9 +602,9 @@ +@@ -598,10 +611,10 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetObjectContext( +_Win32_SupportedOS_Windows2000_ CoGetObjectContext( _In_ REFIID riid, @@ -140,10 +150,11 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -@@ -603,12 +616,12 @@ +@@ -613,13 +626,13 @@ /* register/revoke/get class objects */ - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetClassObject( +_Win32_SupportedOS_Windows2000_ CoGetClassObject( _In_ REFCLSID rclsid, @@ -156,10 +167,11 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -618,26 +631,27 @@ +@@ -629,29 +642,30 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoRegisterClassObject( +_Win32_SupportedOS_Windows2000_ CoRegisterClassObject( _In_ REFCLSID rclsid, @@ -176,19 +188,21 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ DWORD dwRegister ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoResumeClassObjects( +_Win32_SupportedOS_Windows2000_ CoResumeClassObjects( void ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoSuspendClassObjects( +_Win32_SupportedOS_Windows2000_ CoSuspendClassObjects( void ); -@@ -647,31 +661,33 @@ +@@ -661,34 +675,36 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -204,14 +218,16 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h void ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetPSClsid( +_Win32_SupportedOS_Windows2000_ CoGetPSClsid( _In_ REFIID riid, _Out_ CLSID* pClsid ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoRegisterPSClsid( +_Win32_SupportedOS_Windows2000_ CoRegisterPSClsid( _In_ REFIID riid, @@ -219,40 +235,44 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); // Registering surrogate processes - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoRegisterSurrogate( +_Win32_SupportedOS_Windows2000_ CoRegisterSurrogate( _In_ LPSURROGATE pSurrogate ); -@@ -684,7 +700,7 @@ +@@ -701,8 +717,8 @@ /* marshaling interface pointers */ - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetMarshalSizeMax( +_Win32_SupportedOS_Windows2000_ CoGetMarshalSizeMax( _Out_ ULONG* pulSize, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, -@@ -694,7 +710,7 @@ +@@ -712,8 +728,8 @@ ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoMarshalInterface( +_Win32_SupportedOS_Windows2000_ CoMarshalInterface( _In_ LPSTREAM pStm, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, -@@ -704,7 +720,7 @@ +@@ -723,8 +739,8 @@ ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoUnmarshalInterface( +_Win32_SupportedOS_Windows2000_ CoUnmarshalInterface( _In_ LPSTREAM pStm, _In_ REFIID riid, _COM_Outptr_ LPVOID FAR * ppv -@@ -716,12 +732,14 @@ +@@ -736,12 +752,14 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -267,16 +287,18 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoUnmarshalHresult( _In_ LPSTREAM pstm, -@@ -735,14 +753,14 @@ +@@ -755,16 +773,16 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoReleaseMarshalData( +_Win32_SupportedOS_Windows2000_ CoReleaseMarshalData( _In_ LPSTREAM pStm ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoDisconnectObject( +_Win32_SupportedOS_Windows2000_ CoDisconnectObject( _In_ LPUNKNOWN pUnk, @@ -285,34 +307,37 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -@@ -752,7 +770,7 @@ +@@ -774,8 +792,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoLockObjectExternal( +_Win32_SupportedOS_Windows2000_ CoLockObjectExternal( _In_ LPUNKNOWN pUnk, _In_ BOOL fLock, _In_ BOOL fLastUnlockReleases -@@ -765,7 +783,7 @@ +@@ -788,8 +806,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetStandardMarshal( +_Win32_SupportedOS_Windows2000_ CoGetStandardMarshal( _In_ REFIID riid, _In_opt_ LPUNKNOWN pUnk, _In_ DWORD dwDestContext, -@@ -781,7 +799,7 @@ +@@ -805,8 +823,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetStdMarshalEx( +_Win32_SupportedOS_Windows2000_ CoGetStdMarshalEx( _In_ LPUNKNOWN pUnkOuter, _In_ DWORD smexflags, _Outptr_ LPUNKNOWN FAR * ppUnkInner -@@ -806,6 +824,7 @@ +@@ -831,6 +849,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -320,10 +345,11 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(BOOL) CoIsHandlerConnected( _In_ LPUNKNOWN pUnk -@@ -819,14 +838,14 @@ +@@ -844,16 +863,16 @@ // Apartment model inter-thread interface passing helpers - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoMarshalInterThreadInterfaceInStream( +_Win32_SupportedOS_Windows2000_ CoMarshalInterThreadInterfaceInStream( _In_ REFIID riid, @@ -331,22 +357,24 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Outptr_ LPSTREAM* ppStm ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetInterfaceAndReleaseStream( +_Win32_SupportedOS_Windows2000_ CoGetInterfaceAndReleaseStream( _In_ LPSTREAM pStm, _In_ REFIID iid, _COM_Outptr_ LPVOID FAR * ppv -@@ -839,7 +858,7 @@ +@@ -866,8 +885,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCreateFreeThreadedMarshaler( +_Win32_SupportedOS_Windows2000_ CoCreateFreeThreadedMarshaler( _In_opt_ LPUNKNOWN punkOuter, _Outptr_ LPUNKNOWN* ppunkMarshal ); -@@ -850,16 +869,18 @@ +@@ -878,16 +897,18 @@ #pragma region Application or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -366,19 +394,21 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif -@@ -873,7 +894,7 @@ +@@ -901,8 +922,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoDisconnectContext( +_Win32_SupportedOS_WindowsVista_ CoDisconnectContext( DWORD dwTimeout ); -@@ -891,16 +912,16 @@ +@@ -920,17 +941,17 @@ /* Call Security. */ - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoInitializeSecurity( +_Win32_SupportedOS_Windows2000_ CoInitializeSecurity( _In_opt_ PSECURITY_DESCRIPTOR pSecDesc, @@ -398,30 +428,34 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -910,13 +931,13 @@ +@@ -940,15 +961,15 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetCallContext( +_Win32_SupportedOS_Windows2000_ CoGetCallContext( _In_ REFIID riid, - _Outptr_ void** ppInterface - ); - --_Check_return_ WINOLEAPI +-_Check_return_ +-WINOLEAPI -CoQueryProxyBlanket( + _Win32_ComOutPtr_(true) _Outptr_ void** ppInterface + ); + -+_Check_return_ WINOLEAPI ++_Check_return_ ++WINOLEAPI +_Win32_SupportedOS_Windows2000_ CoQueryProxyBlanket( _In_ IUnknown* pProxy, _Out_opt_ DWORD* pwAuthnSvc, _Out_opt_ DWORD* pAuthzSvc, -@@ -928,25 +949,25 @@ +@@ -960,28 +981,28 @@ ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoSetProxyBlanket( +_Win32_SupportedOS_Windows2000_ CoSetProxyBlanket( _In_ IUnknown* pProxy, @@ -436,81 +470,91 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h - _In_ DWORD dwCapabilities - ); - --_Check_return_ WINOLEAPI +-_Check_return_ +-WINOLEAPI -CoCopyProxy( + _In_ _Win32_AssociatedEnum_(EOLE_AUTHENTICATION_CAPABILITIES) DWORD dwCapabilities + ); + -+_Check_return_ WINOLEAPI ++_Check_return_ ++WINOLEAPI +_Win32_SupportedOS_Windows2000_ CoCopyProxy( _In_ IUnknown* pProxy, _Outptr_ IUnknown** ppCopy ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoQueryClientBlanket( +_Win32_SupportedOS_Windows2000_ CoQueryClientBlanket( _Out_opt_ DWORD* pAuthnSvc, _Out_opt_ DWORD* pAuthzSvc, _Outptr_opt_ LPOLESTR* pServerPrincName, -@@ -957,17 +978,17 @@ +@@ -992,20 +1013,20 @@ ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoImpersonateClient( +_Win32_SupportedOS_Windows2000_ CoImpersonateClient( void ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoRevertToSelf( +_Win32_SupportedOS_Windows2000_ CoRevertToSelf( void ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoQueryAuthenticationServices( +_Win32_SupportedOS_Windows2000_ CoQueryAuthenticationServices( _Out_ DWORD* pcAuthSvc, _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE** asAuthSvc ); -@@ -979,7 +1000,7 @@ +@@ -1017,8 +1038,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoSwitchCallContext( +_Win32_SupportedOS_Windows2000_ CoSwitchCallContext( _In_opt_ IUnknown* pNewObject, _Outptr_ IUnknown** ppOldObject ); -@@ -1003,7 +1024,7 @@ +@@ -1042,8 +1063,8 @@ /* helper for creating instances */ - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCreateInstance( +_Win32_SupportedOS_Windows2000_ CoCreateInstance( _In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, -@@ -1021,7 +1042,7 @@ +@@ -1061,8 +1082,8 @@ #if (_WIN32_WINNT >= 0x0400) || defined(_WIN32_DCOM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCreateInstanceEx( +_Win32_SupportedOS_Windows2000_ CoCreateInstanceEx( _In_ REFCLSID Clsid, _In_opt_ IUnknown* punkOuter, _In_ DWORD dwClsCtx, -@@ -1035,7 +1056,7 @@ +@@ -1076,8 +1097,8 @@ #if (_WIN32_WINNT >= 0x0602) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCreateInstanceFromApp( +_Win32_SupportedOS_Windows8_ CoCreateInstanceFromApp( _In_ REFCLSID Clsid, _In_opt_ IUnknown* punkOuter, _In_ DWORD dwClsCtx, -@@ -1052,6 +1073,7 @@ +@@ -1094,6 +1115,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -518,10 +562,11 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoRegisterActivationFilter( _In_ IActivationFilter* pActivationFilter -@@ -1068,36 +1090,36 @@ +@@ -1110,42 +1132,42 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetCancelObject( +_Win32_SupportedOS_Windows2000_ CoGetCancelObject( _In_ DWORD dwThreadId, @@ -529,97 +574,111 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h - _Outptr_ void** ppUnk - ); - --_Check_return_ WINOLEAPI +-_Check_return_ +-WINOLEAPI -CoSetCancelObject( + _Win32_ComOutPtr_(true) _Outptr_ void** ppUnk + ); + -+_Check_return_ WINOLEAPI ++_Check_return_ ++WINOLEAPI +_Win32_SupportedOS_Windows2000_ CoSetCancelObject( _In_opt_ IUnknown* pUnk ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCancelCall( +_Win32_SupportedOS_Windows2000_ CoCancelCall( _In_ DWORD dwThreadId, _In_ ULONG ulTimeout ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoTestCancel( +_Win32_SupportedOS_Windows2000_ CoTestCancel( void ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoEnableCallCancellation( - _In_opt_ LPVOID pReserved - ); - --_Check_return_ WINOLEAPI +-_Check_return_ +-WINOLEAPI -CoDisableCallCancellation( - _In_opt_ LPVOID pReserved +_Win32_SupportedOS_Windows2000_ CoEnableCallCancellation( + _In_opt_ _Win32_Reserved_ LPVOID pReserved + ); + -+_Check_return_ WINOLEAPI ++_Check_return_ ++WINOLEAPI +_Win32_SupportedOS_Windows2000_ CoDisableCallCancellation( + _In_opt_ _Win32_Reserved_ LPVOID pReserved ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -@@ -1111,25 +1133,25 @@ +@@ -1159,29 +1181,29 @@ /* other helpers */ - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -StringFromCLSID( +_Win32_SupportedOS_Windows2000_ StringFromCLSID( _In_ REFCLSID rclsid, _Outptr_ LPOLESTR FAR * lplpsz ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CLSIDFromString( +_Win32_SupportedOS_Windows2000_ CLSIDFromString( _In_ LPCOLESTR lpsz, _Out_ LPCLSID pclsid ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -StringFromIID( +_Win32_SupportedOS_Windows2000_ StringFromIID( _In_ REFIID rclsid, _Outptr_ LPOLESTR FAR * lplpsz ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -IIDFromString( +_Win32_SupportedOS_Windows2000_ IIDFromString( _In_ LPCOLESTR lpsz, _Out_ LPIID lpiid ); -@@ -1141,13 +1163,13 @@ +@@ -1193,15 +1215,15 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -ProgIDFromCLSID( +_Win32_SupportedOS_Windows2000_ ProgIDFromCLSID( _In_ REFCLSID clsid, _Outptr_ LPOLESTR FAR * lplpszProgID ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CLSIDFromProgID( +_Win32_SupportedOS_Windows2000_ CLSIDFromProgID( _In_ LPCOLESTR lpszProgID, _Out_ LPCLSID lpclsid ); -@@ -1159,14 +1181,14 @@ +@@ -1213,16 +1235,16 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - _Check_return_ WINOLEAPI_(int) + _Check_return_ + WINOLEAPI_(int) -StringFromGUID2( +_Win32_SupportedOS_Windows2000_ StringFromGUID2( _In_ REFGUID rguid, @@ -627,13 +686,14 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ int cchMax ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoCreateGuid( +_Win32_SupportedOS_Windows2000_ CoCreateGuid( _Out_ GUID FAR * pguid ); -@@ -1176,18 +1198,18 @@ +@@ -1232,18 +1254,18 @@ _Check_return_ WINOLEAPI @@ -655,43 +715,47 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ ULONG cVariants, _Inout_updates_(cVariants) PROPVARIANT* rgvars ); -@@ -1214,7 +1236,7 @@ +@@ -1270,8 +1292,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoWaitForMultipleHandles( +_Win32_SupportedOS_Windows2000_ CoWaitForMultipleHandles( _In_ DWORD dwFlags, _In_ DWORD dwTimeout, _In_ ULONG cHandles, -@@ -1267,7 +1289,7 @@ +@@ -1324,8 +1346,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoGetTreatAsClass( +_Win32_SupportedOS_Windows2000_ _Win32_PreserveResult_ CoGetTreatAsClass( _In_ REFCLSID clsidOld, _Out_ LPCLSID pClsidNew ); -@@ -1283,7 +1305,7 @@ +@@ -1341,8 +1363,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CoInvalidateRemoteMachineBindings( +_Win32_SupportedOS_WindowsXP_ CoInvalidateRemoteMachineBindings( _In_ LPOLESTR pszMachineName ); -@@ -1304,7 +1326,7 @@ +@@ -1363,8 +1385,8 @@ }; - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -RoGetAgileReference( +_Win32_SupportedOS_Windows81_ RoGetAgileReference( _In_ enum AgileReferenceOptions options, _In_ REFIID riid, _In_ IUnknown* pUnk, -@@ -1328,23 +1350,28 @@ +@@ -1388,23 +1410,28 @@ typedef HRESULT (STDAPICALLTYPE * LPFNCANUNLOADNOW)(void); _Check_return_ @@ -720,7 +784,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(void) CoTaskMemFree( _Frees_ptr_opt_ LPVOID pv -@@ -1357,12 +1384,12 @@ +@@ -1417,13 +1444,13 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) WINOLEAPI @@ -729,13 +793,14 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_ FILETIME FAR * lpFileTime ); - _Check_return_ WINOLEAPI + _Check_return_ + WINOLEAPI -CLSIDFromProgIDEx( +_Win32_SupportedOS_Windows2000_ CLSIDFromProgIDEx( _In_ LPCOLESTR lpszProgID, _Out_ LPCLSID lpclsid ); -@@ -1374,6 +1401,9 @@ +@@ -1435,6 +1462,9 @@ #endif DECLARE_HANDLE(CO_DEVICE_CATALOG_COOKIE); diff --git a/generation/WinSDK/patches/um/minidumpapiset.h.patch b/generation/WinSDK/patches/um/minidumpapiset.h.patch index 2c56aa89d..b4686b916 100644 --- a/generation/WinSDK/patches/um/minidumpapiset.h.patch +++ b/generation/WinSDK/patches/um/minidumpapiset.h.patch @@ -15,7 +15,7 @@ index f3e7cbb5..98fee4f8 100644 #ifdef _CONTRACT_GEN #include #include -@@ -238,7 +244,7 @@ typedef struct _MINIDUMP_SYSTEM_INFO { +@@ -239,7 +245,7 @@ typedef struct _MINIDUMP_SYSTEM_INFO { // taken from the SYSTEM_INFO structure obtained by GetSystemInfo( ). // @@ -24,7 +24,7 @@ index f3e7cbb5..98fee4f8 100644 USHORT ProcessorLevel; USHORT ProcessorRevision; -@@ -259,7 +265,7 @@ typedef struct _MINIDUMP_SYSTEM_INFO { +@@ -260,7 +266,7 @@ typedef struct _MINIDUMP_SYSTEM_INFO { ULONG32 MajorVersion; ULONG32 MinorVersion; ULONG32 BuildNumber; @@ -33,7 +33,7 @@ index f3e7cbb5..98fee4f8 100644 // // RVA to a CSDVersion string in the string table. -@@ -576,6 +582,12 @@ typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO +@@ -577,6 +583,12 @@ typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO #define MINIDUMP_MISC1_PROCESS_ID 0x00000001 #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002 @@ -46,7 +46,7 @@ index f3e7cbb5..98fee4f8 100644 #define MINIDUMP_MISC1_PROCESSOR_POWER_INFO 0x00000004 #define MINIDUMP_MISC3_PROCESS_INTEGRITY 0x00000010 #define MINIDUMP_MISC3_PROCESS_EXECUTE_FLAGS 0x00000020 -@@ -586,7 +598,7 @@ typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO +@@ -587,7 +599,7 @@ typedef struct _XSTATE_CONFIG_FEATURE_MSC_INFO typedef struct _MINIDUMP_MISC_INFO { ULONG32 SizeOfInfo; @@ -55,7 +55,7 @@ index f3e7cbb5..98fee4f8 100644 ULONG32 ProcessId; ULONG32 ProcessCreateTime; ULONG32 ProcessUserTime; -@@ -693,7 +705,7 @@ typedef struct _MINIDUMP_MEMORY_INFO { +@@ -694,7 +706,7 @@ typedef struct _MINIDUMP_MEMORY_INFO { ULONG32 AllocationProtect; ULONG32 __alignment1; ULONG64 RegionSize; @@ -64,7 +64,7 @@ index f3e7cbb5..98fee4f8 100644 ULONG32 Protect; ULONG32 Type; ULONG32 __alignment2; -@@ -741,9 +753,19 @@ typedef struct _MINIDUMP_THREAD_NAME_LIST { +@@ -742,9 +754,19 @@ typedef struct _MINIDUMP_THREAD_NAME_LIST { #define MINIDUMP_THREAD_INFO_INVALID_CONTEXT 0x00000010 #define MINIDUMP_THREAD_INFO_INVALID_TEB 0x00000020 @@ -85,7 +85,7 @@ index f3e7cbb5..98fee4f8 100644 ULONG32 DumpError; ULONG32 ExitStatus; ULONG64 CreateTime; -@@ -1362,6 +1384,9 @@ typedef struct _MINIDUMP_CALLBACK_OUTPUT { +@@ -1382,6 +1404,9 @@ typedef struct _MINIDUMP_CALLBACK_OUTPUT { // with the virtual protection attribute of PAGE_WRITECOMBINE. // @@ -95,9 +95,9 @@ index f3e7cbb5..98fee4f8 100644 typedef enum _MINIDUMP_TYPE { MiniDumpNormal = 0x00000000, MiniDumpWithDataSegs = 0x00000001, -@@ -1393,6 +1418,9 @@ typedef enum _MINIDUMP_TYPE { +@@ -1414,6 +1439,9 @@ typedef enum _MINIDUMP_TYPE { MiniDumpNoIgnoreInaccessibleMemory = 0x02000000, - MiniDumpValidTypeFlagsEx = 0x03ffffff, + MiniDumpValidTypeFlagsEx = 0x07ffffff, } MINIDUMP_TYPE; +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) +#pragma clang attribute pop @@ -105,7 +105,7 @@ index f3e7cbb5..98fee4f8 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -1469,6 +1497,7 @@ typedef struct _MINIDUMP_CALLBACK_INFORMATION { +@@ -1490,6 +1518,7 @@ typedef struct _MINIDUMP_CALLBACK_INFORMATION { #define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva))) diff --git a/generation/WinSDK/patches/um/oleidl.idl.patch b/generation/WinSDK/patches/um/oleidl.idl.patch index 67f8aa327..3a99d129f 100644 --- a/generation/WinSDK/patches/um/oleidl.idl.patch +++ b/generation/WinSDK/patches/um/oleidl.idl.patch @@ -1,5 +1,5 @@ diff --git a/um/oleidl.idl b/um/oleidl.idl -index 10d38014..74b0fdc7 100644 +index 46379c61..0c4159f5 100644 --- a/um/oleidl.idl +++ b/um/oleidl.idl @@ -7,6 +7,10 @@ @@ -225,8 +225,8 @@ index 10d38014..74b0fdc7 100644 +cpp_quote("/* Win32Metadata: parameter ::IDropTarget::Drop::pdwEffect => AssociatedEnum(DROPEFFECT) */") [ object, - uuid(00000122-0000-0000-C000-000000000046), -@@ -1222,7 +1288,11 @@ interface IDropTarget : IUnknown + uuid(00000122-0000-0000-C000-000000000046), +@@ -1230,7 +1296,11 @@ interface IDropTarget : IUnknown [in, out] DWORD *pdwEffect ); } @@ -238,7 +238,7 @@ index 10d38014..74b0fdc7 100644 [ local, object, -@@ -1242,6 +1312,7 @@ interface IDropSourceNotify : IUnknown +@@ -1250,6 +1320,7 @@ interface IDropSourceNotify : IUnknown ); } @@ -246,7 +246,7 @@ index 10d38014..74b0fdc7 100644 [ object, uuid(390E3878-FD55-4E18-819D-4682081C0CFD), -@@ -1262,6 +1333,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P +@@ -1270,6 +1341,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P #pragma region Application Family or OneCore Family or Games Family cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)") @@ -254,7 +254,7 @@ index 10d38014..74b0fdc7 100644 [ object, uuid(00000104-0000-0000-C000-000000000046), -@@ -1273,6 +1345,8 @@ interface IEnumOLEVERB : IUnknown +@@ -1281,6 +1353,8 @@ interface IEnumOLEVERB : IUnknown typedef [unique] IEnumOLEVERB *LPENUMOLEVERB; diff --git a/generation/WinSDK/patches/um/winddi.h.patch b/generation/WinSDK/patches/um/winddi.h.patch index 6082c28ca..80c6af786 100644 --- a/generation/WinSDK/patches/um/winddi.h.patch +++ b/generation/WinSDK/patches/um/winddi.h.patch @@ -1411,9 +1411,8 @@ diff --git a/um/winddi.h b/um/winddi.h _Success_(return != nullptr) ENGAPI _Post_writable_byte_size_(*pulSize) -@@ -4755,12 +4961,14 @@ +@@ -4755,11 +4961,13 @@ _In_ BOOL DiscardContent); - #endif +_Win32_SupportedOS_WindowsXP_ ENGAPI diff --git a/generation/WinSDK/patches/um/winnt.h.patch b/generation/WinSDK/patches/um/winnt.h.patch index 0232223c4..75cf141d4 100644 --- a/generation/WinSDK/patches/um/winnt.h.patch +++ b/generation/WinSDK/patches/um/winnt.h.patch @@ -188,7 +188,7 @@ diff --git a/um/winnt.h b/um/winnt.h ); @@ -4253,5 +4306,21 @@ - #define CONTEXT_UNWOUND_TO_CALL 0x20000000 + #define CONTEXT_UNWOUND_TO_CALL 0x20000000L +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) +typedef _WIN32META_ANNOTATION_( @@ -249,7 +249,7 @@ diff --git a/um/winnt.h b/um/winnt.h ) { @@ -5229,4 +5302,13 @@ - #define CONTEXT_UNWOUND_TO_CALL 0x20000000 + #define CONTEXT_UNWOUND_TO_CALL 0x20000000L +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) +typedef _WIN32META_ANNOTATION_( @@ -1130,10 +1130,11 @@ diff --git a/um/winnt.h b/um/winnt.h // #define PF_FLOATING_POINT_PRECISION_ERRATA 0 -@@ -14270,6 +14707,99 @@ +@@ -14270,7 +14707,100 @@ #define PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE 86 #define PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE 87 #define PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE 88 + #define PF_UMONITOR_INSTRUCTION_AVAILABLE 89 + +#if defined(WIN32METADATA) && !defined(MIDL_PASS) +_Win32_Enum_(PROCESSOR_FEATURE_ID, unsigned long, diff --git a/generation/WinSDK/patches/um/winuser.h.patch b/generation/WinSDK/patches/um/winuser.h.patch index 568168377..5d803c25a 100644 --- a/generation/WinSDK/patches/um/winuser.h.patch +++ b/generation/WinSDK/patches/um/winuser.h.patch @@ -60,7 +60,7 @@ index f99e9294..53ba8a91 100644 #pragma once -@@ -66,7 +117,10 @@ +@@ -67,7 +118,10 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -71,7 +71,7 @@ index f99e9294..53ba8a91 100644 typedef VOID MENUTEMPLATEA; typedef VOID MENUTEMPLATEW; #ifdef UNICODE -@@ -125,8 +179,8 @@ typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE); +@@ -126,8 +180,8 @@ typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE); typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, ULONG_PTR); typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, ULONG_PTR); @@ -82,7 +82,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy); -@@ -300,6 +354,8 @@ typedef DESKTOPENUMPROCA DESKTOPENUMPROC; +@@ -301,6 +355,8 @@ typedef DESKTOPENUMPROCA DESKTOPENUMPROC; #pragma warning(disable:4995) #endif @@ -91,7 +91,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -307,6 +363,8 @@ wvsprintfA( +@@ -308,6 +364,8 @@ wvsprintfA( _Out_ LPSTR, _In_ _Printf_format_string_ LPCSTR, _In_ va_list arglist); @@ -100,7 +100,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -320,6 +378,8 @@ wvsprintfW( +@@ -321,6 +379,8 @@ wvsprintfW( #define wvsprintf wvsprintfA #endif // !UNICODE @@ -109,7 +109,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPIV -@@ -327,6 +387,8 @@ wsprintfA( +@@ -328,6 +388,8 @@ wsprintfA( _Out_ LPSTR, _In_ _Printf_format_string_ LPCSTR, ...); @@ -118,7 +118,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPIV -@@ -364,6 +426,14 @@ wsprintfW( +@@ -365,6 +427,14 @@ wsprintfW( #define SB_CTL 2 #define SB_BOTH 3 @@ -133,7 +133,7 @@ index f99e9294..53ba8a91 100644 /* * Scroll Bar Commands */ -@@ -383,6 +453,25 @@ wsprintfW( +@@ -384,6 +454,25 @@ wsprintfW( #define SB_RIGHT 7 #define SB_ENDSCROLL 8 @@ -159,7 +159,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOSCROLL */ #ifndef NOSHOWWINDOW -@@ -407,6 +496,26 @@ wsprintfW( +@@ -408,6 +497,26 @@ wsprintfW( #define SW_FORCEMINIMIZE 11 #define SW_MAX 11 @@ -186,7 +186,7 @@ index f99e9294..53ba8a91 100644 /* * Old ShowWindow() Commands -@@ -425,6 +534,14 @@ wsprintfW( +@@ -426,6 +535,14 @@ wsprintfW( #define SW_PARENTOPENING 3 #define SW_OTHERUNZOOM 4 @@ -201,7 +201,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOSHOWWINDOW */ -@@ -442,6 +559,19 @@ wsprintfW( +@@ -443,6 +560,19 @@ wsprintfW( #define AW_SLIDE 0x00040000 #define AW_BLEND 0x00080000 @@ -221,7 +221,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -469,6 +599,13 @@ wsprintfW( +@@ -470,6 +600,13 @@ wsprintfW( #if(_WIN32_WINNT >= 0x0500) #define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */ #define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */ @@ -235,7 +235,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -602,6 +739,19 @@ wsprintfW( +@@ -603,6 +740,19 @@ wsprintfW( #define VK_NAVIGATION_ACCEPT 0x8E // reserved #define VK_NAVIGATION_CANCEL 0x8F // reserved @@ -255,7 +255,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0604 */ #define VK_NUMLOCK 0x90 -@@ -658,6 +808,29 @@ wsprintfW( +@@ -659,6 +809,29 @@ wsprintfW( #define VK_LAUNCH_APP1 0xB6 #define VK_LAUNCH_APP2 0xB7 @@ -285,7 +285,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -707,6 +880,35 @@ wsprintfW( +@@ -708,6 +881,35 @@ wsprintfW( #define VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT 0xD9 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT 0xDA // reserved @@ -321,7 +321,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0604 */ -@@ -730,6 +932,12 @@ wsprintfW( +@@ -731,6 +933,12 @@ wsprintfW( #if(WINVER >= 0x0400) #define VK_PROCESSKEY 0xE5 @@ -334,7 +334,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define VK_ICO_CLEAR 0xE6 -@@ -737,6 +945,12 @@ wsprintfW( +@@ -738,6 +946,12 @@ wsprintfW( #if(_WIN32_WINNT >= 0x0500) #define VK_PACKET 0xE7 @@ -347,7 +347,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -770,6 +984,187 @@ wsprintfW( +@@ -771,6 +985,187 @@ wsprintfW( #define VK_PA1 0xFD #define VK_OEM_CLEAR 0xFE @@ -535,7 +535,7 @@ index f99e9294..53ba8a91 100644 /* * 0xFF : reserved */ -@@ -798,13 +1193,40 @@ wsprintfW( +@@ -799,13 +1194,40 @@ wsprintfW( #define WH_DEBUG 9 #define WH_SHELL 10 #define WH_FOREGROUNDIDLE 11 @@ -576,7 +576,7 @@ index f99e9294..53ba8a91 100644 #endif // (_WIN32_WINNT >= 0x0400) #if(WINVER >= 0x0400) -@@ -998,6 +1420,33 @@ typedef struct tagWTSSESSION_NOTIFICATION +@@ -997,6 +1419,33 @@ typedef struct tagWTSSESSION_NOTIFICATION #define APPCOMMAND_BASS_UP 21 #define APPCOMMAND_TREBLE_DOWN 22 #define APPCOMMAND_TREBLE_UP 23 @@ -610,7 +610,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24 #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25 -@@ -1028,10 +1477,49 @@ typedef struct tagWTSSESSION_NOTIFICATION +@@ -1027,10 +1476,49 @@ typedef struct tagWTSSESSION_NOTIFICATION #define APPCOMMAND_MEDIA_REWIND 50 #define APPCOMMAND_MEDIA_CHANNEL_UP 51 #define APPCOMMAND_MEDIA_CHANNEL_DOWN 52 @@ -660,7 +660,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #define FAPPCOMMAND_MOUSE 0x8000 -@@ -1107,6 +1595,15 @@ typedef struct tagCWPRETSTRUCT { +@@ -1106,6 +1594,15 @@ typedef struct tagCWPRETSTRUCT { #define LLKHF_UP (KF_UP >> 8) /* 0x00000080 */ #define LLKHF_LOWER_IL_INJECTED 0x00000002 @@ -676,7 +676,7 @@ index f99e9294..53ba8a91 100644 #define LLMHF_INJECTED 0x00000001 #define LLMHF_LOWER_IL_INJECTED 0x00000002 -@@ -1119,7 +1616,7 @@ typedef struct tagCWPRETSTRUCT { +@@ -1118,7 +1615,7 @@ typedef struct tagCWPRETSTRUCT { typedef struct tagKBDLLHOOKSTRUCT { DWORD vkCode; DWORD scanCode; @@ -685,7 +685,7 @@ index f99e9294..53ba8a91 100644 DWORD time; ULONG_PTR dwExtraInfo; } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; -@@ -1210,11 +1707,31 @@ typedef struct tagHARDWAREHOOKSTRUCT { +@@ -1209,11 +1706,31 @@ typedef struct tagHARDWAREHOOKSTRUCT { #if(WINVER >= 0x0400) #define KLF_REPLACELANG 0x00000010 #define KLF_NOTELLSHELL 0x00000080 @@ -717,7 +717,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ -@@ -1235,18 +1752,22 @@ typedef struct tagHARDWAREHOOKSTRUCT { +@@ -1234,18 +1751,22 @@ typedef struct tagHARDWAREHOOKSTRUCT { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -742,7 +742,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define LoadKeyboardLayout LoadKeyboardLayoutW #else -@@ -1255,12 +1776,14 @@ LoadKeyboardLayoutW( +@@ -1254,12 +1775,14 @@ LoadKeyboardLayoutW( #if(WINVER >= 0x0400) @@ -758,7 +758,7 @@ index f99e9294..53ba8a91 100644 #else WINUSERAPI BOOL -@@ -1271,6 +1794,7 @@ ActivateKeyboardLayout( +@@ -1270,6 +1793,7 @@ ActivateKeyboardLayout( #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) @@ -766,7 +766,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1284,17 +1808,23 @@ ToUnicodeEx( +@@ -1283,17 +1807,23 @@ ToUnicodeEx( _In_opt_ HKL dwhkl); #endif /* WINVER >= 0x0400 */ @@ -790,7 +790,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1307,6 +1837,8 @@ GetKeyboardLayoutNameW( +@@ -1306,6 +1836,8 @@ GetKeyboardLayoutNameW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -799,7 +799,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1314,6 +1846,7 @@ GetKeyboardLayoutList( +@@ -1313,6 +1845,7 @@ GetKeyboardLayoutList( _In_ int nBuff, _Out_writes_to_opt_(nBuff, return) HKL FAR *lpList); @@ -807,7 +807,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HKL WINAPI -@@ -1347,9 +1880,17 @@ typedef struct tagMOUSEMOVEPOINT { +@@ -1346,9 +1879,17 @@ typedef struct tagMOUSEMOVEPOINT { #define GMMP_USE_DISPLAY_POINTS 1 #define GMMP_USE_HIGH_RESOLUTION_POINTS 2 @@ -825,7 +825,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1358,7 +1899,7 @@ GetMouseMovePointsEx( +@@ -1357,7 +1898,7 @@ GetMouseMovePointsEx( _In_ LPMOUSEMOVEPOINT lppt, _Out_writes_(nBufPoints) LPMOUSEMOVEPOINT lpptBuf, _In_ int nBufPoints, @@ -834,7 +834,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -1369,6 +1910,16 @@ GetMouseMovePointsEx( +@@ -1368,6 +1909,16 @@ GetMouseMovePointsEx( /* * Desktop-specific access flags */ @@ -851,7 +851,7 @@ index f99e9294..53ba8a91 100644 #define DESKTOP_READOBJECTS 0x0001L #define DESKTOP_CREATEWINDOW 0x0002L #define DESKTOP_CREATEMENU 0x0004L -@@ -1379,17 +1930,42 @@ GetMouseMovePointsEx( +@@ -1378,17 +1929,42 @@ GetMouseMovePointsEx( #define DESKTOP_WRITEOBJECTS 0x0080L #define DESKTOP_SWITCHDESKTOP 0x0100L @@ -894,7 +894,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1397,9 +1973,11 @@ CreateDesktopA( +@@ -1396,9 +1972,11 @@ CreateDesktopA( _In_ LPCSTR lpszDesktop, _Reserved_ LPCSTR lpszDevice, _Reserved_ DEVMODEA* pDevmode, @@ -907,7 +907,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1407,7 +1985,7 @@ CreateDesktopW( +@@ -1406,7 +1984,7 @@ CreateDesktopW( _In_ LPCWSTR lpszDesktop, _Reserved_ LPCWSTR lpszDevice, _Reserved_ DEVMODEW* pDevmode, @@ -916,7 +916,7 @@ index f99e9294..53ba8a91 100644 _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa); #ifdef UNICODE -@@ -1416,6 +1994,8 @@ CreateDesktopW( +@@ -1415,6 +1993,8 @@ CreateDesktopW( #define CreateDesktop CreateDesktopA #endif // !UNICODE @@ -925,7 +925,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1423,11 +2003,13 @@ CreateDesktopExA( +@@ -1422,11 +2002,13 @@ CreateDesktopExA( _In_ LPCSTR lpszDesktop, _Reserved_ LPCSTR lpszDevice, _Reserved_ DEVMODEA* pDevmode, @@ -940,7 +940,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1435,7 +2017,7 @@ CreateDesktopExW( +@@ -1434,7 +2016,7 @@ CreateDesktopExW( _In_ LPCWSTR lpszDesktop, _Reserved_ LPCWSTR lpszDevice, _Reserved_ DEVMODEW* pDevmode, @@ -949,7 +949,7 @@ index f99e9294..53ba8a91 100644 _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa, _In_ ULONG ulHeapSize, -@@ -1455,20 +2037,24 @@ CreateDesktopExW( +@@ -1454,20 +2036,24 @@ CreateDesktopExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -976,7 +976,7 @@ index f99e9294..53ba8a91 100644 _In_ BOOL fInherit, _In_ ACCESS_MASK dwDesiredAccess); #ifdef UNICODE -@@ -1477,15 +2063,19 @@ OpenDesktopW( +@@ -1476,15 +2062,19 @@ OpenDesktopW( #define OpenDesktop OpenDesktopA #endif // !UNICODE @@ -998,7 +998,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1493,6 +2083,8 @@ EnumDesktopsA( +@@ -1492,6 +2082,8 @@ EnumDesktopsA( _In_opt_ HWINSTA hwinsta, _In_ DESKTOPENUMPROCA lpEnumFunc, _In_ LPARAM lParam); @@ -1007,7 +1007,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1506,6 +2098,8 @@ EnumDesktopsW( +@@ -1505,6 +2097,8 @@ EnumDesktopsW( #define EnumDesktops EnumDesktopsA #endif // !UNICODE @@ -1016,7 +1016,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1515,6 +2109,8 @@ EnumDesktopWindows( +@@ -1514,6 +2108,8 @@ EnumDesktopWindows( _In_ LPARAM lParam); @@ -1025,7 +1025,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1522,18 +2118,24 @@ SwitchDesktop( +@@ -1521,18 +2117,24 @@ SwitchDesktop( _In_ HDESK hDesktop); @@ -1050,7 +1050,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1578,6 +2180,11 @@ GetThreadDesktop( +@@ -1577,6 +2179,11 @@ GetThreadDesktop( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1062,7 +1062,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1586,6 +2193,11 @@ CreateWindowStationA( +@@ -1585,6 +2192,11 @@ CreateWindowStationA( _In_ DWORD dwFlags, _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa); @@ -1074,7 +1074,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1600,6 +2212,11 @@ CreateWindowStationW( +@@ -1599,6 +2211,11 @@ CreateWindowStationW( #define CreateWindowStation CreateWindowStationA #endif // !UNICODE @@ -1086,7 +1086,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1607,6 +2224,11 @@ OpenWindowStationA( +@@ -1606,6 +2223,11 @@ OpenWindowStationA( _In_ LPCSTR lpszWinSta, _In_ BOOL fInherit, _In_ ACCESS_MASK dwDesiredAccess); @@ -1098,7 +1098,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1620,12 +2242,16 @@ OpenWindowStationW( +@@ -1619,12 +2241,16 @@ OpenWindowStationW( #define OpenWindowStation OpenWindowStationA #endif // !UNICODE @@ -1115,7 +1115,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1638,18 +2264,27 @@ EnumWindowStationsW( +@@ -1637,18 +2263,27 @@ EnumWindowStationsW( #define EnumWindowStations EnumWindowStationsA #endif // !UNICODE @@ -1143,7 +1143,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1666,14 +2301,18 @@ GetProcessWindowStation( +@@ -1665,14 +2300,18 @@ GetProcessWindowStation( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1163,7 +1163,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1691,9 +2330,23 @@ GetUserObjectSecurity( +@@ -1690,9 +2329,23 @@ GetUserObjectSecurity( #define UOI_NAME 2 #define UOI_TYPE 3 #define UOI_USER_SID 4 @@ -1187,7 +1187,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #define UOI_TIMERPROC_EXCEPTION_SUPPRESSION 7 -@@ -1706,21 +2359,25 @@ typedef struct tagUSEROBJECTFLAGS { +@@ -1705,21 +2358,25 @@ typedef struct tagUSEROBJECTFLAGS { DWORD dwFlags; } USEROBJECTFLAGS, *PUSEROBJECTFLAGS; @@ -1215,7 +1215,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_bytes_opt_(nLength) PVOID pvInfo, _In_ DWORD nLength, _Out_opt_ LPDWORD lpnLengthNeeded); -@@ -1730,6 +2387,8 @@ GetUserObjectInformationW( +@@ -1729,6 +2386,8 @@ GetUserObjectInformationW( #define GetUserObjectInformation GetUserObjectInformationA #endif // !UNICODE @@ -1224,7 +1224,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1738,6 +2397,8 @@ SetUserObjectInformationA( +@@ -1737,6 +2396,8 @@ SetUserObjectInformationA( _In_ int nIndex, _In_reads_bytes_(nLength) PVOID pvInfo, _In_ DWORD nLength); @@ -1233,7 +1233,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1764,7 +2425,7 @@ SetUserObjectInformationW( +@@ -1763,7 +2424,7 @@ SetUserObjectInformationW( typedef struct tagWNDCLASSEXA { UINT cbSize; /* Win 3.x */ @@ -1242,7 +1242,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1780,7 +2441,7 @@ typedef struct tagWNDCLASSEXA { +@@ -1779,7 +2440,7 @@ typedef struct tagWNDCLASSEXA { typedef struct tagWNDCLASSEXW { UINT cbSize; /* Win 3.x */ @@ -1251,7 +1251,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1807,7 +2468,7 @@ typedef LPWNDCLASSEXA LPWNDCLASSEX; +@@ -1806,7 +2467,7 @@ typedef LPWNDCLASSEXA LPWNDCLASSEX; #endif /* WINVER >= 0x0400 */ typedef struct tagWNDCLASSA { @@ -1260,7 +1260,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1819,7 +2480,7 @@ typedef struct tagWNDCLASSA { +@@ -1818,7 +2479,7 @@ typedef struct tagWNDCLASSA { LPCSTR lpszClassName; } WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA; typedef struct tagWNDCLASSW { @@ -1269,7 +1269,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1848,6 +2509,7 @@ typedef LPWNDCLASSA LPWNDCLASS; +@@ -1847,6 +2508,7 @@ typedef LPWNDCLASSA LPWNDCLASS; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1277,7 +1277,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1856,6 +2518,7 @@ IsHungAppWindow( +@@ -1855,6 +2517,7 @@ IsHungAppWindow( #if(WINVER >= 0x0501) @@ -1285,7 +1285,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -1915,6 +2578,23 @@ typedef struct tagMSG { +@@ -1914,6 +2577,23 @@ typedef struct tagMSG { #define GWL_USERDATA (-21) #define GWL_ID (-12) @@ -1309,7 +1309,7 @@ index f99e9294..53ba8a91 100644 #ifdef _WIN64 #undef GWL_WNDPROC -@@ -1950,8 +2630,29 @@ typedef struct tagMSG { +@@ -1949,8 +2629,29 @@ typedef struct tagMSG { #if(WINVER >= 0x0400) #define GCL_HICONSM (-34) @@ -1339,7 +1339,7 @@ index f99e9294..53ba8a91 100644 #ifdef _WIN64 #undef GCL_MENUNAME -@@ -1972,6 +2673,18 @@ typedef struct tagMSG { +@@ -1971,6 +2672,18 @@ typedef struct tagMSG { #define GCLP_WNDPROC (-24) #define GCLP_HICONSM (-34) @@ -1358,7 +1358,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOWINOFFSETS */ #ifndef NOWINMESSAGES -@@ -2611,11 +3324,28 @@ typedef struct { +@@ -2614,11 +3327,28 @@ typedef struct { #define SMTO_NORMAL 0x0000 #define SMTO_BLOCK 0x0001 #define SMTO_ABORTIFHUNG 0x0002 @@ -1387,7 +1387,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #if(WINVER >= 0x0602) #endif /* WINVER >= 0x0602 */ -@@ -2643,11 +3373,15 @@ typedef struct { +@@ -2646,11 +3376,15 @@ typedef struct { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1403,7 +1403,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -2695,7 +3429,7 @@ typedef struct tagWINDOWPOS { +@@ -2698,7 +3432,7 @@ typedef struct tagWINDOWPOS { int y; int cx; int cy; @@ -1412,7 +1412,7 @@ index f99e9294..53ba8a91 100644 } WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS; /* -@@ -2733,9 +3467,26 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2736,9 +3470,26 @@ typedef struct tagNCCALCSIZE_PARAMS { #define MK_SHIFT 0x0004 #define MK_CONTROL 0x0008 #define MK_MBUTTON 0x0010 @@ -1439,7 +1439,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* !NOKEYSTATES */ -@@ -2748,10 +3499,23 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2751,10 +3502,23 @@ typedef struct tagNCCALCSIZE_PARAMS { #define TME_LEAVE 0x00000002 #if(WINVER >= 0x0500) #define TME_NONCLIENT 0x00000010 @@ -1463,7 +1463,7 @@ index f99e9294..53ba8a91 100644 #define HOVER_DEFAULT 0xFFFFFFFF #endif /* _WIN32_WINNT >= 0x0400 */ -@@ -2763,11 +3527,13 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2766,11 +3530,13 @@ typedef struct tagNCCALCSIZE_PARAMS { typedef struct tagTRACKMOUSEEVENT { DWORD cbSize; @@ -1478,7 +1478,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -2837,6 +3603,37 @@ TrackMouseEvent( +@@ -2840,6 +3606,37 @@ TrackMouseEvent( #define WS_CHILDWINDOW (WS_CHILD) @@ -1516,7 +1516,7 @@ index f99e9294..53ba8a91 100644 /* * Extended Window Styles */ -@@ -2845,6 +3642,15 @@ TrackMouseEvent( +@@ -2848,6 +3645,15 @@ TrackMouseEvent( #define WS_EX_TOPMOST 0x00000008L #define WS_EX_ACCEPTFILES 0x00000010L #define WS_EX_TRANSPARENT 0x00000020L @@ -1532,7 +1532,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define WS_EX_MDICHILD 0x00000040L #define WS_EX_TOOLWINDOW 0x00000080L -@@ -2852,6 +3658,15 @@ TrackMouseEvent( +@@ -2855,6 +3661,15 @@ TrackMouseEvent( #define WS_EX_CLIENTEDGE 0x00000200L #define WS_EX_CONTEXTHELP 0x00000400L @@ -1548,7 +1548,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) -@@ -2870,31 +3685,76 @@ TrackMouseEvent( +@@ -2873,31 +3688,76 @@ TrackMouseEvent( #define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE) #define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) @@ -1625,7 +1625,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ -@@ -2914,8 +3774,29 @@ TrackMouseEvent( +@@ -2917,8 +3777,29 @@ TrackMouseEvent( #define CS_GLOBALCLASS 0x4000 #define CS_IME 0x00010000 @@ -1655,7 +1655,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ -@@ -2947,6 +3828,23 @@ TrackMouseEvent( +@@ -2950,6 +3831,23 @@ TrackMouseEvent( #define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER) #define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER) @@ -1679,7 +1679,7 @@ index f99e9294..53ba8a91 100644 /* Border flags */ #define BF_LEFT 0x0001 #define BF_TOP 0x0002 -@@ -2975,18 +3873,43 @@ TrackMouseEvent( +@@ -2978,18 +3876,43 @@ TrackMouseEvent( #define BF_FLAT 0x4000 /* For flat rather than 3D borders */ #define BF_MONO 0x8000 /* For monochrome borders */ @@ -1725,7 +1725,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -2997,8 +3920,21 @@ DrawEdge( +@@ -3000,8 +3923,21 @@ DrawEdge( #define DFC_MENU 2 #define DFC_SCROLL 3 #define DFC_BUTTON 4 @@ -1747,7 +1747,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #define DFCS_CAPTIONCLOSE 0x0000 -@@ -3033,23 +3969,62 @@ DrawEdge( +@@ -3036,23 +3972,62 @@ DrawEdge( #if(WINVER >= 0x0500) #define DFCS_TRANSPARENT 0x0800 #define DFCS_HOT 0x1000 @@ -1812,7 +1812,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3062,16 +4037,36 @@ DrawFrameControl( +@@ -3065,16 +4040,36 @@ DrawFrameControl( #define DC_ICON 0x0004 #define DC_TEXT 0x0008 #define DC_INBUTTON 0x0010 @@ -1849,7 +1849,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3079,7 +4074,7 @@ DrawCaption( +@@ -3082,7 +4077,7 @@ DrawCaption( _In_ HWND hwnd, _In_ HDC hdc, _In_ CONST RECT * lprect, @@ -1858,7 +1858,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3091,6 +4086,7 @@ DrawCaption( +@@ -3094,6 +4089,7 @@ DrawCaption( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1866,7 +1866,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3128,17 +4124,48 @@ DrawAnimatedRects( +@@ -3131,17 +4127,48 @@ DrawAnimatedRects( #if(WINVER >= 0x0400) #define CF_HDROP 15 #define CF_LOCALE 16 @@ -1915,7 +1915,7 @@ index f99e9294..53ba8a91 100644 #endif #define CF_OWNERDISPLAY 0x0080 -@@ -3159,6 +4186,34 @@ DrawAnimatedRects( +@@ -3162,6 +4189,34 @@ DrawAnimatedRects( #define CF_GDIOBJFIRST 0x0300 #define CF_GDIOBJLAST 0x03FF @@ -1950,7 +1950,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOCLIPBOARD */ -@@ -3171,12 +4226,21 @@ DrawAnimatedRects( +@@ -3174,12 +4229,21 @@ DrawAnimatedRects( #define FCONTROL 0x08 #define FALT 0x10 @@ -1973,7 +1973,7 @@ index f99e9294..53ba8a91 100644 WORD key; WORD cmd; #else -@@ -3210,10 +4274,10 @@ typedef struct tagCREATESTRUCTA { +@@ -3213,10 +4277,10 @@ typedef struct tagCREATESTRUCTA { int cx; int y; int x; @@ -1986,7 +1986,7 @@ index f99e9294..53ba8a91 100644 } CREATESTRUCTA, *LPCREATESTRUCTA; typedef struct tagCREATESTRUCTW { LPVOID lpCreateParams; -@@ -3224,10 +4288,10 @@ typedef struct tagCREATESTRUCTW { +@@ -3227,10 +4291,10 @@ typedef struct tagCREATESTRUCTW { int cx; int y; int x; @@ -1999,7 +1999,7 @@ index f99e9294..53ba8a91 100644 } CREATESTRUCTW, *LPCREATESTRUCTW; #ifdef UNICODE typedef CREATESTRUCTW CREATESTRUCT; -@@ -3245,8 +4309,8 @@ typedef LPCREATESTRUCTA LPCREATESTRUCT; +@@ -3248,8 +4312,8 @@ typedef LPCREATESTRUCTA LPCREATESTRUCT; typedef struct tagWINDOWPLACEMENT { UINT length; @@ -2010,7 +2010,7 @@ index f99e9294..53ba8a91 100644 POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; -@@ -3258,8 +4322,19 @@ typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; +@@ -3261,8 +4325,19 @@ typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; #define WPF_SETMINPOSITION 0x0001 #define WPF_RESTORETOMAXIMIZED 0x0002 @@ -2030,7 +2030,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3303,8 +4378,18 @@ typedef struct tagSTYLESTRUCT +@@ -3306,8 +4381,18 @@ typedef struct tagSTYLESTRUCT #define ODT_LISTBOX 2 #define ODT_COMBOBOX 3 #define ODT_BUTTON 4 @@ -2049,7 +2049,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ /* -@@ -3314,6 +4399,13 @@ typedef struct tagSTYLESTRUCT +@@ -3317,6 +4402,13 @@ typedef struct tagSTYLESTRUCT #define ODA_SELECT 0x0002 #define ODA_FOCUS 0x0004 @@ -2063,7 +2063,7 @@ index f99e9294..53ba8a91 100644 /* * Owner draw state */ -@@ -3322,16 +4414,43 @@ typedef struct tagSTYLESTRUCT +@@ -3325,16 +4417,43 @@ typedef struct tagSTYLESTRUCT #define ODS_DISABLED 0x0004 #define ODS_CHECKED 0x0008 #define ODS_FOCUS 0x0010 @@ -2107,7 +2107,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINVER >= 0x0500 */ -@@ -3342,7 +4461,7 @@ typedef struct tagSTYLESTRUCT +@@ -3345,7 +4464,7 @@ typedef struct tagSTYLESTRUCT * MEASUREITEMSTRUCT for ownerdraw */ typedef struct tagMEASUREITEMSTRUCT { @@ -2116,7 +2116,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; UINT itemID; UINT itemWidth; -@@ -3354,11 +4473,11 @@ typedef struct tagMEASUREITEMSTRUCT { +@@ -3357,11 +4476,11 @@ typedef struct tagMEASUREITEMSTRUCT { * DRAWITEMSTRUCT for ownerdraw */ typedef struct tagDRAWITEMSTRUCT { @@ -2131,7 +2131,7 @@ index f99e9294..53ba8a91 100644 HWND hwndItem; HDC hDC; RECT rcItem; -@@ -3369,7 +4488,7 @@ typedef struct tagDRAWITEMSTRUCT { +@@ -3372,7 +4491,7 @@ typedef struct tagDRAWITEMSTRUCT { * DELETEITEMSTRUCT for ownerdraw */ typedef struct tagDELETEITEMSTRUCT { @@ -2140,7 +2140,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; UINT itemID; HWND hwndItem; -@@ -3380,7 +4499,7 @@ typedef struct tagDELETEITEMSTRUCT { +@@ -3383,7 +4502,7 @@ typedef struct tagDELETEITEMSTRUCT { * COMPAREITEMSTUCT for ownerdraw sorting */ typedef struct tagCOMPAREITEMSTRUCT { @@ -2149,7 +2149,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; HWND hwndItem; UINT itemID1; -@@ -3402,7 +4521,7 @@ typedef struct tagCOMPAREITEMSTRUCT { +@@ -3405,7 +4524,7 @@ typedef struct tagCOMPAREITEMSTRUCT { * Message Function Templates */ @@ -2158,7 +2158,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI GetMessageA( -@@ -3410,7 +4529,7 @@ GetMessageA( +@@ -3413,7 +4532,7 @@ GetMessageA( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax); @@ -2167,7 +2167,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI GetMessageW( -@@ -3449,17 +4568,20 @@ GetMessage( +@@ -3452,17 +4571,20 @@ GetMessage( #endif /* _M_CEE */ @@ -2188,7 +2188,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3507,6 +4629,7 @@ SetMessageQueue( +@@ -3510,6 +4632,7 @@ SetMessageQueue( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2196,7 +2196,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3515,7 +4638,8 @@ PeekMessageA( +@@ -3518,7 +4641,8 @@ PeekMessageA( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, @@ -2206,7 +2206,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3524,7 +4648,7 @@ PeekMessageW( +@@ -3527,7 +4651,7 @@ PeekMessageW( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, @@ -2215,7 +2215,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define PeekMessage PeekMessageW #else -@@ -3541,12 +4665,21 @@ PeekMessageW( +@@ -3544,12 +4668,21 @@ PeekMessageW( #define PM_REMOVE 0x0001 #define PM_NOYIELD 0x0002 @@ -2237,7 +2237,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -3555,15 +4688,19 @@ PeekMessageW( +@@ -3558,15 +4691,19 @@ PeekMessageW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2258,7 +2258,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3578,8 +4715,21 @@ UnregisterHotKey( +@@ -3581,8 +4718,21 @@ UnregisterHotKey( #define MOD_CONTROL 0x0002 #define MOD_SHIFT 0x0004 #define MOD_WIN 0x0008 @@ -2280,7 +2280,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ -@@ -3615,10 +4765,20 @@ UnregisterHotKey( +@@ -3618,10 +4768,20 @@ UnregisterHotKey( #define EWX_POWEROFF 0x00000008 #if(_WIN32_WINNT >= 0x0500) #define EWX_FORCEIFHUNG 0x00000010 @@ -2301,7 +2301,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #define EWX_HYBRID_SHUTDOWN 0x00400000 #define EWX_BOOTOPTIONS 0x01000000 -@@ -3626,11 +4786,28 @@ UnregisterHotKey( +@@ -3629,11 +4789,28 @@ UnregisterHotKey( #define EWX_CHECK_SAFE_FOR_SERVER 0x08000000 #define EWX_SYSTEM_INITIATED 0x10000000 @@ -2330,7 +2330,7 @@ index f99e9294..53ba8a91 100644 _When_((uFlags&(EWX_POWEROFF|EWX_SHUTDOWN|EWX_FORCE))!=0, __drv_preferredFunction("InitiateSystemShutdownEx", "Legacy API. Rearchitect to avoid Reboot")) -@@ -3638,27 +4815,31 @@ WINUSERAPI +@@ -3641,27 +4818,31 @@ WINUSERAPI BOOL WINAPI ExitWindowsEx( @@ -2364,7 +2364,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPARAM WINAPI -@@ -3666,6 +4847,7 @@ GetMessageExtraInfo( +@@ -3669,6 +4850,7 @@ GetMessageExtraInfo( VOID); #if(_WIN32_WINNT >= 0x0602) @@ -2372,7 +2372,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -3674,6 +4856,7 @@ GetUnpredictedMessagePos( +@@ -3677,6 +4859,7 @@ GetUnpredictedMessagePos( #endif /* _WIN32_WINNT >= 0x0602 */ #if(_WIN32_WINNT >= 0x0501) @@ -2380,7 +2380,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3682,6 +4865,7 @@ IsWow64Message( +@@ -3685,6 +4868,7 @@ IsWow64Message( #endif /* _WIN32_WINNT >= 0x0501 */ #if(WINVER >= 0x0400) @@ -2388,7 +2388,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPARAM WINAPI -@@ -3695,6 +4879,8 @@ SetMessageExtraInfo( +@@ -3698,6 +4882,8 @@ SetMessageExtraInfo( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2397,7 +2397,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3703,6 +4889,8 @@ SendMessageA( +@@ -3706,6 +4892,8 @@ SendMessageA( _In_ UINT Msg, _Pre_maybenull_ _Post_valid_ WPARAM wParam, _Pre_maybenull_ _Post_valid_ LPARAM lParam); @@ -2406,7 +2406,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3747,7 +4935,9 @@ SendMessage( +@@ -3750,7 +4938,9 @@ SendMessage( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2417,7 +2417,7 @@ index f99e9294..53ba8a91 100644 LRESULT WINAPI SendMessageTimeoutA( -@@ -3755,10 +4945,12 @@ SendMessageTimeoutA( +@@ -3758,10 +4948,12 @@ SendMessageTimeoutA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, @@ -2432,7 +2432,7 @@ index f99e9294..53ba8a91 100644 LRESULT WINAPI SendMessageTimeoutW( -@@ -3766,7 +4958,7 @@ SendMessageTimeoutW( +@@ -3769,7 +4961,7 @@ SendMessageTimeoutW( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, @@ -2441,7 +2441,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT uTimeout, _Out_opt_ PDWORD_PTR lpdwResult); #ifdef UNICODE -@@ -3775,6 +4967,8 @@ SendMessageTimeoutW( +@@ -3778,6 +4970,8 @@ SendMessageTimeoutW( #define SendMessageTimeout SendMessageTimeoutA #endif // !UNICODE @@ -2450,7 +2450,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3783,6 +4977,8 @@ SendNotifyMessageA( +@@ -3786,6 +4980,8 @@ SendNotifyMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2459,7 +2459,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3797,6 +4993,8 @@ SendNotifyMessageW( +@@ -3800,6 +4996,8 @@ SendNotifyMessageW( #define SendNotifyMessage SendNotifyMessageA #endif // !UNICODE @@ -2468,7 +2468,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3807,6 +5005,8 @@ SendMessageCallbackA( +@@ -3810,6 +5008,8 @@ SendMessageCallbackA( _In_ LPARAM lParam, _In_ SENDASYNCPROC lpResultCallBack, _In_ ULONG_PTR dwData); @@ -2477,7 +2477,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3831,22 +5031,26 @@ typedef struct { +@@ -3834,22 +5034,26 @@ typedef struct { LUID luid; } BSMINFO, *PBSMINFO; @@ -2508,7 +2508,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, -@@ -3876,12 +5080,14 @@ BroadcastSystemMessageA( +@@ -3879,12 +5083,14 @@ BroadcastSystemMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2525,7 +2525,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); -@@ -3892,7 +5098,7 @@ BroadcastSystemMessageW( +@@ -3895,7 +5101,7 @@ BroadcastSystemMessageW( #endif // !UNICODE #elif defined(_WIN32_WINDOWS) // The Win95 version isn't A/W decorated @@ -2534,7 +2534,7 @@ index f99e9294..53ba8a91 100644 long WINAPI BroadcastSystemMessage( -@@ -3915,6 +5121,13 @@ BroadcastSystemMessage( +@@ -3918,6 +5124,13 @@ BroadcastSystemMessage( #define BSM_APPLICATIONS 0x00000008 #define BSM_ALLDESKTOPS 0x00000010 @@ -2548,7 +2548,7 @@ index f99e9294..53ba8a91 100644 //Broadcast Special Message Flags #define BSF_QUERY 0x00000001 #define BSF_IGNORECURRENTTASK 0x00000002 -@@ -3923,13 +5136,36 @@ BroadcastSystemMessage( +@@ -3926,13 +5139,36 @@ BroadcastSystemMessage( #define BSF_POSTMESSAGE 0x00000010 #define BSF_FORCEIFHUNG 0x00000020 #define BSF_NOTIMEOUTIFNOTHUNG 0x00000040 @@ -2585,7 +2585,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define BROADCAST_QUERY_DENY 0x424D5144 // Return this value to deny a query. -@@ -3941,35 +5177,59 @@ +@@ -3944,35 +5180,59 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0500) @@ -2647,7 +2647,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3977,26 +5237,39 @@ UnregisterDeviceNotification( +@@ -3980,26 +5240,39 @@ UnregisterDeviceNotification( _In_ HDEVNOTIFY Handle ); @@ -2688,7 +2688,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4004,14 +5277,21 @@ UnregisterPowerSettingNotification( +@@ -4007,14 +5280,21 @@ UnregisterPowerSettingNotification( IN HPOWERNOTIFY Handle ); @@ -2711,7 +2711,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4029,6 +5309,8 @@ UnregisterSuspendResumeNotification ( +@@ -4032,6 +5312,8 @@ UnregisterSuspendResumeNotification ( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2720,7 +2720,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4037,6 +5319,8 @@ PostMessageA( +@@ -4040,6 +5322,8 @@ PostMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2729,7 +2729,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4051,6 +5335,8 @@ PostMessageW( +@@ -4054,6 +5338,8 @@ PostMessageW( #define PostMessage PostMessageA #endif // !UNICODE @@ -2738,7 +2738,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4059,6 +5345,8 @@ PostThreadMessageA( +@@ -4062,6 +5348,8 @@ PostThreadMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2747,7 +2747,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4098,7 +5386,8 @@ PostThreadMessageW( +@@ -4101,7 +5389,8 @@ PostThreadMessageW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2757,7 +2757,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI AttachThreadInput( -@@ -4107,12 +5396,15 @@ AttachThreadInput( +@@ -4110,12 +5399,15 @@ AttachThreadInput( _In_ BOOL fAttach); @@ -2773,7 +2773,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4123,6 +5415,7 @@ WaitMessage( +@@ -4126,6 +5418,7 @@ WaitMessage( #endif @@ -2781,7 +2781,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -4136,6 +5429,7 @@ WaitForInputIdle( +@@ -4139,6 +5432,7 @@ WaitForInputIdle( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2789,7 +2789,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -4149,6 +5443,7 @@ DefWindowProcA( +@@ -4152,6 +5446,7 @@ DefWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2797,7 +2797,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -4168,6 +5463,7 @@ DefWindowProcW( +@@ -4171,6 +5466,7 @@ DefWindowProcW( #define DefWindowProc DefWindowProcA #endif // !UNICODE @@ -2805,7 +2805,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -4176,6 +5472,7 @@ PostQuitMessage( +@@ -4179,6 +5475,7 @@ PostQuitMessage( #ifdef STRICT @@ -2813,7 +2813,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4185,6 +5482,7 @@ CallWindowProcA( +@@ -4188,6 +5485,7 @@ CallWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2821,7 +2821,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4202,6 +5500,7 @@ CallWindowProcW( +@@ -4205,6 +5503,7 @@ CallWindowProcW( #else /* !STRICT */ @@ -2829,7 +2829,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4211,6 +5510,7 @@ CallWindowProcA( +@@ -4214,6 +5513,7 @@ CallWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2837,7 +2837,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4234,6 +5534,7 @@ CallWindowProcW( +@@ -4237,6 +5537,7 @@ CallWindowProcW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2845,7 +2845,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4248,6 +5549,7 @@ InSendMessage( +@@ -4251,6 +5552,7 @@ InSendMessage( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2853,7 +2853,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -4271,12 +5573,15 @@ InSendMessageEx( +@@ -4274,12 +5576,15 @@ InSendMessageEx( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2869,7 +2869,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4289,11 +5594,15 @@ SetDoubleClickTime( +@@ -4292,11 +5597,15 @@ SetDoubleClickTime( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2885,7 +2885,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI ATOM WINAPI -@@ -4305,12 +5614,16 @@ RegisterClassW( +@@ -4308,12 +5617,16 @@ RegisterClassW( #define RegisterClass RegisterClassA #endif // !UNICODE @@ -2902,7 +2902,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4329,6 +5642,8 @@ UnregisterClassW( +@@ -4332,6 +5645,8 @@ UnregisterClassW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2911,7 +2911,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4337,6 +5652,8 @@ GetClassInfoA( +@@ -4340,6 +5655,8 @@ GetClassInfoA( _In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpClassName, _Out_ LPWNDCLASSA lpWndClass); @@ -2920,7 +2920,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4358,11 +5675,15 @@ GetClassInfoW( +@@ -4361,11 +5678,15 @@ GetClassInfoW( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) #if(WINVER >= 0x0400) @@ -2936,7 +2936,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI ATOM WINAPI -@@ -4380,6 +5701,8 @@ RegisterClassExW( +@@ -4383,6 +5704,8 @@ RegisterClassExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2945,7 +2945,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4388,6 +5711,8 @@ GetClassInfoExA( +@@ -4391,6 +5714,8 @@ GetClassInfoExA( _In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpszClass, _Out_ LPWNDCLASSEXA lpwcx); @@ -2954,7 +2954,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4421,14 +5746,16 @@ GetClassInfoExW( +@@ -4424,14 +5749,16 @@ GetClassInfoExW( typedef BOOLEAN (WINAPI * PREGISTERCLASSNAMEW)(LPCWSTR); #endif /* _WIN32_WINNT >= 0x0501 */ @@ -2973,7 +2973,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -4437,14 +5764,16 @@ CreateWindowExA( +@@ -4440,14 +5767,16 @@ CreateWindowExA( _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam); @@ -2992,7 +2992,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -4480,6 +5809,7 @@ nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) +@@ -4483,6 +5812,7 @@ nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3000,7 +3000,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4487,12 +5817,14 @@ IsWindow( +@@ -4490,12 +5820,14 @@ IsWindow( _In_opt_ HWND hWnd); @@ -3015,7 +3015,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4506,18 +5838,21 @@ IsChild( +@@ -4509,18 +5841,21 @@ IsChild( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3038,7 +3038,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -4526,13 +5861,15 @@ ShowWindow( +@@ -4529,13 +5864,15 @@ ShowWindow( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0500) @@ -3055,7 +3055,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -4544,6 +5881,8 @@ AnimateWindow( +@@ -4547,6 +5884,8 @@ AnimateWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3064,7 +3064,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4556,7 +5895,7 @@ UpdateLayeredWindow( +@@ -4559,7 +5898,7 @@ UpdateLayeredWindow( _In_opt_ POINT* pptSrc, _In_ COLORREF crKey, _In_opt_ BLENDFUNCTION* pblend, @@ -3073,7 +3073,7 @@ index f99e9294..53ba8a91 100644 /* * Layered Window Update information -@@ -4571,7 +5910,7 @@ typedef struct tagUPDATELAYEREDWINDOWINFO +@@ -4574,7 +5913,7 @@ typedef struct tagUPDATELAYEREDWINDOWINFO const POINT* pptSrc; COLORREF crKey; const BLENDFUNCTION* pblend; @@ -3082,7 +3082,7 @@ index f99e9294..53ba8a91 100644 const RECT* prcDirty; } UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO; -@@ -4596,6 +5935,8 @@ UpdateLayeredWindowIndirect( +@@ -4599,6 +5938,8 @@ UpdateLayeredWindowIndirect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3091,7 +3091,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4603,22 +5944,28 @@ GetLayeredWindowAttributes( +@@ -4606,22 +5947,28 @@ GetLayeredWindowAttributes( _In_ HWND hwnd, _Out_opt_ COLORREF* pcrKey, _Out_opt_ BYTE* pbAlpha, @@ -3122,7 +3122,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -4628,6 +5975,8 @@ PrintWindow( +@@ -4631,6 +5978,8 @@ PrintWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3131,7 +3131,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4635,7 +5984,7 @@ SetLayeredWindowAttributes( +@@ -4638,7 +5987,7 @@ SetLayeredWindowAttributes( _In_ HWND hwnd, _In_ COLORREF crKey, _In_ BYTE bAlpha, @@ -3140,7 +3140,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -4643,6 +5992,12 @@ SetLayeredWindowAttributes( +@@ -4646,6 +5995,12 @@ SetLayeredWindowAttributes( #define LWA_COLORKEY 0x00000001 #define LWA_ALPHA 0x00000002 @@ -3153,7 +3153,7 @@ index f99e9294..53ba8a91 100644 #define ULW_COLORKEY 0x00000001 #define ULW_ALPHA 0x00000002 -@@ -4650,6 +6005,14 @@ SetLayeredWindowAttributes( +@@ -4653,6 +6008,14 @@ SetLayeredWindowAttributes( #define ULW_EX_NORESIZE 0x00000008 @@ -3168,7 +3168,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* * FRAME_MARGIN -@@ -4670,14 +6033,16 @@ typedef struct +@@ -4673,14 +6036,16 @@ typedef struct #if(WINVER >= 0x0400) @@ -3186,7 +3186,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4689,11 +6054,12 @@ FlashWindow( +@@ -4692,11 +6057,12 @@ FlashWindow( typedef struct { UINT cbSize; HWND hwnd; @@ -3200,7 +3200,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4707,8 +6073,20 @@ FlashWindowEx( +@@ -4710,8 +6076,20 @@ FlashWindowEx( #define FLASHW_TIMER 0x00000004 #define FLASHW_TIMERNOFG 0x0000000C @@ -3221,7 +3221,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4716,12 +6094,16 @@ ShowOwnedPopups( +@@ -4719,12 +6097,16 @@ ShowOwnedPopups( _In_ HWND hWnd, _In_ BOOL fShow); @@ -3238,7 +3238,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4734,6 +6116,8 @@ CloseWindow( +@@ -4737,6 +6119,8 @@ CloseWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3247,7 +3247,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4745,6 +6129,8 @@ MoveWindow( +@@ -4748,6 +6132,8 @@ MoveWindow( _In_ int nHeight, _In_ BOOL bRepaint); @@ -3256,7 +3256,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4755,7 +6141,7 @@ SetWindowPos( +@@ -4758,7 +6144,7 @@ SetWindowPos( _In_ int Y, _In_ int cx, _In_ int cy, @@ -3265,7 +3265,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -4763,6 +6149,8 @@ SetWindowPos( +@@ -4766,6 +6152,8 @@ SetWindowPos( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3274,7 +3274,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4770,6 +6158,8 @@ GetWindowPlacement( +@@ -4773,6 +6161,8 @@ GetWindowPlacement( _In_ HWND hWnd, _Inout_ WINDOWPLACEMENT *lpwndpl); @@ -3283,7 +3283,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4782,7 +6172,16 @@ SetWindowPlacement( +@@ -4785,7 +6175,16 @@ SetWindowPlacement( #define WDA_MONITOR 0x00000001 #define WDA_EXCLUDEFROMCAPTURE 0x00000011 @@ -3300,7 +3300,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4790,12 +6189,14 @@ GetWindowDisplayAffinity( +@@ -4793,12 +6192,14 @@ GetWindowDisplayAffinity( _In_ HWND hWnd, _Out_ DWORD* pdwAffinity); @@ -3316,7 +3316,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ -@@ -4807,12 +6208,16 @@ SetWindowDisplayAffinity( +@@ -4810,12 +6211,16 @@ SetWindowDisplayAffinity( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3333,7 +3333,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDWP WINAPI -@@ -4824,9 +6229,11 @@ DeferWindowPos( +@@ -4827,9 +6232,11 @@ DeferWindowPos( _In_ int y, _In_ int cx, _In_ int cy, @@ -3346,7 +3346,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4841,6 +6248,7 @@ EndDeferWindowPos( +@@ -4844,6 +6251,7 @@ EndDeferWindowPos( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3354,7 +3354,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4853,24 +6261,29 @@ IsWindowVisible( +@@ -4856,24 +6264,29 @@ IsWindowVisible( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3384,7 +3384,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4899,9 +6312,32 @@ IsZoomed( +@@ -4902,9 +6315,32 @@ IsZoomed( #define SWP_DRAWFRAME SWP_FRAMECHANGED #define SWP_NOREPOSITION SWP_NOOWNERZORDER @@ -3407,7 +3407,7 @@ index f99e9294..53ba8a91 100644 + #if(WINVER >= 0x0400) #define SWP_DEFERERASE 0x2000 // same as SWP_DEFERDRAWING - #define SWP_ASYNCWINDOWPOS 0x4000 // same as SWP_CREATESPB + #define SWP_ASYNCWINDOWPOS 0x4000 + +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) +_Win32_FlagsEnum_(SET_WINDOW_POS_FLAGS, unsigned int, @@ -3417,7 +3417,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -5006,6 +6442,8 @@ typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; +@@ -5009,6 +6445,8 @@ typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3426,7 +3426,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5015,6 +6453,8 @@ CreateDialogParamA( +@@ -5018,6 +6456,8 @@ CreateDialogParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3435,7 +3435,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5030,6 +6470,8 @@ CreateDialogParamW( +@@ -5033,6 +6473,8 @@ CreateDialogParamW( #define CreateDialogParam CreateDialogParamA #endif // !UNICODE @@ -3444,7 +3444,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5039,6 +6481,8 @@ CreateDialogIndirectParamA( +@@ -5042,6 +6484,8 @@ CreateDialogIndirectParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3453,7 +3453,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5074,6 +6518,8 @@ CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +@@ -5077,6 +6521,8 @@ CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) #define CreateDialogIndirect CreateDialogIndirectA #endif // !UNICODE @@ -3462,7 +3462,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5083,6 +6529,8 @@ DialogBoxParamA( +@@ -5086,6 +6532,8 @@ DialogBoxParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3471,7 +3471,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5098,6 +6546,8 @@ DialogBoxParamW( +@@ -5101,6 +6549,8 @@ DialogBoxParamW( #define DialogBoxParam DialogBoxParamA #endif // !UNICODE @@ -3480,7 +3480,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5107,6 +6557,8 @@ DialogBoxIndirectParamA( +@@ -5110,6 +6560,8 @@ DialogBoxIndirectParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3489,7 +3489,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5142,6 +6594,8 @@ DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +@@ -5145,6 +6597,8 @@ DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) #define DialogBoxIndirect DialogBoxIndirectA #endif // !UNICODE @@ -3498,7 +3498,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5149,6 +6603,8 @@ EndDialog( +@@ -5152,6 +6606,8 @@ EndDialog( _In_ HWND hDlg, _In_ INT_PTR nResult); @@ -3507,7 +3507,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5156,6 +6612,8 @@ GetDlgItem( +@@ -5159,6 +6615,8 @@ GetDlgItem( _In_opt_ HWND hDlg, _In_ int nIDDlgItem); @@ -3516,7 +3516,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5165,6 +6623,8 @@ SetDlgItemInt( +@@ -5168,6 +6626,8 @@ SetDlgItemInt( _In_ UINT uValue, _In_ BOOL bSigned); @@ -3525,7 +3525,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5174,6 +6634,8 @@ GetDlgItemInt( +@@ -5177,6 +6637,8 @@ GetDlgItemInt( _Out_opt_ BOOL *lpTranslated, _In_ BOOL bSigned); @@ -3534,7 +3534,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5181,6 +6643,8 @@ SetDlgItemTextA( +@@ -5184,6 +6646,8 @@ SetDlgItemTextA( _In_ HWND hDlg, _In_ int nIDDlgItem, _In_ LPCSTR lpString); @@ -3543,7 +3543,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5194,6 +6658,8 @@ SetDlgItemTextW( +@@ -5197,6 +6661,8 @@ SetDlgItemTextW( #define SetDlgItemText SetDlgItemTextA #endif // !UNICODE @@ -3552,7 +3552,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, cchMax) WINUSERAPI UINT -@@ -5203,6 +6669,8 @@ GetDlgItemTextA( +@@ -5206,6 +6672,8 @@ GetDlgItemTextA( _In_ int nIDDlgItem, _Out_writes_(cchMax) LPSTR lpString, _In_ int cchMax); @@ -3561,7 +3561,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, cchMax) WINUSERAPI UINT -@@ -5218,14 +6686,18 @@ GetDlgItemTextW( +@@ -5221,14 +6689,18 @@ GetDlgItemTextW( #define GetDlgItemText GetDlgItemTextA #endif // !UNICODE @@ -3581,7 +3581,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5235,6 +6707,7 @@ CheckRadioButton( +@@ -5238,6 +6710,7 @@ CheckRadioButton( _In_ int nIDLastButton, _In_ int nIDCheckButton); @@ -3589,7 +3589,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5242,6 +6715,7 @@ IsDlgButtonChecked( +@@ -5245,6 +6718,7 @@ IsDlgButtonChecked( _In_ HWND hDlg, _In_ int nIDButton); @@ -3597,7 +3597,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -5251,6 +6725,7 @@ SendDlgItemMessageA( +@@ -5254,6 +6728,7 @@ SendDlgItemMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -3605,7 +3605,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -5266,6 +6741,8 @@ SendDlgItemMessageW( +@@ -5269,6 +6744,8 @@ SendDlgItemMessageW( #define SendDlgItemMessage SendDlgItemMessageA #endif // !UNICODE @@ -3614,7 +3614,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5274,6 +6751,8 @@ GetNextDlgGroupItem( +@@ -5277,6 +6754,8 @@ GetNextDlgGroupItem( _In_opt_ HWND hCtl, _In_ BOOL bPrevious); @@ -3623,7 +3623,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5282,12 +6761,15 @@ GetNextDlgTabItem( +@@ -5285,12 +6764,15 @@ GetNextDlgTabItem( _In_opt_ HWND hCtl, _In_ BOOL bPrevious); @@ -3639,7 +3639,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI long WINAPI -@@ -5307,6 +6789,7 @@ DefDlgProcA( +@@ -5310,6 +6792,7 @@ DefDlgProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -3647,7 +3647,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -5336,6 +6819,8 @@ typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { +@@ -5339,6 +6822,8 @@ typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { DEFINE_ENUM_FLAG_OPERATORS(DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS); #endif @@ -3656,7 +3656,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI SetDialogControlDpiChangeBehavior( -@@ -5343,6 +6828,8 @@ SetDialogControlDpiChangeBehavior( +@@ -5346,6 +6831,8 @@ SetDialogControlDpiChangeBehavior( _In_ DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS mask, _In_ DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS values); @@ -3665,7 +3665,7 @@ index f99e9294..53ba8a91 100644 DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS WINAPI GetDialogControlDpiChangeBehavior( -@@ -5359,6 +6846,8 @@ typedef enum DIALOG_DPI_CHANGE_BEHAVIORS { +@@ -5362,6 +6849,8 @@ typedef enum DIALOG_DPI_CHANGE_BEHAVIORS { DEFINE_ENUM_FLAG_OPERATORS(DIALOG_DPI_CHANGE_BEHAVIORS); #endif @@ -3674,7 +3674,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI SetDialogDpiChangeBehavior( -@@ -5366,6 +6855,8 @@ SetDialogDpiChangeBehavior( +@@ -5369,6 +6858,8 @@ SetDialogDpiChangeBehavior( _In_ DIALOG_DPI_CHANGE_BEHAVIORS mask, _In_ DIALOG_DPI_CHANGE_BEHAVIORS values); @@ -3683,7 +3683,7 @@ index f99e9294..53ba8a91 100644 DIALOG_DPI_CHANGE_BEHAVIORS WINAPI GetDialogDpiChangeBehavior( -@@ -5390,12 +6881,14 @@ GetDialogDpiChangeBehavior( +@@ -5393,12 +6884,14 @@ GetDialogDpiChangeBehavior( #ifndef NOMSG @@ -3698,7 +3698,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5416,12 +6909,16 @@ CallMsgFilterW( +@@ -5419,12 +6912,16 @@ CallMsgFilterW( * Clipboard Manager Functions */ @@ -3715,7 +3715,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5431,6 +6928,7 @@ CloseClipboard( +@@ -5434,6 +6931,7 @@ CloseClipboard( #if(WINVER >= 0x0500) @@ -3723,7 +3723,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5439,24 +6937,31 @@ GetClipboardSequenceNumber( +@@ -5442,24 +6940,31 @@ GetClipboardSequenceNumber( #endif /* WINVER >= 0x0500 */ @@ -3755,7 +3755,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5464,6 +6969,8 @@ ChangeClipboardChain( +@@ -5467,6 +6972,8 @@ ChangeClipboardChain( _In_ HWND hWndRemove, _In_ HWND hWndNewNext); @@ -3764,7 +3764,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -5471,6 +6978,8 @@ SetClipboardData( +@@ -5474,6 +6981,8 @@ SetClipboardData( _In_ UINT uFormat, _In_opt_ HANDLE hMem); @@ -3773,7 +3773,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -5492,11 +7001,15 @@ GetClipboardMetadata( +@@ -5495,11 +7004,15 @@ GetClipboardMetadata( UINT format, _Inout_ PGETCLIPBMETADATA metadata); @@ -3789,7 +3789,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5508,18 +7021,24 @@ RegisterClipboardFormatW( +@@ -5511,18 +7024,24 @@ RegisterClipboardFormatW( #define RegisterClipboardFormat RegisterClipboardFormatA #endif // !UNICODE @@ -3814,7 +3814,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5527,6 +7046,8 @@ GetClipboardFormatNameA( +@@ -5530,6 +7049,8 @@ GetClipboardFormatNameA( _In_ UINT format, _Out_writes_(cchMaxCount) LPSTR lpszFormatName, _In_ int cchMaxCount); @@ -3823,7 +3823,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5540,18 +7061,24 @@ GetClipboardFormatNameW( +@@ -5543,18 +7064,24 @@ GetClipboardFormatNameW( #define GetClipboardFormatName GetClipboardFormatNameA #endif // !UNICODE @@ -3848,7 +3848,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5559,6 +7086,8 @@ GetPriorityClipboardFormat( +@@ -5562,6 +7089,8 @@ GetPriorityClipboardFormat( _In_reads_(cFormats) UINT *paFormatPriorityList, _In_ int cFormats); @@ -3857,7 +3857,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5566,18 +7095,24 @@ GetOpenClipboardWindow( +@@ -5569,18 +7098,24 @@ GetOpenClipboardWindow( VOID); #if(WINVER >= 0x0600) @@ -3882,7 +3882,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5593,12 +7128,16 @@ GetUpdatedClipboardFormats( +@@ -5596,12 +7131,16 @@ GetUpdatedClipboardFormats( * Character Translation Routines */ @@ -3899,7 +3899,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5611,6 +7150,8 @@ CharToOemW( +@@ -5614,6 +7153,8 @@ CharToOemW( #define CharToOem CharToOemA #endif // !UNICODE @@ -3908,7 +3908,7 @@ index f99e9294..53ba8a91 100644 __drv_preferredFunction("OemToCharBuff","Does not validate buffer size") WINUSERAPI BOOL -@@ -5618,6 +7159,8 @@ WINAPI +@@ -5621,6 +7162,8 @@ WINAPI OemToCharA( _In_ LPCSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc) + 1)) LPSTR pDst); @@ -3917,7 +3917,7 @@ index f99e9294..53ba8a91 100644 __drv_preferredFunction("OemToCharBuff","Does not validate buffer size") WINUSERAPI BOOL -@@ -5631,6 +7174,8 @@ OemToCharW( +@@ -5634,6 +7177,8 @@ OemToCharW( #define OemToChar OemToCharA #endif // !UNICODE @@ -3926,7 +3926,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5638,6 +7183,8 @@ CharToOemBuffA( +@@ -5641,6 +7186,8 @@ CharToOemBuffA( _In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength); @@ -3935,7 +3935,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5651,6 +7198,8 @@ CharToOemBuffW( +@@ -5654,6 +7201,8 @@ CharToOemBuffW( #define CharToOemBuff CharToOemBuffA #endif // !UNICODE @@ -3944,7 +3944,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5658,6 +7207,8 @@ OemToCharBuffA( +@@ -5661,6 +7210,8 @@ OemToCharBuffA( _In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength); @@ -3953,7 +3953,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5677,11 +7228,15 @@ OemToCharBuffW( +@@ -5680,11 +7231,15 @@ OemToCharBuffW( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -3969,7 +3969,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5693,12 +7248,14 @@ CharUpperW( +@@ -5696,12 +7251,14 @@ CharUpperW( #define CharUpper CharUpperA #endif // !UNICODE @@ -3984,7 +3984,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5711,11 +7268,15 @@ CharUpperBuffW( +@@ -5714,11 +7271,15 @@ CharUpperBuffW( #define CharUpperBuff CharUpperBuffA #endif // !UNICODE @@ -4000,7 +4000,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5727,12 +7288,14 @@ CharLowerW( +@@ -5730,12 +7291,14 @@ CharLowerW( #define CharLower CharLowerA #endif // !UNICODE @@ -4015,7 +4015,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5745,11 +7308,13 @@ CharLowerBuffW( +@@ -5748,11 +7311,13 @@ CharLowerBuffW( #define CharLowerBuff CharLowerBuffA #endif // !UNICODE @@ -4029,7 +4029,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5761,12 +7326,14 @@ CharNextW( +@@ -5764,12 +7329,14 @@ CharNextW( #define CharNext CharNextA #endif // !UNICODE @@ -4044,7 +4044,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5780,6 +7347,7 @@ CharPrevW( +@@ -5783,6 +7350,7 @@ CharPrevW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4052,7 +4052,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPSTR WINAPI -@@ -5788,6 +7356,7 @@ CharNextExA( +@@ -5791,6 +7359,7 @@ CharNextExA( _In_ LPCSTR lpCurrentChar, _In_ DWORD dwFlags); @@ -4060,7 +4060,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPSTR WINAPI -@@ -5823,11 +7392,15 @@ CharPrevExA( +@@ -5826,11 +7395,15 @@ CharPrevExA( * Language dependent Routines */ @@ -4076,7 +4076,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5839,11 +7412,15 @@ IsCharAlphaW( +@@ -5842,11 +7415,15 @@ IsCharAlphaW( #define IsCharAlpha IsCharAlphaA #endif // !UNICODE @@ -4092,7 +4092,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5855,11 +7432,15 @@ IsCharAlphaNumericW( +@@ -5858,11 +7435,15 @@ IsCharAlphaNumericW( #define IsCharAlphaNumeric IsCharAlphaNumericA #endif // !UNICODE @@ -4108,7 +4108,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5871,11 +7452,14 @@ IsCharUpperW( +@@ -5874,11 +7455,14 @@ IsCharUpperW( #define IsCharUpper IsCharUpperA #endif // !UNICODE @@ -4123,7 +4123,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5895,42 +7479,51 @@ IsCharLowerW( +@@ -5898,42 +7482,51 @@ IsCharLowerW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4175,7 +4175,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Check_return_ BOOL -@@ -5938,6 +7531,8 @@ WINAPI +@@ -5941,6 +7534,8 @@ WINAPI GetKeyboardState( _Out_writes_(256) PBYTE lpKeyState); @@ -4184,7 +4184,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5951,6 +7546,8 @@ SetKeyboardState( +@@ -5954,6 +7549,8 @@ SetKeyboardState( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -4193,7 +4193,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5958,6 +7555,8 @@ GetKeyNameTextA( +@@ -5961,6 +7558,8 @@ GetKeyNameTextA( _In_ LONG lParam, _Out_writes_(cchSize) LPSTR lpString, _In_ int cchSize); @@ -4202,7 +4202,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5978,12 +7577,15 @@ GetKeyNameTextW( +@@ -5981,12 +7580,15 @@ GetKeyNameTextW( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4218,7 +4218,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5995,6 +7597,7 @@ ToAscii( +@@ -5998,6 +7600,7 @@ ToAscii( _In_ UINT uFlags); #if(WINVER >= 0x0400) @@ -4226,7 +4226,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -6007,6 +7610,7 @@ ToAsciiEx( +@@ -6010,6 +7613,7 @@ ToAsciiEx( _In_opt_ HKL dwhkl); #endif /* WINVER >= 0x0400 */ @@ -4234,7 +4234,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -6018,17 +7622,20 @@ ToUnicode( +@@ -6021,17 +7625,20 @@ ToUnicode( _In_ int cchBuff, _In_ UINT wFlags); @@ -4255,7 +4255,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI SHORT WINAPI -@@ -6041,12 +7648,14 @@ VkKeyScanW( +@@ -6044,12 +7651,14 @@ VkKeyScanW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4270,7 +4270,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI SHORT WINAPI -@@ -6061,18 +7670,31 @@ VkKeyScanExW( +@@ -6064,18 +7673,31 @@ VkKeyScanExW( #endif /* WINVER >= 0x0400 */ #define KEYEVENTF_EXTENDEDKEY 0x0001 #define KEYEVENTF_KEYUP 0x0002 @@ -4303,7 +4303,7 @@ index f99e9294..53ba8a91 100644 _In_ ULONG_PTR dwExtraInfo); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -6090,21 +7712,48 @@ keybd_event( +@@ -6093,21 +7715,48 @@ keybd_event( #define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */ #if (_WIN32_WINNT >= 0x0600) #define MOUSEEVENTF_HWHEEL 0x01000 /* hwheel button rolled */ @@ -4353,7 +4353,7 @@ index f99e9294..53ba8a91 100644 _In_ DWORD dx, _In_ DWORD dy, _In_ DWORD dwData, -@@ -6119,15 +7768,15 @@ typedef struct tagMOUSEINPUT { +@@ -6122,15 +7771,15 @@ typedef struct tagMOUSEINPUT { LONG dx; LONG dy; DWORD mouseData; @@ -4372,7 +4372,7 @@ index f99e9294..53ba8a91 100644 DWORD time; /* -@@ -6155,8 +7804,15 @@ typedef struct tagHARDWAREINPUT { +@@ -6158,8 +7807,15 @@ typedef struct tagHARDWAREINPUT { #define INPUT_KEYBOARD 1 #define INPUT_HARDWARE 2 @@ -4389,7 +4389,7 @@ index f99e9294..53ba8a91 100644 union { -@@ -6166,6 +7822,8 @@ typedef struct tagINPUT { +@@ -6169,6 +7825,8 @@ typedef struct tagINPUT { } DUMMYUNIONNAME; } INPUT, *PINPUT, FAR* LPINPUT; @@ -4398,7 +4398,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -6192,5 +7850,8 @@ +@@ -6195,5 +7853,8 @@ * Touch input handle */ DECLARE_HANDLE(HTOUCHINPUT); @@ -4407,7 +4407,7 @@ index f99e9294..53ba8a91 100644 +#endif typedef struct tagTOUCHINPUT { -@@ -6198,8 +7859,8 @@ typedef struct tagTOUCHINPUT { +@@ -6201,8 +7862,8 @@ typedef struct tagTOUCHINPUT { LONG y; HANDLE hSource; DWORD dwID; @@ -4418,7 +4418,7 @@ index f99e9294..53ba8a91 100644 DWORD dwTime; ULONG_PTR dwExtraInfo; DWORD cxContact; -@@ -6228,6 +7889,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; +@@ -6231,6 +7892,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; #define TOUCHEVENTF_PEN 0x0040 #define TOUCHEVENTF_PALM 0x0080 @@ -4437,7 +4437,7 @@ index f99e9294..53ba8a91 100644 /* * Touch input mask values (TOUCHINPUT.dwMask) */ -@@ -6235,9 +7908,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; +@@ -6238,9 +7911,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; #define TOUCHINPUTMASKF_EXTRAINFO 0x0002 // the dwExtraInfo field is valid #define TOUCHINPUTMASKF_CONTACTAREA 0x0004 // the cxContact and cyContact fields are valid @@ -4456,7 +4456,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6247,6 +7929,8 @@ GetTouchInputInfo( +@@ -6250,6 +7932,8 @@ GetTouchInputInfo( _Out_writes_(cInputs) PTOUCHINPUT pInputs, // array of touch inputs _In_ int cbSize); // sizeof(TOUCHINPUT) @@ -4465,7 +4465,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6264,22 +7948,33 @@ CloseTouchInputHandle( +@@ -6267,22 +7951,33 @@ CloseTouchInputHandle( #define TWF_FINETOUCH (0x00000001) #define TWF_WANTPALM (0x00000002) @@ -4500,7 +4500,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6337,6 +8032,29 @@ typedef UINT32 POINTER_FLAGS; +@@ -6340,6 +8035,29 @@ typedef UINT32 POINTER_FLAGS; #define POINTER_FLAG_CAPTURECHANGED 0x00200000 // Lost capture #define POINTER_FLAG_HASTRANSFORM 0x00400000 // Input has a transform associated with it @@ -4530,7 +4530,7 @@ index f99e9294..53ba8a91 100644 /* * Pointer info key states defintions. -@@ -6365,7 +8083,7 @@ typedef struct tagPOINTER_INFO { +@@ -6368,7 +8086,7 @@ typedef struct tagPOINTER_INFO { POINTER_INPUT_TYPE pointerType; UINT32 pointerId; UINT32 frameId; @@ -4539,7 +4539,7 @@ index f99e9294..53ba8a91 100644 HANDLE sourceDevice; HWND hwndTarget; POINT ptPixelLocation; -@@ -6471,6 +8189,13 @@ typedef struct tagPOINTER_PEN_INFO { +@@ -6474,6 +8192,13 @@ typedef struct tagPOINTER_PEN_INFO { #define TOUCH_FEEDBACK_INDIRECT 0x2 #define TOUCH_FEEDBACK_NONE 0x3 @@ -4553,7 +4553,7 @@ index f99e9294..53ba8a91 100644 typedef enum { POINTER_FEEDBACK_DEFAULT = 1, // The injected pointer input feedback may get suppressed by the end-user settings in the Pen and Touch control panel. POINTER_FEEDBACK_INDIRECT = 2, // The injected pointer input feedback overrides the end-user settings in the Pen and Touch control panel. -@@ -6480,13 +8205,17 @@ typedef enum { +@@ -6483,13 +8208,17 @@ typedef enum { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4572,7 +4572,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6523,6 +8252,8 @@ typedef struct tagINPUT_INJECTION_VALUE { +@@ -6526,6 +8255,8 @@ typedef struct tagINPUT_INJECTION_VALUE { USHORT index; }INPUT_INJECTION_VALUE, *PINPUT_INJECTION_VALUE; @@ -4581,7 +4581,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6530,6 +8261,8 @@ GetPointerType( +@@ -6533,6 +8264,8 @@ GetPointerType( _In_ UINT32 pointerId, _Out_ POINTER_INPUT_TYPE *pointerType); @@ -4590,7 +4590,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6537,6 +8270,8 @@ GetPointerCursorId( +@@ -6540,6 +8273,8 @@ GetPointerCursorId( _In_ UINT32 pointerId, _Out_ UINT32 *cursorId); @@ -4599,7 +4599,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6544,6 +8279,8 @@ GetPointerInfo( +@@ -6547,6 +8282,8 @@ GetPointerInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_INFO *pointerInfo); @@ -4608,7 +4608,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6552,6 +8289,8 @@ GetPointerInfoHistory( +@@ -6555,6 +8292,8 @@ GetPointerInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_INFO *pointerInfo); @@ -4617,7 +4617,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6560,6 +8299,8 @@ GetPointerFrameInfo( +@@ -6563,6 +8302,8 @@ GetPointerFrameInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_INFO *pointerInfo); @@ -4626,7 +4626,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6569,6 +8310,8 @@ GetPointerFrameInfoHistory( +@@ -6572,6 +8313,8 @@ GetPointerFrameInfoHistory( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_INFO *pointerInfo); @@ -4635,7 +4635,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6576,6 +8319,8 @@ GetPointerTouchInfo( +@@ -6579,6 +8322,8 @@ GetPointerTouchInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_TOUCH_INFO *touchInfo); @@ -4644,7 +4644,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6584,6 +8329,8 @@ GetPointerTouchInfoHistory( +@@ -6587,6 +8332,8 @@ GetPointerTouchInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchInfo); @@ -4653,7 +4653,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6592,6 +8339,8 @@ GetPointerFrameTouchInfo( +@@ -6595,6 +8342,8 @@ GetPointerFrameTouchInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchInfo); @@ -4662,7 +4662,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6601,6 +8350,8 @@ GetPointerFrameTouchInfoHistory( +@@ -6604,6 +8353,8 @@ GetPointerFrameTouchInfoHistory( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchInfo); @@ -4671,7 +4671,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6608,6 +8359,8 @@ GetPointerPenInfo( +@@ -6611,6 +8362,8 @@ GetPointerPenInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_PEN_INFO *penInfo); @@ -4680,7 +4680,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6616,6 +8369,8 @@ GetPointerPenInfoHistory( +@@ -6619,6 +8372,8 @@ GetPointerPenInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_PEN_INFO *penInfo); @@ -4689,7 +4689,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6624,6 +8379,8 @@ GetPointerFramePenInfo( +@@ -6627,6 +8382,8 @@ GetPointerFramePenInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_PEN_INFO *penInfo); @@ -4698,9 +4698,44 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6635,12 +8392,16 @@ GetPointerFramePenInfoHistory( +@@ -6638,47 +8395,51 @@ GetPointerFramePenInfoHistory( + + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + #if (NTDDI_VERSION >= NTDDI_WIN11_GE) + WINUSERAPI + BOOL + WINAPI + GetPointerTouchpadInfo( + _In_ UINT32 pointerId, + _Out_writes_(1) POINTER_TOUCH_INFO *touchpadInfo); + + WINUSERAPI + BOOL + WINAPI + GetPointerTouchpadInfoHistory( + _In_ UINT32 pointerId, + _Inout_ UINT32 *entriesCount, + _Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchpadInfo); + + WINUSERAPI + BOOL + WINAPI + GetPointerFrameTouchpadInfo( + _In_ UINT32 pointerId, + _Inout_ UINT32 *pointerCount, + _Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchpadInfo); + + WINUSERAPI + BOOL + WINAPI + GetPointerFrameTouchpadInfoHistory( + _In_ UINT32 pointerId, + _Inout_ UINT32 *entriesCount, + _Inout_ UINT32 *pointerCount, + _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchpadInfo); + #endif // NTDDI_VERSION >= NTDDI_WIN11_GE + #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - // TODO(47499024): Make public when Feature_TouchpadPublicApis3 is enabled +_Win32_SetLastError_ +_Win32_SupportedOS_Windows8_ @@ -4715,7 +4750,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6648,6 +8409,8 @@ RegisterPointerInputTarget( +@@ -6686,6 +8447,8 @@ RegisterPointerInputTarget( _In_ HWND hwnd, _In_ POINTER_INPUT_TYPE pointerType); @@ -4724,7 +4759,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6655,6 +8418,7 @@ UnregisterPointerInputTarget( +@@ -6693,6 +8456,7 @@ UnregisterPointerInputTarget( _In_ HWND hwnd, _In_ POINTER_INPUT_TYPE pointerType); @@ -4732,7 +4767,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6663,6 +8427,7 @@ RegisterPointerInputTargetEx( +@@ -6701,6 +8465,7 @@ RegisterPointerInputTargetEx( _In_ POINTER_INPUT_TYPE pointerType, _In_ BOOL fObserve); @@ -4740,7 +4775,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6672,6 +8437,14 @@ UnregisterPointerInputTargetEx( +@@ -6710,6 +8475,14 @@ UnregisterPointerInputTargetEx( #if (NTDDI_VERSION >= NTDDI_WIN10_RS5) DECLARE_HANDLE(HSYNTHETICPOINTERDEVICE); @@ -4755,7 +4790,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HSYNTHETICPOINTERDEVICE WINAPI -@@ -6680,6 +8453,8 @@ CreateSyntheticPointerDevice( +@@ -6718,6 +8491,8 @@ CreateSyntheticPointerDevice( _In_ ULONG maxCount, _In_ POINTER_FEEDBACK_MODE mode); @@ -4764,7 +4799,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6688,21 +8463,27 @@ InjectSyntheticPointerInput( +@@ -6726,77 +8501,83 @@ InjectSyntheticPointerInput( _In_reads_(count) CONST POINTER_TYPE_INFO* pointerInfo, _In_ UINT32 count); @@ -4778,7 +4813,63 @@ index f99e9294..53ba8a91 100644 +#endif #endif // NTDDI_VERSION >= NTDDI_WIN10_RS5 - // TODO(47499024): Make public when Feature_TouchpadPublicApis3 is enabled + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + #if (NTDDI_VERSION >= NTDDI_WIN11_GE) + typedef enum tagSYNTHETIC_DEVICE_CREATION_OPTIONS + { + SDCO_NONE = 0x0, + SDCO_PHYSICAL_SIZE = 0x1, + SDCO_TOUCHPAD_GESTURE_ONLY = 0x2, + } SYNTHETIC_DEVICE_CREATION_OPTIONS; + + #ifndef MIDL_PASS + // Don't define this for MIDL compiler passes over winuser.h. Some of them + // don't include winnt.h (where DEFINE_ENUM_FLAG_OPERATORS is defined) and + // get compile errors. + DEFINE_ENUM_FLAG_OPERATORS(SYNTHETIC_DEVICE_CREATION_OPTIONS) + #endif + + typedef struct tagSYNTHETIC_DEVICE_CREATION_PARAMS + { + POINTER_INPUT_TYPE pointerType; + ULONG maxCount; + POINTER_FEEDBACK_MODE feedbackMode; + HMONITOR hMonitor; + ULONG deviceWidth; + ULONG deviceHeight; + SYNTHETIC_DEVICE_CREATION_OPTIONS options; + } SYNTHETIC_DEVICE_CREATION_PARAMS; + + WINUSERAPI + HSYNTHETICPOINTERDEVICE + WINAPI + CreateSyntheticPointerDevice2( + _In_ SYNTHETIC_DEVICE_CREATION_PARAMS* pParams); + + typedef enum tagTOUCHPAD_ACTION + { + TA_3FINGER_TAP, + TA_3FINGER_PRESS, + TA_3FINGER_RELEASE, + TA_4FINGER_TAP, + TA_4FINGER_PRESS, + TA_4FINGER_RELEASE, + TA_5FINGER_TAP, + TA_5FINGER_PRESS, + TA_5FINGER_RELEASE, + TA_INERTIA_STOP, + TA_INERTIA_END, + } TOUCHPAD_ACTION; + + WINUSERAPI + BOOL + WINAPI + InjectTouchpadAction( + HSYNTHETICPOINTERDEVICE hDevice, + TOUCHPAD_ACTION action); + #endif // NTDDI_VERSION >= NTDDI_WIN11_GE + #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows8_ @@ -4792,7 +4883,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6721,6 +8502,8 @@ EnableMouseInPointerForThread(VOID); +@@ -6815,6 +8596,8 @@ EnableMouseInPointerForThread(VOID); #define TOUCH_HIT_TESTING_CLIENT 0x1 #define TOUCH_HIT_TESTING_NONE 0x2 @@ -4801,7 +4892,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6751,6 +8534,8 @@ typedef struct tagTOUCH_HIT_TESTING_INPUT +@@ -6845,6 +8628,8 @@ typedef struct tagTOUCH_HIT_TESTING_INPUT #define TOUCH_HIT_TESTING_PROXIMITY_CLOSEST 0x0 #define TOUCH_HIT_TESTING_PROXIMITY_FARTHEST 0xFFF @@ -4810,7 +4901,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6759,6 +8544,8 @@ EvaluateProximityToRect( +@@ -6853,6 +8638,8 @@ EvaluateProximityToRect( _In_ const TOUCH_HIT_TESTING_INPUT *pHitTestingInput, _Out_ TOUCH_HIT_TESTING_PROXIMITY_EVALUATION *pProximityEval); @@ -4819,7 +4910,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6768,6 +8555,8 @@ EvaluateProximityToPolygon( +@@ -6862,6 +8649,8 @@ EvaluateProximityToPolygon( _In_ const TOUCH_HIT_TESTING_INPUT *pHitTestingInput, _Out_ TOUCH_HIT_TESTING_PROXIMITY_EVALUATION *pProximityEval); @@ -4828,7 +4919,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -6795,6 +8584,7 @@ typedef enum tagFEEDBACK_TYPE { +@@ -6889,6 +8678,7 @@ typedef enum tagFEEDBACK_TYPE { #define GWFS_INCLUDE_ANCESTORS 0x00000001 @@ -4836,7 +4927,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6805,6 +8595,7 @@ GetWindowFeedbackSetting( +@@ -6899,6 +8689,7 @@ GetWindowFeedbackSetting( _Inout_ UINT32* pSize, _Out_writes_bytes_opt_(*pSize) VOID* config); @@ -4844,7 +4935,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6849,6 +8640,8 @@ typedef struct tagINPUT_TRANSFORM { +@@ -6943,6 +8734,8 @@ typedef struct tagINPUT_TRANSFORM { #endif @@ -4853,7 +4944,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6879,6 +8672,7 @@ typedef struct tagLASTINPUTINFO { +@@ -6983,6 +8776,7 @@ typedef struct tagLASTINPUTINFO { DWORD dwTime; } LASTINPUTINFO, * PLASTINPUTINFO; @@ -4861,7 +4952,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6892,18 +8686,20 @@ GetLastInputInfo( +@@ -6996,18 +8790,20 @@ GetLastInputInfo( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -4884,7 +4975,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define MapVirtualKey MapVirtualKeyW #else -@@ -6911,19 +8707,21 @@ MapVirtualKeyW( +@@ -7015,19 +8811,21 @@ MapVirtualKeyW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4908,7 +4999,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ HKL dwhkl); #ifdef UNICODE #define MapVirtualKeyEx MapVirtualKeyExW -@@ -6941,43 +8739,64 @@ MapVirtualKeyExW( +@@ -7045,43 +8843,64 @@ MapVirtualKeyExW( #define MAPVK_VSC_TO_VK (1) #define MAPVK_VK_TO_CHAR (2) #define MAPVK_VSC_TO_VK_EX (3) @@ -4975,7 +5066,7 @@ index f99e9294..53ba8a91 100644 DWORD WINAPI MsgWaitForMultipleObjects( -@@ -6985,17 +8804,19 @@ MsgWaitForMultipleObjects( +@@ -7089,17 +8908,19 @@ MsgWaitForMultipleObjects( _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, @@ -4999,7 +5090,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -7005,6 +8826,15 @@ MsgWaitForMultipleObjectsEx( +@@ -7109,6 +8930,15 @@ MsgWaitForMultipleObjectsEx( #define MWMO_ALERTABLE 0x0002 #define MWMO_INPUTAVAILABLE 0x0004 @@ -5015,7 +5106,7 @@ index f99e9294..53ba8a91 100644 /* * Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects() */ -@@ -7020,6 +8850,12 @@ MsgWaitForMultipleObjectsEx( +@@ -7124,6 +8954,12 @@ MsgWaitForMultipleObjectsEx( #if(_WIN32_WINNT >= 0x0501) #define QS_RAWINPUT 0x0400 @@ -5028,7 +5119,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0602) -@@ -7039,14 +8875,32 @@ MsgWaitForMultipleObjectsEx( +@@ -7143,14 +8979,32 @@ MsgWaitForMultipleObjectsEx( QS_TOUCH | \ QS_POINTER) @@ -5061,7 +5152,7 @@ index f99e9294..53ba8a91 100644 #endif // (_WIN32_WINNT >= 0x0501) #endif -@@ -7063,6 +8917,32 @@ MsgWaitForMultipleObjectsEx( +@@ -7167,6 +9021,32 @@ MsgWaitForMultipleObjectsEx( QS_HOTKEY | \ QS_SENDMESSAGE) @@ -5094,7 +5185,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) -@@ -7074,6 +8954,8 @@ MsgWaitForMultipleObjectsEx( +@@ -7178,6 +9058,8 @@ MsgWaitForMultipleObjectsEx( * Windows Functions */ @@ -5103,7 +5194,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT_PTR WINAPI -@@ -7101,6 +8983,8 @@ SetTimer( +@@ -7205,6 +9087,8 @@ SetTimer( #if(WINVER >= 0x0601) @@ -5112,7 +5203,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT_PTR WINAPI -@@ -7119,6 +9003,8 @@ SetCoalescableTimer( +@@ -7223,6 +9107,8 @@ SetCoalescableTimer( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -5121,7 +5212,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7132,12 +9018,14 @@ KillTimer( +@@ -7236,12 +9122,14 @@ KillTimer( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -5136,7 +5227,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7145,18 +9033,23 @@ EnableWindow( +@@ -7249,18 +9137,23 @@ EnableWindow( _In_ HWND hWnd, _In_ BOOL bEnable); @@ -5160,7 +5251,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HACCEL WINAPI -@@ -7169,12 +9062,22 @@ LoadAcceleratorsW( +@@ -7273,12 +9166,22 @@ LoadAcceleratorsW( #define LoadAccelerators LoadAcceleratorsA #endif // !UNICODE @@ -5183,7 +5274,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HACCEL WINAPI -@@ -7187,12 +9090,17 @@ CreateAcceleratorTableW( +@@ -7291,12 +9194,17 @@ CreateAcceleratorTableW( #define CreateAcceleratorTable CreateAcceleratorTableA #endif // !UNICODE @@ -5201,7 +5292,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7200,6 +9108,7 @@ CopyAcceleratorTableA( +@@ -7304,6 +9212,7 @@ CopyAcceleratorTableA( _In_ HACCEL hAccelSrc, _Out_writes_to_opt_(cAccelEntries, return) LPACCEL lpAccelDst, _In_ int cAccelEntries); @@ -5209,7 +5300,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7215,6 +9124,8 @@ CopyAcceleratorTableW( +@@ -7319,6 +9228,8 @@ CopyAcceleratorTableW( #ifndef NOMSG @@ -5218,7 +5309,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7222,6 +9133,8 @@ TranslateAcceleratorA( +@@ -7326,6 +9237,8 @@ TranslateAcceleratorA( _In_ HWND hWnd, _In_ HACCEL hAccTable, _In_ LPMSG lpMsg); @@ -5227,7 +5318,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7320,17 +9233,106 @@ TranslateAcceleratorW( +@@ -7424,17 +9337,106 @@ TranslateAcceleratorW( #define SM_CLEANBOOT 67 #define SM_CXDRAG 68 #define SM_CYDRAG 69 @@ -5334,7 +5425,7 @@ index f99e9294..53ba8a91 100644 #endif #if(WINVER >= 0x0500) #define SM_XVIRTUALSCREEN 76 -@@ -7339,13 +9341,34 @@ TranslateAcceleratorW( +@@ -7443,13 +9445,34 @@ TranslateAcceleratorW( #define SM_CYVIRTUALSCREEN 79 #define SM_CMONITORS 80 #define SM_SAMEDISPLAYFORMAT 81 @@ -5369,7 +5460,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0501) -@@ -7353,17 +9376,37 @@ TranslateAcceleratorW( +@@ -7457,17 +9480,37 @@ TranslateAcceleratorW( #define SM_MEDIACENTER 87 #define SM_STARTER 88 #define SM_SERVERR2 89 @@ -5407,7 +5498,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400)) -@@ -7381,13 +9424,28 @@ TranslateAcceleratorW( +@@ -7485,13 +9528,28 @@ TranslateAcceleratorW( #if(WINVER >= 0x0500) #define SM_REMOTESESSION 0x1000 @@ -5436,7 +5527,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ #if(WINVER >= 0x0501) -@@ -7397,6 +9455,12 @@ TranslateAcceleratorW( +@@ -7501,6 +9559,12 @@ TranslateAcceleratorW( #if(WINVER >= 0x0602) #define SM_CONVERTIBLESLATEMODE 0x2003 #define SM_SYSTEMDOCKED 0x2004 @@ -5449,7 +5540,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0602 */ #endif /* WINVER >= 0x0500 */ -@@ -7405,19 +9469,22 @@ TranslateAcceleratorW( +@@ -7509,19 +9573,22 @@ TranslateAcceleratorW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -5474,7 +5565,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT dpi); #endif /* WINVER >= 0x0605 */ -@@ -7467,12 +9534,22 @@ GetSystemMetricsForDpi( +@@ -7571,12 +9638,22 @@ GetSystemMetricsForDpi( #define MENU_ALL_ACCESS (STANDARD_RIGHTS_ALL | MENU_READ_ACCESS | MENU_WRITE_ACCESS | MENU_EXECUTE_ACCESS) @@ -5497,7 +5588,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7485,11 +9562,21 @@ LoadMenuW( +@@ -7589,11 +9666,21 @@ LoadMenuW( #define LoadMenu LoadMenuA #endif // !UNICODE @@ -5519,7 +5610,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7501,12 +9588,15 @@ LoadMenuIndirectW( +@@ -7605,12 +9692,15 @@ LoadMenuIndirectW( #define LoadMenuIndirect LoadMenuIndirectA #endif // !UNICODE @@ -5535,7 +5626,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7538,6 +9628,7 @@ ChangeMenuW( +@@ -7642,6 +9732,7 @@ ChangeMenuW( #define ChangeMenu ChangeMenuA #endif // !UNICODE @@ -5543,7 +5634,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7547,6 +9638,7 @@ HiliteMenuItem( +@@ -7651,6 +9742,7 @@ HiliteMenuItem( _In_ UINT uIDHiliteItem, _In_ UINT uHilite); @@ -5551,7 +5642,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7555,7 +9647,8 @@ GetMenuStringA( +@@ -7659,7 +9751,8 @@ GetMenuStringA( _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPSTR lpString, _In_ int cchMax, @@ -5561,7 +5652,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7564,21 +9657,24 @@ GetMenuStringW( +@@ -7668,21 +9761,24 @@ GetMenuStringW( _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPWSTR lpString, _In_ int cchMax, @@ -5588,7 +5679,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7591,6 +9687,7 @@ DrawMenuBar( +@@ -7695,6 +9791,7 @@ DrawMenuBar( #endif /* _WIN32_WINNT >= 0x0501 */ @@ -5596,7 +5687,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7599,24 +9696,40 @@ GetSystemMenu( +@@ -7703,24 +9800,40 @@ GetSystemMenu( _In_ BOOL bRevert); @@ -5637,7 +5728,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -7625,14 +9738,16 @@ CheckMenuItem( +@@ -7729,14 +9842,16 @@ CheckMenuItem( _In_ UINT uIDCheckItem, _In_ UINT uCheck); @@ -5655,7 +5746,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7640,6 +9755,7 @@ GetSubMenu( +@@ -7744,6 +9859,7 @@ GetSubMenu( _In_ HMENU hMenu, _In_ int nPos); @@ -5663,7 +5754,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -7647,28 +9763,34 @@ GetMenuItemID( +@@ -7751,28 +9867,34 @@ GetMenuItemID( _In_ HMENU hMenu, _In_ int nPos); @@ -5700,7 +5791,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7677,20 +9799,24 @@ InsertMenuW( +@@ -7781,20 +9903,24 @@ InsertMenuW( #define InsertMenu InsertMenuA #endif // !UNICODE @@ -5727,7 +5818,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7699,22 +9825,26 @@ AppendMenuW( +@@ -7803,22 +9929,26 @@ AppendMenuW( #define AppendMenu AppendMenuA #endif // !UNICODE @@ -5756,7 +5847,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7723,43 +9853,52 @@ ModifyMenuW( +@@ -7827,43 +9957,52 @@ ModifyMenuW( #define ModifyMenu ModifyMenuA #endif // !UNICODE @@ -5814,7 +5905,7 @@ index f99e9294..53ba8a91 100644 _In_ int x, _In_ int y, _Reserved_ int nReserved, -@@ -7780,7 +9919,9 @@ typedef struct tagTPMPARAMS +@@ -7884,7 +10023,9 @@ typedef struct tagTPMPARAMS } TPMPARAMS; typedef TPMPARAMS FAR *LPTPMPARAMS; @@ -5825,7 +5916,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI TrackPopupMenuEx( -@@ -7793,6 +9934,8 @@ TrackPopupMenuEx( +@@ -7897,6 +10038,8 @@ TrackPopupMenuEx( #endif /* WINVER >= 0x0400 */ #if(_WIN32_WINNT >= 0x0601) @@ -5834,7 +5925,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7814,6 +9957,16 @@ CalculatePopupWindowPosition( +@@ -7918,6 +10061,16 @@ CalculatePopupWindowPosition( #define MNS_NOTIFYBYPOS 0x08000000 #define MNS_CHECKORBMP 0x04000000 @@ -5851,7 +5942,7 @@ index f99e9294..53ba8a91 100644 #define MIM_MAXHEIGHT 0x00000001 #define MIM_BACKGROUND 0x00000002 #define MIM_HELPID 0x00000004 -@@ -7821,11 +9974,21 @@ CalculatePopupWindowPosition( +@@ -7925,11 +10078,21 @@ CalculatePopupWindowPosition( #define MIM_STYLE 0x00000010 #define MIM_APPLYTOSUBMENUS 0x80000000 @@ -5875,7 +5966,7 @@ index f99e9294..53ba8a91 100644 UINT cyMax; HBRUSH hbrBack; DWORD dwContextHelpID; -@@ -7833,6 +9996,8 @@ typedef struct tagMENUINFO +@@ -7937,6 +10100,8 @@ typedef struct tagMENUINFO } MENUINFO, FAR *LPMENUINFO; typedef MENUINFO CONST FAR *LPCMENUINFO; @@ -5884,7 +5975,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7840,6 +10005,8 @@ GetMenuInfo( +@@ -7944,6 +10109,8 @@ GetMenuInfo( _In_ HMENU, _Inout_ LPMENUINFO); @@ -5893,7 +5984,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7847,6 +10014,8 @@ SetMenuInfo( +@@ -7951,6 +10118,8 @@ SetMenuInfo( _In_ HMENU, _In_ LPCMENUINFO); @@ -5902,7 +5993,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7861,7 +10030,7 @@ EndMenu( +@@ -7965,7 +10134,7 @@ EndMenu( typedef struct tagMENUGETOBJECTINFO { @@ -5911,7 +6002,7 @@ index f99e9294..53ba8a91 100644 UINT uPos; HMENU hmenu; PVOID riid; -@@ -7874,6 +10043,12 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7978,6 +10147,12 @@ typedef struct tagMENUGETOBJECTINFO #define MNGOF_TOPGAP 0x00000001 #define MNGOF_BOTTOMGAP 0x00000002 @@ -5924,7 +6015,7 @@ index f99e9294..53ba8a91 100644 /* * WM_MENUGETOBJECT return values */ -@@ -7888,6 +10063,16 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7992,6 +10167,16 @@ typedef struct tagMENUGETOBJECTINFO #define MIIM_CHECKMARKS 0x00000008 #define MIIM_TYPE 0x00000010 #define MIIM_DATA 0x00000020 @@ -5941,7 +6032,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) -@@ -7895,6 +10080,13 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7999,6 +10184,13 @@ typedef struct tagMENUGETOBJECTINFO #define MIIM_BITMAP 0x00000080 #define MIIM_FTYPE 0x00000100 @@ -5955,7 +6046,7 @@ index f99e9294..53ba8a91 100644 #define HBMMENU_CALLBACK ((HBITMAP) -1) #define HBMMENU_SYSTEM ((HBITMAP) 1) #define HBMMENU_MBAR_RESTORE ((HBITMAP) 2) -@@ -7912,9 +10104,9 @@ typedef struct tagMENUGETOBJECTINFO +@@ -8016,9 +10208,9 @@ typedef struct tagMENUGETOBJECTINFO typedef struct tagMENUITEMINFOA { UINT cbSize; @@ -5968,7 +6059,7 @@ index f99e9294..53ba8a91 100644 UINT wID; // used if MIIM_ID HMENU hSubMenu; // used if MIIM_SUBMENU HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS -@@ -7929,9 +10121,9 @@ typedef struct tagMENUITEMINFOA +@@ -8033,9 +10225,9 @@ typedef struct tagMENUITEMINFOA typedef struct tagMENUITEMINFOW { UINT cbSize; @@ -5981,7 +6072,7 @@ index f99e9294..53ba8a91 100644 UINT wID; // used if MIIM_ID HMENU hSubMenu; // used if MIIM_SUBMENU HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS -@@ -7959,6 +10151,8 @@ typedef LPCMENUITEMINFOA LPCMENUITEMINFO; +@@ -8063,6 +10255,8 @@ typedef LPCMENUITEMINFOA LPCMENUITEMINFO; #endif // UNICODE @@ -5990,7 +6081,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7967,6 +10161,8 @@ InsertMenuItemA( +@@ -8071,6 +10265,8 @@ InsertMenuItemA( _In_ UINT item, _In_ BOOL fByPosition, _In_ LPCMENUITEMINFOA lpmi); @@ -5999,7 +6090,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7981,6 +10177,8 @@ InsertMenuItemW( +@@ -8085,6 +10281,8 @@ InsertMenuItemW( #define InsertMenuItem InsertMenuItemA #endif // !UNICODE @@ -6008,7 +6099,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7989,6 +10187,8 @@ GetMenuItemInfoA( +@@ -8093,6 +10291,8 @@ GetMenuItemInfoA( _In_ UINT item, _In_ BOOL fByPosition, _Inout_ LPMENUITEMINFOA lpmii); @@ -6017,7 +6108,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8003,6 +10203,8 @@ GetMenuItemInfoW( +@@ -8107,6 +10307,8 @@ GetMenuItemInfoW( #define GetMenuItemInfo GetMenuItemInfoA #endif // !UNICODE @@ -6026,7 +6117,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8011,6 +10213,8 @@ SetMenuItemInfoA( +@@ -8115,6 +10317,8 @@ SetMenuItemInfoA( _In_ UINT item, _In_ BOOL fByPositon, _In_ LPCMENUITEMINFOA lpmii); @@ -6035,7 +6126,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8029,14 +10233,24 @@ SetMenuItemInfoW( +@@ -8133,14 +10337,24 @@ SetMenuItemInfoW( #define GMDI_USEDISABLED 0x0001L #define GMDI_GOINTOPOPUPS 0x0002L @@ -6061,7 +6152,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8045,6 +10259,8 @@ SetMenuDefaultItem( +@@ -8149,6 +10363,8 @@ SetMenuDefaultItem( _In_ UINT uItem, _In_ UINT fByPos); @@ -6070,7 +6161,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8054,6 +10270,7 @@ GetMenuItemRect( +@@ -8158,6 +10374,7 @@ GetMenuItemRect( _In_ UINT uItem, _Out_ LPRECT lprcItem); @@ -6078,7 +6169,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8071,6 +10288,15 @@ MenuItemFromPoint( +@@ -8175,6 +10392,15 @@ MenuItemFromPoint( #define TPM_LEFTALIGN 0x0000L #define TPM_CENTERALIGN 0x0004L #define TPM_RIGHTALIGN 0x0008L @@ -6094,7 +6185,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define TPM_TOPALIGN 0x0000L #define TPM_VCENTERALIGN 0x0010L -@@ -8080,6 +10306,17 @@ MenuItemFromPoint( +@@ -8184,6 +10410,17 @@ MenuItemFromPoint( #define TPM_VERTICAL 0x0040L /* Vert alignment matters more */ #define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */ #define TPM_RETURNCMD 0x0100L @@ -6112,7 +6203,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) #define TPM_RECURSE 0x0001L -@@ -8087,15 +10324,39 @@ MenuItemFromPoint( +@@ -8191,15 +10428,39 @@ MenuItemFromPoint( #define TPM_HORNEGANIMATION 0x0800L #define TPM_VERPOSANIMATION 0x1000L #define TPM_VERNEGANIMATION 0x2000L @@ -6152,7 +6243,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ -@@ -8150,6 +10411,7 @@ DragObject( +@@ -8254,6 +10515,7 @@ DragObject( _In_ ULONG_PTR data, _In_opt_ HCURSOR hcur); @@ -6160,7 +6251,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8165,6 +10427,8 @@ DragDetect( +@@ -8269,6 +10531,8 @@ DragDetect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6169,7 +6260,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8198,6 +10462,26 @@ DrawIcon( +@@ -8302,6 +10566,26 @@ DrawIcon( #define DT_NOPREFIX 0x00000800 #define DT_INTERNAL 0x00001000 @@ -6196,7 +6287,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define DT_EDITCONTROL 0x00002000 #define DT_PATH_ELLIPSIS 0x00004000 -@@ -8205,11 +10489,35 @@ DrawIcon( +@@ -8309,11 +10593,35 @@ DrawIcon( #define DT_MODIFYSTRING 0x00010000 #define DT_RTLREADING 0x00020000 #define DT_WORD_ELLIPSIS 0x00040000 @@ -6232,7 +6323,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINVER >= 0x0500 */ -@@ -8242,6 +10550,7 @@ typedef struct tagDRAWTEXTPARAMS +@@ -8346,6 +10654,7 @@ typedef struct tagDRAWTEXTPARAMS _When_(((size) == -1) || (_String_length_(_Curr_) < (size)), _Pre_z_ _Pre_valid_ _Out_writes_z_(_String_length_(_Curr_) + (grows))) \ _When_(((size) != -1) && (_String_length_(_Curr_) >= (size)), _Pre_count_(size) _Pre_valid_ _Out_writes_z_((size) + (grows))) @@ -6240,7 +6331,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8253,7 +10562,8 @@ DrawTextA( +@@ -8357,7 +10666,8 @@ DrawTextA( LPCSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6250,7 +6341,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8265,7 +10575,7 @@ DrawTextW( +@@ -8369,7 +10679,7 @@ DrawTextW( LPCWSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6259,7 +6350,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DrawText DrawTextW #else -@@ -8300,6 +10610,7 @@ DrawText( +@@ -8404,6 +10714,7 @@ DrawText( #if(WINVER >= 0x0400) @@ -6267,7 +6358,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8312,8 +10623,9 @@ DrawTextExA( +@@ -8416,8 +10727,9 @@ DrawTextExA( LPSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6278,7 +6369,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8326,7 +10638,7 @@ DrawTextExW( +@@ -8430,7 +10742,7 @@ DrawTextExW( LPWSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6287,7 +6378,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ LPDRAWTEXTPARAMS lpdtp); #ifdef UNICODE #define DrawTextEx DrawTextExW -@@ -8343,6 +10655,7 @@ DrawTextExW( +@@ -8447,6 +10759,7 @@ DrawTextExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6295,7 +6386,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8356,6 +10669,7 @@ GrayStringA( +@@ -8460,6 +10773,7 @@ GrayStringA( _In_ int Y, _In_ int nWidth, _In_ int nHeight); @@ -6303,7 +6394,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8395,12 +10709,33 @@ GrayStringW( +@@ -8499,12 +10813,33 @@ GrayStringW( #if(_WIN32_WINNT >= 0x0500) #define DSS_HIDEPREFIX 0x0200 #define DSS_PREFIXONLY 0x0400 @@ -6337,7 +6428,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8414,7 +10749,8 @@ DrawStateA( +@@ -8518,7 +10853,8 @@ DrawStateA( _In_ int y, _In_ int cx, _In_ int cy, @@ -6347,7 +6438,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8428,7 +10764,7 @@ DrawStateW( +@@ -8532,7 +10868,7 @@ DrawStateW( _In_ int y, _In_ int cx, _In_ int cy, @@ -6356,7 +6447,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DrawState DrawStateW #else -@@ -8443,6 +10779,7 @@ DrawStateW( +@@ -8547,6 +10883,7 @@ DrawStateW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6364,7 +6455,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -8455,6 +10792,7 @@ TabbedTextOutA( +@@ -8559,6 +10896,7 @@ TabbedTextOutA( _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions, _In_ int nTabOrigin); @@ -6372,7 +6463,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -8473,6 +10811,7 @@ TabbedTextOutW( +@@ -8577,6 +10915,7 @@ TabbedTextOutW( #define TabbedTextOut TabbedTextOutA #endif // !UNICODE @@ -6380,7 +6471,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -8482,6 +10821,7 @@ GetTabbedTextExtentA( +@@ -8586,6 +10925,7 @@ GetTabbedTextExtentA( _In_ int chCount, _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions); @@ -6388,7 +6479,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -8497,19 +10837,23 @@ GetTabbedTextExtentW( +@@ -8601,19 +10941,23 @@ GetTabbedTextExtentW( #define GetTabbedTextExtent GetTabbedTextExtentA #endif // !UNICODE @@ -6413,7 +6504,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -8517,12 +10861,14 @@ GetForegroundWindow( +@@ -8621,12 +10965,14 @@ GetForegroundWindow( VOID); #if(WINVER >= 0x0400) @@ -6428,7 +6519,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -8532,6 +10878,7 @@ SwitchToThisWindow( +@@ -8636,6 +10982,7 @@ SwitchToThisWindow( #endif /* WINVER >= 0x0400 */ @@ -6436,7 +6527,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8539,6 +10886,8 @@ SetForegroundWindow( +@@ -8643,6 +10990,8 @@ SetForegroundWindow( _In_ HWND hWnd); #if(_WIN32_WINNT >= 0x0500) @@ -6445,7 +6536,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8547,36 +10896,47 @@ AllowSetForegroundWindow( +@@ -8651,36 +11000,47 @@ AllowSetForegroundWindow( #define ASFW_ANY ((DWORD)-1) @@ -6495,7 +6586,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8598,15 +10958,32 @@ GetDCEx( +@@ -8702,15 +11062,32 @@ GetDCEx( #define DCX_VALIDATE 0x00200000L @@ -6528,7 +6619,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8614,6 +10991,7 @@ ReleaseDC( +@@ -8718,6 +11095,7 @@ ReleaseDC( _In_opt_ HWND hWnd, _In_ HDC hDC); @@ -6536,7 +6627,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDC WINAPI -@@ -8621,6 +10999,7 @@ BeginPaint( +@@ -8725,6 +11103,7 @@ BeginPaint( _In_ HWND hWnd, _Out_ LPPAINTSTRUCT lpPaint); @@ -6544,7 +6635,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8628,6 +11007,7 @@ EndPaint( +@@ -8732,6 +11111,7 @@ EndPaint( _In_ HWND hWnd, _In_ CONST PAINTSTRUCT *lpPaint); @@ -6552,7 +6643,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8636,7 +11016,8 @@ GetUpdateRect( +@@ -8740,7 +11120,8 @@ GetUpdateRect( _Out_opt_ LPRECT lpRect, _In_ BOOL bErase); @@ -6562,7 +6653,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetUpdateRgn( -@@ -8644,6 +11025,7 @@ GetUpdateRgn( +@@ -8748,6 +11129,7 @@ GetUpdateRgn( _In_ HRGN hRgn, _In_ BOOL bErase); @@ -6570,7 +6661,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8659,7 +11041,8 @@ SetWindowRgn( +@@ -8763,7 +11145,8 @@ SetWindowRgn( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6580,7 +6671,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetWindowRgn( -@@ -8668,7 +11051,8 @@ GetWindowRgn( +@@ -8772,7 +11155,8 @@ GetWindowRgn( #if(_WIN32_WINNT >= 0x0501) @@ -6590,7 +6681,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetWindowRgnBox( -@@ -8677,6 +11061,7 @@ GetWindowRgnBox( +@@ -8781,6 +11165,7 @@ GetWindowRgnBox( #endif /* _WIN32_WINNT >= 0x0501 */ @@ -6598,7 +6689,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8684,6 +11069,7 @@ ExcludeUpdateRgn( +@@ -8788,6 +11173,7 @@ ExcludeUpdateRgn( _In_ HDC hDC, _In_ HWND hWnd); @@ -6606,7 +6697,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8692,6 +11078,7 @@ InvalidateRect( +@@ -8796,6 +11182,7 @@ InvalidateRect( _In_opt_ CONST RECT *lpRect, _In_ BOOL bErase); @@ -6614,7 +6705,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8699,6 +11086,7 @@ ValidateRect( +@@ -8803,6 +11190,7 @@ ValidateRect( _In_opt_ HWND hWnd, _In_opt_ CONST RECT *lpRect); @@ -6622,7 +6713,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8707,6 +11095,7 @@ InvalidateRgn( +@@ -8811,6 +11199,7 @@ InvalidateRgn( _In_opt_ HRGN hRgn, _In_ BOOL bErase); @@ -6630,7 +6721,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8715,6 +11104,7 @@ ValidateRgn( +@@ -8819,6 +11208,7 @@ ValidateRgn( _In_opt_ HRGN hRgn); @@ -6638,7 +6729,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8722,7 +11112,7 @@ RedrawWindow( +@@ -8826,7 +11216,7 @@ RedrawWindow( _In_opt_ HWND hWnd, _In_opt_ CONST RECT *lprcUpdate, _In_opt_ HRGN hrgnUpdate, @@ -6647,7 +6738,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8747,6 +11137,22 @@ RedrawWindow( +@@ -8851,6 +11241,22 @@ RedrawWindow( #define RDW_FRAME 0x0400 #define RDW_NOFRAME 0x0800 @@ -6670,7 +6761,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -8755,12 +11161,15 @@ RedrawWindow( +@@ -8859,12 +11265,15 @@ RedrawWindow( * LockWindowUpdate API */ @@ -6686,7 +6777,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8771,6 +11180,8 @@ ScrollWindow( +@@ -8875,6 +11284,8 @@ ScrollWindow( _In_opt_ CONST RECT *lpRect, _In_opt_ CONST RECT *lpClipRect); @@ -6695,7 +6786,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8783,6 +11194,8 @@ ScrollDC( +@@ -8887,6 +11298,8 @@ ScrollDC( _In_opt_ HRGN hrgnUpdate, _Out_opt_ LPRECT lprcUpdate); @@ -6704,7 +6795,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8794,7 +11207,7 @@ ScrollWindowEx( +@@ -8898,7 +11311,7 @@ ScrollWindowEx( _In_opt_ CONST RECT *prcClip, _In_opt_ HRGN hrgnUpdate, _Out_opt_ LPRECT prcUpdate, @@ -6713,7 +6804,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8802,8 +11215,20 @@ ScrollWindowEx( +@@ -8906,8 +11319,20 @@ ScrollWindowEx( #define SW_SCROLLCHILDREN 0x0001 /* Scroll children within *lprcScroll. */ #define SW_INVALIDATE 0x0002 /* Invalidate after scrolling */ #define SW_ERASE 0x0004 /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */ @@ -6734,7 +6825,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #pragma region Desktop Family -@@ -8811,56 +11236,68 @@ ScrollWindowEx( +@@ -8915,56 +11340,68 @@ ScrollWindowEx( #ifndef NOSCROLL @@ -6809,7 +6900,7 @@ index f99e9294..53ba8a91 100644 /* -@@ -8878,10 +11315,24 @@ EnableScrollBar( +@@ -8982,10 +11419,24 @@ EnableScrollBar( #define ESB_DISABLE_LTUP ESB_DISABLE_LEFT #define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT @@ -6834,7 +6925,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8889,6 +11340,8 @@ SetPropA( +@@ -8993,6 +11444,8 @@ SetPropA( _In_ HWND hWnd, _In_ LPCSTR lpString, _In_opt_ HANDLE hData); @@ -6843,7 +6934,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8902,12 +11355,14 @@ SetPropW( +@@ -9006,12 +11459,14 @@ SetPropW( #define SetProp SetPropA #endif // !UNICODE @@ -6858,7 +6949,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -8920,12 +11375,16 @@ GetPropW( +@@ -9024,12 +11479,16 @@ GetPropW( #define GetProp GetPropA #endif // !UNICODE @@ -6875,7 +6966,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -8938,6 +11397,7 @@ RemovePropW( +@@ -9042,6 +11501,7 @@ RemovePropW( #define RemoveProp RemovePropA #endif // !UNICODE @@ -6883,7 +6974,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8945,6 +11405,7 @@ EnumPropsExA( +@@ -9049,6 +11509,7 @@ EnumPropsExA( _In_ HWND hWnd, _In_ PROPENUMPROCEXA lpEnumFunc, _In_ LPARAM lParam); @@ -6891,7 +6982,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8958,12 +11419,14 @@ EnumPropsExW( +@@ -9062,12 +11523,14 @@ EnumPropsExW( #define EnumPropsEx EnumPropsExA #endif // !UNICODE @@ -6906,7 +6997,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8976,12 +11439,16 @@ EnumPropsW( +@@ -9080,12 +11543,16 @@ EnumPropsW( #define EnumProps EnumPropsA #endif // !UNICODE @@ -6923,7 +7014,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8994,6 +11461,8 @@ SetWindowTextW( +@@ -9098,6 +11565,8 @@ SetWindowTextW( #define SetWindowText SetWindowTextA #endif // !UNICODE @@ -6932,7 +7023,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, nMaxCount) WINUSERAPI int -@@ -9002,6 +11471,8 @@ GetWindowTextA( +@@ -9106,6 +11575,8 @@ GetWindowTextA( _In_ HWND hWnd, _Out_writes_(nMaxCount) LPSTR lpString, _In_ int nMaxCount); @@ -6941,7 +7032,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, nMaxCount) WINUSERAPI int -@@ -9016,11 +11487,15 @@ GetWindowTextW( +@@ -9120,11 +11591,15 @@ GetWindowTextW( #define GetWindowText GetWindowTextA #endif // !UNICODE @@ -6957,7 +7048,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9038,6 +11513,8 @@ GetWindowTextLengthW( +@@ -9142,6 +11617,8 @@ GetWindowTextLengthW( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -6966,7 +7057,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9051,6 +11528,8 @@ GetClientRect( +@@ -9155,6 +11632,8 @@ GetClientRect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6975,7 +7066,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9064,22 +11543,26 @@ GetWindowRect( +@@ -9168,22 +11647,26 @@ GetWindowRect( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7005,7 +7096,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -9088,14 +11571,16 @@ AdjustWindowRectEx( +@@ -9192,14 +11675,16 @@ AdjustWindowRectEx( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0605) @@ -7024,7 +7115,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT dpi); #endif /* WINVER >= 0x0605 */ -@@ -9107,19 +11592,27 @@ AdjustWindowRectExForDpi( +@@ -9211,19 +11696,27 @@ AdjustWindowRectExForDpi( #define HELPINFO_WINDOW 0x0001 #define HELPINFO_MENUITEM 0x0002 @@ -7053,7 +7144,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9127,12 +11620,15 @@ SetWindowContextHelpId( +@@ -9231,12 +11724,15 @@ SetWindowContextHelpId( _In_ HWND, _In_ DWORD); @@ -7069,7 +7160,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9140,6 +11636,7 @@ SetMenuContextHelpId( +@@ -9244,6 +11740,7 @@ SetMenuContextHelpId( _In_ HMENU, _In_ DWORD); @@ -7077,7 +7168,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -9165,6 +11662,11 @@ GetMenuContextHelpId( +@@ -9269,6 +11766,11 @@ GetMenuContextHelpId( #define MB_RETRYCANCEL 0x00000005L #if(WINVER >= 0x0500) #define MB_CANCELTRYCONTINUE 0x00000006L @@ -7089,7 +7180,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -9177,6 +11679,13 @@ GetMenuContextHelpId( +@@ -9281,6 +11783,13 @@ GetMenuContextHelpId( #define MB_USERICON 0x00000080L #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONERROR MB_ICONHAND @@ -7103,7 +7194,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_ICONINFORMATION MB_ICONASTERISK -@@ -9187,6 +11696,11 @@ GetMenuContextHelpId( +@@ -9291,6 +11800,11 @@ GetMenuContextHelpId( #define MB_DEFBUTTON3 0x00000200L #if(WINVER >= 0x0400) #define MB_DEFBUTTON4 0x00000300L @@ -7115,7 +7206,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_APPLMODAL 0x00000000L -@@ -9194,6 +11708,11 @@ GetMenuContextHelpId( +@@ -9298,6 +11812,11 @@ GetMenuContextHelpId( #define MB_TASKMODAL 0x00002000L #if(WINVER >= 0x0400) #define MB_HELP 0x00004000L // Help Button @@ -7127,7 +7218,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_NOFOCUS 0x00008000L -@@ -9205,15 +11724,37 @@ GetMenuContextHelpId( +@@ -9309,15 +11828,37 @@ GetMenuContextHelpId( #define MB_RIGHT 0x00080000L #define MB_RTLREADING 0x00100000L @@ -7165,7 +7256,7 @@ index f99e9294..53ba8a91 100644 #endif #define MB_TYPEMASK 0x0000000FL -@@ -9222,25 +11763,59 @@ GetMenuContextHelpId( +@@ -9326,25 +11867,59 @@ GetMenuContextHelpId( #define MB_MODEMASK 0x00003000L #define MB_MISCMASK 0x0000C000L @@ -7229,7 +7320,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define MessageBox MessageBoxW #else -@@ -9271,23 +11846,27 @@ MessageBox( +@@ -9375,23 +11950,27 @@ MessageBox( } #endif /* _M_CEE */ @@ -7261,7 +7352,7 @@ index f99e9294..53ba8a91 100644 _In_ WORD wLanguageId); #ifdef UNICODE #define MessageBoxEx MessageBoxExW -@@ -9306,7 +11885,7 @@ typedef struct tagMSGBOXPARAMSA +@@ -9410,7 +11989,7 @@ typedef struct tagMSGBOXPARAMSA HINSTANCE hInstance; LPCSTR lpszText; LPCSTR lpszCaption; @@ -7270,7 +7361,7 @@ index f99e9294..53ba8a91 100644 LPCSTR lpszIcon; DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; -@@ -9319,7 +11898,7 @@ typedef struct tagMSGBOXPARAMSW +@@ -9423,7 +12002,7 @@ typedef struct tagMSGBOXPARAMSW HINSTANCE hInstance; LPCWSTR lpszText; LPCWSTR lpszCaption; @@ -7279,7 +7370,7 @@ index f99e9294..53ba8a91 100644 LPCWSTR lpszIcon; DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; -@@ -9335,12 +11914,14 @@ typedef PMSGBOXPARAMSA PMSGBOXPARAMS; +@@ -9439,12 +12018,14 @@ typedef PMSGBOXPARAMSA PMSGBOXPARAMS; typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS; #endif // UNICODE @@ -7296,7 +7387,7 @@ index f99e9294..53ba8a91 100644 int WINAPI MessageBoxIndirectW( -@@ -9360,11 +11941,13 @@ MessageBoxIndirectW( +@@ -9464,11 +12045,13 @@ MessageBoxIndirectW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7311,7 +7402,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -9381,6 +11964,7 @@ MessageBeep( +@@ -9485,6 +12068,7 @@ MessageBeep( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7319,7 +7410,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9393,6 +11977,8 @@ ShowCursor( +@@ -9497,6 +12081,8 @@ ShowCursor( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7328,7 +7419,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9401,6 +11987,8 @@ SetCursorPos( +@@ -9505,6 +12091,8 @@ SetCursorPos( _In_ int Y); #if(WINVER >= 0x0600) @@ -7337,7 +7428,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9415,12 +12003,15 @@ SetPhysicalCursorPos( +@@ -9519,12 +12107,15 @@ SetPhysicalCursorPos( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7353,7 +7444,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9434,6 +12025,8 @@ GetCursorPos( +@@ -9538,6 +12129,8 @@ GetCursorPos( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0600) @@ -7362,7 +7453,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9442,18 +12035,23 @@ GetPhysicalCursorPos( +@@ -9546,18 +12139,23 @@ GetPhysicalCursorPos( #endif /* WINVER >= 0x0600 */ @@ -7386,7 +7477,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9463,36 +12061,48 @@ CreateCaret( +@@ -9567,36 +12165,48 @@ CreateCaret( _In_ int nWidth, _In_ int nHeight); @@ -7435,7 +7526,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9500,12 +12110,15 @@ SetCaretPos( +@@ -9604,12 +12214,15 @@ SetCaretPos( _In_ int X, _In_ int Y); @@ -7451,7 +7542,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9513,6 +12126,7 @@ ClientToScreen( +@@ -9617,6 +12230,7 @@ ClientToScreen( _In_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7459,7 +7550,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9521,6 +12135,7 @@ ScreenToClient( +@@ -9625,6 +12239,7 @@ ScreenToClient( _Inout_ LPPOINT lpPoint); #if(WINVER >= 0x0600) @@ -7467,7 +7558,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9528,6 +12143,7 @@ LogicalToPhysicalPoint( +@@ -9632,6 +12247,7 @@ LogicalToPhysicalPoint( _In_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7475,7 +7566,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9538,6 +12154,7 @@ PhysicalToLogicalPoint( +@@ -9642,6 +12258,7 @@ PhysicalToLogicalPoint( #endif /* WINVER >= 0x0600 */ #if(WINVER >= 0x0603) @@ -7483,7 +7574,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9545,6 +12162,7 @@ LogicalToPhysicalPointForPerMonitorDPI( +@@ -9649,6 +12266,7 @@ LogicalToPhysicalPointForPerMonitorDPI( _In_opt_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7491,7 +7582,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9554,6 +12172,7 @@ PhysicalToLogicalPointForPerMonitorDPI( +@@ -9658,6 +12276,7 @@ PhysicalToLogicalPointForPerMonitorDPI( #endif /* WINVER >= 0x0603 */ @@ -7499,7 +7590,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9563,6 +12182,7 @@ MapWindowPoints( +@@ -9667,6 +12286,7 @@ MapWindowPoints( _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints); @@ -7507,7 +7598,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9570,6 +12190,7 @@ WindowFromPoint( +@@ -9674,6 +12294,7 @@ WindowFromPoint( _In_ POINT Point); #if(WINVER >= 0x0600) @@ -7515,7 +7606,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9577,6 +12198,7 @@ WindowFromPhysicalPoint( +@@ -9681,6 +12302,7 @@ WindowFromPhysicalPoint( _In_ POINT Point); #endif /* WINVER >= 0x0600 */ @@ -7523,7 +7614,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9589,6 +12211,8 @@ ChildWindowFromPoint( +@@ -9693,6 +12315,8 @@ ChildWindowFromPoint( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -7532,7 +7623,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9603,16 +12227,25 @@ ClipCursor( +@@ -9707,16 +12331,25 @@ ClipCursor( #define CWP_SKIPDISABLED 0x0002 #define CWP_SKIPTRANSPARENT 0x0004 @@ -7559,7 +7650,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -9655,20 +12288,70 @@ ChildWindowFromPointEx( +@@ -9759,20 +12392,70 @@ ChildWindowFromPointEx( #define COLOR_INACTIVECAPTIONTEXT 19 #define COLOR_BTNHIGHLIGHT 20 @@ -7630,7 +7721,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ #endif /* WINVER >= 0x0500 */ -@@ -9679,28 +12362,43 @@ ChildWindowFromPointEx( +@@ -9783,28 +12466,43 @@ ChildWindowFromPointEx( #define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT #define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT #define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT @@ -7676,7 +7767,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9717,6 +12415,7 @@ SetSysColors( +@@ -9821,6 +12519,7 @@ SetSysColors( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7684,7 +7775,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9724,6 +12423,7 @@ DrawFocusRect( +@@ -9828,6 +12527,7 @@ DrawFocusRect( _In_ HDC hDC, _In_ CONST RECT * lprc); @@ -7692,7 +7783,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9732,6 +12432,7 @@ FillRect( +@@ -9836,6 +12536,7 @@ FillRect( _In_ CONST RECT *lprc, _In_ HBRUSH hbr); @@ -7700,7 +7791,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9740,6 +12441,7 @@ FrameRect( +@@ -9844,6 +12545,7 @@ FrameRect( _In_ CONST RECT *lprc, _In_ HBRUSH hbr); @@ -7708,7 +7799,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9747,6 +12449,7 @@ InvertRect( +@@ -9851,6 +12553,7 @@ InvertRect( _In_ HDC hDC, _In_ CONST RECT *lprc); @@ -7716,7 +7807,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9757,12 +12460,14 @@ SetRect( +@@ -9861,12 +12564,14 @@ SetRect( _In_ int xRight, _In_ int yBottom); @@ -7731,7 +7822,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9770,6 +12475,7 @@ CopyRect( +@@ -9874,6 +12579,7 @@ CopyRect( _Out_ LPRECT lprcDst, _In_ CONST RECT *lprcSrc); @@ -7739,7 +7830,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9778,6 +12484,7 @@ InflateRect( +@@ -9882,6 +12588,7 @@ InflateRect( _In_ int dx, _In_ int dy); @@ -7747,7 +7838,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9786,6 +12493,7 @@ IntersectRect( +@@ -9890,6 +12597,7 @@ IntersectRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7755,7 +7846,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9794,6 +12502,7 @@ UnionRect( +@@ -9898,6 +12606,7 @@ UnionRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7763,7 +7854,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9802,6 +12511,7 @@ SubtractRect( +@@ -9906,6 +12615,7 @@ SubtractRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7771,7 +7862,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9810,12 +12520,14 @@ OffsetRect( +@@ -9914,12 +12624,14 @@ OffsetRect( _In_ int dx, _In_ int dy); @@ -7786,7 +7877,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9823,6 +12535,7 @@ EqualRect( +@@ -9927,6 +12639,7 @@ EqualRect( _In_ CONST RECT *lprc1, _In_ CONST RECT *lprc2); @@ -7794,7 +7885,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9857,37 +12570,45 @@ SetWindowWord( +@@ -9961,37 +12674,45 @@ SetWindowWord( #ifndef NOWINOFFSETS @@ -7844,7 +7935,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG dwNewLong); #ifdef UNICODE #define SetWindowLong SetWindowLongW -@@ -9897,37 +12618,45 @@ SetWindowLongW( +@@ -10001,37 +12722,45 @@ SetWindowLongW( #ifdef _WIN64 @@ -7894,7 +7985,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG_PTR dwNewLong); #ifdef UNICODE #define SetWindowLongPtr SetWindowLongPtrW -@@ -9965,6 +12694,8 @@ SetWindowLongPtrW( +@@ -10069,6 +12798,8 @@ SetWindowLongPtrW( #ifndef NOWINOFFSETS @@ -7903,7 +7994,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI WORD WINAPI -@@ -9972,6 +12703,8 @@ GetClassWord( +@@ -10076,6 +12807,8 @@ GetClassWord( _In_ HWND hWnd, _In_ int nIndex); @@ -7912,7 +8003,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI WORD WINAPI -@@ -9980,37 +12713,45 @@ SetClassWord( +@@ -10084,37 +12817,45 @@ SetClassWord( _In_ int nIndex, _In_ WORD wNewWord); @@ -7962,7 +8053,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG dwNewLong); #ifdef UNICODE #define SetClassLong SetClassLongW -@@ -10020,37 +12761,45 @@ SetClassLongW( +@@ -10124,37 +12865,45 @@ SetClassLongW( #ifdef _WIN64 @@ -8012,7 +8103,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG_PTR dwNewLong); #ifdef UNICODE #define SetClassLongPtr SetClassLongPtrW -@@ -10081,12 +12830,16 @@ SetClassLongPtrW( +@@ -10185,12 +12934,16 @@ SetClassLongPtrW( #endif /* !NOWINOFFSETS */ #if(WINVER >= 0x0500) @@ -8029,7 +8120,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10094,6 +12847,7 @@ SetProcessDefaultLayout( +@@ -10198,6 +12951,7 @@ SetProcessDefaultLayout( _In_ DWORD dwDefaultLayout); #endif /* WINVER >= 0x0500 */ @@ -8037,7 +8128,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10101,12 +12855,16 @@ GetDesktopWindow( +@@ -10205,12 +12959,16 @@ GetDesktopWindow( VOID); @@ -8054,7 +8145,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10114,6 +12872,7 @@ SetParent( +@@ -10218,6 +12976,7 @@ SetParent( _In_ HWND hWndChild, _In_opt_ HWND hWndNewParent); @@ -8062,7 +8153,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10123,12 +12882,16 @@ EnumChildWindows( +@@ -10227,12 +12986,16 @@ EnumChildWindows( _In_ LPARAM lParam); @@ -8079,7 +8170,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10142,6 +12905,8 @@ FindWindowW( +@@ -10246,6 +13009,8 @@ FindWindowW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -8088,7 +8179,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10150,6 +12915,8 @@ FindWindowExA( +@@ -10254,6 +13019,8 @@ FindWindowExA( _In_opt_ HWND hWndChildAfter, _In_opt_ LPCSTR lpszClass, _In_opt_ LPCSTR lpszWindow); @@ -8097,7 +8188,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10164,6 +12931,7 @@ FindWindowExW( +@@ -10268,6 +13035,7 @@ FindWindowExW( #define FindWindowEx FindWindowExA #endif // !UNICODE @@ -8105,7 +8196,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10173,18 +12941,22 @@ GetShellWindow( +@@ -10277,18 +13045,22 @@ GetShellWindow( #endif /* WINVER >= 0x0400 */ @@ -8128,7 +8219,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10192,6 +12964,7 @@ EnumWindows( +@@ -10296,6 +13068,7 @@ EnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam); @@ -8136,7 +8227,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10209,6 +12982,8 @@ EnumThreadWindows( +@@ -10313,6 +13086,8 @@ EnumThreadWindows( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8145,7 +8236,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10217,6 +12992,8 @@ GetClassNameA( +@@ -10321,6 +13096,8 @@ GetClassNameA( _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount ); @@ -8154,7 +8245,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10259,6 +13036,8 @@ GetClassName( +@@ -10363,6 +13140,8 @@ GetClassName( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8163,7 +8254,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10269,6 +13048,7 @@ GetTopWindow( +@@ -10373,6 +13152,7 @@ GetTopWindow( #define GetSysModalWindow() (NULL) #define SetSysModalWindow(hWnd) (NULL) @@ -8171,7 +8262,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -10278,6 +13058,7 @@ GetWindowThreadProcessId( +@@ -10382,6 +13162,7 @@ GetWindowThreadProcessId( #if(_WIN32_WINNT >= 0x0501) @@ -8179,7 +8270,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10290,6 +13071,7 @@ IsGUIThread( +@@ -10394,6 +13175,7 @@ IsGUIThread( #define GetWindowTask(hWnd) \ ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd, NULL)) @@ -8187,7 +8278,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10305,19 +13087,34 @@ GetLastActivePopup( +@@ -10409,19 +13191,34 @@ GetLastActivePopup( #define GW_HWNDPREV 3 #define GW_OWNER 4 #define GW_CHILD 5 @@ -8224,7 +8315,7 @@ index f99e9294..53ba8a91 100644 #ifndef NOWH -@@ -10371,19 +13168,29 @@ UnhookWindowsHook( +@@ -10475,19 +13272,29 @@ UnhookWindowsHook( _In_ int nCode, _In_ HOOKPROC pfnFilterProc); @@ -8256,7 +8347,7 @@ index f99e9294..53ba8a91 100644 _In_ HOOKPROC lpfn, _In_opt_ HINSTANCE hmod, _In_ DWORD dwThreadId); -@@ -10394,12 +13201,18 @@ SetWindowsHookExW( +@@ -10498,12 +13305,18 @@ SetWindowsHookExW( #endif // !UNICODE @@ -8275,7 +8366,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -10463,16 +13276,60 @@ CallNextHookEx( +@@ -10567,16 +13380,60 @@ CallNextHookEx( #if(WINVER >= 0x0400) #define MF_DEFAULT 0x00001000L @@ -8336,7 +8427,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -10487,6 +13344,19 @@ CallNextHookEx( +@@ -10591,6 +13448,19 @@ CallNextHookEx( #define MFT_RIGHTORDER 0x00002000L #define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY @@ -8356,7 +8447,7 @@ index f99e9294..53ba8a91 100644 /* Menu flags for Add/Check/EnableMenuItem() */ #define MFS_GRAYED 0x00000003L #define MFS_DISABLED MFS_GRAYED -@@ -10496,6 +13366,18 @@ CallNextHookEx( +@@ -10600,6 +13470,18 @@ CallNextHookEx( #define MFS_UNCHECKED MF_UNCHECKED #define MFS_UNHILITE MF_UNHILITE #define MFS_DEFAULT MF_DEFAULT @@ -8375,7 +8466,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -10504,6 +13386,8 @@ CallNextHookEx( +@@ -10608,6 +13490,8 @@ CallNextHookEx( #if(WINVER >= 0x0400) @@ -8384,7 +8475,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10530,6 +13414,11 @@ typedef struct { // version 0 +@@ -10634,6 +13518,11 @@ typedef struct { // version 0 } MENUITEMTEMPLATE, *PMENUITEMTEMPLATE; #define MF_END 0x00000080L @@ -8396,7 +8487,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -10584,12 +13473,14 @@ typedef struct { // version 0 +@@ -10688,12 +13577,14 @@ typedef struct { // version 0 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8411,7 +8502,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HBITMAP WINAPI -@@ -10608,12 +13499,16 @@ LoadBitmapW( +@@ -10712,12 +13603,16 @@ LoadBitmapW( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8428,7 +8519,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10632,11 +13527,15 @@ LoadCursorW( +@@ -10736,11 +13631,15 @@ LoadCursorW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8444,7 +8535,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10654,6 +13553,11 @@ LoadCursorFromFileW( +@@ -10758,6 +13657,11 @@ LoadCursorFromFileW( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8456,7 +8547,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10666,12 +13570,17 @@ CreateCursor( +@@ -10770,12 +13674,17 @@ CreateCursor( _In_ CONST VOID *pvANDPlane, _In_ CONST VOID *pvXORPlane); @@ -8474,7 +8565,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -10681,7 +13590,7 @@ DestroyCursor( +@@ -10785,7 +13694,7 @@ DestroyCursor( #ifndef _MAC #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur))) #else @@ -8483,7 +8574,7 @@ index f99e9294..53ba8a91 100644 HCURSOR WINAPI CopyCursor( -@@ -10723,12 +13632,14 @@ CopyCursor( +@@ -10827,12 +13736,14 @@ CopyCursor( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8499,7 +8590,7 @@ index f99e9294..53ba8a91 100644 typedef struct _ICONINFO { BOOL fIcon; -@@ -10739,12 +13650,16 @@ typedef struct _ICONINFO { +@@ -10843,12 +13754,16 @@ typedef struct _ICONINFO { } ICONINFO; typedef ICONINFO *PICONINFO; @@ -8516,7 +8607,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10758,6 +13673,7 @@ LoadIconW( +@@ -10862,6 +13777,7 @@ LoadIconW( #endif // !UNICODE @@ -8524,7 +8615,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -10766,10 +13682,14 @@ PrivateExtractIconsA( +@@ -10870,10 +13786,14 @@ PrivateExtractIconsA( _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, @@ -8539,7 +8630,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -10778,6 +13698,9 @@ PrivateExtractIconsW( +@@ -10882,6 +13802,9 @@ PrivateExtractIconsW( _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, @@ -8549,7 +8640,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_opt_(nIcons) HICON *phicon, _Out_writes_opt_(nIcons) UINT *piconid, _In_ UINT nIcons, -@@ -10788,6 +13711,11 @@ PrivateExtractIconsW( +@@ -10892,6 +13815,11 @@ PrivateExtractIconsW( #define PrivateExtractIcons PrivateExtractIconsA #endif // !UNICODE @@ -8561,7 +8652,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10800,12 +13728,19 @@ CreateIcon( +@@ -10904,12 +13832,19 @@ CreateIcon( _In_ CONST BYTE *lpbANDbits, _In_ CONST BYTE *lpbXORbits); @@ -8581,7 +8672,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10814,6 +13749,8 @@ LookupIconIdFromDirectory( +@@ -10918,6 +13853,8 @@ LookupIconIdFromDirectory( _In_ BOOL fIcon); #if(WINVER >= 0x0400) @@ -8590,7 +8681,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10822,9 +13759,11 @@ LookupIconIdFromDirectoryEx( +@@ -10926,9 +13863,11 @@ LookupIconIdFromDirectoryEx( _In_ BOOL fIcon, _In_ int cxDesired, _In_ int cyDesired, @@ -8603,7 +8694,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10835,6 +13774,8 @@ CreateIconFromResource( +@@ -10939,6 +13878,8 @@ CreateIconFromResource( _In_ DWORD dwVer); #if(WINVER >= 0x0400) @@ -8612,7 +8703,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10845,7 +13786,7 @@ CreateIconFromResourceEx( +@@ -10949,7 +13890,7 @@ CreateIconFromResourceEx( _In_ DWORD dwVer, _In_ int cxDesired, _In_ int cyDesired, @@ -8621,7 +8712,7 @@ index f99e9294..53ba8a91 100644 /* Icon/Cursor header */ typedef struct tagCURSORSHAPE -@@ -10881,6 +13822,13 @@ SetThreadCursorCreationScaling( +@@ -10985,6 +13926,13 @@ SetThreadCursorCreationScaling( #define IMAGE_BITMAP 0 #define IMAGE_ICON 1 #define IMAGE_CURSOR 2 @@ -8635,7 +8726,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define IMAGE_ENHMETAFILE 3 -@@ -10898,54 +13846,84 @@ SetThreadCursorCreationScaling( +@@ -11002,54 +13950,84 @@ SetThreadCursorCreationScaling( #define LR_COPYFROMRESOURCE 0x00004000 #define LR_SHARED 0x00008000 @@ -8726,7 +8817,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI DrawIconEx( _In_ HDC hdc, _In_ int xLeft, -@@ -10955,7 +13933,7 @@ WINUSERAPI BOOL WINAPI DrawIconEx( +@@ -11059,7 +14037,7 @@ WINUSERAPI BOOL WINAPI DrawIconEx( _In_ int cyWidth, _In_ UINT istepIfAniCur, _In_opt_ HBRUSH hbrFlickerFreeDraw, @@ -8735,7 +8826,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -10965,18 +13943,33 @@ WINUSERAPI BOOL WINAPI DrawIconEx( +@@ -11069,18 +14047,33 @@ WINUSERAPI BOOL WINAPI DrawIconEx( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8769,7 +8860,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11015,12 +14008,14 @@ typedef ICONINFOEXA ICONINFOEX; +@@ -11119,12 +14112,14 @@ typedef ICONINFOEXA ICONINFOEX; typedef PICONINFOEXA PICONINFOEX; #endif // UNICODE @@ -8784,7 +8875,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11099,11 +14094,33 @@ GetIconInfoExW( +@@ -11203,11 +14198,33 @@ GetIconInfoExW( #define OCR_SIZEALL 32646 #define OCR_ICOCUR 32647 /* OBSOLETE: use OIC_WINLOGO */ #define OCR_NO 32648 @@ -8818,7 +8909,7 @@ index f99e9294..53ba8a91 100644 +#endif -@@ -11176,7 +14193,7 @@ GetIconInfoExW( +@@ -11280,7 +14297,7 @@ GetIconInfoExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8827,7 +8918,7 @@ index f99e9294..53ba8a91 100644 int WINAPI LoadStringA( -@@ -11184,7 +14201,7 @@ LoadStringA( +@@ -11288,7 +14305,7 @@ LoadStringA( _In_ UINT uID, _Out_writes_to_(cchBufferMax, return + 1) LPSTR lpBuffer, _In_ int cchBufferMax); @@ -8836,7 +8927,7 @@ index f99e9294..53ba8a91 100644 int WINAPI LoadStringW( -@@ -11214,20 +14231,39 @@ LoadStringW( +@@ -11318,20 +14335,39 @@ LoadStringW( #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 @@ -8876,7 +8967,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ -@@ -11377,6 +14413,10 @@ typedef enum { +@@ -11481,6 +14517,10 @@ typedef enum { #define WB_RIGHT 1 #define WB_ISDELIMITER 2 @@ -8887,7 +8978,7 @@ index f99e9294..53ba8a91 100644 /* * Button Control Styles -@@ -11450,6 +14490,13 @@ typedef enum { +@@ -11554,6 +14594,13 @@ typedef enum { #define BST_UNCHECKED 0x0000 #define BST_CHECKED 0x0001 #define BST_INDETERMINATE 0x0002 @@ -8901,7 +8992,7 @@ index f99e9294..53ba8a91 100644 #define BST_PUSHED 0x0004 #define BST_FOCUS 0x0008 #endif /* WINVER >= 0x0400 */ -@@ -11478,11 +14525,45 @@ typedef enum { +@@ -11582,11 +14629,45 @@ typedef enum { #define SS_ETCHEDVERT 0x00000011L #define SS_ETCHEDFRAME 0x00000012L #define SS_TYPEMASK 0x0000001FL @@ -8947,7 +9038,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define SS_NOTIFY 0x00000100L #define SS_CENTERIMAGE 0x00000200L -@@ -11494,6 +14575,20 @@ typedef enum { +@@ -11598,6 +14679,20 @@ typedef enum { #define SS_PATHELLIPSIS 0x00008000L #define SS_WORDELLIPSIS 0x0000C000L #define SS_ELLIPSISMASK 0x0000C000L @@ -8968,7 +9059,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -11548,12 +14643,14 @@ typedef enum { +@@ -11652,12 +14747,14 @@ typedef enum { #ifndef NOMSG @@ -8983,7 +9074,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11568,6 +14665,8 @@ IsDialogMessageW( +@@ -11672,6 +14769,8 @@ IsDialogMessageW( #endif /* !NOMSG */ @@ -8992,7 +9083,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11575,6 +14674,7 @@ MapDialogRect( +@@ -11679,6 +14778,7 @@ MapDialogRect( _In_ HWND hDlg, _Inout_ LPRECT lpRect); @@ -9000,7 +9091,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11583,7 +14683,8 @@ DlgDirListA( +@@ -11687,7 +14787,8 @@ DlgDirListA( _Inout_ LPSTR lpPathSpec, _In_ int nIDListBox, _In_ int nIDStaticPath, @@ -9010,7 +9101,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11592,7 +14693,7 @@ DlgDirListW( +@@ -11696,7 +14797,7 @@ DlgDirListW( _Inout_ LPWSTR lpPathSpec, _In_ int nIDListBox, _In_ int nIDStaticPath, @@ -9019,7 +9110,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DlgDirList DlgDirListW #else -@@ -11616,9 +14717,24 @@ DlgDirListW( +@@ -11720,9 +14821,24 @@ DlgDirListW( #define DDL_DRIVES 0x4000 #define DDL_EXCLUSIVE 0x8000 @@ -9044,7 +9135,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11627,6 +14743,8 @@ DlgDirSelectExA( +@@ -11731,6 +14847,8 @@ DlgDirSelectExA( _Out_writes_(chCount) LPSTR lpString, _In_ int chCount, _In_ int idListBox); @@ -9053,7 +9144,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11641,6 +14759,8 @@ DlgDirSelectExW( +@@ -11745,6 +14863,8 @@ DlgDirSelectExW( #define DlgDirSelectEx DlgDirSelectExA #endif // !UNICODE @@ -9062,7 +9153,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11649,7 +14769,9 @@ DlgDirListComboBoxA( +@@ -11753,7 +14873,9 @@ DlgDirListComboBoxA( _Inout_ LPSTR lpPathSpec, _In_ int nIDComboBox, _In_ int nIDStaticPath, @@ -9073,7 +9164,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11658,13 +14780,15 @@ DlgDirListComboBoxW( +@@ -11762,13 +14884,15 @@ DlgDirListComboBoxW( _Inout_ LPWSTR lpPathSpec, _In_ int nIDComboBox, _In_ int nIDStaticPath, @@ -9090,7 +9181,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11673,6 +14797,8 @@ DlgDirSelectComboBoxExA( +@@ -11777,6 +14901,8 @@ DlgDirSelectComboBoxExA( _Out_writes_(cchOut) LPSTR lpString, _In_ int cchOut, _In_ int idComboBox); @@ -9099,7 +9190,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12032,13 +15158,23 @@ DlgDirSelectComboBoxExW( +@@ -12136,13 +15262,23 @@ DlgDirSelectComboBoxExW( #define SIF_TRACKPOS 0x0010 #define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) @@ -9124,7 +9215,7 @@ index f99e9294..53ba8a91 100644 int nMin; int nMax; UINT nPage; -@@ -12047,21 +15183,24 @@ typedef struct tagSCROLLINFO +@@ -12151,21 +15287,24 @@ typedef struct tagSCROLLINFO } SCROLLINFO, FAR *LPSCROLLINFO; typedef SCROLLINFO CONST FAR *LPCSCROLLINFO; @@ -9151,7 +9242,7 @@ index f99e9294..53ba8a91 100644 _Inout_ LPSCROLLINFO lpsi); -@@ -12084,9 +15223,25 @@ GetScrollInfo( +@@ -12188,9 +15327,25 @@ GetScrollInfo( */ #define MDITILE_VERTICAL 0x0000 /*not in win3.1 */ #define MDITILE_HORIZONTAL 0x0001 /*not in win3.1 */ @@ -9177,7 +9268,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #pragma region Desktop Family -@@ -12100,7 +15255,7 @@ typedef struct tagMDICREATESTRUCTA { +@@ -12204,7 +15359,7 @@ typedef struct tagMDICREATESTRUCTA { int y; int cx; int cy; @@ -9186,7 +9277,7 @@ index f99e9294..53ba8a91 100644 LPARAM lParam; /* app-defined stuff */ } MDICREATESTRUCTA, *LPMDICREATESTRUCTA; typedef struct tagMDICREATESTRUCTW { -@@ -12111,7 +15266,7 @@ typedef struct tagMDICREATESTRUCTW { +@@ -12215,7 +15370,7 @@ typedef struct tagMDICREATESTRUCTW { int y; int cx; int cy; @@ -9195,7 +9286,7 @@ index f99e9294..53ba8a91 100644 LPARAM lParam; /* app-defined stuff */ } MDICREATESTRUCTW, *LPMDICREATESTRUCTW; #ifdef UNICODE -@@ -12127,6 +15282,7 @@ typedef struct tagCLIENTCREATESTRUCT { +@@ -12231,6 +15386,7 @@ typedef struct tagCLIENTCREATESTRUCT { UINT idFirstChild; } CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT; @@ -9203,7 +9294,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -12136,6 +15292,7 @@ DefFrameProcA( +@@ -12240,6 +15396,7 @@ DefFrameProcA( _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -9211,7 +9302,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -12151,6 +15308,7 @@ DefFrameProcW( +@@ -12255,6 +15412,7 @@ DefFrameProcW( #define DefFrameProc DefFrameProcA #endif // !UNICODE @@ -9219,7 +9310,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -12164,6 +15322,7 @@ DefMDIChildProcA( +@@ -12268,6 +15426,7 @@ DefMDIChildProcA( _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -9227,7 +9318,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -12185,6 +15344,7 @@ DefMDIChildProcW( +@@ -12289,6 +15448,7 @@ DefMDIChildProcW( #ifndef NOMSG @@ -9235,7 +9326,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12194,19 +15354,23 @@ TranslateMDISysAccel( +@@ -12298,19 +15458,23 @@ TranslateMDISysAccel( #endif /* !NOMSG */ @@ -9260,7 +9351,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -12214,13 +15378,15 @@ CreateMDIWindowA( +@@ -12318,13 +15482,15 @@ CreateMDIWindowA( _In_opt_ HWND hWndParent, _In_opt_ HINSTANCE hInstance, _In_ LPARAM lParam); @@ -9277,7 +9368,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -12235,21 +15401,25 @@ CreateMDIWindowW( +@@ -12339,21 +15505,25 @@ CreateMDIWindowW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -9305,7 +9396,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ CONST RECT * lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR * lpKids); -@@ -12367,6 +15537,8 @@ typedef LPHELPWININFOA LPHELPWININFO; +@@ -12471,6 +15641,8 @@ typedef LPHELPWININFOA LPHELPWININFO; @@ -9314,7 +9405,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12375,6 +15547,8 @@ WinHelpA( +@@ -12479,6 +15651,8 @@ WinHelpA( _In_opt_ LPCSTR lpszHelp, _In_ UINT uCommand, _In_ ULONG_PTR dwData); @@ -9323,7 +9414,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12398,26 +15572,48 @@ WinHelpW( +@@ -12502,26 +15676,48 @@ WinHelpW( #define GR_GDIOBJECTS 0 /* Count of GDI objects */ #define GR_USEROBJECTS 1 /* Count of USER objects */ @@ -9373,7 +9464,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -12514,6 +15710,52 @@ GetGuiResources( +@@ -12618,6 +15814,52 @@ GetGuiResources( #define SPI_GETMOUSETRAILS 0x005E #define SPI_SETSCREENSAVERRUNNING 0x0061 #define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING @@ -9426,7 +9517,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define SPI_GETFILTERKEYS 0x0032 #define SPI_SETFILTERKEYS 0x0033 -@@ -12530,12 +15772,75 @@ GetGuiResources( +@@ -12634,12 +15876,75 @@ GetGuiResources( #if(WINVER >= 0x0400) #define SPI_GETSERIALKEYS 0x003E #define SPI_SETSERIALKEYS 0x003F @@ -9502,7 +9593,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0400 */ #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define SPI_GETMOUSEHOVERWIDTH 0x0062 -@@ -12552,10 +15857,32 @@ GetGuiResources( +@@ -12656,10 +15961,32 @@ GetGuiResources( #if (_WIN32_WINNT >= 0x0600) #define SPI_GETWHEELSCROLLCHARS 0x006C #define SPI_SETWHEELSCROLLCHARS 0x006D @@ -9535,7 +9626,7 @@ index f99e9294..53ba8a91 100644 #endif -@@ -12564,6 +15891,14 @@ GetGuiResources( +@@ -12668,6 +15995,14 @@ GetGuiResources( #define SPI_SETMOUSESPEED 0x0071 #define SPI_GETSCREENSAVERRUNNING 0x0072 #define SPI_GETDESKWALLPAPER 0x0073 @@ -9550,7 +9641,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #if(WINVER >= 0x0600) -@@ -12572,6 +15907,14 @@ GetGuiResources( +@@ -12676,6 +16011,14 @@ GetGuiResources( #define SPI_GETSCREENSAVESECURE 0x0076 #define SPI_SETSCREENSAVESECURE 0x0077 @@ -9565,7 +9656,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #if(_WIN32_WINNT >= 0x0601) -@@ -12601,6 +15944,36 @@ GetGuiResources( +@@ -12705,6 +16048,36 @@ GetGuiResources( #define SPI_SETSNAPSIZING 0x008F #define SPI_GETDOCKMOVING 0x0090 #define SPI_SETDOCKMOVING 0x0091 @@ -9602,7 +9693,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ #if(WINVER >= 0x0602) -@@ -12641,12 +16014,28 @@ typedef struct tagTouchPredictionParameters +@@ -12745,12 +16118,28 @@ typedef struct tagTouchPredictionParameters #define SPI_GETMENURECT 0x00A2 #define SPI_SETMENURECT 0x00A3 @@ -9631,7 +9722,7 @@ index f99e9294..53ba8a91 100644 #endif // NTDDI_VERSION >= NTDDI_WIN11_GE #if (NTDDI_VERSION >= NTDDI_WIN10_CO) -@@ -12702,6 +16091,22 @@ typedef struct tagTouchPredictionParameters +@@ -12806,6 +16195,22 @@ typedef struct tagTouchPredictionParameters #define SPI_SETDROPSHADOW 0x1025 #define SPI_GETBLOCKSENDINPUTRESETS 0x1026 #define SPI_SETBLOCKSENDINPUTRESETS 0x1027 @@ -9654,7 +9745,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define SPI_GETUIEFFECTS 0x103E -@@ -12716,6 +16121,18 @@ typedef struct tagTouchPredictionParameters +@@ -12820,6 +16225,18 @@ typedef struct tagTouchPredictionParameters #define SPI_SETCLEARTYPE 0x1049 #define SPI_GETSPEECHRECOGNITION 0x104A #define SPI_SETSPEECHRECOGNITION 0x104B @@ -9673,7 +9764,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0601) -@@ -12725,6 +16142,16 @@ typedef struct tagTouchPredictionParameters +@@ -12829,6 +16246,16 @@ typedef struct tagTouchPredictionParameters #define SPI_SETTHREADLOCALINPUTSETTINGS 0x104F #define SPI_GETSYSTEMLANGUAGEBAR 0x1050 #define SPI_SETSYSTEMLANGUAGEBAR 0x1051 @@ -9690,7 +9781,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) -@@ -12739,6 +16166,48 @@ typedef struct tagTouchPredictionParameters +@@ -12843,6 +16270,48 @@ typedef struct tagTouchPredictionParameters #define SPI_GETCARETWIDTH 0x2006 #define SPI_SETCARETWIDTH 0x2007 @@ -9739,7 +9830,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #define SPI_GETMOUSECLICKLOCKTIME 0x2008 #define SPI_SETMOUSECLICKLOCKTIME 0x2009 -@@ -12760,6 +16229,22 @@ typedef struct tagTouchPredictionParameters +@@ -12864,6 +16333,22 @@ typedef struct tagTouchPredictionParameters #define SPI_GETFONTSMOOTHINGORIENTATION 0x2012 #define SPI_SETFONTSMOOTHINGORIENTATION 0x2013 @@ -9762,7 +9853,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_GETFONTSMOOTHINGORIENTATION and SPI_SETFONTSMOOTHINGORIENTATION: */ #define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000 #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001 -@@ -12770,6 +16255,14 @@ typedef struct tagTouchPredictionParameters +@@ -12874,6 +16359,14 @@ typedef struct tagTouchPredictionParameters #define SPI_SETMINIMUMHITRADIUS 0x2015 #define SPI_GETMESSAGEDURATION 0x2016 #define SPI_SETMESSAGEDURATION 0x2017 @@ -9777,7 +9868,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0602) -@@ -12782,6 +16275,14 @@ typedef struct tagTouchPredictionParameters +@@ -12886,6 +16379,14 @@ typedef struct tagTouchPredictionParameters #define SPI_GETGESTUREVISUALIZATION 0x201A #define SPI_SETGESTUREVISUALIZATION 0x201B @@ -9792,7 +9883,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_GETGESTUREVISUALIZATION and SPI_SETGESTUREVISUALIZATION */ #define GESTUREVISUALIZATION_OFF 0x0000 #define GESTUREVISUALIZATION_ON 0x001F -@@ -12796,6 +16297,12 @@ typedef struct tagTouchPredictionParameters +@@ -12900,6 +16401,12 @@ typedef struct tagTouchPredictionParameters #define SPI_GETMOUSEWHEELROUTING 0x201C #define SPI_SETMOUSEWHEELROUTING 0x201D @@ -9805,7 +9896,7 @@ index f99e9294..53ba8a91 100644 #define MOUSEWHEEL_ROUTING_FOCUS 0 #define MOUSEWHEEL_ROUTING_HYBRID 1 #if(WINVER >= 0x0603) -@@ -12815,6 +16322,14 @@ typedef struct tagTouchPredictionParameters +@@ -12919,6 +16426,14 @@ typedef struct tagTouchPredictionParameters #define SPI_GETPENARBITRATIONTYPE 0x2020 #define SPI_SETPENARBITRATIONTYPE 0x2021 @@ -9820,7 +9911,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_{GET|SET}PENARBITRATIONTYPE */ #define PENARBITRATIONTYPE_NONE 0x0000 #define PENARBITRATIONTYPE_WIN8 0x0001 -@@ -12826,11 +16341,23 @@ typedef struct tagTouchPredictionParameters +@@ -12930,11 +16445,23 @@ typedef struct tagTouchPredictionParameters #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) #define SPI_GETCARETTIMEOUT 0x2022 #define SPI_SETCARETTIMEOUT 0x2023 @@ -9844,7 +9935,7 @@ index f99e9294..53ba8a91 100644 typedef enum tagHANDEDNESS { HANDEDNESS_LEFT = 0, HANDEDNESS_RIGHT -@@ -12846,6 +16373,13 @@ typedef enum tagHANDEDNESS { +@@ -12950,6 +16477,13 @@ typedef enum tagHANDEDNESS { #define SPIF_SENDWININICHANGE 0x0002 #define SPIF_SENDCHANGE SPIF_SENDWININICHANGE @@ -9858,7 +9949,7 @@ index f99e9294..53ba8a91 100644 #define METRICS_USEDEFAULT -1 #ifdef _WINGDI_ -@@ -12916,6 +16450,14 @@ typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS; +@@ -13020,6 +16554,14 @@ typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS; #define ARW_BOTTOMRIGHT 0x0001L #define ARW_TOPLEFT 0x0002L #define ARW_TOPRIGHT 0x0003L @@ -9873,7 +9964,7 @@ index f99e9294..53ba8a91 100644 #define ARW_STARTMASK 0x0003L #define ARW_STARTRIGHT 0x0001L #define ARW_STARTTOP 0x0002L -@@ -12935,7 +16477,7 @@ typedef struct tagMINIMIZEDMETRICS +@@ -13039,7 +16581,7 @@ typedef struct tagMINIMIZEDMETRICS int iWidth; int iHorzGap; int iVertGap; @@ -9882,7 +9973,7 @@ index f99e9294..53ba8a91 100644 } MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS; #ifdef _WINGDI_ -@@ -12977,7 +16519,7 @@ typedef struct tagANIMATIONINFO +@@ -13081,7 +16623,7 @@ typedef struct tagANIMATIONINFO typedef struct tagSERIALKEYSA { UINT cbSize; @@ -9891,7 +9982,7 @@ index f99e9294..53ba8a91 100644 LPSTR lpszActivePort; LPSTR lpszPort; UINT iBaudRate; -@@ -12987,7 +16529,7 @@ typedef struct tagSERIALKEYSA +@@ -13091,7 +16633,7 @@ typedef struct tagSERIALKEYSA typedef struct tagSERIALKEYSW { UINT cbSize; @@ -9900,7 +9991,7 @@ index f99e9294..53ba8a91 100644 LPWSTR lpszActivePort; LPWSTR lpszPort; UINT iBaudRate; -@@ -13007,17 +16549,24 @@ typedef LPSERIALKEYSA LPSERIALKEYS; +@@ -13111,17 +16653,24 @@ typedef LPSERIALKEYSA LPSERIALKEYS; #define SERKF_AVAILABLE 0x00000002 #define SERKF_INDICATOR 0x00000004 @@ -9927,7 +10018,7 @@ index f99e9294..53ba8a91 100644 LPWSTR lpszDefaultScheme; } HIGHCONTRASTW, *LPHIGHCONTRASTW; #ifdef UNICODE -@@ -13043,6 +16592,18 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13147,6 +16696,18 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #define HCF_DEFAULTDESKTOP 0x00000200 #define HCF_OPTION_NOTHEMECHANGE 0x00001000 @@ -9946,7 +10037,7 @@ index f99e9294..53ba8a91 100644 /* Flags for ChangeDisplaySettings */ #define CDS_UPDATEREGISTRY 0x00000001 #define CDS_TEST 0x00000002 -@@ -13053,11 +16614,30 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13157,11 +16718,30 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #if(WINVER >= 0x0600) #define CDS_ENABLE_UNSAFE_MODES 0x00000100 #define CDS_DISABLE_UNSAFE_MODES 0x00000200 @@ -9977,7 +10068,7 @@ index f99e9294..53ba8a91 100644 #include /* Return values for ChangeDisplaySettings */ -@@ -13068,8 +16648,24 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13172,8 +16752,24 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #define DISP_CHANGE_NOTUPDATED -3 #define DISP_CHANGE_BADFLAGS -4 #define DISP_CHANGE_BADPARAM -5 @@ -10002,7 +10093,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #pragma region Desktop Family -@@ -13078,41 +16674,45 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13182,41 +16778,45 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #ifdef _WINGDI_ #ifndef NOGDI @@ -10056,7 +10147,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ LPVOID lParam); #ifdef UNICODE #define ChangeDisplaySettingsEx ChangeDisplaySettingsExW -@@ -13124,19 +16724,27 @@ ChangeDisplaySettingsExW( +@@ -13228,19 +16828,27 @@ ChangeDisplaySettingsExW( #define ENUM_CURRENT_SETTINGS ((DWORD)-1) #define ENUM_REGISTRY_SETTINGS ((DWORD)-2) @@ -10086,7 +10177,7 @@ index f99e9294..53ba8a91 100644 _Inout_ DEVMODEW* lpDevMode); #ifdef UNICODE #define EnumDisplaySettings EnumDisplaySettingsW -@@ -13146,22 +16754,24 @@ EnumDisplaySettingsW( +@@ -13250,22 +16858,24 @@ EnumDisplaySettingsW( #if(WINVER >= 0x0500) @@ -10115,7 +10206,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define EnumDisplaySettingsEx EnumDisplaySettingsExW #else -@@ -13172,6 +16782,13 @@ EnumDisplaySettingsExW( +@@ -13276,6 +16886,13 @@ EnumDisplaySettingsExW( #define EDS_RAWMODE 0x00000002 #define EDS_ROTATEDMODE 0x00000004 @@ -10129,7 +10220,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13180,6 +16797,7 @@ EnumDisplayDevicesA( +@@ -13284,6 +16901,7 @@ EnumDisplayDevicesA( _In_ DWORD iDevNum, _Inout_ PDISPLAY_DEVICEA lpDisplayDevice, _In_ DWORD dwFlags); @@ -10137,7 +10228,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13201,14 +16819,16 @@ EnumDisplayDevicesW( +@@ -13305,14 +16923,16 @@ EnumDisplayDevicesW( #if(WINVER >= 0x0601) @@ -10156,7 +10247,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -13217,13 +16837,14 @@ SetDisplayConfig( +@@ -13321,13 +16941,14 @@ SetDisplayConfig( _In_reads_opt_(numPathArrayElements) DISPLAYCONFIG_PATH_INFO* pathArray, _In_ UINT32 numModeInfoArrayElements, _In_reads_opt_(numModeInfoArrayElements) DISPLAYCONFIG_MODE_INFO* modeInfoArray, @@ -10174,7 +10265,7 @@ index f99e9294..53ba8a91 100644 _Inout_ UINT32* numPathArrayElements, _Out_writes_to_(*numPathArrayElements, *numPathArrayElements) DISPLAYCONFIG_PATH_INFO* pathArray, _Inout_ UINT32* numModeInfoArrayElements, -@@ -13232,12 +16853,14 @@ QueryDisplayConfig( +@@ -13336,12 +16957,14 @@ QueryDisplayConfig( _When_(flags & QDC_DATABASE_CURRENT, _Out_) DISPLAYCONFIG_TOPOLOGY_ID* currentTopologyId); @@ -10189,7 +10280,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -13251,24 +16874,28 @@ DisplayConfigSetDeviceInfo( +@@ -13355,24 +16978,28 @@ DisplayConfigSetDeviceInfo( #endif /* _WINGDI_ */ @@ -10222,7 +10313,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define SystemParametersInfo SystemParametersInfoW #else -@@ -13277,6 +16904,8 @@ SystemParametersInfoW( +@@ -13381,6 +17008,8 @@ SystemParametersInfoW( #if(WINVER >= 0x0605) @@ -10231,7 +10322,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return != FALSE) BOOL -@@ -13331,7 +16960,7 @@ typedef struct tagFILTERKEYS +@@ -13435,7 +17064,7 @@ typedef struct tagFILTERKEYS typedef struct tagSTICKYKEYS { UINT cbSize; @@ -10240,7 +10331,7 @@ index f99e9294..53ba8a91 100644 } STICKYKEYS, *LPSTICKYKEYS; #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -13349,6 +16978,19 @@ typedef struct tagSTICKYKEYS +@@ -13453,6 +17082,19 @@ typedef struct tagSTICKYKEYS #define SKF_AUDIBLEFEEDBACK 0x00000040 #define SKF_TRISTATE 0x00000080 #define SKF_TWOKEYSOFF 0x00000100 @@ -10260,7 +10351,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0500) #define SKF_LALTLATCHED 0x10000000 #define SKF_LCTLLATCHED 0x04000000 -@@ -13366,6 +17008,26 @@ typedef struct tagSTICKYKEYS +@@ -13470,6 +17112,26 @@ typedef struct tagSTICKYKEYS #define SKF_RSHIFTLOCKED 0x00020000 #define SKF_LWINLOCKED 0x00400000 #define SKF_RWINLOCKED 0x00800000 @@ -10287,7 +10378,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #pragma region Desktop Family -@@ -13423,16 +17085,36 @@ typedef struct tagACCESSTIMEOUT +@@ -13527,16 +17189,36 @@ typedef struct tagACCESSTIMEOUT #define ATF_TIMEOUTON 0x00000001 #define ATF_ONOFFFEEDBACK 0x00000002 @@ -10324,7 +10415,7 @@ index f99e9294..53ba8a91 100644 /* values for SOUNDSENTRY iWindowsEffect field */ #define SSWF_NONE 0 #define SSWF_TITLE 1 -@@ -13440,20 +17122,29 @@ typedef struct tagACCESSTIMEOUT +@@ -13544,20 +17226,29 @@ typedef struct tagACCESSTIMEOUT #define SSWF_DISPLAY 3 #define SSWF_CUSTOM 4 @@ -10358,7 +10449,7 @@ index f99e9294..53ba8a91 100644 DWORD iWindowsEffectMSec; LPSTR lpszWindowsEffectDLL; DWORD iWindowsEffectOrdinal; -@@ -13461,14 +17152,14 @@ typedef struct tagSOUNDSENTRYA +@@ -13565,14 +17256,14 @@ typedef struct tagSOUNDSENTRYA typedef struct tagSOUNDSENTRYW { UINT cbSize; @@ -10377,7 +10468,7 @@ index f99e9294..53ba8a91 100644 DWORD iWindowsEffectMSec; LPWSTR lpszWindowsEffectDLL; DWORD iWindowsEffectOrdinal; -@@ -13491,9 +17182,17 @@ typedef LPSOUNDSENTRYA LPSOUNDSENTRY; +@@ -13595,9 +17286,17 @@ typedef LPSOUNDSENTRYA LPSOUNDSENTRY; #define SSF_AVAILABLE 0x00000002 #define SSF_INDICATOR 0x00000004 @@ -10395,7 +10486,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13556,16 +17255,28 @@ SetDebugErrorLevel( +@@ -13660,16 +17359,28 @@ SetDebugErrorLevel( #define SLE_MINORERROR 0x00000002 #define SLE_WARNING 0x00000003 @@ -10425,7 +10516,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -13576,7 +17287,7 @@ InternalGetWindowText( +@@ -13680,7 +17391,7 @@ InternalGetWindowText( #if defined(WINNT) @@ -10434,7 +10525,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI EndTask( -@@ -13605,29 +17316,39 @@ CancelShutdown( +@@ -13709,29 +17420,39 @@ CancelShutdown( #define MONITOR_DEFAULTTOPRIMARY 0x00000001 #define MONITOR_DEFAULTTONEAREST 0x00000002 @@ -10477,7 +10568,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -13685,12 +17406,14 @@ typedef LPMONITORINFOEXA LPMONITORINFOEX; +@@ -13789,12 +17510,14 @@ typedef LPMONITORINFOEXA LPMONITORINFOEX; #endif // UNICODE #endif @@ -10492,7 +10583,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13705,6 +17428,7 @@ GetMonitorInfoW( +@@ -13809,6 +17532,7 @@ GetMonitorInfoW( typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM); @@ -10500,7 +10591,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13726,6 +17450,7 @@ EnumDisplayMonitors( +@@ -13830,6 +17554,7 @@ EnumDisplayMonitors( * WinEvents - Active Accessibility hooks */ @@ -10508,7 +10599,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -13744,6 +17469,10 @@ typedef VOID (CALLBACK* WINEVENTPROC)( +@@ -13848,6 +17573,10 @@ typedef VOID (CALLBACK* WINEVENTPROC)( DWORD idEventThread, DWORD dwmsEventTime); @@ -10519,7 +10610,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINEVENTHOOK WINAPI -@@ -13757,6 +17486,7 @@ SetWinEventHook( +@@ -13861,6 +17590,7 @@ SetWinEventHook( _In_ DWORD dwFlags); #if(_WIN32_WINNT >= 0x0501) @@ -10527,7 +10618,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13778,12 +17508,16 @@ IsWinEventHookInstalled( +@@ -13882,12 +17612,16 @@ IsWinEventHookInstalled( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -10544,7 +10635,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -13828,6 +17562,24 @@ UnhookWinEvent( +@@ -13932,6 +17666,24 @@ UnhookWinEvent( #define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4) #define OBJID_NATIVEOM ((LONG)0xFFFFFFF0) @@ -10569,7 +10660,7 @@ index f99e9294..53ba8a91 100644 /* * EVENT DEFINITION */ -@@ -14391,6 +18143,15 @@ UnhookWinEvent( +@@ -14495,6 +18247,15 @@ UnhookWinEvent( #define ALERT_SYSTEM_ERROR 3 // MB_ERROR #define ALERT_SYSTEM_QUERY 4 // MB_QUESTION #define ALERT_SYSTEM_CRITICAL 5 // HardSysErrBox @@ -10585,7 +10676,7 @@ index f99e9294..53ba8a91 100644 #define CALERT_SYSTEM 6 #pragma region Desktop Family -@@ -14399,7 +18160,7 @@ UnhookWinEvent( +@@ -14503,7 +18264,7 @@ UnhookWinEvent( typedef struct tagGUITHREADINFO { DWORD cbSize; @@ -10594,7 +10685,7 @@ index f99e9294..53ba8a91 100644 HWND hwndActive; HWND hwndFocus; HWND hwndCapture; -@@ -14417,6 +18178,15 @@ typedef struct tagGUITHREADINFO +@@ -14521,6 +18282,15 @@ typedef struct tagGUITHREADINFO #define GUI_INMENUMODE 0x00000004 #define GUI_SYSTEMMENUMODE 0x00000008 #define GUI_POPUPMENUMODE 0x00000010 @@ -10610,7 +10701,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #if defined(_WIN64) #define GUI_16BITTASK 0x00000000 -@@ -14428,6 +18198,8 @@ typedef struct tagGUITHREADINFO +@@ -14532,6 +18302,8 @@ typedef struct tagGUITHREADINFO #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -10619,7 +10710,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14435,6 +18207,8 @@ GetGUIThreadInfo( +@@ -14539,6 +18311,8 @@ GetGUIThreadInfo( _In_ DWORD idThread, _Inout_ PGUITHREADINFO pgui); @@ -10628,7 +10719,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14445,12 +18219,14 @@ BlockInput( +@@ -14549,12 +18323,14 @@ BlockInput( #define USER_DEFAULT_SCREEN_DPI 96 @@ -10643,7 +10734,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14460,36 +18236,42 @@ IsProcessDPIAware( +@@ -14564,36 +18340,42 @@ IsProcessDPIAware( #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0605) @@ -10686,7 +10777,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14497,30 +18279,36 @@ AreDpiAwarenessContextsEqual( +@@ -14601,30 +18383,36 @@ AreDpiAwarenessContextsEqual( _In_ DPI_AWARENESS_CONTEXT dpiContextA, _In_ DPI_AWARENESS_CONTEXT dpiContextB); @@ -10723,7 +10814,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14537,6 +18325,8 @@ InheritWindowMonitor( +@@ -14641,6 +18429,8 @@ InheritWindowMonitor( #endif /* WINVER >= 0x0605 */ #if(WINVER >= 0x0605) @@ -10732,7 +10823,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14558,17 +18348,20 @@ GetDpiAwarenessContextForProcess( +@@ -14662,17 +18452,20 @@ GetDpiAwarenessContextForProcess( #if(WINVER >= 0x0606) @@ -10753,7 +10844,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DPI_HOSTING_BEHAVIOR WINAPI -@@ -14578,6 +18371,7 @@ GetWindowDpiHostingBehavior( +@@ -14682,6 +18475,7 @@ GetWindowDpiHostingBehavior( #endif /* WINVER >= 0x0606 */ @@ -10761,7 +10852,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14585,6 +18379,7 @@ GetWindowModuleFileNameA( +@@ -14689,6 +18483,7 @@ GetWindowModuleFileNameA( _In_ HWND hwnd, _Out_writes_to_(cchFileNameMax, return) LPSTR pszFileName, _In_ UINT cchFileNameMax); @@ -10769,7 +10860,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14624,6 +18419,15 @@ GetWindowModuleFileNameW( +@@ -14728,6 +18523,15 @@ GetWindowModuleFileNameW( #define STATE_SYSTEM_MOVEABLE 0x00040000 #define STATE_SYSTEM_SELFVOICING 0x00080000 #define STATE_SYSTEM_FOCUSABLE 0x00100000 @@ -10785,7 +10876,7 @@ index f99e9294..53ba8a91 100644 #define STATE_SYSTEM_SELECTABLE 0x00200000 #define STATE_SYSTEM_LINKED 0x00400000 #define STATE_SYSTEM_TRAVERSED 0x00800000 -@@ -14648,17 +18452,29 @@ GetWindowModuleFileNameW( +@@ -14752,17 +18556,29 @@ GetWindowModuleFileNameW( typedef struct tagCURSORINFO { DWORD cbSize; @@ -10816,7 +10907,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14679,8 +18495,8 @@ typedef struct tagWINDOWINFO +@@ -14783,8 +18599,8 @@ typedef struct tagWINDOWINFO DWORD cbSize; RECT rcWindow; RECT rcClient; @@ -10827,7 +10918,7 @@ index f99e9294..53ba8a91 100644 DWORD dwWindowStatus; UINT cxWindowBorders; UINT cyWindowBorders; -@@ -14690,6 +18506,13 @@ typedef struct tagWINDOWINFO +@@ -14794,6 +18610,13 @@ typedef struct tagWINDOWINFO #define WS_ACTIVECAPTION 0x0001 @@ -10841,7 +10932,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14707,6 +18530,8 @@ typedef struct tagTITLEBARINFO +@@ -14811,6 +18634,8 @@ typedef struct tagTITLEBARINFO DWORD rgstate[CCHILDREN_TITLEBAR + 1]; } TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO; @@ -10850,7 +10941,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14738,12 +18563,14 @@ typedef struct tagMENUBARINFO +@@ -14842,12 +18667,14 @@ typedef struct tagMENUBARINFO BOOL fUnused:30; // reserved } MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO; @@ -10866,7 +10957,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG idItem, _Inout_ PMENUBARINFO pmbi); -@@ -14761,12 +18588,14 @@ typedef struct tagSCROLLBARINFO +@@ -14865,12 +18692,14 @@ typedef struct tagSCROLLBARINFO DWORD rgstate[CCHILDREN_SCROLLBAR + 1]; } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO; @@ -10882,7 +10973,7 @@ index f99e9294..53ba8a91 100644 _Inout_ PSCROLLBARINFO psbi); /* -@@ -14777,12 +18606,14 @@ typedef struct tagCOMBOBOXINFO +@@ -14881,12 +18710,14 @@ typedef struct tagCOMBOBOXINFO DWORD cbSize; RECT rcItem; RECT rcButton; @@ -10898,7 +10989,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14800,15 +18631,23 @@ GetComboBoxInfo( +@@ -14904,15 +18735,23 @@ GetComboBoxInfo( #define GA_ROOT 2 #define GA_ROOTOWNER 3 @@ -10923,7 +11014,7 @@ index f99e9294..53ba8a91 100644 /* -@@ -14817,6 +18656,7 @@ GetAncestor( +@@ -14921,6 +18760,7 @@ GetAncestor( * fields will get returned. In other words, it is kind of a cross between * ChildWindowFromPointEx and WindowFromPoint. */ @@ -10931,7 +11022,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -14840,6 +18680,8 @@ RealGetWindowClassA( +@@ -14944,6 +18784,8 @@ RealGetWindowClassA( * This gets the name of the window TYPE, not class. This allows us to * recognize ThunderButton32 et al. */ @@ -10940,7 +11031,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14869,6 +18711,8 @@ typedef struct tagALTTABINFO +@@ -14973,6 +18815,8 @@ typedef struct tagALTTABINFO POINT ptStart; } ALTTABINFO, *PALTTABINFO, *LPALTTABINFO; @@ -10949,7 +11040,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14878,6 +18722,8 @@ GetAltTabInfoA( +@@ -14982,6 +18826,8 @@ GetAltTabInfoA( _Inout_ PALTTABINFO pati, _Out_writes_opt_(cchItemText) LPSTR pszItemText, _In_ UINT cchItemText); @@ -10958,7 +11049,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14897,6 +18743,7 @@ GetAltTabInfoW( +@@ -15001,6 +18847,7 @@ GetAltTabInfoW( * Listbox information. * Returns the number of items per row. */ @@ -10966,7 +11057,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -14914,6 +18761,8 @@ GetListBoxInfo( +@@ -15018,6 +18865,8 @@ GetListBoxInfo( #if(_WIN32_WINNT >= 0x0500) @@ -10975,7 +11066,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14923,6 +18772,8 @@ LockWorkStation( +@@ -15027,6 +18876,8 @@ LockWorkStation( #if(_WIN32_WINNT >= 0x0500) @@ -10984,7 +11075,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14946,5 +18797,8 @@ +@@ -15050,5 +18901,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) DECLARE_HANDLE(HRAWINPUT); @@ -10993,7 +11084,7 @@ index f99e9294..53ba8a91 100644 +#endif #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -14994,6 +18848,13 @@ typedef struct tagRAWINPUTHEADER { +@@ -15098,6 +18952,13 @@ typedef struct tagRAWINPUTHEADER { #define RIM_TYPEMOUSE 0 #define RIM_TYPEKEYBOARD 1 #define RIM_TYPEHID 2 @@ -11007,7 +11098,7 @@ index f99e9294..53ba8a91 100644 #define RIM_TYPEMAX 2 #pragma region Desktop Family -@@ -15012,7 +18873,7 @@ typedef struct tagRAWMOUSE { +@@ -15116,7 +18977,7 @@ typedef struct tagRAWMOUSE { /* * Indicator flags. */ @@ -11016,7 +11107,7 @@ index f99e9294..53ba8a91 100644 /* * The transition state of the mouse buttons. -@@ -15094,8 +18955,21 @@ typedef struct tagRAWMOUSE { +@@ -15198,8 +19059,21 @@ typedef struct tagRAWMOUSE { #define MOUSE_MOVE_ABSOLUTE 1 #define MOUSE_VIRTUAL_DESKTOP 0x02 // the coordinates are mapped to the virtual desktop #define MOUSE_ATTRIBUTES_CHANGED 0x04 // requery for mouse attributes @@ -11038,7 +11129,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ // NOTE: 0x100 is already claimed by MOUSE_TERMSRV_SRC_SHADOW in ntddmou.w -@@ -15201,15 +19075,22 @@ typedef struct tagRAWINPUT { +@@ -15305,15 +19179,22 @@ typedef struct tagRAWINPUT { #define RID_INPUT 0x10000003 #define RID_HEADER 0x10000005 @@ -11062,7 +11153,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_bytes_to_opt_(*pcbSize, return) LPVOID pData, _Inout_ PUINT pcbSize, _In_ UINT cbSizeHeader); -@@ -15224,6 +19105,13 @@ GetRawInputData( +@@ -15328,6 +19209,13 @@ GetRawInputData( #define RIDI_DEVICENAME 0x20000007 // the return valus is the character length, not the byte size #define RIDI_DEVICEINFO 0x2000000b @@ -11076,7 +11167,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -15257,7 +19145,7 @@ typedef struct tagRID_DEVICE_INFO_HID { +@@ -15361,7 +19249,7 @@ typedef struct tagRID_DEVICE_INFO_HID { typedef struct tagRID_DEVICE_INFO { DWORD cbSize; @@ -11085,7 +11176,7 @@ index f99e9294..53ba8a91 100644 union { RID_DEVICE_INFO_MOUSE mouse; RID_DEVICE_INFO_KEYBOARD keyboard; -@@ -15265,20 +19153,24 @@ typedef struct tagRID_DEVICE_INFO { +@@ -15369,20 +19257,24 @@ typedef struct tagRID_DEVICE_INFO { } DUMMYUNIONNAME; } RID_DEVICE_INFO, *PRID_DEVICE_INFO, *LPRID_DEVICE_INFO; @@ -11112,7 +11203,7 @@ index f99e9294..53ba8a91 100644 _Inout_updates_bytes_to_opt_(*pcbSize, *pcbSize) LPVOID pData, _Inout_ PUINT pcbSize); #ifdef UNICODE -@@ -15291,6 +19183,8 @@ GetRawInputDeviceInfoW( +@@ -15395,6 +19287,8 @@ GetRawInputDeviceInfoW( /* * Raw Input Bulk Read: GetRawInputBuffer */ @@ -11121,7 +11212,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15305,7 +19199,7 @@ GetRawInputBuffer( +@@ -15409,7 +19303,7 @@ GetRawInputBuffer( typedef struct tagRAWINPUTDEVICE { USHORT usUsagePage; // Toplevel collection UsagePage USHORT usUsage; // Toplevel collection Usage @@ -11130,7 +11221,7 @@ index f99e9294..53ba8a91 100644 HWND hwndTarget; // Target hwnd. NULL = follows keyboard focus } RAWINPUTDEVICE, *PRAWINPUTDEVICE, *LPRAWINPUTDEVICE; -@@ -15322,9 +19216,27 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; +@@ -15426,9 +19320,27 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; #define RIDEV_CAPTUREMOUSE 0x00000200 // effective when mouse nolegacy is specified, otherwise it would be an error #define RIDEV_NOHOTKEYS 0x00000200 // effective for keyboard. #define RIDEV_APPKEYS 0x00000400 // effective for keyboard. @@ -11158,7 +11249,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define RIDEV_EXMODEMASK 0x000000F0 -@@ -15347,6 +19259,8 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; +@@ -15451,6 +19363,8 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11167,7 +11258,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15355,6 +19269,8 @@ RegisterRawInputDevices( +@@ -15459,6 +19373,8 @@ RegisterRawInputDevices( _In_ UINT uiNumDevices, _In_ UINT cbSize); @@ -11176,7 +11267,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15366,9 +19282,11 @@ GetRegisteredRawInputDevices( +@@ -15470,9 +19386,11 @@ GetRegisteredRawInputDevices( typedef struct tagRAWINPUTDEVICELIST { HANDLE hDevice; @@ -11189,7 +11280,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15377,6 +19295,7 @@ GetRawInputDeviceList( +@@ -15481,6 +19399,7 @@ GetRawInputDeviceList( _Inout_ PUINT puiNumDevices, _In_ UINT cbSize); @@ -11197,7 +11288,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -15456,6 +19375,8 @@ typedef struct tagPOINTER_DEVICE_CURSOR_INFO { +@@ -15560,6 +19479,8 @@ typedef struct tagPOINTER_DEVICE_CURSOR_INFO { POINTER_DEVICE_CURSOR_TYPE cursor; } POINTER_DEVICE_CURSOR_INFO; @@ -11206,7 +11297,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15463,6 +19384,8 @@ GetPointerDevices( +@@ -15567,6 +19488,8 @@ GetPointerDevices( _Inout_ UINT32* deviceCount, _Out_writes_opt_(*deviceCount) POINTER_DEVICE_INFO *pointerDevices); @@ -11215,7 +11306,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15470,6 +19393,8 @@ GetPointerDevice( +@@ -15574,6 +19497,8 @@ GetPointerDevice( _In_ HANDLE device, _Out_writes_(1) POINTER_DEVICE_INFO *pointerDevice); @@ -11224,7 +11315,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15478,6 +19403,8 @@ GetPointerDeviceProperties( +@@ -15582,6 +19507,8 @@ GetPointerDeviceProperties( _Inout_ UINT32* propertyCount, _Out_writes_opt_(*propertyCount) POINTER_DEVICE_PROPERTY *pointerProperties); @@ -11233,7 +11324,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15485,6 +19412,8 @@ RegisterPointerDeviceNotifications( +@@ -15589,6 +19516,8 @@ RegisterPointerDeviceNotifications( _In_ HWND window, _In_ BOOL notifyRange); @@ -11242,7 +11333,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15493,6 +19422,8 @@ GetPointerDeviceRects( +@@ -15597,6 +19526,8 @@ GetPointerDeviceRects( _Out_writes_(1) RECT* pointerDeviceRect, _Out_writes_(1) RECT* displayRect); @@ -11251,7 +11342,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15501,6 +19432,8 @@ GetPointerDeviceCursors( +@@ -15605,6 +19536,8 @@ GetPointerDeviceCursors( _Inout_ UINT32* cursorCount, _Out_writes_opt_(*cursorCount) POINTER_DEVICE_CURSOR_INFO *deviceCursors); @@ -11260,7 +11351,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15622,15 +19555,23 @@ typedef struct tagTOUCHPAD_PARAMETERS_V2 { +@@ -15747,15 +19680,23 @@ typedef struct tagTOUCHPAD_PARAMETERS_V2 { #define MSGFLT_ADD 1 #define MSGFLT_REMOVE 2 @@ -11285,7 +11376,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -15647,12 +19588,20 @@ ChangeWindowMessageFilter( +@@ -15772,12 +19713,20 @@ ChangeWindowMessageFilter( #define MSGFLTINFO_ALREADYDISALLOWED_FORWND (2) #define MSGFLTINFO_ALLOWED_HIGHER (3) @@ -11307,7 +11398,7 @@ index f99e9294..53ba8a91 100644 } CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT; #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15665,16 +19614,25 @@ typedef struct tagCHANGEFILTERSTRUCT { +@@ -15790,16 +19739,25 @@ typedef struct tagCHANGEFILTERSTRUCT { #define MSGFLT_ALLOW (1) #define MSGFLT_DISALLOW (2) @@ -11334,7 +11425,7 @@ index f99e9294..53ba8a91 100644 _Inout_opt_ PCHANGEFILTERSTRUCT pChangeFilterStruct); // Optional #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15698,5 +19656,8 @@ +@@ -15823,5 +19781,8 @@ * Gesture information handle */ DECLARE_HANDLE(HGESTUREINFO); @@ -11343,7 +11434,7 @@ index f99e9294..53ba8a91 100644 +#endif #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15721,6 +19682,18 @@ DECLARE_HANDLE(HGESTUREINFO); +@@ -15846,6 +19807,18 @@ DECLARE_HANDLE(HGESTUREINFO); #define GID_PRESSANDTAP 7 #define GID_ROLLOVER GID_PRESSANDTAP @@ -11362,7 +11453,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -15773,6 +19746,8 @@ typedef struct tagGESTURENOTIFYSTRUCT { +@@ -15898,6 +19871,8 @@ typedef struct tagGESTURENOTIFYSTRUCT { * Gesture information retrieval * - HGESTUREINFO is received by a window in the lParam of a WM_GESTURE message. */ @@ -11371,7 +11462,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15786,6 +19761,8 @@ GetGestureInfo( +@@ -15911,6 +19886,8 @@ GetGestureInfo( * - Size, in bytes, of the extra argument data is available in the cbExtraArgs * field of the GESTUREINFO structure retrieved using the GetGestureInfo function. */ @@ -11380,7 +11471,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15804,6 +19781,8 @@ GetGestureExtraArgs( +@@ -15929,6 +19906,8 @@ GetGestureExtraArgs( * one of the PostMessage or SendMessage class of API functions, the handle * is transfered with the message and need not be closed by the application. */ @@ -11389,7 +11480,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15819,7 +19798,7 @@ CloseGestureInfoHandle( +@@ -15944,7 +19923,7 @@ CloseGestureInfoHandle( * system defaults. */ typedef struct tagGESTURECONFIG { @@ -11398,7 +11489,7 @@ index f99e9294..53ba8a91 100644 DWORD dwWant; // settings related to gesture ID that are to be turned on DWORD dwBlock; // settings related to gesture ID that are to be turned off } GESTURECONFIG, *PGESTURECONFIG; -@@ -15866,12 +19845,29 @@ typedef struct tagGESTURECONFIG { +@@ -15991,12 +19970,29 @@ typedef struct tagGESTURECONFIG { #define GC_PRESSANDTAP 0x00000001 #define GC_ROLLOVER GC_PRESSANDTAP @@ -11428,7 +11519,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15887,6 +19883,8 @@ SetGestureConfig( +@@ -16012,6 +20008,8 @@ SetGestureConfig( #define GCF_INCLUDE_ANCESTORS 0x00000001 // If specified, GetGestureConfig returns consolidated configuration // for the specified window and it's parent window chain @@ -11437,7 +11528,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15927,6 +19925,8 @@ GetGestureConfig( +@@ -16052,6 +20050,8 @@ GetGestureConfig( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11446,7 +11537,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15934,6 +19934,8 @@ ShutdownBlockReasonCreate( +@@ -16059,6 +20059,8 @@ ShutdownBlockReasonCreate( _In_ HWND hWnd, _In_ LPCWSTR pwszReason); @@ -11455,7 +11546,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15942,6 +19944,8 @@ ShutdownBlockReasonQuery( +@@ -16067,6 +20069,8 @@ ShutdownBlockReasonQuery( _Out_writes_opt_(*pcchBuff) LPWSTR pwszBuff, _Inout_ DWORD *pcchBuff); @@ -11464,7 +11555,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15990,12 +19994,15 @@ typedef enum tagINPUT_MESSAGE_ORIGIN_ID { +@@ -16115,12 +20119,15 @@ typedef enum tagINPUT_MESSAGE_ORIGIN_ID { /* * API to determine the input source of the current messsage. */ @@ -11480,7 +11571,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16097,12 +20104,16 @@ SetDisplayAutoRotationPreferences( +@@ -16222,12 +20229,16 @@ SetDisplayAutoRotationPreferences( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11497,7 +11588,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16486,6 +20497,3 @@ EnterMoveSizeLoop( +@@ -16611,6 +20622,3 @@ EnterMoveSizeLoop( #endif /* __cplusplus */ #endif /* !_WINUSER_ */ From e75d97dcb70fc8197f08b15ad3c8f00f3044525f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Fri, 23 Oct 2026 22:29:36 -0700 Subject: [PATCH 45/57] Align SDK annotation preparation with SDK 28000 Pin the shipped SDK28000 source, original-IDL closure and MIDL tools. Include the new native D3D12 marker-enum input unchanged. Move the GetBestInterfaceEx availability annotation to its actual user-mode provider and stop selecting the removed shader-cache native source, while retaining its historical patch asset. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinSDK/Partitions/Direct3D/main.cpp | 1 - .../WinSDK/Partitions/Direct3D/settings.rsp | 1 - generation/WinSDK/patches/SdkHeaders.json | 2891 ++++++++--------- .../WinSDK/patches/shared/netioapi.h.patch | 146 +- generation/WinSDK/patches/um/iphlpapi.h.patch | 177 +- 5 files changed, 1603 insertions(+), 1613 deletions(-) diff --git a/generation/WinSDK/Partitions/Direct3D/main.cpp b/generation/WinSDK/Partitions/Direct3D/main.cpp index e837e324e..25fe2b07d 100644 --- a/generation/WinSDK/Partitions/Direct3D/main.cpp +++ b/generation/WinSDK/Partitions/Direct3D/main.cpp @@ -9,4 +9,3 @@ #define D3D11_NO_HELPERS #include -#include diff --git a/generation/WinSDK/Partitions/Direct3D/settings.rsp b/generation/WinSDK/Partitions/Direct3D/settings.rsp index 06bec92d2..74b3acb26 100644 --- a/generation/WinSDK/Partitions/Direct3D/settings.rsp +++ b/generation/WinSDK/Partitions/Direct3D/settings.rsp @@ -1,6 +1,5 @@ --traverse /um/d3dcommon.h -/um/d3dshadercacheregistration.h --namespace Windows.Win32.Graphics.Direct3D --config diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 01782bf0b..cb8805419 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -1,6955 +1,6954 @@ { "schemaVersion": 1, - "sdkPackageVersion": "10.0.26100.7705", + "sdkPackageVersion": "10.0.28000.2705", "sourceStage": "post-midl", - "sourceGitTree": "c51eb645ad845ba2c2fa264cbc208af9431ef9c1", + "sourceGitTree": "e9b175f05749125349ecb42f72fc01cf3da49425", "headers": [ { "path": "um\\winnt.h", - "sourceSha256": "8693F0AD4ADA355C912D40CA41CE929B480E92291BDA2F9227ACF56736BFFBFF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winnt.h", - "sdkSha256": "8693F0AD4ADA355C912D40CA41CE929B480E92291BDA2F9227ACF56736BFFBFF" + "sourceSha256": "FB3D10C0DCC86C737C91652182B81F6BFF33A189803570B8DCAA818C96C5B99A", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winnt.h", + "sdkSha256": "FB3D10C0DCC86C737C91652182B81F6BFF33A189803570B8DCAA818C96C5B99A" }, { "path": "shared\\winerror.h", - "sourceSha256": "0284EA46280C14063BB714D08C9EC48DE18DE6A7F0384323B263FEC234428833", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winerror.h", - "sdkSha256": "0284EA46280C14063BB714D08C9EC48DE18DE6A7F0384323B263FEC234428833" + "sourceSha256": "F42853B8BE5115028850EB932908376EA8D0AE4BCB1FE867D394841FBD707B75", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winerror.h", + "sdkSha256": "F42853B8BE5115028850EB932908376EA8D0AE4BCB1FE867D394841FBD707B75" }, { "path": "um\\SetupAPI.h", "sourceSha256": "3C027FD246AA6828287B0AC2496806FEF70FB8CB05ED75FBCEB57EB0E9369EEB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SetupAPI.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SetupAPI.h", "sdkSha256": "3C027FD246AA6828287B0AC2496806FEF70FB8CB05ED75FBCEB57EB0E9369EEB" }, { "path": "shared\\sal.h", "sourceSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sal.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sal.h", "sdkSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1" }, { "path": "um\\winhttp.h", "sourceSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winhttp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winhttp.h", "sdkSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2" }, { "path": "um\\httprequest.h", "sourceSha256": "84D9B00F3AC18FAC5A97DB772FE486CA80BF80BDCF6F46F98CA31D3FD1636F93", - "sdkPath": "c\\include\\10.0.26100.0\\um\\httprequest.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\httprequest.idl", "sdkSha256": "671F997E30FF1108FF4C7FB03631B3E4B1CABF05B8A31D14F5E4802D6FA997AE" }, { "path": "um\\windowsceip.h", "sourceSha256": "E36C721AC6CFB49C05C88380C3A9557C75A7E564DB52C5E039565FE0FEC8E98A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windowsceip.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windowsceip.h", "sdkSha256": "E36C721AC6CFB49C05C88380C3A9557C75A7E564DB52C5E039565FE0FEC8E98A" }, { "path": "um\\avrfsdk.h", "sourceSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\avrfsdk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\avrfsdk.h", "sdkSha256": "6E92EEEE0F2C2D18D05662C9E7DB623E4BB0E005384FC86FD53C6525AFB75BB8" }, { "path": "um\\magnification.h", "sourceSha256": "886BA6F9181C1B747FF704E3181BC64980FD60B828366F2B3CC3DD10E8EB7A84", - "sdkPath": "c\\include\\10.0.26100.0\\um\\magnification.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\magnification.h", "sdkSha256": "886BA6F9181C1B747FF704E3181BC64980FD60B828366F2B3CC3DD10E8EB7A84" }, { "path": "um\\Psapi.h", "sourceSha256": "4166FBCE43622F469AA46CD1CEA27A73171353DF8101643C2E850124622D5EF9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Psapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Psapi.h", "sdkSha256": "4166FBCE43622F469AA46CD1CEA27A73171353DF8101643C2E850124622D5EF9" }, { "path": "um\\timezoneapi.h", "sourceSha256": "621C0252A8A831813592C4A95E183A2E7AE55EFBBD7B8AD886AF7D8871FC4D50", - "sdkPath": "c\\include\\10.0.26100.0\\um\\timezoneapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\timezoneapi.h", "sdkSha256": "621C0252A8A831813592C4A95E183A2E7AE55EFBBD7B8AD886AF7D8871FC4D50" }, { "path": "um\\timeprov.h", "sourceSha256": "1B6D2B953BDEB46646F652EF90746911A51891DC32A83A3468EBA502A509F6D0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\timeprov.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\timeprov.h", "sdkSha256": "1B6D2B953BDEB46646F652EF90746911A51891DC32A83A3468EBA502A509F6D0" }, { "path": "um\\ual.h", "sourceSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ual.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ual.h", "sdkSha256": "8F6F6100CDC709892961807F820DEF6D73101FB1020227EDD9CF1C317560D6EB" }, { "path": "um\\TlHelp32.h", "sourceSha256": "1E9CFA226EDA9E8767EB6A3CDC300DB2CC0986744913D524B6C0C80C435FC9A1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\TlHelp32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\TlHelp32.h", "sdkSha256": "1E9CFA226EDA9E8767EB6A3CDC300DB2CC0986744913D524B6C0C80C435FC9A1" }, { "path": "um\\waasapi.h", "sourceSha256": "4BF901F1C9E8E407925DBADE8E022B1EB4D1946CCACA0FF7DEA5F88D8E4A4D45", - "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\waasapi.idl", "sdkSha256": "A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38" }, { "path": "um\\waasapitypes.h", "sourceSha256": "D61D87E4A316ECF0CBA6529A38CB48F148ADD0D94C7C81EADC44D9B4D1867738", - "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapitypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\waasapitypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" }, { "path": "um\\PropIdlBase.h", "sourceSha256": "D5F5F8E552BE2D9E7313CA0D4522B02A071ADCA0507642299A2D2293CFBBDD01", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propidlbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propidlbase.idl", "sdkSha256": "0C7803172E592422CB636DD6E6224F61381CD3D1E043041D0A94854A0C51252C" }, { "path": "um\\PropIdl.h", "sourceSha256": "8B76E3D535F092F914F8B82B020318AEC557049E98A6C327419321873868FCE7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propidl.idl", "sdkSha256": "6F81BD32D2160425665A7EFB79C16D8FF327BFE0F070E4F2E7DED05817409A6A" }, { "path": "um\\wslapi.h", "sourceSha256": "8FC3666F77C58986F0F6E8427536F4AE301239C8C31844117ED22162EB6D5D49", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wslapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wslapi.h", "sdkSha256": "8FC3666F77C58986F0F6E8427536F4AE301239C8C31844117ED22162EB6D5D49" }, { "path": "um\\Xinput.h", "sourceSha256": "EE657D80B788EEAE76ED0D63932ED8AD619E001D8C2BBA5BF670837F07DDB3B4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Xinput.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Xinput.h", "sdkSha256": "EE657D80B788EEAE76ED0D63932ED8AD619E001D8C2BBA5BF670837F07DDB3B4" }, { "path": "um\\iwscapi.h", "sourceSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iwscapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iwscapi.h", "sdkSha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8" }, { "path": "um\\Wscapi.h", "sourceSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Wscapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Wscapi.h", "sdkSha256": "34E079E0DDF931DDD634BB8E99EE0FC467D134531920C40E25C233427E182B5B" }, { "path": "um\\winsatcominterfacei.h", "sourceSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsatcominterfacei.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsatcominterfacei.h", "sdkSha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3" }, { "path": "um\\wcmapi.h", "sourceSha256": "06BF23E24924AF388A1039E9441E3A00569B1F63B2BACD30AEFF1155D17B14FE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wcmapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wcmapi.h", "sdkSha256": "06BF23E24924AF388A1039E9441E3A00569B1F63B2BACD30AEFF1155D17B14FE" }, { "path": "um\\RadialControllerInterop.h", "sourceSha256": "33B813E9A18CA0CC098D8D5D068B72BF76D42FA228F622449685399D6EABA14D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\RadialControllerInterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\RadialControllerInterop.idl", "sdkSha256": "FD6A57358A3B3527076A6D982C0BDCDC47B0150DD769962731E8C268B7EF9EEF" }, { "path": "um\\IContact.h", "sourceSha256": "B9E7611C0328B160E3E7B62AACECFCE82FACBB00681AD281730452322F9BFA13", - "sdkPath": "c\\include\\10.0.26100.0\\um\\IContact.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\IContact.idl", "sdkSha256": "DCC9C8D2A58B422BF4515494C3028A366687DDC875F9250FAE574E1298DC6ABD" }, { "path": "um\\contactaggregation.h", "sourceSha256": "4D0949D0E0400070BE16C0B72C51A71AFBF7D5FD4EA0BFCC5E1B3798E079575A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\contactaggregation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\contactaggregation.idl", "sdkSha256": "20BA280603DD19B48AEF891596073769916317802F5A0AA21297F02350EE6159" }, { "path": "um\\icontactproperties.h", "sourceSha256": "19A449C82651190007CCC4B56AEBDEBF7CEB95251BBA60F30E4F619FDC64DB26", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icontactproperties.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icontactproperties.h", "sdkSha256": "19A449C82651190007CCC4B56AEBDEBF7CEB95251BBA60F30E4F619FDC64DB26" }, { "path": "shared\\gnssdriver.h", "sourceSha256": "EF03674C6ECA66C55D65F3C1AA6B419DDF24D76CD227EDA95B60AF1B356A8F11", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\gnssdriver.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\gnssdriver.h", "sdkSha256": "EF03674C6ECA66C55D65F3C1AA6B419DDF24D76CD227EDA95B60AF1B356A8F11" }, { "path": "um\\locationapi.h", "sourceSha256": "565800816BE42A0B059BE0B5296C84E85F8FEF59E0E98CAD83BC6F7C5C935471", - "sdkPath": "c\\include\\10.0.26100.0\\um\\locationapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\locationapi.h", "sdkSha256": "565800816BE42A0B059BE0B5296C84E85F8FEF59E0E98CAD83BC6F7C5C935471" }, { "path": "um\\msrdc.h", "sourceSha256": "F5D0B91C185535A176E91A5D8F2076BB4124EA76DE5D8E4A7FB814CF65CDD19D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msrdc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msrdc.idl", "sdkSha256": "4470145098F210805D6893F68D438911C647FE814B5E7E3138C2BFC6453C2177" }, { "path": "um\\netlistmgr.h", "sourceSha256": "61D5529E64622D1B47C8BC1700FDA8EABA6818A4B76DCC7CE1575D41DCF87AAF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netlistmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netlistmgr.idl", "sdkSha256": "C334776532B435450D5DA0E0EF4F92B5A8B639B13E737221CC1B47A5787D8E54" }, { "path": "um\\callobj.h", "sourceSha256": "ABAC062F0ADDAF42B97B72BA556785169ECBA23188015423A460BA7A5AF3B305", - "sdkPath": "c\\include\\10.0.26100.0\\um\\callobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\callobj.idl", "sdkSha256": "CEF9673107F25AEEC0FDD86A62F69A4C897D2455603F6E95D4E3A8F1DD4EEFC0" }, { "path": "um\\EventSys.h", "sourceSha256": "4F728FEF9AA5666482B448DCDCB908078429ACE810C388D430EEB46C17824016", - "sdkPath": "c\\include\\10.0.26100.0\\um\\EventSys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\EventSys.idl", "sdkSha256": "FB9D8FCAB51FF13E259E06D4B899FE12C2399557FA16827F2876B6451028D728" }, { "path": "um\\nb30.h", "sourceSha256": "69759909F41583263F20CADFE1A013F023BA89A6A7752DCCC16240B1E9B5FC1B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\nb30.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\nb30.h", "sdkSha256": "69759909F41583263F20CADFE1A013F023BA89A6A7752DCCC16240B1E9B5FC1B" }, { "path": "um\\winnetwk.h", "sourceSha256": "7C7412DF502FB6EA390C96D7C9F805A2A211609B95B8FDB4740540F789D9C4CE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winnetwk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winnetwk.h", "sdkSha256": "7C7412DF502FB6EA390C96D7C9F805A2A211609B95B8FDB4740540F789D9C4CE" }, { "path": "um\\Npapi.h", "sourceSha256": "78986BC3A057E7FC0B6D10FDC4D0E1B1FF54B5B2F5BC198598ED1F224002F0DC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Npapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Npapi.h", "sdkSha256": "78986BC3A057E7FC0B6D10FDC4D0E1B1FF54B5B2F5BC198598ED1F224002F0DC" }, { "path": "um\\Dhcpv6cSdk.h", - "sourceSha256": "1018C3FBEAF08B3B11DA6E9AF89BBCC98724561EEB363F4CA2F61D14FB8415A6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Dhcpv6cSdk.h", - "sdkSha256": "1018C3FBEAF08B3B11DA6E9AF89BBCC98724561EEB363F4CA2F61D14FB8415A6" + "sourceSha256": "FCFDCC31D9AB6DE591FC1F2A835C67147A42A696E1462BDD295DA7E333FC2024", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Dhcpv6cSdk.h", + "sdkSha256": "FCFDCC31D9AB6DE591FC1F2A835C67147A42A696E1462BDD295DA7E333FC2024" }, { "path": "um\\DhcpCSdk.h", - "sourceSha256": "0A5B9BD25AD8D9079506229D06DD5A16999DE9177EFABCBE5E1C569F2E4BECFB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\DhcpCSdk.h", - "sdkSha256": "0A5B9BD25AD8D9079506229D06DD5A16999DE9177EFABCBE5E1C569F2E4BECFB" + "sourceSha256": "5F9B26A6191FCECE5306AE8C3B2A6314230A1D407DA44BF857B257CA145D4C6C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\DhcpCSdk.h", + "sdkSha256": "5F9B26A6191FCECE5306AE8C3B2A6314230A1D407DA44BF857B257CA145D4C6C" }, { "path": "um\\DhcpSSdk.h", "sourceSha256": "7A1821118531FD531E211E6ECB69E7BA283D2A24E71202691F04B12B58F3023A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\DhcpSSdk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\DhcpSSdk.h", "sdkSha256": "7A1821118531FD531E211E6ECB69E7BA283D2A24E71202691F04B12B58F3023A" }, { "path": "um\\dhcpsapi.h", "sourceSha256": "A2CFDA0309F30B167D08218C6FFE89E57B860A2690A6F49650D4A252A8A0AC4D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dhcpsapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dhcpsapi.h", "sdkSha256": "A2CFDA0309F30B167D08218C6FFE89E57B860A2690A6F49650D4A252A8A0AC4D" }, { "path": "um\\NetSh.h", "sourceSha256": "5AFA73066E9F0875B348F082FF9F158B33812B566DECE3D0A338CEC9961D940B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\NetSh.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\NetSh.h", "sdkSha256": "5AFA73066E9F0875B348F082FF9F158B33812B566DECE3D0A338CEC9961D940B" }, { "path": "um\\bluetoothapis.h", "sourceSha256": "9253AB24097AFC6BDFC9C01D4E1AF404AD3C07E2C40DFD00A5772F7455AD9CBF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bluetoothapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bluetoothapis.h", "sdkSha256": "9253AB24097AFC6BDFC9C01D4E1AF404AD3C07E2C40DFD00A5772F7455AD9CBF" }, { "path": "um\\bluetoothleapis.h", "sourceSha256": "17EFD0367A3EC5A6FD2D61318AEBA69ED5F7AE5DBB3BC24AF0014FB0A5476D99", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bluetoothleapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bluetoothleapis.h", "sdkSha256": "17EFD0367A3EC5A6FD2D61318AEBA69ED5F7AE5DBB3BC24AF0014FB0A5476D99" }, { "path": "um\\ws2bth.h", "sourceSha256": "E4A7B6EF2DCFFBB736F826E475046916AF6C26C96282D5411EA71350CCCC5271", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ws2bth.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ws2bth.h", "sdkSha256": "E4A7B6EF2DCFFBB736F826E475046916AF6C26C96282D5411EA71350CCCC5271" }, { "path": "um\\dinput.h", "sourceSha256": "FF440B043BB853835E6BD3E641EE3BFD11B63FC08AF7A935BAB2983F2A52070A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dinput.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dinput.h", "sdkSha256": "FF440B043BB853835E6BD3E641EE3BFD11B63FC08AF7A935BAB2983F2A52070A" }, { "path": "shared\\hidpi.h", "sourceSha256": "0A2A18C3F6347B0CA5D33DC74ABC4A81160B2F5C5A23A83AEE063421BA87D09C", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\hidpi.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\hidpi.h", "sdkSha256": "0A2A18C3F6347B0CA5D33DC74ABC4A81160B2F5C5A23A83AEE063421BA87D09C" }, { "path": "um\\devfiltertypes.h", "sourceSha256": "2F37EFE3FC233B830BAC96E9733D269847200D5E85586E67A1423B699C642896", - "sdkPath": "c\\include\\10.0.26100.0\\um\\devfiltertypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\devfiltertypes.h", "sdkSha256": "2F37EFE3FC233B830BAC96E9733D269847200D5E85586E67A1423B699C642896" }, { "path": "um\\dwmapi.h", - "sourceSha256": "CB7AA3810F0676539FB8222D70A04D3F934D0ED0E7CA226531820C650FF6E314", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dwmapi.h", - "sdkSha256": "CB7AA3810F0676539FB8222D70A04D3F934D0ED0E7CA226531820C650FF6E314" + "sourceSha256": "7E3AA7831600503A1C08DE9646406F52CC8AE69A8CF7DC524B7BFB63FE049EA1", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dwmapi.h", + "sdkSha256": "7E3AA7831600503A1C08DE9646406F52CC8AE69A8CF7DC524B7BFB63FE049EA1" }, { "path": "um\\WerApi.h", "sourceSha256": "0CF852DAF581826BEB6F5D3C3F60B759E143B72CA958C74B7057F5003F546F46", - "sdkPath": "c\\include\\10.0.26100.0\\um\\WerApi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\WerApi.h", "sdkSha256": "0CF852DAF581826BEB6F5D3C3F60B759E143B72CA958C74B7057F5003F546F46" }, { "path": "um\\ErrorRep.h", "sourceSha256": "2EEB745D0BE079168310A031514C04AAD7C2E818D762069EDB41B34C67B1E8A5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ErrorRep.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ErrorRep.h", "sdkSha256": "2EEB745D0BE079168310A031514C04AAD7C2E818D762069EDB41B34C67B1E8A5" }, { "path": "um\\EvColl.h", "sourceSha256": "F50C9DBCB7B7B52C5171A77DA8779AF378304AB344E7B30D909EF32D909763EB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\EvColl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\EvColl.h", "sdkSha256": "F50C9DBCB7B7B52C5171A77DA8779AF378304AB344E7B30D909EF32D909763EB" }, { "path": "um\\powrprof.h", "sourceSha256": "2075A213F792A8206C510E26D94A81FF4E1A59F0168A3FD900822D14E863CEB1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\powrprof.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\powrprof.h", "sdkSha256": "2075A213F792A8206C510E26D94A81FF4E1A59F0168A3FD900822D14E863CEB1" }, { "path": "um\\powersetting.h", "sourceSha256": "68FDCDB5586156AE65DE15738FF040C5FD303B5EF97CDC7EE448D96EEC0488E6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\powersetting.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\powersetting.h", "sdkSha256": "68FDCDB5586156AE65DE15738FF040C5FD303B5EF97CDC7EE448D96EEC0488E6" }, { "path": "um\\powerbase.h", "sourceSha256": "66082F57FF576850899FA3DEB4779C0B762163A70946D0BE4DF78F3A2A506FB2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\powerbase.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\powerbase.h", "sdkSha256": "66082F57FF576850899FA3DEB4779C0B762163A70946D0BE4DF78F3A2A506FB2" }, { "path": "shared\\poclass.h", - "sourceSha256": "77D0D1F11EC072568818F4D82217EF22BADBD39747FF2729553A7F619C27CE31", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\poclass.h", - "sdkSha256": "77D0D1F11EC072568818F4D82217EF22BADBD39747FF2729553A7F619C27CE31" + "sourceSha256": "7F784DD23CB2C89E715C9F617DFBE8B9B61EB6B53C23D4A3C592CDF243ACDB17", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\poclass.h", + "sdkSha256": "7F784DD23CB2C89E715C9F617DFBE8B9B61EB6B53C23D4A3C592CDF243ACDB17" }, { "path": "shared\\batclass.h", - "sourceSha256": "C2F7DF9B22D2C2C606805AF85C08327AC424F409F639DC0670DEF6F177BCC451", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\batclass.h", - "sdkSha256": "C2F7DF9B22D2C2C606805AF85C08327AC424F409F639DC0670DEF6F177BCC451" + "sourceSha256": "A56229AB20243E04CAFFC3020F4438C5575FECFE275CC6C1F9EBC0C9BA285B30", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\batclass.h", + "sdkSha256": "A56229AB20243E04CAFFC3020F4438C5575FECFE275CC6C1F9EBC0C9BA285B30" }, { "path": "shared\\emi.h", "sourceSha256": "7C9E06256A91F7D2B0F77FAC8FC6FE04934FBC615147CE1945A0FBA7BB25C305", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\emi.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\emi.h", "sdkSha256": "7C9E06256A91F7D2B0F77FAC8FC6FE04934FBC615147CE1945A0FBA7BB25C305" }, { "path": "um\\wcnapi.h", "sourceSha256": "071CBD5761C166CC48CB8AD559E9B794CF3A02ADC1D34EB3B7C64F854C47B34A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wcnapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wcnapi.h", "sdkSha256": "071CBD5761C166CC48CB8AD559E9B794CF3A02ADC1D34EB3B7C64F854C47B34A" }, { "path": "um\\WcnTypes.h", "sourceSha256": "4D72A8E38AF50C110BD68C4A863936F92EC97F936403E7AA02CFBEDCB07A2C99", - "sdkPath": "c\\include\\10.0.26100.0\\um\\WcnTypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\WcnTypes.h", "sdkSha256": "4D72A8E38AF50C110BD68C4A863936F92EC97F936403E7AA02CFBEDCB07A2C99" }, { "path": "um\\WcnDevice.h", "sourceSha256": "54AD4BAD1B3326E46E6CAB2DDDEDA117B9AC6749BEDB234B11E78CC935225588", - "sdkPath": "c\\include\\10.0.26100.0\\um\\WcnDevice.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\WcnDevice.h", "sdkSha256": "54AD4BAD1B3326E46E6CAB2DDDEDA117B9AC6749BEDB234B11E78CC935225588" }, { "path": "um\\wcnfunctiondiscoverykeys.h", "sourceSha256": "2ADA6D7422140E198EFC405962B7D74FB8206FFE9270FB5C9DA10C304F81590D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wcnfunctiondiscoverykeys.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wcnfunctiondiscoverykeys.h", "sdkSha256": "2ADA6D7422140E198EFC405962B7D74FB8206FFE9270FB5C9DA10C304F81590D" }, { "path": "um\\fci.h", "sourceSha256": "91A44645F72D776E4E0FCF8F97EA53A9BF73F356CD5ADFFCCB79316A75942B37", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fci.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fci.h", "sdkSha256": "91A44645F72D776E4E0FCF8F97EA53A9BF73F356CD5ADFFCCB79316A75942B37" }, { "path": "um\\fdi_fci_types.h", "sourceSha256": "27A1F6F7728F5DB64D11E434D101819D646CA49270930606BB76C7989EBE0254", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fdi_fci_types.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fdi_fci_types.h", "sdkSha256": "27A1F6F7728F5DB64D11E434D101819D646CA49270930606BB76C7989EBE0254" }, { "path": "um\\fdi.h", - "sourceSha256": "F85A2D27CB0F286EA6CB2964CE81F28F58971FE0E40581CD7540437229C8D8D3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fdi.h", - "sdkSha256": "F85A2D27CB0F286EA6CB2964CE81F28F58971FE0E40581CD7540437229C8D8D3" + "sourceSha256": "09F2865789F29C5D13AA5FF7ECDBC5BAEF9AFB600A31590296B93C47ABB0A6A9", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fdi.h", + "sdkSha256": "09F2865789F29C5D13AA5FF7ECDBC5BAEF9AFB600A31590296B93C47ABB0A6A9" }, { "path": "um\\MDMRegistration.h", "sourceSha256": "9CED99DB4C56E2AF8F8A77437EE1E657CE904F9383406E26E893F98D5DFD3233", - "sdkPath": "c\\include\\10.0.26100.0\\um\\MDMRegistration.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\MDMRegistration.h", "sdkSha256": "9CED99DB4C56E2AF8F8A77437EE1E657CE904F9383406E26E893F98D5DFD3233" }, { "path": "um\\mdmlocalmanagement.h", "sourceSha256": "22B6B2BF8C61EC7A2CF4B961AE3F9E378CA338C11F223D010B42CD8466C7F47D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mdmlocalmanagement.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mdmlocalmanagement.h", "sdkSha256": "22B6B2BF8C61EC7A2CF4B961AE3F9E378CA338C11F223D010B42CD8466C7F47D" }, { "path": "um\\davclnt.h", "sourceSha256": "9E9032F6463B611F3BCF049B95A2E8E44793428368887C2C65607975F5EDD132", - "sdkPath": "c\\include\\10.0.26100.0\\um\\davclnt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\davclnt.h", "sdkSha256": "9E9032F6463B611F3BCF049B95A2E8E44793428368887C2C65607975F5EDD132" }, { "path": "shared\\tbs.h", "sourceSha256": "27522D3315474402723D83375BA6CDE07D40AB2B952F36C64B48C153A707C2EA", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\tbs.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\tbs.h", "sdkSha256": "27522D3315474402723D83375BA6CDE07D40AB2B952F36C64B48C153A707C2EA" }, { "path": "um\\FhCfg.h", "sourceSha256": "1BE428193494C7C6FFA98EA2DE61748F54351F5741BCA6404F2514D6FF4B2F75", - "sdkPath": "c\\include\\10.0.26100.0\\um\\FhCfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\FhCfg.idl", "sdkSha256": "EE64E8CCA3D20B51AA58023C2C8561000A722B3A0CD39786ABF5835584B4DF3C" }, { "path": "um\\FhSvcCtl.h", "sourceSha256": "7E0C895E8FC27B22646D01E6D8D73F8989682F592B872C5A74A0D0D3EED9BF59", - "sdkPath": "c\\include\\10.0.26100.0\\um\\FhSvcCtl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\FhSvcCtl.h", "sdkSha256": "7E0C895E8FC27B22646D01E6D8D73F8989682F592B872C5A74A0D0D3EED9BF59" }, { "path": "um\\fherrors.h", "sourceSha256": "A4A1E4ED07785A0568C8A08EB37900AFDE1DC2F14FD76FED7E6F42D9E56A475B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fherrors.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fherrors.h", "sdkSha256": "A4A1E4ED07785A0568C8A08EB37900AFDE1DC2F14FD76FED7E6F42D9E56A475B" }, { "path": "um\\fhstatus.h", "sourceSha256": "83AD5BD5559360FCFC816F4D7740EC7801779F39DE3690845D760E6CD014779F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fhstatus.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fhstatus.h", "sdkSha256": "83AD5BD5559360FCFC816F4D7740EC7801779F39DE3690845D760E6CD014779F" }, { "path": "um\\amsi.h", "sourceSha256": "9B3F9C3AE71FDEB1EC2A948EE98EABD74C3D9FCC355A754881D89A3C53C838CE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amsi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amsi.idl", "sdkSha256": "17D39F2A78E7D3DCF0E10AC146F11070BFE9374004199F424E194568C7B62EAC" }, { "path": "um\\websocket.h", "sourceSha256": "7F7EE5D2FDBE9623A0D10DA5E49986485820684BACE387184BA30F1836FDB114", - "sdkPath": "c\\include\\10.0.26100.0\\um\\websocket.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\websocket.h", "sdkSha256": "7F7EE5D2FDBE9623A0D10DA5E49986485820684BACE387184BA30F1836FDB114" }, { "path": "um\\RestartManager.h", "sourceSha256": "C7094C7B308BE0CA37E2BD5C77CF7D793F324FDE10BF306660B09B9641F093F8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\RestartManager.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\RestartManager.h", "sdkSha256": "C7094C7B308BE0CA37E2BD5C77CF7D793F324FDE10BF306660B09B9641F093F8" }, { "path": "um\\ProcessSnapshot.h", "sourceSha256": "93C20675D17F18B1945A5B05D44FA9BFBCF091EEB27687FBCCBCDA072D5C32CC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ProcessSnapshot.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ProcessSnapshot.h", "sdkSha256": "93C20675D17F18B1945A5B05D44FA9BFBCF091EEB27687FBCCBCDA072D5C32CC" }, { "path": "um\\lowlevelmonitorconfigurationapi.h", "sourceSha256": "058DFA39D9B1FF05FFDF14DE7B0B11E67640C4BA7A40B2A198DF98F26A159501", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lowlevelmonitorconfigurationapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lowlevelmonitorconfigurationapi.h", "sdkSha256": "058DFA39D9B1FF05FFDF14DE7B0B11E67640C4BA7A40B2A198DF98F26A159501" }, { "path": "um\\highlevelmonitorconfigurationapi.h", "sourceSha256": "E61B41906C1A32A729D0F461A53DD9AB4A630C4853948A4EFE8F91082FE39E5A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\highlevelmonitorconfigurationapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\highlevelmonitorconfigurationapi.h", "sdkSha256": "E61B41906C1A32A729D0F461A53DD9AB4A630C4853948A4EFE8F91082FE39E5A" }, { "path": "um\\physicalmonitorenumerationapi.h", "sourceSha256": "66131CE43587F3C254733E7DC618C48ACDE735E90CB9C24FA654AA3B62F6731A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\physicalmonitorenumerationapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\physicalmonitorenumerationapi.h", "sdkSha256": "66131CE43587F3C254733E7DC618C48ACDE735E90CB9C24FA654AA3B62F6731A" }, { "path": "um\\cloneviewhelper.h", "sourceSha256": "1C2F9082CF784E3C30DDECEF6836E3F9C5457B6EB246BF8B4457CD05058E50DC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cloneviewhelper.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cloneviewhelper.idl", "sdkSha256": "1F6798B72D5E14812538C70A35E532CA53809893D1DB2B4799E69F615BEE1A95" }, { "path": "um\\IdentityCommon.h", "sourceSha256": "259C4D59C5162FB190C729003D7BDF74E63A2AED7FF1CBC75B323447C77F779A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\IdentityCommon.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\IdentityCommon.h", "sdkSha256": "259C4D59C5162FB190C729003D7BDF74E63A2AED7FF1CBC75B323447C77F779A" }, { "path": "um\\IdentityProvider.h", "sourceSha256": "24A3462C7B117F8D3C59382E0F94F911FF764C20182936EF2CDCA5EF9D7E77BE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\IdentityProvider.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\IdentityProvider.h", "sdkSha256": "24A3462C7B117F8D3C59382E0F94F911FF764C20182936EF2CDCA5EF9D7E77BE" }, { "path": "um\\IdentityStore.h", "sourceSha256": "EE96A96BA3DA324BC971E272DB518AC2B4808D6A452A3444E438CDCC22816774", - "sdkPath": "c\\include\\10.0.26100.0\\um\\IdentityStore.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\IdentityStore.h", "sdkSha256": "EE96A96BA3DA324BC971E272DB518AC2B4808D6A452A3444E438CDCC22816774" }, { "path": "um\\Raseapif.h", "sourceSha256": "476F1B7AF021A4F4B3333B1852828DA8BED141797CECDACF46AE97E720CF94F3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Raseapif.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Raseapif.h", "sdkSha256": "476F1B7AF021A4F4B3333B1852828DA8BED141797CECDACF46AE97E720CF94F3" }, { "path": "um\\RrasCfg.h", "sourceSha256": "C988EDF5C815940E235E2C0021AFD11F980C4939AB0D98486277CD1C7EEDD9AD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\RrasCfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\RrasCfg.idl", "sdkSha256": "BE0FDA967666B91306A115EE91A158C0D83BBF1676251F0F68CE59B9DDE13FFF" }, { "path": "um\\amxmlgraphbuilder.h", "sourceSha256": "224E3F1C96C8B482818E94174496DFB9027364ECA3D6F41A17D77135859D857E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amxmlgraphbuilder.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amxmlgraphbuilder.h", "sdkSha256": "224E3F1C96C8B482818E94174496DFB9027364ECA3D6F41A17D77135859D857E" }, { "path": "um\\NotificationActivationCallback.h", "sourceSha256": "BF3B984ED6FD9099C6DDD38F1B6CD98F878CFA767F814054FA61C7E2E9739034", - "sdkPath": "c\\include\\10.0.26100.0\\um\\NotificationActivationCallback.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\NotificationActivationCallback.idl", "sdkSha256": "BC3CA30AB53317683AFABF4BAD532E8FCEBC4F90BA6D8B3BB068C82205FDBA6E" }, { "path": "um\\wnvapi.h", "sourceSha256": "8E570084A94B27294E49C024FFF4718DEC9FE9AA8742E153B199991B24A594FD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wnvapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wnvapi.h", "sdkSha256": "8E570084A94B27294E49C024FFF4718DEC9FE9AA8742E153B199991B24A594FD" }, { "path": "um\\DirectML.h", "sourceSha256": "3DAEED73AA64905C07B6F5394C7B45EABF0AC17BBCA54B1584C871E03E4F54AD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\DirectML.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\DirectML.h", "sdkSha256": "3DAEED73AA64905C07B6F5394C7B45EABF0AC17BBCA54B1584C871E03E4F54AD" }, { "path": "um\\ddpbackup.h", "sourceSha256": "997E069DEFCAE330BDDB040403C58D5A76C207B8CD06A565D9E3EB0D929A7B90", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddpbackup.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddpbackup.idl", "sdkSha256": "20DD5778F6D5BE1CC225A014C8BF4D2F7D4261B7053D6DCBFB0EA14662AAD0C6" }, { "path": "um\\ddpchunk.h", "sourceSha256": "BA68E4B34F0763E526EC05978B89D3266938AC30EDC5B516F084A8A354EFE717", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddpchunk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddpchunk.idl", "sdkSha256": "FC2EAD46CD946725116A35E65C82C8D0F5F4C2C98D8BA21E9A55FFEF8B11B74D" }, { "path": "um\\ddpcommon.h", "sourceSha256": "75CD20BD96CBF267215381478CABDBF4FBD66AE7053E3544DA28DC120959A902", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddpcommon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddpcommon.idl", "sdkSha256": "A2CCE6535A68AE840B6D26833FFE6BB86A1A1D7368BF0318217DC449D21A7DF2" }, { "path": "um\\ddpdataport.h", "sourceSha256": "C18819FCB1DDB0F9215EE7AB0D9EE318B2CABBB3CFB3E811E880A8A15CDA632B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddpdataport.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddpdataport.idl", "sdkSha256": "C685AF71B7B2E5D6B9B32A829667BB757F73C2E4D21E1549677592847CDF10EE" }, { "path": "um\\rendezvoussession.h", "sourceSha256": "D681E95EC4C9F227060ABBC7C4C1A907CA848F0558A0A2CE55A51ECCFCE24925", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rendezvoussession.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rendezvoussession.h", "sdkSha256": "D681E95EC4C9F227060ABBC7C4C1A907CA848F0558A0A2CE55A51ECCFCE24925" }, { "path": "um\\wsbapp.h", "sourceSha256": "DCC075EA32FDB9396D4847984F11F58375AB41C99C25429504B7EF01152933BA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsbapp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsbapp.idl", "sdkSha256": "F8DCC85EA4BB30395A45423ACE0E2E78189C461D82671486E546D10170B01871" }, { "path": "um\\wsbonline.h", "sourceSha256": "1A85654C0B368DC5F7AE5AB9943B285FF20C650F3D256249D430098076C0417E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsbonline.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsbonline.h", "sdkSha256": "1A85654C0B368DC5F7AE5AB9943B285FF20C650F3D256249D430098076C0417E" }, { "path": "um\\wsbapperror.h", "sourceSha256": "C20F49CE0DF51434314C03B5C88E14F8F3C3B74FD47073E4AD4C9BB956D133E5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsbapperror.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsbapperror.h", "sdkSha256": "C20F49CE0DF51434314C03B5C88E14F8F3C3B74FD47073E4AD4C9BB956D133E5" }, { "path": "um\\wsbonlineerror.h", "sourceSha256": "320142FA791F045D5DBBA476421881B05F64DA4646981FC815E0201CD7DD16BE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsbonlineerror.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsbonlineerror.h", "sdkSha256": "320142FA791F045D5DBBA476421881B05F64DA4646981FC815E0201CD7DD16BE" }, { "path": "um\\winuser.h", - "sourceSha256": "014E26F0041535EBCC53C7B46F1D280F66283EC5EB4612B4E82F5B0F6C0D428C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winuser.h", - "sdkSha256": "014E26F0041535EBCC53C7B46F1D280F66283EC5EB4612B4E82F5B0F6C0D428C" + "sourceSha256": "E1E69BF604FA7CDBDCA94356C6C252794EB21C22A70F795579F17DEBB18ADE0A", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winuser.h", + "sdkSha256": "E1E69BF604FA7CDBDCA94356C6C252794EB21C22A70F795579F17DEBB18ADE0A" }, { "path": "um\\winsvc.h", "sourceSha256": "8108FE3F099960014F36D1B2DA425A8382E9D839DE3477EB06F181289A0685C8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsvc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsvc.h", "sdkSha256": "8108FE3F099960014F36D1B2DA425A8382E9D839DE3477EB06F181289A0685C8" }, { "path": "um\\lmaccess.h", - "sourceSha256": "2044ED6C5CB2A99EFA66CC48839049CF3D11B7E0B98FEBFFD964D15469F5AA37", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmaccess.h", - "sdkSha256": "2044ED6C5CB2A99EFA66CC48839049CF3D11B7E0B98FEBFFD964D15469F5AA37" + "sourceSha256": "4187E439BAB8D5697AB684BCB7476F56A8FF951CC5DEB0249396D72D6A9F19E6", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmaccess.h", + "sdkSha256": "4187E439BAB8D5697AB684BCB7476F56A8FF951CC5DEB0249396D72D6A9F19E6" }, { "path": "um\\lmjoin.h", "sourceSha256": "F8BDDA0A6A9420F0CA63F81D23B9C8FCDE24D80F2D7988F262E3C818BECEE076", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmjoin.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmjoin.h", "sdkSha256": "F8BDDA0A6A9420F0CA63F81D23B9C8FCDE24D80F2D7988F262E3C818BECEE076" }, { "path": "um\\lmserver.h", "sourceSha256": "4A14539368186AEAAA797DEC3B854E836041A43B45614041280E31792A3049EE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmserver.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmserver.h", "sdkSha256": "4A14539368186AEAAA797DEC3B854E836041A43B45614041280E31792A3049EE" }, { "path": "um\\lmwksta.h", "sourceSha256": "58CA9883DE21556882B0A9E135B5AB30C0A29EF0E880CD777A2F863F72C15D1F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmwksta.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmwksta.h", "sdkSha256": "58CA9883DE21556882B0A9E135B5AB30C0A29EF0E880CD777A2F863F72C15D1F" }, { "path": "um\\lmmsg.h", "sourceSha256": "E6EFBD63A7DDF4D51D70C1EF96FE7A5FCD6AD208C27566D335392ED0D56C12D7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmmsg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmmsg.h", "sdkSha256": "E6EFBD63A7DDF4D51D70C1EF96FE7A5FCD6AD208C27566D335392ED0D56C12D7" }, { "path": "um\\lmapibuf.h", "sourceSha256": "66A05E485033570D8C69CA295B4A1A086635B0033552DF6B7CF63275E22D4CEB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmapibuf.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmapibuf.h", "sdkSha256": "66A05E485033570D8C69CA295B4A1A086635B0033552DF6B7CF63275E22D4CEB" }, { "path": "um\\lmat.h", "sourceSha256": "BF9AB4EC6505EED4E9E42E9750EFA79DD3796B88F61AEC3F6D343F9A0DFDCD1D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmat.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmat.h", "sdkSha256": "BF9AB4EC6505EED4E9E42E9750EFA79DD3796B88F61AEC3F6D343F9A0DFDCD1D" }, { "path": "um\\lmuse.h", "sourceSha256": "73641B28C96DF0B99193311540DFAB6D09B350682D7546451344FBA4286FC264", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmuse.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmuse.h", "sdkSha256": "73641B28C96DF0B99193311540DFAB6D09B350682D7546451344FBA4286FC264" }, { "path": "um\\atacct.h", "sourceSha256": "067397B7D8F0CFBB63DACD2FF4D628FDB506F7CFE2BC57484031D442801D1023", - "sdkPath": "c\\include\\10.0.26100.0\\um\\atacct.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\atacct.h", "sdkSha256": "067397B7D8F0CFBB63DACD2FF4D628FDB506F7CFE2BC57484031D442801D1023" }, { "path": "um\\lmalert.h", "sourceSha256": "5C10A32019702CC63FEF699D4E7686EA5CA752F1376B48BDB851C12CF2E823A9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmalert.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmalert.h", "sdkSha256": "5C10A32019702CC63FEF699D4E7686EA5CA752F1376B48BDB851C12CF2E823A9" }, { "path": "um\\lmremutl.h", "sourceSha256": "91175CDAA4DC94E0F0F3472A9B76D92FA09FB2996A074A49811557FFC95D5340", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmremutl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmremutl.h", "sdkSha256": "91175CDAA4DC94E0F0F3472A9B76D92FA09FB2996A074A49811557FFC95D5340" }, { "path": "um\\winbase.h", - "sourceSha256": "EC538199F5EBE8CEC2DFD4F1BA48316EF776C82D37277AED3A677965E494F192", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winbase.h", - "sdkSha256": "EC538199F5EBE8CEC2DFD4F1BA48316EF776C82D37277AED3A677965E494F192" + "sourceSha256": "A7068B15A262CC2D4F0E51A1CA2F1514566D6F331562C6775235D560B3404D06", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winbase.h", + "sdkSha256": "A7068B15A262CC2D4F0E51A1CA2F1514566D6F331562C6775235D560B3404D06" }, { "path": "um\\wingdi.h", "sourceSha256": "96F3528CABC7E5FE30E2F2C51DAA01C018DD6CEDB3768121202434758629B8A2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wingdi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wingdi.h", "sdkSha256": "96F3528CABC7E5FE30E2F2C51DAA01C018DD6CEDB3768121202434758629B8A2" }, { "path": "um\\winnls.h", "sourceSha256": "E47861762A4B51A2689C8A99798A1A7E68335573E03C857E545172B095C5C829", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winnls.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winnls.h", "sdkSha256": "E47861762A4B51A2689C8A99798A1A7E68335573E03C857E545172B095C5C829" }, { "path": "um\\fileapi.h", "sourceSha256": "F8927178C75DE487C0E57F044A215E455522BF6EAA0B660421BE09CD06AE05A1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fileapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fileapi.h", "sdkSha256": "F8927178C75DE487C0E57F044A215E455522BF6EAA0B660421BE09CD06AE05A1" }, { "path": "um\\securitybaseapi.h", "sourceSha256": "A443B4183D3EC5B8E1AE40DB5824F002A34EB0415F38227FA1DDDBBF02A448D4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\securitybaseapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\securitybaseapi.h", "sdkSha256": "A443B4183D3EC5B8E1AE40DB5824F002A34EB0415F38227FA1DDDBBF02A448D4" }, { "path": "um\\processthreadsapi.h", "sourceSha256": "436AE4CBB017D1CDB381AAF2119A3F89B04BAE257FD4C881EF251DAA02533540", - "sdkPath": "c\\include\\10.0.26100.0\\um\\processthreadsapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\processthreadsapi.h", "sdkSha256": "436AE4CBB017D1CDB381AAF2119A3F89B04BAE257FD4C881EF251DAA02533540" }, { "path": "um\\memoryapi.h", - "sourceSha256": "58EDCC2090C411A1821E04A6A2954C258FD59DED44440BDD671984027E0A852F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\memoryapi.h", - "sdkSha256": "58EDCC2090C411A1821E04A6A2954C258FD59DED44440BDD671984027E0A852F" + "sourceSha256": "160876FE0F5548F6E9063C732C6A9C6EAF206BDF6D4731C067EF8B120C54D9CE", + "sdkPath": "c\\include\\10.0.28000.0\\um\\memoryapi.h", + "sdkSha256": "160876FE0F5548F6E9063C732C6A9C6EAF206BDF6D4731C067EF8B120C54D9CE" }, { "path": "um\\synchapi.h", "sourceSha256": "D962588974E5E100205F683160B351DEE70EA100AA736E14D878B7A74577A9C5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\synchapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\synchapi.h", "sdkSha256": "D962588974E5E100205F683160B351DEE70EA100AA736E14D878B7A74577A9C5" }, { "path": "um\\cfgmgr32.h", "sourceSha256": "5C7CEC278E684CF89591331391622441F660C5B9852351312FD910AE5930AE22", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cfgmgr32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cfgmgr32.h", "sdkSha256": "5C7CEC278E684CF89591331391622441F660C5B9852351312FD910AE5930AE22" }, { "path": "um\\newdev.h", "sourceSha256": "663C1D8247BC38B987285CB64C5ECE50D0BBE4744BC448E0B28DE56A5DBBA5A2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\newdev.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\newdev.h", "sdkSha256": "663C1D8247BC38B987285CB64C5ECE50D0BBE4744BC448E0B28DE56A5DBBA5A2" }, { "path": "um\\winusb.h", "sourceSha256": "4ED890A8C9DFC49B00EB2DBACF3E17007F8B25AFDCF2C4B22011F78236DCD964", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winusb.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winusb.h", "sdkSha256": "4ED890A8C9DFC49B00EB2DBACF3E17007F8B25AFDCF2C4B22011F78236DCD964" }, { "path": "um\\swdevice.h", "sourceSha256": "FBB4C940D641600EBB32DEF276EE23EB0434DC03A0BCDEA7A080FA66D73E490A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\swdevice.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\swdevice.h", "sdkSha256": "FBB4C940D641600EBB32DEF276EE23EB0434DC03A0BCDEA7A080FA66D73E490A" }, { "path": "um\\nspapi.h", "sourceSha256": "C3AD97BA43DB72281824120376F93C66D5F527D8466A91F225C99DFBB52C1AC3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\nspapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\nspapi.h", "sdkSha256": "C3AD97BA43DB72281824120376F93C66D5F527D8466A91F225C99DFBB52C1AC3" }, { "path": "um\\winineti.h", "sourceSha256": "12D119372F2BB5233AAAB7B7365BF5E1A5CA2D2A05A3949B0BFA9A535C58DC14", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winineti.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winineti.h", "sdkSha256": "12D119372F2BB5233AAAB7B7365BF5E1A5CA2D2A05A3949B0BFA9A535C58DC14" }, { "path": "um\\drt.h", "sourceSha256": "D0C1A84ABFE4C90C5F72D73300A190B128C32A35F2CE7179FE2AD91889C3ADBD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\drt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\drt.h", "sdkSha256": "D0C1A84ABFE4C90C5F72D73300A190B128C32A35F2CE7179FE2AD91889C3ADBD" }, { "path": "um\\dsgetdc.h", - "sourceSha256": "AB897B0A3053215721916944C6C9531991536A7C97F271532AF179B01611C277", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsgetdc.h", - "sdkSha256": "AB897B0A3053215721916944C6C9531991536A7C97F271532AF179B01611C277" + "sourceSha256": "5253649DA96CF0C4F4E311ED753F8328BC7B3D196AE033AC1DE3C3A6DDBACD94", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsgetdc.h", + "sdkSha256": "5253649DA96CF0C4F4E311ED753F8328BC7B3D196AE033AC1DE3C3A6DDBACD94" }, { "path": "um\\icmpapi.h", "sourceSha256": "88A907B48603BB72056B6B6B03429461D45D56029443E0E16B17D0E173235480", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icmpapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icmpapi.h", "sdkSha256": "88A907B48603BB72056B6B6B03429461D45D56029443E0E16B17D0E173235480" }, { "path": "shared\\traffic.h", "sourceSha256": "5C6EE23560EFD3BEA3D800DAE9180DE231ACB3834DE49904A1B7691E9A91F600", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\traffic.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\traffic.h", "sdkSha256": "5C6EE23560EFD3BEA3D800DAE9180DE231ACB3834DE49904A1B7691E9A91F600" }, { "path": "um\\adshlp.h", "sourceSha256": "65F02E3986CAC3DBFC25C950973CAD5FBBCB6EC109F00D2135EC63FC5802DBF4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\adshlp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\adshlp.h", "sdkSha256": "65F02E3986CAC3DBFC25C950973CAD5FBBCB6EC109F00D2135EC63FC5802DBF4" }, { "path": "um\\mgm.h", "sourceSha256": "78E771539B56F68EE8279238796D9F731B7D0CB58CFF8FCB7D77991F8413CC39", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mgm.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mgm.h", "sdkSha256": "78E771539B56F68EE8279238796D9F731B7D0CB58CFF8FCB7D77991F8413CC39" }, { "path": "um\\ndfapi.h", "sourceSha256": "25416AD973F5F041122753F8D17F29EF2DA8D06AA50B50A768C3852FE0B8E3AD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ndfapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ndfapi.h", "sdkSha256": "25416AD973F5F041122753F8D17F29EF2DA8D06AA50B50A768C3852FE0B8E3AD" }, { "path": "um\\mgmtapi.h", "sourceSha256": "B0EAE4699CFD9EE27A1BE5884F02EB0B89B43BBDA3F26EAA57693B182AC1F0D6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mgmtapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mgmtapi.h", "sdkSha256": "B0EAE4699CFD9EE27A1BE5884F02EB0B89B43BBDA3F26EAA57693B182AC1F0D6" }, { "path": "um\\dsparse.h", "sourceSha256": "12DFD6A8DAF3CD425F61867DB552ADB2A86C5EB71462FE5014C8E50FBF382E91", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsparse.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsparse.h", "sdkSha256": "12DFD6A8DAF3CD425F61867DB552ADB2A86C5EB71462FE5014C8E50FBF382E91" }, { "path": "um\\winber.h", "sourceSha256": "CB3ABD63E89D96BF3CD8CB0F0604483501E3208175C877843A29A72071D5523E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winber.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winber.h", "sdkSha256": "CB3ABD63E89D96BF3CD8CB0F0604483501E3208175C877843A29A72071D5523E" }, { "path": "um\\qos2.h", "sourceSha256": "29C31021242D7E14DEB00A287608A74B31FCC2EEC95838118B733A06F85B1A1A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\qos2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\qos2.h", "sdkSha256": "29C31021242D7E14DEB00A287608A74B31FCC2EEC95838118B733A06F85B1A1A" }, { "path": "um\\uiautomationclient.h", "sourceSha256": "82D26854D8FAF62A31154E70BA4B373C7BF42650BCD615F6CC9DBBB767653488", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiautomationclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiautomationclient.idl", "sdkSha256": "B79EFF8E7357F51BEA749611B365A61F969ED70F3DBCB9F2C4FAD97678286F1F" }, { "path": "um\\shobjidl_core.h", - "sourceSha256": "C6328123663EF73E5BD4BF35BC0FCE4DDE98364182096D51F86D7B91C913B15A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shobjidl_core.idl", - "sdkSha256": "43DAAA97DE4C359BACB8BAA0DF4813C950ED2C29BF8474CBED2131633BB1A101" + "sourceSha256": "5AE9A0D59B05C5A82C96DFEB68806F8F01D6F6C291C9981CF7088A722DF033F0", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shobjidl_core.idl", + "sdkSha256": "753EBD13148DD28356476FEA6C9EDB2EA9C16A36EB40D41DB80543D7ABECE163" }, { "path": "um\\mfidl.h", - "sourceSha256": "A9A6C5CAF3AB2AB3F6F4ABD39D192D594826AE788C13DD4ACF68CB8809B1D20E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfidl.idl", - "sdkSha256": "C2EDE5C7FA61043366AAC253630F91A0D47094D79EC62139714464F0400AA0DC" + "sourceSha256": "B98A934ABEC035D062BE67033C1B05D990A425F8A0870EF26E91D4E21F31CD6D", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfidl.idl", + "sdkSha256": "DE989CDF0A50210BE08885479E6DF0021F3CC05983C8DF05E982F4FA18BBD608" }, { "path": "um\\msctf.h", "sourceSha256": "9E94B0D7E4663E10A89483E3A7629DF1FD512ED183D48795372C361ACA1844AF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msctf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msctf.idl", "sdkSha256": "CB9AA0961623633907B3FCDADD7533B6D1557BA6F0FD53D6E8DF6916F056372D" }, { "path": "um\\wuapi.h", "sourceSha256": "E9D76131506EB3B16071A0E10F267EBF4B0A0EE03C4902D623038592030D6E42", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wuapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wuapi.idl", "sdkSha256": "BA0E980FE970FC4EC24B56FF3A365A6C1F25E8A70366178D434B92364CA0FF9B" }, { "path": "um\\objidl.h", "sourceSha256": "AEF50689C77A79FF124E3F14DC4F6842BDE13A05B5FE4446ADA0E90D490DF354", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objidl.idl", "sdkSha256": "09C1AB7AEF7C01D1552BAA826AAC549C15D1806E9C696B99814FCFF0241DE539" }, { "path": "um\\oleidl.h", - "sourceSha256": "263D831644F65AA2669CDAD8DAC8235FA197598211878B215B69E73338AE81A7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oleidl.idl", - "sdkSha256": "6736D03509172C9D3E79D6D94BA07DF6A8942E8FAB0B32228BE6F78ACF8DACFC" + "sourceSha256": "44295AE977E6B7973ED26082C8D65B76007CE4CC41F8EF598CB58D3954637E8C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oleidl.idl", + "sdkSha256": "939BBA380B0F1F425B91D855FF29D4960C7EADCE873C82D31C0F9D973B5F2599" }, { "path": "um\\uiautomationcore.h", "sourceSha256": "23748F87BE544A54ACE3AE6CD4C90C85A985783129C93803E8EA4537CAA64DBF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiautomationcore.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiautomationcore.idl", "sdkSha256": "57833474568FCDC6EA385834D95B7F7D6229C6949C20902D714A5EA16B5297EB" }, { "path": "um\\appxpackaging.h", "sourceSha256": "BBBB8B86C8B11C0A568C2F77FB0D272AB81F94B187FB30D6A5AC196FE750CCD2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appxpackaging.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appxpackaging.idl", "sdkSha256": "2B2447B5748FE5760215B05505E0A78CE02F070C01FFB960E1DE54BB9BDEB048" }, { "path": "um\\d3d11.h", - "sourceSha256": "67EA2D6D0B2ACA35BCE968144A127B3B3563F5D3394F11860BF4CF7D31FBF859", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11.idl", - "sdkSha256": "1AB19BDCEAAD996EBAA08D0E8D891F20E3A80E3C008F1AEE92F2BF565E83E326" + "sourceSha256": "655C28BB065FC79DA3CC11E2E20504DEEEA4FC2BDF8485EF49F619FD4D1BF8C0", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11.idl", + "sdkSha256": "4E17AD32A8EC80A20EA55391857D95CE96EBF61B7C347AF22BD75A985D917D5D" }, { "path": "um\\ocidl.h", "sourceSha256": "C56683CAE32C465C7092C2946CEA058F0B7D208AF3F74160E0EDF0DE1A669E6A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ocidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ocidl.idl", "sdkSha256": "D22A5326B0AB61D61C6475C4047F164DF0F1F2B568A0AC32EE9F0F2025451514" }, { "path": "um\\tuner.h", "sourceSha256": "F783943277C0654927BE6F850A446975BE91BB523382546847377AA8F6FE7BC5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tuner.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tuner.idl", "sdkSha256": "B93C313E7008F5BCD70151B001ACC55C341921C4F9C892D8F0B9C228CC93D040" }, { "path": "um\\shobjidl.h", "sourceSha256": "555C99655EC435B85B197511C3A049E056271CFCB1D0E4525F4670922558E13E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shobjidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shobjidl.idl", "sdkSha256": "7024954CC3342618381279CD00816366A4F95B2AB1ADAB9DDB97BB2AFE179011" }, { "path": "um\\wincodec.h", "sourceSha256": "4430BF41443FE5E54DEA74FB2F21217E823C0723DBEEED94D4319D7B6454A7FB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincodec.idl", - "sdkSha256": "0784D153A4CB107F9EFB4E36B6DCA98610B8C807E797BD37888D6553F4F1EF2A" + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincodec.idl", + "sdkSha256": "2561C1F95F95A5986F51C7FB275520761B060ACCA644648A97E9D1AA1733E7B4" }, { "path": "um\\xpsobjectmodel.h", "sourceSha256": "650A947D482033AD6BBC76933AAF63322497E602F9FFD45156176853E2317BE5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel.idl", "sdkSha256": "4300981EF72C97B1C40B4623D3604447BC2BEF0CD0352E89B56D3F52158B08F2" }, { "path": "um\\wbemcli.h", "sourceSha256": "3C2C42392F6E63EC3B084B29B22197A325FA341EAF0257F83271F10B378F9234", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wbemcli.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wbemcli.idl", "sdkSha256": "2857D259C3A435F6CCBB9537735CEBB24A59244ED84CA6A8BDC35EBAA21E2E0C" }, { "path": "um\\dvbsiparser.h", "sourceSha256": "775369AB0DF61EF83F25B4912A336148CD080B0F49C72E5E305E4C5DA1229604", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dvbsiparser.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dvbsiparser.idl", "sdkSha256": "BAB520282E5605B54F5C0433142B3E4DACA77CA84DC1C617DE99FFF8A6E6302B" }, { "path": "um\\mmc.h", "sourceSha256": "E2588943D18AC627856B69041C8364D239309E24C8AADB67CCD927BAF6B202C8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmc.idl", "sdkSha256": "2FD77DE38BCA29CFCA9B070D86368AF54B557DAE9247CC731E170F469F1E25B0" }, { "path": "um\\mbnapi.h", "sourceSha256": "F4D27572AC4AFE8BF21F1940C81B40BAFC883FC7E1724B95DCB531A0EF04A5B4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mbnapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mbnapi.idl", "sdkSha256": "F918113EF44C75D07B69F7CB9AC2B2F68DDCAF7531E716DDCDDCEF6815F7C066" }, { "path": "um\\gpmgmt.h", "sourceSha256": "6C6260A0DAFD24EF9BFD3D6E7BB70ABF330BC20AFB8A6464A81C551A0B372A2C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gpmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gpmgmt.idl", "sdkSha256": "43556DC3A563DCAF1F433D96E39D765B37B77315A213C98B823C071A4BEDFFA8" }, { "path": "um\\mfmediaengine.h", - "sourceSha256": "C4FC2FAC4006329223DD667B8AF1DDB7663D06ECEDEA5292A314788DB3BCCB59", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmediaengine.idl", - "sdkSha256": "B5CDE0EA42295029A3F7B28FBC15C253258DEF8400844CFF4EB0568DB0586543" + "sourceSha256": "DD028A3526460AFB744BE190F66713A4D2A9580E747CC1E0CD443B9373981C63", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmediaengine.idl", + "sdkSha256": "D48E9D42403104B3AEFF106B58805E75ED420B01AEB41655480A4F73E7FBA71F" }, { "path": "shared\\rpcasync.h", "sourceSha256": "5E91801CEE17B175A397CC56FF08790783D4FCDBC8D52FE7BB7461CCFA369A85", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\rpcasync.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\rpcasync.h", "sdkSha256": "5E91801CEE17B175A397CC56FF08790783D4FCDBC8D52FE7BB7461CCFA369A85" }, { "path": "um\\rasshost.h", "sourceSha256": "8E78B4385FD418154D5D8A1C2D5B5F95BBCB5E5F866D0A71C92B7FBAB56CABB8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rasshost.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rasshost.h", "sdkSha256": "8E78B4385FD418154D5D8A1C2D5B5F95BBCB5E5F866D0A71C92B7FBAB56CABB8" }, { "path": "um\\midles.h", "sourceSha256": "D8CDC3973F2DD738766117F8AAA36DCC9BF934AC49610B29B7511825EE64BD8E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\midles.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\midles.h", "sdkSha256": "D8CDC3973F2DD738766117F8AAA36DCC9BF934AC49610B29B7511825EE64BD8E" }, { "path": "um\\adsprop.h", "sourceSha256": "67E8BE34FCE6F6F8BB33EDAF81FDC2CB385787F827108FCC4705879F5E07C9A1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\adsprop.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\adsprop.h", "sdkSha256": "67E8BE34FCE6F6F8BB33EDAF81FDC2CB385787F827108FCC4705879F5E07C9A1" }, { "path": "um\\madcapcl.h", "sourceSha256": "A2B5F1EADB4D077372EA52AA042A0B3FBD1389F6CA137888C1F6119B0054849F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\madcapcl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\madcapcl.h", "sdkSha256": "A2B5F1EADB4D077372EA52AA042A0B3FBD1389F6CA137888C1F6119B0054849F" }, { "path": "um\\dsclient.h", "sourceSha256": "5B8247A577DFB75D004853AC766E189196F5A036D89A39DC8B0624980CE5BEF9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsclient.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsclient.h", "sdkSha256": "5B8247A577DFB75D004853AC766E189196F5A036D89A39DC8B0624980CE5BEF9" }, { "path": "um\\rasdlg.h", "sourceSha256": "28CCDE48D66DECFC1125D487B6A573C0F345608829CEE74EC703138487405ED0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rasdlg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rasdlg.h", "sdkSha256": "28CCDE48D66DECFC1125D487B6A573C0F345608829CEE74EC703138487405ED0" }, { "path": "um\\ondemandconnroutehelper.h", "sourceSha256": "2F30005299AEBD2871E341D99A5EB130966CC813D7E52EDB72E64D8A785CBA39", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ondemandconnroutehelper.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ondemandconnroutehelper.h", "sdkSha256": "2F30005299AEBD2871E341D99A5EB130966CC813D7E52EDB72E64D8A785CBA39" }, { "path": "um\\sporder.h", "sourceSha256": "C245F34237060D288CE6AE5E42F0069B110D134BC53F54E1F2487B1487C68082", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sporder.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sporder.h", "sdkSha256": "C245F34237060D288CE6AE5E42F0069B110D134BC53F54E1F2487B1487C68082" }, { "path": "shared\\rpcdcep.h", "sourceSha256": "DF032ED7952B84113857284D86E7365B158CC57F955A5C0580E57E96C6DF5BA2", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\rpcdcep.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\rpcdcep.h", "sdkSha256": "DF032ED7952B84113857284D86E7365B158CC57F955A5C0580E57E96C6DF5BA2" }, { "path": "um\\rpcssl.h", "sourceSha256": "AB33B02919D6C7332F60169B442C91DDFFD058CD798F9A8CB3232B1997466085", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rpcssl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rpcssl.h", "sdkSha256": "AB33B02919D6C7332F60169B442C91DDFFD058CD798F9A8CB3232B1997466085" }, { "path": "um\\dsrole.h", "sourceSha256": "F69FEA6CB1F76BB20E008226552563BBECCF63CEEB49C17EF1B0796D2E9E10F3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsrole.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsrole.h", "sdkSha256": "F69FEA6CB1F76BB20E008226552563BBECCF63CEEB49C17EF1B0796D2E9E10F3" }, { "path": "um\\smbclnt.h", "sourceSha256": "12C00D5F4512BED3EE89FA8071EFE8998B5785861721E0BC42D43C43E3792586", - "sdkPath": "c\\include\\10.0.26100.0\\um\\smbclnt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\smbclnt.h", "sdkSha256": "12C00D5F4512BED3EE89FA8071EFE8998B5785861721E0BC42D43C43E3792586" }, { "path": "um\\socketapi.h", "sourceSha256": "AEF9C091BA91045094124FC5EA935E5CCFF6D68771186EBE38D43B33D114842A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\socketapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\socketapi.h", "sdkSha256": "AEF9C091BA91045094124FC5EA935E5CCFF6D68771186EBE38D43B33D114842A" }, { "path": "um\\wininet.h", "sourceSha256": "11BE77DDA11353695CBB64984B8D056E9CCF7A5E833413883C239E59D5FE2D72", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wininet.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wininet.h", "sdkSha256": "11BE77DDA11353695CBB64984B8D056E9CCF7A5E833413883C239E59D5FE2D72" }, { "path": "um\\clusapi.h", - "sourceSha256": "E482D9DB059AD2EB16E9AEB870E4AA6DB1B3621673B4ED71DA17EBA87563216C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\clusapi.h", - "sdkSha256": "E482D9DB059AD2EB16E9AEB870E4AA6DB1B3621673B4ED71DA17EBA87563216C" + "sourceSha256": "00C84E3E4A883033918FCF781C32B9AB0921B98124504D008186FD724AC1345B", + "sdkPath": "c\\include\\10.0.28000.0\\um\\clusapi.h", + "sdkSha256": "00C84E3E4A883033918FCF781C32B9AB0921B98124504D008186FD724AC1345B" }, { "path": "um\\winldap.h", "sourceSha256": "D500763D0B73C0CFBE57D1D850BE7C1D74F61D9731890F84B9908E13D5C5B88D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winldap.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winldap.h", "sdkSha256": "D500763D0B73C0CFBE57D1D850BE7C1D74F61D9731890F84B9908E13D5C5B88D" }, { "path": "shared\\rpcdce.h", "sourceSha256": "991883893134C8ECBE6AF8335DF0781BFB779C11684B3367DEF514136241B866", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\rpcdce.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\rpcdce.h", "sdkSha256": "991883893134C8ECBE6AF8335DF0781BFB779C11684B3367DEF514136241B866" }, { "path": "um\\webservices.h", "sourceSha256": "BB47DCAF660E929488B159A6B02624CC35C4319A5D5691D712838BD09905A040", - "sdkPath": "c\\include\\10.0.26100.0\\um\\webservices.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\webservices.h", "sdkSha256": "BB47DCAF660E929488B159A6B02624CC35C4319A5D5691D712838BD09905A040" }, { "path": "um\\fwpmu.h", "sourceSha256": "92D5F2A1EE268BA7F494DC7109A61A09766E622F10E4C4EB91605C56792EC3E1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fwpmu.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fwpmu.h", "sdkSha256": "92D5F2A1EE268BA7F494DC7109A61A09766E622F10E4C4EB91605C56792EC3E1" }, { "path": "um\\mprapi.h", "sourceSha256": "BF52C3A182C8C278E317D54F940911E76ABC85F5C4E937E3B5F219DAC2C43E34", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mprapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mprapi.h", "sdkSha256": "BF52C3A182C8C278E317D54F940911E76ABC85F5C4E937E3B5F219DAC2C43E34" }, { "path": "um\\winsock2.h", "sourceSha256": "15098CBB8780BF917B155E2A7DF9201F9768717A26544EC3912FD32ADDCEA2C7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsock2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsock2.h", "sdkSha256": "15098CBB8780BF917B155E2A7DF9201F9768717A26544EC3912FD32ADDCEA2C7" }, { "path": "shared\\netioapi.h", - "sourceSha256": "7035F59FD6BD88B4B7B023FF25DD66EAEC4116646275BA81E29E7598EDAFB71F", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\netioapi.h", - "sdkSha256": "7035F59FD6BD88B4B7B023FF25DD66EAEC4116646275BA81E29E7598EDAFB71F" + "sourceSha256": "70A6021E13F7E1AABDE293B82F5F1597E4B5943CCF481E6BDC58B2C0A1E04AAE", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\netioapi.h", + "sdkSha256": "70A6021E13F7E1AABDE293B82F5F1597E4B5943CCF481E6BDC58B2C0A1E04AAE" }, { "path": "um\\resapi.h", "sourceSha256": "DA5C79E08767F33C8EBD7C87E45E603724AEC59A1DA0B09F82DC9D3AA30BE4E6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\resapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\resapi.h", "sdkSha256": "DA5C79E08767F33C8EBD7C87E45E603724AEC59A1DA0B09F82DC9D3AA30BE4E6" }, { "path": "um\\ras.h", "sourceSha256": "64117AA161F0DC001F1D6F352AD230245499BE995EE8B4B0943EE5AC8C3F099B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ras.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ras.h", "sdkSha256": "64117AA161F0DC001F1D6F352AD230245499BE995EE8B4B0943EE5AC8C3F099B" }, { "path": "um\\iphlpapi.h", - "sourceSha256": "639CF8963B00A11FDFFA8955EF71E9CA2294F0FBB4193D5DF3823E64AB8F5C51", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iphlpapi.h", - "sdkSha256": "639CF8963B00A11FDFFA8955EF71E9CA2294F0FBB4193D5DF3823E64AB8F5C51" + "sourceSha256": "852FA368E13E62C8AD25CB33B31FD23CCE5F1E6C1FBCED125D893096CF3BC922", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iphlpapi.h", + "sdkSha256": "852FA368E13E62C8AD25CB33B31FD23CCE5F1E6C1FBCED125D893096CF3BC922" }, { "path": "um\\winsnmp.h", "sourceSha256": "51E142484656573D0F94F2F2CCCE1F43B53F296B1946884E86C57EB2C208D2AE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsnmp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsnmp.h", "sdkSha256": "51E142484656573D0F94F2F2CCCE1F43B53F296B1946884E86C57EB2C208D2AE" }, { "path": "um\\snmp.h", "sourceSha256": "1BD89A1560311993697025C2832D2C209A9947403C0CB8669B955458834E9A8C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\snmp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\snmp.h", "sdkSha256": "1BD89A1560311993697025C2832D2C209A9947403C0CB8669B955458834E9A8C" }, { "path": "um\\http.h", "sourceSha256": "EF78CFE8F719D8E2E65314C79C39BE6271E5832ED5962B6982DEB284D18D9B7D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\http.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\http.h", "sdkSha256": "EF78CFE8F719D8E2E65314C79C39BE6271E5832ED5962B6982DEB284D18D9B7D" }, { "path": "um\\ntdsapi.h", "sourceSha256": "292E6568AC12E8CA166D8BC4E3757702794AD0DDFB1C0E115898E0731B6B603A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntdsapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntdsapi.h", "sdkSha256": "292E6568AC12E8CA166D8BC4E3757702794AD0DDFB1C0E115898E0731B6B603A" }, { "path": "shared\\rpcndr.h", - "sourceSha256": "7EEAAA2B4A5972B44A03086884EEB4338D2B0790E3DBC3CB858CBAB5FA813978", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\rpcndr.h", - "sdkSha256": "7EEAAA2B4A5972B44A03086884EEB4338D2B0790E3DBC3CB858CBAB5FA813978" + "sourceSha256": "3A3AA7247ADD182BB22D9D5F1068C9F519889154BB34922E9BBB35ED5790B741", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\rpcndr.h", + "sdkSha256": "3A3AA7247ADD182BB22D9D5F1068C9F519889154BB34922E9BBB35ED5790B741" }, { "path": "um\\windns.h", - "sourceSha256": "B1586EC874EE2892216035B819F5A88C4C8F5E967590C7510213791B96F2666E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windns.h", - "sdkSha256": "B1586EC874EE2892216035B819F5A88C4C8F5E967590C7510213791B96F2666E" + "sourceSha256": "5FB760F8D49996AA12074157A10B35188136394E32B3A335C86167D1503FE634", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windns.h", + "sdkSha256": "5FB760F8D49996AA12074157A10B35188136394E32B3A335C86167D1503FE634" }, { "path": "um\\rtmv2.h", "sourceSha256": "A4BD89592B395EB7ADA4FE01F4B67E182F08A88E4F6075D7B7B1437E4BBAC092", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rtmv2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rtmv2.h", "sdkSha256": "A4BD89592B395EB7ADA4FE01F4B67E182F08A88E4F6075D7B7B1437E4BBAC092" }, { "path": "um\\wlanapi.h", "sourceSha256": "F0B3981DA287AA2F45D9D954C6B2EC7C59CAD408E516AB75F2C85F06C3951E62", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wlanapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wlanapi.h", "sdkSha256": "F0B3981DA287AA2F45D9D954C6B2EC7C59CAD408E516AB75F2C85F06C3951E62" }, { "path": "um\\rpcnsi.h", "sourceSha256": "F49466A31875D34A6E5C02F301D81B7A78F25CB947F3D6E6EA712AB356B42C8E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rpcnsi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rpcnsi.h", "sdkSha256": "F49466A31875D34A6E5C02F301D81B7A78F25CB947F3D6E6EA712AB356B42C8E" }, { "path": "um\\ws2spi.h", "sourceSha256": "5F3EC7AFB07C10153104917CD0A81AE8488DAD48C0C5522A79E88AD9E66B5CC8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ws2spi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ws2spi.h", "sdkSha256": "5F3EC7AFB07C10153104917CD0A81AE8488DAD48C0C5522A79E88AD9E66B5CC8" }, { "path": "um\\ws2tcpip.h", - "sourceSha256": "76011C9095FCD50AF68EB7D3FFB828D4D2B710CBDA09EC4B2653371319886A21", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ws2tcpip.h", - "sdkSha256": "76011C9095FCD50AF68EB7D3FFB828D4D2B710CBDA09EC4B2653371319886A21" + "sourceSha256": "9B7C9F4B1E931ACB69C9CB569C156FD852E81DA1A95880897006D9BDE786F888", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ws2tcpip.h", + "sdkSha256": "9B7C9F4B1E931ACB69C9CB569C156FD852E81DA1A95880897006D9BDE786F888" }, { "path": "um\\peerdist.h", "sourceSha256": "6315DAAA9EEFE6F8C8F4E0AFB737BAF5987541BA13DD7516841E50BBAD47F730", - "sdkPath": "c\\include\\10.0.26100.0\\um\\peerdist.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\peerdist.h", "sdkSha256": "6315DAAA9EEFE6F8C8F4E0AFB737BAF5987541BA13DD7516841E50BBAD47F730" }, { "path": "um\\cryptuiapi.h", "sourceSha256": "57601827614B6DBB932C22C2AAFB8255A5FDA10915C54D7C5D3938E102EDB93D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cryptuiapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cryptuiapi.h", "sdkSha256": "57601827614B6DBB932C22C2AAFB8255A5FDA10915C54D7C5D3938E102EDB93D" }, { "path": "um\\richedit.h", "sourceSha256": "E06C9B374B73F181E977D34AB953D4FB6DBB7582CD10ADBC701D151579391676", - "sdkPath": "c\\include\\10.0.26100.0\\um\\richedit.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\richedit.h", "sdkSha256": "E06C9B374B73F181E977D34AB953D4FB6DBB7582CD10ADBC701D151579391676" }, { "path": "um\\ncrypt.h", - "sourceSha256": "3319FB310BA9056C4B5D8457BC14F5FABD1C7A428F2611D6D4F9084D9CB42E66", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ncrypt.h", - "sdkSha256": "3319FB310BA9056C4B5D8457BC14F5FABD1C7A428F2611D6D4F9084D9CB42E66" + "sourceSha256": "D0B82C832CCCFA9A93F8B6B0F79BD45CFBDCA281847D57DF4DF89BB341829FDE", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ncrypt.h", + "sdkSha256": "D0B82C832CCCFA9A93F8B6B0F79BD45CFBDCA281847D57DF4DF89BB341829FDE" }, { "path": "um\\winevt.h", "sourceSha256": "98A76F9CDC7149FBA4407A8D5B4B90E4BCD5BACE35FB066DA6591AACD77C97C1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winevt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winevt.h", "sdkSha256": "98A76F9CDC7149FBA4407A8D5B4B90E4BCD5BACE35FB066DA6591AACD77C97C1" }, { "path": "um\\wintrust.h", "sourceSha256": "340A90182FC0FDDAAC188A2921BB49DD3A5486D968831764DBDE81BB0BEEDBEB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wintrust.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wintrust.h", "sdkSha256": "340A90182FC0FDDAAC188A2921BB49DD3A5486D968831764DBDE81BB0BEEDBEB" }, { "path": "um\\iscsidsc.h", "sourceSha256": "89AB3A6BF81271685B65D61C5B7E7CC1BBA32B532691685E25C42C0F3A076E5E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iscsidsc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iscsidsc.h", "sdkSha256": "89AB3A6BF81271685B65D61C5B7E7CC1BBA32B532691685E25C42C0F3A076E5E" }, { "path": "um\\sysinfoapi.h", - "sourceSha256": "077088CB53EC69D454916AAC5F00E45DDA79E09DA64054ACC141120EB67A5700", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sysinfoapi.h", - "sdkSha256": "077088CB53EC69D454916AAC5F00E45DDA79E09DA64054ACC141120EB67A5700" + "sourceSha256": "C316976D7BD82EF47A8101F6BEE9C46CA09E9D3E7356EE67F62325BE1CCF346B", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sysinfoapi.h", + "sdkSha256": "C316976D7BD82EF47A8101F6BEE9C46CA09E9D3E7356EE67F62325BE1CCF346B" }, { "path": "um\\libloaderapi.h", "sourceSha256": "8AD0BA5600D6C2E9AED318CA9D2F48F2BDF9F47ED3CD5D9F243E6F779C8E04C4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\libloaderapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\libloaderapi.h", "sdkSha256": "8AD0BA5600D6C2E9AED318CA9D2F48F2BDF9F47ED3CD5D9F243E6F779C8E04C4" }, { "path": "um\\userenv.h", "sourceSha256": "A7EC0BAE6A5E46D41CFC49A85D7A0578EAB55A2383ADA88F03CD7E99BA53C59F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\userenv.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\userenv.h", "sdkSha256": "A7EC0BAE6A5E46D41CFC49A85D7A0578EAB55A2383ADA88F03CD7E99BA53C59F" }, { "path": "um\\virtdisk.h", "sourceSha256": "B920639BCE6E101C9A29F99D2D1BB5C36C9C36E9A2C665E20EB23B452B81996A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\virtdisk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\virtdisk.h", "sdkSha256": "B920639BCE6E101C9A29F99D2D1BB5C36C9C36E9A2C665E20EB23B452B81996A" }, { "path": "um\\cryptxml.h", "sourceSha256": "CA6F2C71B1062276376F7A9F469BE9711659FF97483D89A3F31F1F506CB3AAA6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cryptxml.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cryptxml.h", "sdkSha256": "CA6F2C71B1062276376F7A9F469BE9711659FF97483D89A3F31F1F506CB3AAA6" }, { "path": "um\\mscat.h", "sourceSha256": "41FD2648CE170494FCF3047746C94322AAFB65833140A44D4A65EB33F58EDCFB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mscat.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mscat.h", "sdkSha256": "41FD2648CE170494FCF3047746C94322AAFB65833140A44D4A65EB33F58EDCFB" }, { "path": "um\\oledlg.h", "sourceSha256": "672977AF5D8E7AF32139007A9D9C61D27DA83C4AD51A92E80A95ADDB0A690EFE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oledlg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oledlg.h", "sdkSha256": "672977AF5D8E7AF32139007A9D9C61D27DA83C4AD51A92E80A95ADDB0A690EFE" }, { "path": "um\\dpa_dsa.h", "sourceSha256": "E0D5490BF2C73C0DC5E94746B2704C2A6EFDF0543DE1E00447B8F781FC6A186F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dpa_dsa.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dpa_dsa.h", "sdkSha256": "E0D5490BF2C73C0DC5E94746B2704C2A6EFDF0543DE1E00447B8F781FC6A186F" }, { "path": "um\\slpublic.h", "sourceSha256": "E6F0B71FFC9BAAF6AE43BE884A86BB84A1B32678AFE571DAEB90ADF10EDFC4B4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\slpublic.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\slpublic.h", "sdkSha256": "E6F0B71FFC9BAAF6AE43BE884A86BB84A1B32678AFE571DAEB90ADF10EDFC4B4" }, { "path": "um\\usp10.h", "sourceSha256": "B5A57E79D60811D1F0889CF7E664D368C7B22D8382FD29AC0B8745102718404E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\usp10.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\usp10.h", "sdkSha256": "B5A57E79D60811D1F0889CF7E664D368C7B22D8382FD29AC0B8745102718404E" }, { "path": "um\\diagnosticdataquery.h", "sourceSha256": "3C9DA7A4157F9931C1E94A8446A2A2A497E796B19AD653AFAE4411CF267866C4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\diagnosticdataquery.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\diagnosticdataquery.h", "sdkSha256": "3C9DA7A4157F9931C1E94A8446A2A2A497E796B19AD653AFAE4411CF267866C4" }, { "path": "um\\threadpoolapiset.h", "sourceSha256": "E91D7DEE4D22CA848E3110A4C55F32E1918DC865479343896AEC9AB653EE5110", - "sdkPath": "c\\include\\10.0.26100.0\\um\\threadpoolapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\threadpoolapiset.h", "sdkSha256": "E91D7DEE4D22CA848E3110A4C55F32E1918DC865479343896AEC9AB653EE5110" }, { "path": "um\\minidumpapiset.h", - "sourceSha256": "4FE26E01204F91A1597B6EB4660D9E85FF292D3CF1801B7723CA4DBE72B427B6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\minidumpapiset.h", - "sdkSha256": "4FE26E01204F91A1597B6EB4660D9E85FF292D3CF1801B7723CA4DBE72B427B6" + "sourceSha256": "CD3A0128F82B9F81F4637E364E61C96D1A18DEACC505E53CBAF3FD17EA68E5A4", + "sdkPath": "c\\include\\10.0.28000.0\\um\\minidumpapiset.h", + "sdkSha256": "CD3A0128F82B9F81F4637E364E61C96D1A18DEACC505E53CBAF3FD17EA68E5A4" }, { "path": "um\\prsht.h", "sourceSha256": "C894F54AC5E0584457F176F668B20B14577B06AA2BA5CE321E243C46248EA242", - "sdkPath": "c\\include\\10.0.26100.0\\um\\prsht.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\prsht.h", "sdkSha256": "C894F54AC5E0584457F176F668B20B14577B06AA2BA5CE321E243C46248EA242" }, { "path": "um\\recapis.h", "sourceSha256": "C4A03F0AC970BF5DB36F58D7C7AC108A45311A3293AD611D49CA8614E2865D3F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\recapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\recapis.h", "sdkSha256": "C4A03F0AC970BF5DB36F58D7C7AC108A45311A3293AD611D49CA8614E2865D3F" }, { "path": "um\\t2embapi.h", "sourceSha256": "4BC572E06E330109840BC5F82A227F1858D071EE53D729D4100B5CD1A94ED46C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\t2embapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\t2embapi.h", "sdkSha256": "4BC572E06E330109840BC5F82A227F1858D071EE53D729D4100B5CD1A94ED46C" }, { "path": "um\\imagehlp.h", - "sourceSha256": "04983C7F071733A26BE015D199C7B8BB6D386739187A2D6639D47F8F05254401", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imagehlp.h", - "sdkSha256": "04983C7F071733A26BE015D199C7B8BB6D386739187A2D6639D47F8F05254401" + "sourceSha256": "C2E0B1E44AE7F447A663E3A85D55C3392133A0A4E2D64413A3B09E4FD02B3804", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imagehlp.h", + "sdkSha256": "C2E0B1E44AE7F447A663E3A85D55C3392133A0A4E2D64413A3B09E4FD02B3804" }, { "path": "um\\cfapi.h", "sourceSha256": "C50FB112B31A38E91151B84C46FCFEFEB395AA12FAA60CDC270103CDCE7C4AE7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cfapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cfapi.h", "sdkSha256": "C50FB112B31A38E91151B84C46FCFEFEB395AA12FAA60CDC270103CDCE7C4AE7" }, { "path": "um\\advpub.h", "sourceSha256": "63EB078EC24EF4F8746B24041362F05D4318585F5AF51A7F2793AAB9AA354FD2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\advpub.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\advpub.h", "sdkSha256": "63EB078EC24EF4F8746B24041362F05D4318585F5AF51A7F2793AAB9AA354FD2" }, { "path": "um\\dmemmgr.h", "sourceSha256": "1D7C378175125056506DCB7E286F7C330D315E5E0A54C8772BB9C76493B4262C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dmemmgr.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dmemmgr.h", "sdkSha256": "1D7C378175125056506DCB7E286F7C330D315E5E0A54C8772BB9C76493B4262C" }, { "path": "um\\gb18030.h", "sourceSha256": "E1254977597532259A457A7B4ACFC725B9E349A1916C0BAE27C2D3905E702B6D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gb18030.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gb18030.h", "sdkSha256": "E1254977597532259A457A7B4ACFC725B9E349A1916C0BAE27C2D3905E702B6D" }, { "path": "um\\ime.h", "sourceSha256": "CFA1B354A2EEC5A1B9071F6659EA0F9B964AB0728422387A6B1B226488EC34C6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ime.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ime.h", "sdkSha256": "CFA1B354A2EEC5A1B9071F6659EA0F9B964AB0728422387A6B1B226488EC34C6" }, { "path": "um\\immdev.h", "sourceSha256": "5B0F8CBC8F6994C3332EA4D8E430AA62117440D262CA79BDEEBEE56999239018", - "sdkPath": "c\\include\\10.0.26100.0\\um\\immdev.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\immdev.h", "sdkSha256": "5B0F8CBC8F6994C3332EA4D8E430AA62117440D262CA79BDEEBEE56999239018" }, { "path": "um\\jobapi.h", "sourceSha256": "08DDFF85EC80F12B156837BBCE4F969480FEA0E32A08DADE7CC16ACECB0892D1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\jobapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\jobapi.h", "sdkSha256": "08DDFF85EC80F12B156837BBCE4F969480FEA0E32A08DADE7CC16ACECB0892D1" }, { "path": "um\\libloaderapi2.h", "sourceSha256": "D0CA5E787BF51C46E651ACAAB082A4BBC22AE9475BAF6F9AACAADD8626B2B4A9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\libloaderapi2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\libloaderapi2.h", "sdkSha256": "D0CA5E787BF51C46E651ACAAB082A4BBC22AE9475BAF6F9AACAADD8626B2B4A9" }, { "path": "um\\mschapp.h", "sourceSha256": "04BFAC77E93DDE8A8874AF5F1F7ADD6E67B522451F6C35EB5D06EC2C95A8C544", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mschapp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mschapp.h", "sdkSha256": "04BFAC77E93DDE8A8874AF5F1F7ADD6E67B522451F6C35EB5D06EC2C95A8C544" }, { "path": "um\\msctfmonitorapi.h", "sourceSha256": "08309EF148544008FA1354B6F125073E258C9E70ADB48BA16235AFE94EF61652", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msctfmonitorapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msctfmonitorapi.h", "sdkSha256": "08309EF148544008FA1354B6F125073E258C9E70ADB48BA16235AFE94EF61652" }, { "path": "um\\securityappcontainer.h", "sourceSha256": "85CC13ED7028960BD7F97C91F98B96825B46F4B8BC386AED2F2A6A9BCCBE4083", - "sdkPath": "c\\include\\10.0.26100.0\\um\\securityappcontainer.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\securityappcontainer.h", "sdkSha256": "85CC13ED7028960BD7F97C91F98B96825B46F4B8BC386AED2F2A6A9BCCBE4083" }, { "path": "um\\utilapiset.h", "sourceSha256": "A8E0F6001C784B3AD9FEB44C61D96B58C57366C473832CA8B2EA5DE05877B470", - "sdkPath": "c\\include\\10.0.26100.0\\um\\utilapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\utilapiset.h", "sdkSha256": "A8E0F6001C784B3AD9FEB44C61D96B58C57366C473832CA8B2EA5DE05877B470" }, { "path": "um\\windowsdefender.h", "sourceSha256": "51AD3E1DDC7AFD5DEAED6799C6699152C54C804CEEE78815CECB9E9EA7AB4676", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windowsdefender.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windowsdefender.h", "sdkSha256": "51AD3E1DDC7AFD5DEAED6799C6699152C54C804CEEE78815CECB9E9EA7AB4676" }, { "path": "um\\edpwin32.h", "sourceSha256": "E70BA3CBC78B0B17B52F57E01CA0C747BAA640FEA81CC1F7DE37C5D405D1C549", - "sdkPath": "c\\include\\10.0.26100.0\\um\\edpwin32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\edpwin32.h", "sdkSha256": "E70BA3CBC78B0B17B52F57E01CA0C747BAA640FEA81CC1F7DE37C5D405D1C549" }, { "path": "um\\filehc.h", "sourceSha256": "BD6C7A540EA10329641571C9A8D9B074D03052ABF304A937E0D268C98348A182", - "sdkPath": "c\\include\\10.0.26100.0\\um\\filehc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\filehc.h", "sdkSha256": "BD6C7A540EA10329641571C9A8D9B074D03052ABF304A937E0D268C98348A182" }, { "path": "um\\lmstats.h", "sourceSha256": "865F6DFB36A7D3C413B578E075DC5B7C56E841970ECEFC60D41DEE81CD1EA77A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmstats.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmstats.h", "sdkSha256": "865F6DFB36A7D3C413B578E075DC5B7C56E841970ECEFC60D41DEE81CD1EA77A" }, { "path": "um\\mtxdm.h", "sourceSha256": "8FC2D598C2709678ACB66D89416262C377BFB67DB149E3B72E6D1E2D672CCF2E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mtxdm.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mtxdm.h", "sdkSha256": "8FC2D598C2709678ACB66D89416262C377BFB67DB149E3B72E6D1E2D672CCF2E" }, { "path": "um\\propapi.h", "sourceSha256": "D7E0DD58611D6CE89EE8D669C830B96A6D276018BB4F31F04E19A984853466A0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propapi.h", "sdkSha256": "D7E0DD58611D6CE89EE8D669C830B96A6D276018BB4F31F04E19A984853466A0" }, { "path": "um\\sas.h", "sourceSha256": "53A689BC699BEDB2F85A1E306BD167A98B63F4E72C87DD5092826FFB08C1CD03", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sas.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sas.h", "sdkSha256": "53A689BC699BEDB2F85A1E306BD167A98B63F4E72C87DD5092826FFB08C1CD03" }, { "path": "um\\winnls32.h", "sourceSha256": "9DE576F479AEB64320D3D996D830DCDB4724684540943375F80596C955D4B79C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winnls32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winnls32.h", "sdkSha256": "9DE576F479AEB64320D3D996D830DCDB4724684540943375F80596C955D4B79C" }, { "path": "um\\consoleapi.h", "sourceSha256": "A0E727E696F3599EF0B570942F28646DBD94374E62C812659EBA5EBE2A42A99F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\consoleapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\consoleapi.h", "sdkSha256": "A0E727E696F3599EF0B570942F28646DBD94374E62C812659EBA5EBE2A42A99F" }, { "path": "um\\consoleapi2.h", "sourceSha256": "F2134E1D2C01611E60FF939CCD45561884AA0CCBCE590136FFD1D95161892D17", - "sdkPath": "c\\include\\10.0.26100.0\\um\\consoleapi2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\consoleapi2.h", "sdkSha256": "F2134E1D2C01611E60FF939CCD45561884AA0CCBCE590136FFD1D95161892D17" }, { "path": "um\\consoleapi3.h", "sourceSha256": "0A00BF6CA901D0D980FE8C2B9BB91A39FB84C3A99E9C87498149A04CF7CF5925", - "sdkPath": "c\\include\\10.0.26100.0\\um\\consoleapi3.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\consoleapi3.h", "sdkSha256": "0A00BF6CA901D0D980FE8C2B9BB91A39FB84C3A99E9C87498149A04CF7CF5925" }, { "path": "um\\winspool.h", "sourceSha256": "C9954B0F6051BBAC7DC550F92B88C9306C2D76DDD5CFFDB224FEE4DE3C010F23", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winspool.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winspool.h", "sdkSha256": "C9954B0F6051BBAC7DC550F92B88C9306C2D76DDD5CFFDB224FEE4DE3C010F23" }, { "path": "um\\wdsclientapi.h", "sourceSha256": "8123CF47255DBAEBB7987DFFC23EEEBCDB219EFBE89809402FE7C7B0F946E24E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdsclientapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdsclientapi.h", "sdkSha256": "8123CF47255DBAEBB7987DFFC23EEEBCDB219EFBE89809402FE7C7B0F946E24E" }, { "path": "um\\objbase.h", "sourceSha256": "14D465A8F602F2394C5455F67F129756FC525B26AD9C3099D3F6D943CAFB5007", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objbase.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objbase.h", "sdkSha256": "14D465A8F602F2394C5455F67F129756FC525B26AD9C3099D3F6D943CAFB5007" }, { "path": "um\\winver.h", "sourceSha256": "C60E137E7FF88582F72E50FE74904F5773502D229F78234EA83ABB2688F6E8AE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winver.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winver.h", "sdkSha256": "C60E137E7FF88582F72E50FE74904F5773502D229F78234EA83ABB2688F6E8AE" }, { "path": "um\\oleauto.h", "sourceSha256": "76A024C41B0778979C84466199D9C868FC767F1EACA8B2660D298798382137B4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oleauto.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oleauto.h", "sdkSha256": "76A024C41B0778979C84466199D9C868FC767F1EACA8B2660D298798382137B4" }, { "path": "um\\aclui.h", "sourceSha256": "2B3D7AF63AD3C5B44898F9F38FFCEFEF29218F21640516F5C6F5F1DEC612039D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\aclui.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\aclui.h", "sdkSha256": "2B3D7AF63AD3C5B44898F9F38FFCEFEF29218F21640516F5C6F5F1DEC612039D" }, { "path": "um\\heapapi.h", "sourceSha256": "22B606B0A4096295272BCAE6FC353C4F159F0CDFC90B5F1A9A712B2FFF50B53F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\heapapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\heapapi.h", "sdkSha256": "22B606B0A4096295272BCAE6FC353C4F159F0CDFC90B5F1A9A712B2FFF50B53F" }, { "path": "um\\rtworkq.h", "sourceSha256": "3C12EF274DB07A1F9BAD5226CEBB0359C429FDECB2E76DA2EC9E51A2EFD5E4B2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rtworkq.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rtworkq.h", "sdkSha256": "3C12EF274DB07A1F9BAD5226CEBB0359C429FDECB2E76DA2EC9E51A2EFD5E4B2" }, { "path": "um\\wdspxe.h", "sourceSha256": "A3784414323D83C19040D2FA1AF1258F4528536BB51B5D093CC3D4B4CDE8D6C2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdspxe.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdspxe.h", "sdkSha256": "A3784414323D83C19040D2FA1AF1258F4528536BB51B5D093CC3D4B4CDE8D6C2" }, { "path": "um\\compressapi.h", "sourceSha256": "B5790CA2284379703B731CDF5E2AFF65A91329E3B0D6E98925F9239C26AB225C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\compressapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\compressapi.h", "sdkSha256": "B5790CA2284379703B731CDF5E2AFF65A91329E3B0D6E98925F9239C26AB225C" }, { "path": "um\\perflib.h", "sourceSha256": "03F88C174244F339464DED36A839FCA27C0282C7712C5388E13927082ECDE986", - "sdkPath": "c\\include\\10.0.26100.0\\um\\perflib.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\perflib.h", "sdkSha256": "03F88C174244F339464DED36A839FCA27C0282C7712C5388E13927082ECDE986" }, { "path": "um\\cryptdlg.h", "sourceSha256": "ADECC299C495F4588ABEA36B883DEB3B6262F6968BF0C0D51C236537BD98DB5E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cryptdlg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cryptdlg.h", "sdkSha256": "ADECC299C495F4588ABEA36B883DEB3B6262F6968BF0C0D51C236537BD98DB5E" }, { "path": "um\\pathcch.h", "sourceSha256": "44831390EFBEA0FD7DD8EECFD670B3CEBFCE09CF8017BA37EADE9A290B0169E5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\pathcch.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\pathcch.h", "sdkSha256": "44831390EFBEA0FD7DD8EECFD670B3CEBFCE09CF8017BA37EADE9A290B0169E5" }, { "path": "um\\coml2api.h", "sourceSha256": "73B81B7FEFEF903C28A3C2EAB09CC52139EDE97C38D8FE0E3F46FADDB106A65E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\coml2api.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\coml2api.h", "sdkSha256": "73B81B7FEFEF903C28A3C2EAB09CC52139EDE97C38D8FE0E3F46FADDB106A65E" }, { "path": "um\\olectl.h", "sourceSha256": "6165D86EE5AB4F4F0B027B5D1A579ED5C704C20BC48629C19F7071650AA08594", - "sdkPath": "c\\include\\10.0.26100.0\\um\\olectl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\olectl.h", "sdkSha256": "6165D86EE5AB4F4F0B027B5D1A579ED5C704C20BC48629C19F7071650AA08594" }, { "path": "um\\processenv.h", "sourceSha256": "C10DD3BD48A2416E0AECE2259EA57CC47D6C8B9FDBAE085A4C7A5B29C71A85DD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\processenv.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\processenv.h", "sdkSha256": "C10DD3BD48A2416E0AECE2259EA57CC47D6C8B9FDBAE085A4C7A5B29C71A85DD" }, { "path": "um\\wsman.h", "sourceSha256": "7946098F11A1D51D305DB7222661BBE4122A3BDEEE37B303D7AA3F79F82729AA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsman.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsman.h", "sdkSha256": "7946098F11A1D51D305DB7222661BBE4122A3BDEEE37B303D7AA3F79F82729AA" }, { "path": "um\\wow64apiset.h", "sourceSha256": "6B14E2B59AE5B9F22BFD9A1E989A5589ADF5790832FF24CB9D8828D4E8D45CDA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wow64apiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wow64apiset.h", "sdkSha256": "6B14E2B59AE5B9F22BFD9A1E989A5589ADF5790832FF24CB9D8828D4E8D45CDA" }, { "path": "shared\\evntprov.h", - "sourceSha256": "C5CF9EE283402BD506EADA2830FEE50BCCFEFCB07439C29BE1D3181A6DE81833", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\evntprov.h", - "sdkSha256": "C5CF9EE283402BD506EADA2830FEE50BCCFEFCB07439C29BE1D3181A6DE81833" + "sourceSha256": "1833DFEF1ED1E780B4BFD7141166D02671B86C9412F10409CF6D93D1EAF454F8", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\evntprov.h", + "sdkSha256": "1833DFEF1ED1E780B4BFD7141166D02671B86C9412F10409CF6D93D1EAF454F8" }, { "path": "um\\eapmethodpeerapis.h", "sourceSha256": "690CEDEDBC56F2A4D61CFC4D88405C238523800A5BED19A2D917ACA0BB18039D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\eapmethodpeerapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\eapmethodpeerapis.h", "sdkSha256": "690CEDEDBC56F2A4D61CFC4D88405C238523800A5BED19A2D917ACA0BB18039D" }, { "path": "um\\schannel.h", - "sourceSha256": "72E2EBFE9DD487AB5BAED64F2147C451B1954BF8B2B5D3DB9AB3F9B4009BE8CE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\schannel.h", - "sdkSha256": "72E2EBFE9DD487AB5BAED64F2147C451B1954BF8B2B5D3DB9AB3F9B4009BE8CE" + "sourceSha256": "A2F73DC836B909CC66FE0B09836BB5CE24AB209242BCCDA6243885B53BECE4D2", + "sdkPath": "c\\include\\10.0.28000.0\\um\\schannel.h", + "sdkSha256": "A2F73DC836B909CC66FE0B09836BB5CE24AB209242BCCDA6243885B53BECE4D2" }, { "path": "um\\shlobj.h", "sourceSha256": "4C8CC5AAF1C4DC8778F16A67D883BD42EFBE47F8A9F4ECF99E2DA3A420C874FB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shlobj.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shlobj.h", "sdkSha256": "4C8CC5AAF1C4DC8778F16A67D883BD42EFBE47F8A9F4ECF99E2DA3A420C874FB" }, { "path": "um\\eappapis.h", "sourceSha256": "FD0695FF804EB1E103BD3EC49CCCF6349DBEFB23D947A79FF9402B48C310C855", - "sdkPath": "c\\include\\10.0.26100.0\\um\\eappapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\eappapis.h", "sdkSha256": "FD0695FF804EB1E103BD3EC49CCCF6349DBEFB23D947A79FF9402B48C310C855" }, { "path": "um\\eaphostpeerconfigapis.h", "sourceSha256": "B776971CCA267D4B15DE45115D3B664CAC010DCC365D839F56D85C1B63BA7D00", - "sdkPath": "c\\include\\10.0.26100.0\\um\\eaphostpeerconfigapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\eaphostpeerconfigapis.h", "sdkSha256": "B776971CCA267D4B15DE45115D3B664CAC010DCC365D839F56D85C1B63BA7D00" }, { "path": "um\\eapmethodauthenticatorapis.h", "sourceSha256": "9D753662323AA62ED6D3C4635374945253E9CD0B9203EE9404593FD34FD4DE43", - "sdkPath": "c\\include\\10.0.26100.0\\um\\eapmethodauthenticatorapis.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\eapmethodauthenticatorapis.h", "sdkSha256": "9D753662323AA62ED6D3C4635374945253E9CD0B9203EE9404593FD34FD4DE43" }, { "path": "um\\wincrypt.h", - "sourceSha256": "D73BA64946BBAAD342447564676A837E15380041B37674639FCF659EE67F13E2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincrypt.h", - "sdkSha256": "D73BA64946BBAAD342447564676A837E15380041B37674639FCF659EE67F13E2" + "sourceSha256": "FBFE26829E98353B0F3E889FC85A330ECDD9D28531BA4165F22EA0A6E4BD2C4F", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincrypt.h", + "sdkSha256": "FBFE26829E98353B0F3E889FC85A330ECDD9D28531BA4165F22EA0A6E4BD2C4F" }, { "path": "um\\mi.h", "sourceSha256": "C0C43BBDA10B59109484EC0D5569C2CD330BF1E81CE73F4182CF8FD6434492B3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mi.h", "sdkSha256": "C0C43BBDA10B59109484EC0D5569C2CD330BF1E81CE73F4182CF8FD6434492B3" }, { "path": "um\\msi.h", "sourceSha256": "1E6372BF9015CE2BC6B9960A605B67B38019E6422AB636D61693C290E127484F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msi.h", "sdkSha256": "1E6372BF9015CE2BC6B9960A605B67B38019E6422AB636D61693C290E127484F" }, { "path": "um\\winreg.h", "sourceSha256": "BFF833E8D092A0CB657837E3162B8BB0CF35B43105203F4CE880972A501D61D6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winreg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winreg.h", "sdkSha256": "BFF833E8D092A0CB657837E3162B8BB0CF35B43105203F4CE880972A501D61D6" }, { "path": "um\\wtsapi32.h", "sourceSha256": "4AF15AD3267427BD00FFE375D6CBA0F87106DDEED84D276C139032CD679FC19A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wtsapi32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wtsapi32.h", "sdkSha256": "4AF15AD3267427BD00FFE375D6CBA0F87106DDEED84D276C139032CD679FC19A" }, { "path": "um\\ntsecapi.h", - "sourceSha256": "A506D6BB9C66F87436ACE6D0CECEFCAD9ED10996E25E16E31ADB47075F72EAC2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntsecapi.h", - "sdkSha256": "A506D6BB9C66F87436ACE6D0CECEFCAD9ED10996E25E16E31ADB47075F72EAC2" + "sourceSha256": "9C58400D74681DCC439EB749B03090D5343501431C560954330744BFB4EC9C33", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntsecapi.h", + "sdkSha256": "9C58400D74681DCC439EB749B03090D5343501431C560954330744BFB4EC9C33" }, { "path": "shared\\sspi.h", - "sourceSha256": "0A3BC3C5F2D8DB8D23C370999A9E0208678A97A665F4D1B633A601E6F2B836CA", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sspi.h", - "sdkSha256": "0A3BC3C5F2D8DB8D23C370999A9E0208678A97A665F4D1B633A601E6F2B836CA" + "sourceSha256": "58B051330C8ECA098E7813657D734187C05A602B0732896FB0CE487F4C5E2296", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sspi.h", + "sdkSha256": "58B051330C8ECA098E7813657D734187C05A602B0732896FB0CE487F4C5E2296" }, { "path": "um\\ntmsapi.h", "sourceSha256": "46E8A601E6A71923F3B8BC3B1C92636C79F7EB97DF3289B557B13BEC78F0A1F9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntmsapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntmsapi.h", "sdkSha256": "46E8A601E6A71923F3B8BC3B1C92636C79F7EB97DF3289B557B13BEC78F0A1F9" }, { "path": "um\\mfapi.h", - "sourceSha256": "524BA702B29DD429B2E79DD70C974DB3521DDB3D5C50FEAD5E2D787769B61B45", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfapi.h", - "sdkSha256": "524BA702B29DD429B2E79DD70C974DB3521DDB3D5C50FEAD5E2D787769B61B45" + "sourceSha256": "57EE274BF3440384EBA1C59C084D0DA86198545D7CA2BA8A29CB1D91F9F2C28C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfapi.h", + "sdkSha256": "57EE274BF3440384EBA1C59C084D0DA86198545D7CA2BA8A29CB1D91F9F2C28C" }, { "path": "um\\pdh.h", "sourceSha256": "38AA66B854E254324E47A267BF888437B8060AC177067494207263EAF953F1A7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\pdh.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\pdh.h", "sdkSha256": "38AA66B854E254324E47A267BF888437B8060AC177067494207263EAF953F1A7" }, { "path": "um\\wincred.h", "sourceSha256": "864E3DACE7858151D113ABD650F60A0E8A3A7B6ABE8B1164EA8225BB6D531D44", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincred.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincred.h", "sdkSha256": "864E3DACE7858151D113ABD650F60A0E8A3A7B6ABE8B1164EA8225BB6D531D44" }, { "path": "shared\\bcrypt.h", - "sourceSha256": "C979EE7490EC190779385D69A39026F9D79308EEB6AAADA64EF0766C1E3E0376", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\bcrypt.h", - "sdkSha256": "C979EE7490EC190779385D69A39026F9D79308EEB6AAADA64EF0766C1E3E0376" + "sourceSha256": "B463D20348188ECDF20F01A730B2316224AD1B8E4592F88C3B69E1D902F2A8D5", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\bcrypt.h", + "sdkSha256": "B463D20348188ECDF20F01A730B2316224AD1B8E4592F88C3B69E1D902F2A8D5" }, { "path": "shared\\evntrace.h", - "sourceSha256": "40D80842618B587A45CA4E15B50E8DF718917727C2F154424E28E81E84300B5D", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\evntrace.h", - "sdkSha256": "40D80842618B587A45CA4E15B50E8DF718917727C2F154424E28E81E84300B5D" + "sourceSha256": "55E215811178AE9DE6232FC655720B696EC1B2AB49C1B1C7A3AFA43867F2593C", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\evntrace.h", + "sdkSha256": "55E215811178AE9DE6232FC655720B696EC1B2AB49C1B1C7A3AFA43867F2593C" }, { "path": "um\\ddeml.h", "sourceSha256": "C97ABAB2627346D786459FC86A5DA696F930C85C622A78732A71B7AD0790C1DC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddeml.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddeml.h", "sdkSha256": "C97ABAB2627346D786459FC86A5DA696F930C85C622A78732A71B7AD0790C1DC" }, { "path": "um\\combaseapi.h", - "sourceSha256": "4B33BDF8CAD7D07A0BD2945B4B96436B21021C46EEE900881D2531616BA4DF5F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\combaseapi.h", - "sdkSha256": "4B33BDF8CAD7D07A0BD2945B4B96436B21021C46EEE900881D2531616BA4DF5F" + "sourceSha256": "B931154FEFF3381DA530E6B067D3DF97E59BFAAD6B0C8882136547EE8822FE21", + "sdkPath": "c\\include\\10.0.28000.0\\um\\combaseapi.h", + "sdkSha256": "B931154FEFF3381DA530E6B067D3DF97E59BFAAD6B0C8882136547EE8822FE21" }, { "path": "um\\msiquery.h", "sourceSha256": "E75952B2F2F5EC2FDC17CE24CC7A6EBAF9F213CE4A4424584D2B493A334CFD4C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msiquery.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msiquery.h", "sdkSha256": "E75952B2F2F5EC2FDC17CE24CC7A6EBAF9F213CE4A4424584D2B493A334CFD4C" }, { "path": "um\\authz.h", "sourceSha256": "D2DE15AAE3D8E55DF6762F84D546A764E9C5B8459E12607B5DB90A33870977E6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\authz.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\authz.h", "sdkSha256": "D2DE15AAE3D8E55DF6762F84D546A764E9C5B8459E12607B5DB90A33870977E6" }, { "path": "um\\winscard.h", "sourceSha256": "EE43C5A32FD009DA030047A0DF19A66E02ED6387F54AF0162EC9BD6F9854E845", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winscard.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winscard.h", "sdkSha256": "EE43C5A32FD009DA030047A0DF19A66E02ED6387F54AF0162EC9BD6F9854E845" }, { "path": "um\\clfsw32.h", "sourceSha256": "8EAA10BD641BB60158B5382B3000AE975949CC5DEAE3D798897946FF8079C5AE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\clfsw32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\clfsw32.h", "sdkSha256": "8EAA10BD641BB60158B5382B3000AE975949CC5DEAE3D798897946FF8079C5AE" }, { "path": "um\\appmodel.h", - "sourceSha256": "D652F5DE60B8F811D77949A5513838CAA01610ECD6D6AE064A92C1EC2198BB56", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appmodel.h", - "sdkSha256": "D652F5DE60B8F811D77949A5513838CAA01610ECD6D6AE064A92C1EC2198BB56" + "sourceSha256": "85956439622A946DD6D36FF11E2B378611023EDA8D327A7B47D7625FD2553B3C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appmodel.h", + "sdkSha256": "85956439622A946DD6D36FF11E2B378611023EDA8D327A7B47D7625FD2553B3C" }, { "path": "um\\ole2.h", "sourceSha256": "FF6645D2BA037DF3835689CA7EFA3FA4990C229BC98E195E500145A6B1344CE6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ole2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ole2.h", "sdkSha256": "FF6645D2BA037DF3835689CA7EFA3FA4990C229BC98E195E500145A6B1344CE6" }, { "path": "um\\ktmw32.h", "sourceSha256": "CC12B25ABF803888E37B8A3AF983195F1C5F0C9D3E11C4F3972B135EF7B09C14", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ktmw32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ktmw32.h", "sdkSha256": "CC12B25ABF803888E37B8A3AF983195F1C5F0C9D3E11C4F3972B135EF7B09C14" }, { "path": "um\\aclapi.h", "sourceSha256": "963251E7FFD638A9E93E60E22B0EE95ABF858E846DCC49D6B1DF61AE0C59270B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\aclapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\aclapi.h", "sdkSha256": "963251E7FFD638A9E93E60E22B0EE95ABF858E846DCC49D6B1DF61AE0C59270B" }, { "path": "um\\srpapi.h", "sourceSha256": "1301D08ACF12F045D8A619C87E28DFCBE29F504EEFC62E9001EF1DD51FCD1C8B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\srpapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\srpapi.h", "sdkSha256": "1301D08ACF12F045D8A619C87E28DFCBE29F504EEFC62E9001EF1DD51FCD1C8B" }, { "path": "um\\winefs.h", "sourceSha256": "9DB6C6C3188C7A4822F7484C554846795D859F498B7568F8014ABAD513437000", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winefs.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winefs.h", "sdkSha256": "9DB6C6C3188C7A4822F7484C554846795D859F498B7568F8014ABAD513437000" }, { "path": "um\\dde.h", "sourceSha256": "DFA78B30D4C4A6BD7FC0DB7E2DF4041C589DB7068B5C5020C5671B674416DF11", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dde.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dde.h", "sdkSha256": "DFA78B30D4C4A6BD7FC0DB7E2DF4041C589DB7068B5C5020C5671B674416DF11" }, { "path": "um\\muiload.h", "sourceSha256": "C66898D7CE1712C36C968CE040B8C50AFCF200E782C4FB5B413FBE1004272AFC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\muiload.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\muiload.h", "sdkSha256": "C66898D7CE1712C36C968CE040B8C50AFCF200E782C4FB5B413FBE1004272AFC" }, { "path": "um\\tokenbinding.h", "sourceSha256": "3494AC9F6DA8021F91799C3D2C3EFEF883B8F812E275374F0C975114DC7ABBC8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tokenbinding.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tokenbinding.h", "sdkSha256": "3494AC9F6DA8021F91799C3D2C3EFEF883B8F812E275374F0C975114DC7ABBC8" }, { "path": "um\\d2d1_3.h", "sourceSha256": "3E7C390633A073822C8701E50F0B1E7AA57C5508F27C446CC0D052B826DE6754", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1_3.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1_3.h", "sdkSha256": "3E7C390633A073822C8701E50F0B1E7AA57C5508F27C446CC0D052B826DE6754" }, { "path": "um\\dciman.h", "sourceSha256": "435434604482E04C138FBA94AAC2465127CD602283FB574410E7490EA91D2821", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dciman.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dciman.h", "sdkSha256": "435434604482E04C138FBA94AAC2465127CD602283FB574410E7490EA91D2821" }, { "path": "um\\intshcut.h", "sourceSha256": "F37787E638E69A61191DDF8E35386AFF85C3296F682FC5BE648CBF395E44BC3E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\intshcut.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\intshcut.h", "sdkSha256": "F37787E638E69A61191DDF8E35386AFF85C3296F682FC5BE648CBF395E44BC3E" }, { "path": "um\\wdsbp.h", "sourceSha256": "A0A652DBDE88F936892ACD53A984ECBBD35684D5249E960B7E5CCEB2D5347CE8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdsbp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdsbp.h", "sdkSha256": "A0A652DBDE88F936892ACD53A984ECBBD35684D5249E960B7E5CCEB2D5347CE8" }, { "path": "um\\certpoleng.h", "sourceSha256": "8C24B666D984923299602853CEAC199EB6A3FDC1114A6F94F1A6A4D7067BA284", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certpoleng.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certpoleng.h", "sdkSha256": "8C24B666D984923299602853CEAC199EB6A3FDC1114A6F94F1A6A4D7067BA284" }, { "path": "um\\d2d1_2.h", "sourceSha256": "8D0C850C5A7A7307C732F2AF38A869D8439FFC1560FA915531C07879A46E4C9A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1_2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1_2.h", "sdkSha256": "8D0C850C5A7A7307C732F2AF38A869D8439FFC1560FA915531C07879A46E4C9A" }, { "path": "um\\interlockedapi.h", "sourceSha256": "4B0D3BC138EAAB8DC9DD40BFB109F5FEA4CBD2CAAF92D63A4CF60A8EDCFB0E3A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\interlockedapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\interlockedapi.h", "sdkSha256": "4B0D3BC138EAAB8DC9DD40BFB109F5FEA4CBD2CAAF92D63A4CF60A8EDCFB0E3A" }, { "path": "um\\sensapi.h", "sourceSha256": "F166E1E1504950DF339DBF026FB916C7560DC1C36826960B1129D5B79FFB906C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sensapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sensapi.h", "sdkSha256": "F166E1E1504950DF339DBF026FB916C7560DC1C36826960B1129D5B79FFB906C" }, { "path": "um\\appmgmt.h", "sourceSha256": "FEF0E1C7A1F54F1258F611534932E2F0D4541E7EA722115D90584EDAEB345178", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appmgmt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appmgmt.h", "sdkSha256": "FEF0E1C7A1F54F1258F611534932E2F0D4541E7EA722115D90584EDAEB345178" }, { "path": "um\\elscore.h", "sourceSha256": "8CFF29AE81B962FF4F664CC0EF0E169755AC23BFDAAF8796DEE1B5D5A1D3907E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\elscore.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\elscore.h", "sdkSha256": "8CFF29AE81B962FF4F664CC0EF0E169755AC23BFDAAF8796DEE1B5D5A1D3907E" }, { "path": "um\\fltuser.h", "sourceSha256": "0952FB9607E660CC31676F12964CCEA83F3502425E683EE61FB382185277D41D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fltuser.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fltuser.h", "sdkSha256": "0952FB9607E660CC31676F12964CCEA83F3502425E683EE61FB382185277D41D" }, { "path": "um\\namespaceapi.h", "sourceSha256": "3257AD8AF53C5809BE4D5D17ED0FFD8B49451D3F27C1FD747FFDE3E0A7A81583", - "sdkPath": "c\\include\\10.0.26100.0\\um\\namespaceapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\namespaceapi.h", "sdkSha256": "3257AD8AF53C5809BE4D5D17ED0FFD8B49451D3F27C1FD747FFDE3E0A7A81583" }, { "path": "um\\ntsecpkg.h", - "sourceSha256": "B50F11CF93C2A247115B57B6715230A7CCF0C8DD314B797A348A70CD5B336E49", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntsecpkg.h", - "sdkSha256": "B50F11CF93C2A247115B57B6715230A7CCF0C8DD314B797A348A70CD5B336E49" + "sourceSha256": "B98146CC6D50FAF336A6550E10F1A205640DDE8E2FE072F8BB6DC4A61E5F8C33", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntsecpkg.h", + "sdkSha256": "B98146CC6D50FAF336A6550E10F1A205640DDE8E2FE072F8BB6DC4A61E5F8C33" }, { "path": "um\\scrnsave.h", "sourceSha256": "666BA74E48ED83C7D7C7AB9CE797491FC7504AC8E2C219EDC5B371193E571643", - "sdkPath": "c\\include\\10.0.26100.0\\um\\scrnsave.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\scrnsave.h", "sdkSha256": "666BA74E48ED83C7D7C7AB9CE797491FC7504AC8E2C219EDC5B371193E571643" }, { "path": "um\\wtshintapi.h", "sourceSha256": "EF092E7EA4612EC8CC27E013C98A9612F844CDB232BDA9C294191963CCB5FC01", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wtshintapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wtshintapi.h", "sdkSha256": "EF092E7EA4612EC8CC27E013C98A9612F844CDB232BDA9C294191963CCB5FC01" }, { "path": "winrt\\robuffer.h", "sourceSha256": "90FBD0FA6AC9D6016E1592DEF7D0DB8681687441E3BF846A256EC07E1BD7C6A6", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\robuffer.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\robuffer.h", "sdkSha256": "90FBD0FA6AC9D6016E1592DEF7D0DB8681687441E3BF846A256EC07E1BD7C6A6" }, { "path": "winrt\\rometadata.h", "sourceSha256": "89174D7BF7C9B1A602B0559E17E6F2064D3722DB6E67C3187ACA346CA54FE021", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\rometadata.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\rometadata.h", "sdkSha256": "89174D7BF7C9B1A602B0559E17E6F2064D3722DB6E67C3187ACA346CA54FE021" }, { "path": "um\\winddi.h", - "sourceSha256": "7D2FF626273F5CF40CD19FCBD2D0EEF615DDE65DBF5EA4A47FDA7436DA8028FD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winddi.h", - "sdkSha256": "7D2FF626273F5CF40CD19FCBD2D0EEF615DDE65DBF5EA4A47FDA7436DA8028FD" + "sourceSha256": "4E9172E002504605C78DBE637361D5BAB9C9DA7813A6FA9451DDA4456BEA9D0C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winddi.h", + "sdkSha256": "4E9172E002504605C78DBE637361D5BAB9C9DA7813A6FA9451DDA4456BEA9D0C" }, { "path": "um\\vfw.h", "sourceSha256": "14B6D9F7999E2A2480A287D841DE7460E29D73EA5204422C23B78D52084B9459", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vfw.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vfw.h", "sdkSha256": "14B6D9F7999E2A2480A287D841DE7460E29D73EA5204422C23B78D52084B9459" }, { "path": "um\\mmeapi.h", "sourceSha256": "EE475F72AE76FEA07CE189895A14A4C7DD345568F59884801E6AA4744E931C65", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmeapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmeapi.h", "sdkSha256": "EE475F72AE76FEA07CE189895A14A4C7DD345568F59884801E6AA4744E931C65" }, { "path": "um\\winfax.h", "sourceSha256": "2212E84CF90AE48CCD094F37E0D4AD2D8B838540E832DB7BEFE76DDFE954C44A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winfax.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winfax.h", "sdkSha256": "2212E84CF90AE48CCD094F37E0D4AD2D8B838540E832DB7BEFE76DDFE954C44A" }, { "path": "um\\msacm.h", "sourceSha256": "8C38E5AA5B3EEC7909BA17384EC2AC5421D702D52E00BADB06DB80E033DEF375", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msacm.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msacm.h", "sdkSha256": "8C38E5AA5B3EEC7909BA17384EC2AC5421D702D52E00BADB06DB80E033DEF375" }, { "path": "um\\winbio.h", "sourceSha256": "632188306CD9BDE1FFDCE3FCBC1D66F2C95D9CBAE400BB53AA5F960FC32A7D89", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winbio.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winbio.h", "sdkSha256": "632188306CD9BDE1FFDCE3FCBC1D66F2C95D9CBAE400BB53AA5F960FC32A7D89" }, { "path": "um\\mmiscapi.h", "sourceSha256": "C732D81FF59B188F570972CBEEEDFD5BC3BC5D18CCEB5475C41C4AB540358CF3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmiscapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmiscapi.h", "sdkSha256": "C732D81FF59B188F570972CBEEEDFD5BC3BC5D18CCEB5475C41C4AB540358CF3" }, { "path": "um\\faxdev.h", "sourceSha256": "016709F6B5504B5AD5484D8C988AC02BA94C1F26C00DCA8756EF751794FAC0BD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\faxdev.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\faxdev.h", "sdkSha256": "016709F6B5504B5AD5484D8C988AC02BA94C1F26C00DCA8756EF751794FAC0BD" }, { "path": "um\\wsdutil.h", "sourceSha256": "1910ABBA0A599BFF998381920706A9DD5A77CC60FC460FF07E662BE1B9CD02B6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdutil.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdutil.h", "sdkSha256": "1910ABBA0A599BFF998381920706A9DD5A77CC60FC460FF07E662BE1B9CD02B6" }, { "path": "um\\prntvpt.h", "sourceSha256": "C971F87CAB24C231B8771DC75E9A8EE061285249EA49B2DBAA362E7F426E1FB9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\prntvpt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\prntvpt.h", "sdkSha256": "C971F87CAB24C231B8771DC75E9A8EE061285249EA49B2DBAA362E7F426E1FB9" }, { "path": "um\\faxroute.h", "sourceSha256": "76841637BB78AC8ABFD487D397AA5F1A1BA6F7143B50FED165B13ACCFF7F97CC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\faxroute.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\faxroute.h", "sdkSha256": "76841637BB78AC8ABFD487D397AA5F1A1BA6F7143B50FED165B13ACCFF7F97CC" }, { "path": "um\\joystickapi.h", "sourceSha256": "D87B7DD3517D2018478DF501BA3EA578D7ECDC4DDDF44720802C414376FB5734", - "sdkPath": "c\\include\\10.0.26100.0\\um\\joystickapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\joystickapi.h", "sdkSha256": "D87B7DD3517D2018478DF501BA3EA578D7ECDC4DDDF44720802C414376FB5734" }, { "path": "um\\faxext.h", "sourceSha256": "3A3BCF9C24D8C958FEA7BCA435C42027C87AEA822B86D14587EBBA467F390BA2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\faxext.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\faxext.h", "sdkSha256": "3A3BCF9C24D8C958FEA7BCA435C42027C87AEA822B86D14587EBBA467F390BA2" }, { "path": "um\\prnasnot.h", "sourceSha256": "8A56571BD122A6DC29B47C174986F3FB19B168015484F8D8BBC8A7B61D84AD2E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\prnasnot.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\prnasnot.h", "sdkSha256": "8A56571BD122A6DC29B47C174986F3FB19B168015484F8D8BBC8A7B61D84AD2E" }, { "path": "um\\winbio_adapter.h", "sourceSha256": "E0A3A6ADEA3FD1B6693874472F2BA2839A09994F43F2AED42741C48391EDDF7D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winbio_adapter.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winbio_adapter.h", "sdkSha256": "E0A3A6ADEA3FD1B6693874472F2BA2839A09994F43F2AED42741C48391EDDF7D" }, { "path": "um\\fxsutility.h", "sourceSha256": "A8EF328A70BC9C5E6AA2CF660C1DD8B775979C17CF20B8FABEE73374F63771F5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fxsutility.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fxsutility.h", "sdkSha256": "A8EF328A70BC9C5E6AA2CF660C1DD8B775979C17CF20B8FABEE73374F63771F5" }, { "path": "um\\shlwapi.h", "sourceSha256": "8845385DE1A3C182FA00350925CA73E7C270AC579F3F5512F1B311ACE8A226B1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shlwapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shlwapi.h", "sdkSha256": "8845385DE1A3C182FA00350925CA73E7C270AC579F3F5512F1B311ACE8A226B1" }, { "path": "um\\propvarutil.h", "sourceSha256": "1ED6B7BB5CB2DACC6714DD77F7C414719F8FBF6F6734526A8EFC25AFE623E3E3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propvarutil.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propvarutil.h", "sdkSha256": "1ED6B7BB5CB2DACC6714DD77F7C414719F8FBF6F6734526A8EFC25AFE623E3E3" }, { "path": "um\\shlobj_core.h", "sourceSha256": "9EB3A933681921C03766DD57CA8B7AB54FCB9F28F1D432EB0E546039F61D943D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shlobj_core.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shlobj_core.h", "sdkSha256": "9EB3A933681921C03766DD57CA8B7AB54FCB9F28F1D432EB0E546039F61D943D" }, { "path": "um\\uiautomationcoreapi.h", "sourceSha256": "5AEF9A750219F162A9F6C45BD1E10CABAFED69ECAE634E79D814902428EF22A8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiautomationcoreapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiautomationcoreapi.h", "sdkSha256": "5AEF9A750219F162A9F6C45BD1E10CABAFED69ECAE634E79D814902428EF22A8" }, { "path": "um\\commctrl.h", "sourceSha256": "6B8FA0799817FD438A9A3539C3E743B40ACF6C77763C8F5ACDBC91988E4736B0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\commctrl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\commctrl.h", "sdkSha256": "6B8FA0799817FD438A9A3539C3E743B40ACF6C77763C8F5ACDBC91988E4736B0" }, { "path": "um\\uxtheme.h", "sourceSha256": "57822AA309F31AE2564C2FDF7EAE6DF6E42D3BD55D26E4762A090B172421DA67", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uxtheme.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uxtheme.h", "sdkSha256": "57822AA309F31AE2564C2FDF7EAE6DF6E42D3BD55D26E4762A090B172421DA67" }, { "path": "um\\shellapi.h", - "sourceSha256": "C0712ED939BABDD72F9602A031120D71360324D7EC7933C31D6739AADB49C989", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shellapi.h", - "sdkSha256": "C0712ED939BABDD72F9602A031120D71360324D7EC7933C31D6739AADB49C989" + "sourceSha256": "B3C7861E9D52972C87715B5A5E5517C342AA83A54C04E0B674BB80FF448C86F7", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shellapi.h", + "sdkSha256": "B3C7861E9D52972C87715B5A5E5517C342AA83A54C04E0B674BB80FF448C86F7" }, { "path": "um\\avrt.h", "sourceSha256": "9AD68E7C0709D64C283B88AF31A9FD59B5D1054768CD4C7AF51551B8424450E4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\avrt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\avrt.h", "sdkSha256": "9AD68E7C0709D64C283B88AF31A9FD59B5D1054768CD4C7AF51551B8424450E4" }, { "path": "um\\commdlg.h", "sourceSha256": "8B98A194569E52CA87266B5A8D676CCBA67538CE7851571003DB8F7A606B0D2B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\commdlg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\commdlg.h", "sdkSha256": "8B98A194569E52CA87266B5A8D676CCBA67538CE7851571003DB8F7A606B0D2B" }, { "path": "shared\\dcomptypes.h", "sourceSha256": "447E4ADF411B9818D68BB6F5A0A9EF9F423B95CC2B10610F51936DC921135594", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dcomptypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dcomptypes.h", "sdkSha256": "447E4ADF411B9818D68BB6F5A0A9EF9F423B95CC2B10610F51936DC921135594" }, { "path": "um\\dcomp.h", "sourceSha256": "09539255B912F1072B276C6E33DD55FA80EB1A5C953C465E89A960F6E1D881D6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dcomp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dcomp.h", "sdkSha256": "09539255B912F1072B276C6E33DD55FA80EB1A5C953C465E89A960F6E1D881D6" }, { "path": "um\\d2d1.h", "sourceSha256": "FCF7F870ACF11E1509B4CEC31D433602502B77D0A236E417304948A1CE7486A5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1.h", "sdkSha256": "FCF7F870ACF11E1509B4CEC31D433602502B77D0A236E417304948A1CE7486A5" }, { "path": "um\\debugapi.h", "sourceSha256": "D63F6C4AAD9787BB8FF2E54966C8DB156B0EF1570BE58201D74DFF12CD6F1E22", - "sdkPath": "c\\include\\10.0.26100.0\\um\\debugapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\debugapi.h", "sdkSha256": "D63F6C4AAD9787BB8FF2E54966C8DB156B0EF1570BE58201D74DFF12CD6F1E22" }, { "path": "um\\enclaveapi.h", "sourceSha256": "9467C4BC6400057C3D3205D53667000BE525CAD64A381552291E869430AF6A76", - "sdkPath": "c\\include\\10.0.26100.0\\um\\enclaveapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\enclaveapi.h", "sdkSha256": "9467C4BC6400057C3D3205D53667000BE525CAD64A381552291E869430AF6A76" }, { "path": "um\\txfw32.h", - "sourceSha256": "7794FE22BF8E39A887027CE21DA7B6A2F87CA3D918B2690EAE4C58DCD3B307DB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\txfw32.h", - "sdkSha256": "7794FE22BF8E39A887027CE21DA7B6A2F87CA3D918B2690EAE4C58DCD3B307DB" + "sourceSha256": "4167050D7957DF0BBBDE734168E44704C37ACCB765C0B1545BD7738D7B5A3E2C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\txfw32.h", + "sdkSha256": "4167050D7957DF0BBBDE734168E44704C37ACCB765C0B1545BD7738D7B5A3E2C" }, { "path": "winrt\\roerrorapi.h", "sourceSha256": "0D24722C95A57E408F2F8DD099C6A5D68D5D1D3671F6D9DE2C6E5F38625A0E19", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\roerrorapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\roerrorapi.h", "sdkSha256": "0D24722C95A57E408F2F8DD099C6A5D68D5D1D3671F6D9DE2C6E5F38625A0E19" }, { "path": "um\\ncryptprotect.h", "sourceSha256": "44E9841A5B0F7B452EAB7EA49F3555B192C509EEA784B3BB3F2C55E2C256ECE7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ncryptprotect.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ncryptprotect.h", "sdkSha256": "44E9841A5B0F7B452EAB7EA49F3555B192C509EEA784B3BB3F2C55E2C256ECE7" }, { "path": "um\\wdstci.h", "sourceSha256": "2D9338DE1980CD4C62ECED5DC9C99B7F562614ED034754AD3B2BC178E329ACE7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdstci.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdstci.h", "sdkSha256": "2D9338DE1980CD4C62ECED5DC9C99B7F562614ED034754AD3B2BC178E329ACE7" }, { "path": "um\\datetimeapi.h", "sourceSha256": "A4325C76B9BC900C22EF3D766C739CCD3A71894E81833AD637D50F9E45417117", - "sdkPath": "c\\include\\10.0.26100.0\\um\\datetimeapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\datetimeapi.h", "sdkSha256": "A4325C76B9BC900C22EF3D766C739CCD3A71894E81833AD637D50F9E45417117" }, { "path": "um\\realtimeapiset.h", "sourceSha256": "00C874B981A1242EE4EBC21E6AE96A69D7AA70662D820CEFFBABCFEA859B03E4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\realtimeapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\realtimeapiset.h", "sdkSha256": "00C874B981A1242EE4EBC21E6AE96A69D7AA70662D820CEFFBABCFEA859B03E4" }, { "path": "um\\winternl.h", - "sourceSha256": "A43424486349C38F697C009512DFE4EB8FCA733D7665AFAB42F50752170B9785", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winternl.h", - "sdkSha256": "A43424486349C38F697C009512DFE4EB8FCA733D7665AFAB42F50752170B9785" + "sourceSha256": "4CCBA4A92B8781F60A99F3DBF0D7065AA02D2A45A87E8ADB811A7A6A005D47CF", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winternl.h", + "sdkSha256": "4CCBA4A92B8781F60A99F3DBF0D7065AA02D2A45A87E8ADB811A7A6A005D47CF" }, { "path": "um\\lzexpand.h", "sourceSha256": "55E2FE7B987A83EEB10466A2F38411F406480362ACCCE187FDC222AF36656061", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lzexpand.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lzexpand.h", "sdkSha256": "55E2FE7B987A83EEB10466A2F38411F406480362ACCCE187FDC222AF36656061" }, { "path": "shared\\secext.h", "sourceSha256": "22C2FDCFD609A59F8C1D4CF22A61E540896CE309AE1239CEF2B746E88CB84EF1", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\secext.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\secext.h", "sdkSha256": "22C2FDCFD609A59F8C1D4CF22A61E540896CE309AE1239CEF2B746E88CB84EF1" }, { "path": "um\\wct.h", "sourceSha256": "0D060F9C7C5B55CDB046EB7712A422820BE2D6D8F3E17AA58EA4499E51BF3426", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wct.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wct.h", "sdkSha256": "0D060F9C7C5B55CDB046EB7712A422820BE2D6D8F3E17AA58EA4499E51BF3426" }, { "path": "winrt\\roapi.h", "sourceSha256": "07C564D33B64745ED92C5DCCF7915E4191083AEBE84A4C7D6A7C87561AB0245E", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\roapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\roapi.h", "sdkSha256": "07C564D33B64745ED92C5DCCF7915E4191083AEBE84A4C7D6A7C87561AB0245E" }, { "path": "um\\handleapi.h", "sourceSha256": "C967FDF1A98E4CE8D501DAE26B905F6452173B2BE1C25E6AA2E5EEAE415369CC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\handleapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\handleapi.h", "sdkSha256": "C967FDF1A98E4CE8D501DAE26B905F6452173B2BE1C25E6AA2E5EEAE415369CC" }, { "path": "um\\textserv.h", "sourceSha256": "1D2561BDBB105BABBF603ABAF663F7CE3EE868ACFC5537597A7E93DF6D7DFE31", - "sdkPath": "c\\include\\10.0.26100.0\\um\\textserv.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\textserv.h", "sdkSha256": "1D2561BDBB105BABBF603ABAF663F7CE3EE868ACFC5537597A7E93DF6D7DFE31" }, { "path": "um\\dpapi.h", "sourceSha256": "A98783DA8086DEF831C97880296504468A043B01E7EB35E500A70198F33582BC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dpapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dpapi.h", "sdkSha256": "A98783DA8086DEF831C97880296504468A043B01E7EB35E500A70198F33582BC" }, { "path": "um\\shellscalingapi.h", "sourceSha256": "FC061CABF74C2E751E68D75067E29E3422706A0A5426DB6E7A3E89DCC3A2F7F4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shellscalingapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shellscalingapi.h", "sdkSha256": "FC061CABF74C2E751E68D75067E29E3422706A0A5426DB6E7A3E89DCC3A2F7F4" }, { "path": "um\\subauth.h", "sourceSha256": "BF6205510532B12549CA0E175D052B07A98E3B576739D96884483D487EDF4AA8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\subauth.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\subauth.h", "sdkSha256": "BF6205510532B12549CA0E175D052B07A98E3B576739D96884483D487EDF4AA8" }, { "path": "um\\fibersapi.h", "sourceSha256": "F8EEADC28F8E3E4C7BFD1217D55315EB31D63F3D86C66A3948D74CEB8E7A00D0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fibersapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fibersapi.h", "sdkSha256": "F8EEADC28F8E3E4C7BFD1217D55315EB31D63F3D86C66A3948D74CEB8E7A00D0" }, { "path": "um\\fontsub.h", "sourceSha256": "BDE9900E66673ADA4F8A31C1CE628A5D2C7400060AE2B3D0DB384495DE5806DD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fontsub.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fontsub.h", "sdkSha256": "BDE9900E66673ADA4F8A31C1CE628A5D2C7400060AE2B3D0DB384495DE5806DD" }, { "path": "um\\lmshare.h", - "sourceSha256": "404D314AE6BCDF518ABC5AB0511E8704B5EBEB190C8A12B6917A426951F1319E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmshare.h", - "sdkSha256": "404D314AE6BCDF518ABC5AB0511E8704B5EBEB190C8A12B6917A426951F1319E" + "sourceSha256": "FAC090A4A8329B9FAB8A245C5E09D3D44CF088AFE46730ED80E92876C74A88DC", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmshare.h", + "sdkSha256": "FAC090A4A8329B9FAB8A245C5E09D3D44CF088AFE46730ED80E92876C74A88DC" }, { "path": "um\\tdh.h", "sourceSha256": "E6150F4BD7AC46F6A6EAA91B6DAFBB6268D7B9A6F115DD9C4C60B42B1862BC2B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tdh.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tdh.h", "sdkSha256": "E6150F4BD7AC46F6A6EAA91B6DAFBB6268D7B9A6F115DD9C4C60B42B1862BC2B" }, { "path": "um\\interactioncontext.h", "sourceSha256": "9EC8F08F2C0DC822CFFC28F73147E71F379A56C9BBEEABE22A93F32DDA60E923", - "sdkPath": "c\\include\\10.0.26100.0\\um\\interactioncontext.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\interactioncontext.h", "sdkSha256": "9EC8F08F2C0DC822CFFC28F73147E71F379A56C9BBEEABE22A93F32DDA60E923" }, { "path": "um\\mssip.h", "sourceSha256": "6B5A0E5C295E97DBEAA999DCF2A006D7613A50B41D1EBDA8137AAD3F56643E91", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mssip.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mssip.h", "sdkSha256": "6B5A0E5C295E97DBEAA999DCF2A006D7613A50B41D1EBDA8137AAD3F56643E91" }, { "path": "um\\winsafer.h", "sourceSha256": "0B5303CF534EF2E58ADCDF95ED63B3D177ED5980569ADFBD22003657DE00E967", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsafer.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsafer.h", "sdkSha256": "0B5303CF534EF2E58ADCDF95ED63B3D177ED5980569ADFBD22003657DE00E967" }, { "path": "um\\certbcli.h", "sourceSha256": "CDBA65B104A50A63B5AB01CACF1C2FAE54F5B5E9E42D2AC3FF5FF480E2371EE1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certbcli.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certbcli.h", "sdkSha256": "CDBA65B104A50A63B5AB01CACF1C2FAE54F5B5E9E42D2AC3FF5FF480E2371EE1" }, { "path": "um\\errhandlingapi.h", "sourceSha256": "B73CCCCE6DAC8CE02C6A399862EC2A6E22FE27A4D09874D86EC2BE3BD5D17FBF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\errhandlingapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\errhandlingapi.h", "sdkSha256": "B73CCCCE6DAC8CE02C6A399862EC2A6E22FE27A4D09874D86EC2BE3BD5D17FBF" }, { "path": "um\\namedpipeapi.h", "sourceSha256": "37062EBA19E35B391CF050519C9403E19C6782663EA644FF38B2B5EB71DFCE6B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\namedpipeapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\namedpipeapi.h", "sdkSha256": "37062EBA19E35B391CF050519C9403E19C6782663EA644FF38B2B5EB71DFCE6B" }, { "path": "um\\winwlx.h", "sourceSha256": "E28AA4BEFFC7C74FEAF8595A7FBE4BCBBC365FAB02C17F836D9E637CA2928B66", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winwlx.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winwlx.h", "sdkSha256": "E28AA4BEFFC7C74FEAF8595A7FBE4BCBBC365FAB02C17F836D9E637CA2928B66" }, { "path": "um\\clfsmgmtw32.h", "sourceSha256": "F2C31E9CB820F014BDBC82DB2B972489BCCA277EAB4B47B97A639A6D5C4536C6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\clfsmgmtw32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\clfsmgmtw32.h", "sdkSha256": "F2C31E9CB820F014BDBC82DB2B972489BCCA277EAB4B47B97A639A6D5C4536C6" }, { "path": "um\\lmdfs.h", "sourceSha256": "99C514967490A773B07E1D1BBFCFE6A4154E9F88052B62DDF8E43B6BBE303D06", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmdfs.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmdfs.h", "sdkSha256": "99C514967490A773B07E1D1BBFCFE6A4154E9F88052B62DDF8E43B6BBE303D06" }, { "path": "um\\ioapiset.h", "sourceSha256": "7C3F659F98B3F1748A314BD64106583D01649333E0419B66232B4F64B3F85B0C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ioapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ioapiset.h", "sdkSha256": "7C3F659F98B3F1748A314BD64106583D01649333E0419B66232B4F64B3F85B0C" }, { "path": "um\\projectedfslib.h", "sourceSha256": "F02E815060C49A455410085EED2EEE75364DFA1E3A2A434BBCD7C362C6F94A80", - "sdkPath": "c\\include\\10.0.26100.0\\um\\projectedfslib.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\projectedfslib.h", "sdkSha256": "F02E815060C49A455410085EED2EEE75364DFA1E3A2A434BBCD7C362C6F94A80" }, { "path": "um\\stringapiset.h", "sourceSha256": "624C82FB73517A3829F3766A50A0235E2F9A51CB4BDA95A0C39981E39FA4D42D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\stringapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\stringapiset.h", "sdkSha256": "624C82FB73517A3829F3766A50A0235E2F9A51CB4BDA95A0C39981E39FA4D42D" }, { "path": "winrt\\winstring.h", "sourceSha256": "A3685255B11F4F58C123FD45C5AA4BE3526A9E9E8F939C3A5C80B859F48A7B43", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\winstring.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\winstring.h", "sdkSha256": "A3685255B11F4F58C123FD45C5AA4BE3526A9E9E8F939C3A5C80B859F48A7B43" }, { "path": "um\\wdstpdi.h", "sourceSha256": "AD502AC24284F1DF9405DA8E5DF829DD5AD6B6F2C6AD3C3187120DC23CD2010C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdstpdi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdstpdi.h", "sdkSha256": "AD502AC24284F1DF9405DA8E5DF829DD5AD6B6F2C6AD3C3187120DC23CD2010C" }, { "path": "shared\\sddl.h", - "sourceSha256": "69DBF70F61188AEAB9A6BE1BBFB291E10D54299FA41BAA3FD26362E9CDF793B2", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sddl.h", - "sdkSha256": "69DBF70F61188AEAB9A6BE1BBFB291E10D54299FA41BAA3FD26362E9CDF793B2" + "sourceSha256": "6122BEA2A453ACFE88E6CEABFD79336320C7D70B50990FB776D710F2E99B82B9", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sddl.h", + "sdkSha256": "6122BEA2A453ACFE88E6CEABFD79336320C7D70B50990FB776D710F2E99B82B9" }, { "path": "um\\gpedit.h", "sourceSha256": "55965FB97A3DD1F08ABFE0F63886A53E5FABC628C7B4B50728E7B4C013BE3A1C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gpedit.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gpedit.h", "sdkSha256": "55965FB97A3DD1F08ABFE0F63886A53E5FABC628C7B4B50728E7B4C013BE3A1C" }, { "path": "um\\jobapi2.h", "sourceSha256": "A8F9591DC2B0BD249D03150B70ABD47C0068C6EDA2A1D74D24BC8964BCD68549", - "sdkPath": "c\\include\\10.0.26100.0\\um\\jobapi2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\jobapi2.h", "sdkSha256": "A8F9591DC2B0BD249D03150B70ABD47C0068C6EDA2A1D74D24BC8964BCD68549" }, { "path": "um\\threadpoollegacyapiset.h", "sourceSha256": "87C1630ABF7DC4ED7978F2C4DBACF418F6BCF94CB946E277CB7250770BD44200", - "sdkPath": "c\\include\\10.0.26100.0\\um\\threadpoollegacyapiset.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\threadpoollegacyapiset.h", "sdkSha256": "87C1630ABF7DC4ED7978F2C4DBACF418F6BCF94CB946E277CB7250770BD44200" }, { "path": "um\\srrestoreptapi.h", "sourceSha256": "F42804B971E21BC34ACF7D1E63F6A7BF9777094696A75732753B5E73DDAAAC5F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\srrestoreptapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\srrestoreptapi.h", "sdkSha256": "F42804B971E21BC34ACF7D1E63F6A7BF9777094696A75732753B5E73DDAAAC5F" }, { "path": "um\\timeapi.h", "sourceSha256": "0252981F62C9ED1ECE53434C3863F4BF503C2EAD70719ADB2CFD38E3E21AB6DA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\timeapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\timeapi.h", "sdkSha256": "0252981F62C9ED1ECE53434C3863F4BF503C2EAD70719ADB2CFD38E3E21AB6DA" }, { "path": "um\\winenclaveapi.h", "sourceSha256": "192CB0E49C1DDB6D9855D836F70024CFAB2A7733DC1A6C7B0675C1770CBE79C7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winenclaveapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winenclaveapi.h", "sdkSha256": "192CB0E49C1DDB6D9855D836F70024CFAB2A7733DC1A6C7B0675C1770CBE79C7" }, { "path": "winrt\\roparameterizediid.h", "sourceSha256": "8733DD793F2CD55E288013DE49EE09B13C489D19FB8FE1EB0208F1EAE4F08492", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\roparameterizediid.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\roparameterizediid.h", "sdkSha256": "8733DD793F2CD55E288013DE49EE09B13C489D19FB8FE1EB0208F1EAE4F08492" }, { "path": "um\\cscapi.h", "sourceSha256": "69D5231DFE11941DFDB5FFA13B6C552751FEE8F7A35122CF2AC677AE16467BF7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cscapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cscapi.h", "sdkSha256": "69D5231DFE11941DFDB5FFA13B6C552751FEE8F7A35122CF2AC677AE16467BF7" }, { "path": "um\\dssec.h", "sourceSha256": "4A80A312E4DFAED8E0423E9B145BD32B41F52A7B5CF67EFFF3DD785219B4A8DB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dssec.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dssec.h", "sdkSha256": "4A80A312E4DFAED8E0423E9B145BD32B41F52A7B5CF67EFFF3DD785219B4A8DB" }, { "path": "um\\loadperf.h", "sourceSha256": "6B22631556BA476764A2116CFEBD3189758655CDD3DB2DA789A0E40F9BCD81FF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\loadperf.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\loadperf.h", "sdkSha256": "6B22631556BA476764A2116CFEBD3189758655CDD3DB2DA789A0E40F9BCD81FF" }, { "path": "um\\ntquery.h", - "sourceSha256": "EDDBCB93C5985823567B613F0A85A980ADC395F46DD48A6EE7B7262756E1E2DA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntquery.h", - "sdkSha256": "EDDBCB93C5985823567B613F0A85A980ADC395F46DD48A6EE7B7262756E1E2DA" + "sourceSha256": "731824CCE8EEB12C962741FD00D7DA7FFDE7E591F9D030F1705CDBC85D0FBD62", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntquery.h", + "sdkSha256": "731824CCE8EEB12C962741FD00D7DA7FFDE7E591F9D030F1705CDBC85D0FBD62" }, { "path": "um\\profileapi.h", "sourceSha256": "CFA8E3626DBA11689997D8FCD65B5DFBF4BCEF8DE09DD7E4E881769D48D165A2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\profileapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\profileapi.h", "sdkSha256": "CFA8E3626DBA11689997D8FCD65B5DFBF4BCEF8DE09DD7E4E881769D48D165A2" }, { "path": "um\\resourceindexer.h", "sourceSha256": "F3E5BA9F66722743156DAE8EB0038726CFC83CDB6E6A838C7B2F1940C49B9708", - "sdkPath": "c\\include\\10.0.26100.0\\um\\resourceindexer.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\resourceindexer.h", "sdkSha256": "F3E5BA9F66722743156DAE8EB0038726CFC83CDB6E6A838C7B2F1940C49B9708" }, { "path": "um\\sfc.h", "sourceSha256": "9752FCDFF8BDA98DD40409F167038050ADC11A5954586F6B446F828288CE8D8A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sfc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sfc.h", "sdkSha256": "9752FCDFF8BDA98DD40409F167038050ADC11A5954586F6B446F828288CE8D8A" }, { "path": "um\\storprop.h", "sourceSha256": "45A0657F015118B8DEF6C777ECAB62D2D752838301054769AD7EBA25EABA9665", - "sdkPath": "c\\include\\10.0.26100.0\\um\\storprop.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\storprop.h", "sdkSha256": "45A0657F015118B8DEF6C777ECAB62D2D752838301054769AD7EBA25EABA9665" }, { "path": "um\\systemtopologyapi.h", "sourceSha256": "8BFD1A78CC30B6D33C88E3F61AE2AC6468CEE0607352EE8D096BA5375B4D401C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\systemtopologyapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\systemtopologyapi.h", "sdkSha256": "8BFD1A78CC30B6D33C88E3F61AE2AC6468CEE0607352EE8D096BA5375B4D401C" }, { "path": "um\\wmsdkvalidate.h", "sourceSha256": "C6AA1C0BA6F1DDADA1068E54D2814C5B5A629EB7CC35060F8AAFBF550A94A127", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsdkvalidate.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsdkvalidate.h", "sdkSha256": "C6AA1C0BA6F1DDADA1068E54D2814C5B5A629EB7CC35060F8AAFBF550A94A127" }, { "path": "um\\aux_ulib.h", "sourceSha256": "2854875A7634932E47DDC32FBF360B075CE6FAADBCAB03883AC30D6EE02C4C5E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\aux_ulib.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\aux_ulib.h", "sdkSha256": "2854875A7634932E47DDC32FBF360B075CE6FAADBCAB03883AC30D6EE02C4C5E" }, { "path": "um\\evntcons.h", - "sourceSha256": "67D6228A6814B4B1F6D49FF21707FEBC63E6C07A827C0598CDE23D05C5CA21F1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\evntcons.h", - "sdkSha256": "67D6228A6814B4B1F6D49FF21707FEBC63E6C07A827C0598CDE23D05C5CA21F1" + "sourceSha256": "2BDFAEB6C23D6EF32D3C14A7BFAACC2F003DF77FFCCDFFED79311CE91AB50115", + "sdkPath": "c\\include\\10.0.28000.0\\um\\evntcons.h", + "sdkSha256": "2BDFAEB6C23D6EF32D3C14A7BFAACC2F003DF77FFCCDFFED79311CE91AB50115" }, { "path": "um\\oobenotification.h", "sourceSha256": "9A0FFFCEB4557DA43FE7F02C70CD6F0D9FF2F9B2F41FFC6591D281B6AD55A9DA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oobenotification.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oobenotification.h", "sdkSha256": "9A0FFFCEB4557DA43FE7F02C70CD6F0D9FF2F9B2F41FFC6591D281B6AD55A9DA" }, { "path": "um\\processtopologyapi.h", "sourceSha256": "4507A5E0C4F41D19A80D1543833F1A9D90277BC376441B277884BB043BE24BA5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\processtopologyapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\processtopologyapi.h", "sdkSha256": "4507A5E0C4F41D19A80D1543833F1A9D90277BC376441B277884BB043BE24BA5" }, { "path": "winrt\\shcore.h", "sourceSha256": "D52421B7A145B5D48C4E55E8FC35739D13853E6FF311D91AAEB697041BDEE2C2", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\shcore.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\shcore.h", "sdkSha256": "D52421B7A145B5D48C4E55E8FC35739D13853E6FF311D91AAEB697041BDEE2C2" }, { "path": "um\\vds.h", "sourceSha256": "95D50F9C123D8E86D6A5346AF052164CB8483C3C5AE16F799A9C85BA277EE0BA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vds.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vds.idl", "sdkSha256": "C9427750C33970CB3AAA8A42C2139D3D9CFC4F52942888E98B9F99F1C713AABC" }, { "path": "um\\vdshwprv.h", "sourceSha256": "3536FB8AE68D5861E3E709A0A813B3E1EA9CF54BABAF9A4CE383EA44C9B293DB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdshwprv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdshwprv.idl", "sdkSha256": "A7FE6162D83332D5D51780B8C06606B8A49D9DF81DDD147CAA6110435FEE8F36" }, { "path": "shared\\dxgi.h", - "sourceSha256": "CE488A065712E47F491A8B582EAE33D36AFBA3BD3592341BED15982BA98337F5", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi.idl", - "sdkSha256": "275FAC397E580B0858D81DE0B6DF1390A839CDDC81981F5FAA47482199458B8F" + "sourceSha256": "AD55063844A2298E470E81AD9ADAF83B1AD2E0D54F6B858E0BDD4389D07A11D9", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi.idl", + "sdkSha256": "D9E79CF3050E3254C9DEBFAD6B235D211F185E324EE3A5AD18F5AED07F62C9E0" }, { "path": "um\\sbtsv.h", "sourceSha256": "B3FA357D4730FA24F4AA817BA440EB0F63761C1155F64152C35AA66B272E20AF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sbtsv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sbtsv.idl", "sdkSha256": "23562A0247B3CD377F90D2EF65BCA8AC2261BE1A3E2D2DD18C23D9908F6F28FC" }, { "path": "um\\imapi2.h", "sourceSha256": "0DBA249F3F0E3331C6C4BE6116AEB11225C09758DC5094EBFE76E07E9F49EBF6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imapi2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imapi2.idl", "sdkSha256": "8A5CC004AC975F87B198362D0990F335A44FC0AAD58C1BC4E10F9618D5567889" }, { "path": "um\\oleacc.h", "sourceSha256": "1A1E68247AB9DB6CD83246E0D9D8F2A39E1E251C151119E3FC92C5E15CA5688B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oleacc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oleacc.idl", "sdkSha256": "25D89E32A149168A945F404A36AD7B69E462E94DD6D1DCC73577ACEF986F29E0" }, { "path": "um\\segment.h", "sourceSha256": "EBC36B118F2583B79985D495AC6490685601B65C6415B50BE94BB833C6F2EB4C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\segment.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\segment.idl", "sdkSha256": "B1630D5F230A83FE4D98EC2EA4F420505A4F0DBB066EDC4BD51591AF89B0DFB4" }, { "path": "um\\mfobjects.h", "sourceSha256": "A619CACEDE27A54A75692C765A2DC89296E27C2EF2B1D1061CDD33A1435925EA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfobjects.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfobjects.idl", "sdkSha256": "8D72B993D9D12EC1D7A88DB6164F1A9C089A22E24EB6D33E306514132DAC3AEC" }, { "path": "um\\msopc.h", "sourceSha256": "8876EB5D74CAF41927004915D695E8127FD63FB9C39CA119C8D26FE73123CCAC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msopc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msopc.idl", "sdkSha256": "B9CFFEAD07EC6EFE8C10124BAB114D3AB900180CA785E7639D10B3F6412E0737" }, { "path": "um\\uianimation.h", "sourceSha256": "11F6380A1C9D26D1CD3FD349856974BE7D5462E3244EF909136CE22A205748F0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uianimation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uianimation.idl", "sdkSha256": "C60460E8EFEA11DFE10D6F07BB08F2E349B3E8A379478ADC75FA5654FBFF057D" }, { "path": "um\\syncmgr.h", "sourceSha256": "9C743FE4AEB555361A307E258F99438427C1A0AEAED15B70A3A01BB38068017D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\syncmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\syncmgr.idl", "sdkSha256": "1EF7F4777CCDBFE9C69B809055A4A2D686DF5D873BA7DF5416249CF4FF88E40D" }, { "path": "um\\wmsdkidl.h", "sourceSha256": "C41DD5A719B1334E20B5D1641AAE643B44F5B50C9DD382694C50BF52A5D124D3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsdkidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsdkidl.idl", "sdkSha256": "68CD55C0F2B2FF6541ACA37BD297AF0782541223F87658BB475110EB37ACF399" }, { "path": "um\\rdpencomapi.h", "sourceSha256": "B08260BE326AFB8BB957A8514A0C2EBFE5FF0887938E85A26950DD94B19DD0D9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rdpencomapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rdpencomapi.idl", "sdkSha256": "42BD0EEBE2636D94D1348308D22116FC27E2D50CC662AFD277F270FD8D6174FA" }, { "path": "um\\wmcontainer.h", "sourceSha256": "A2A38DC6FAD885FB8D9528F5F20E6153E5215B2500B8640F5F18B0165D377E08", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmcontainer.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmcontainer.idl", "sdkSha256": "666A5752BCF1A88B48634938BF4AEEF7A388EE592939CEF9C110086F71C5C5E7" }, { "path": "um\\devicetopology.h", - "sourceSha256": "470EF3993E57B92F22161424D0E5C27147DC4538CF14447D52156C94CE72C92C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\devicetopology.idl", - "sdkSha256": "E0EB3098EE504F7AF5B8671BDC050E0D6F414BB802F28FEF1458BC7BF06AED5E" + "sourceSha256": "D97ED6DDD7B21413DFE252D60A6CD5FA6C02A1819D5648BD8E56C3CDDFA27CBB", + "sdkPath": "c\\include\\10.0.28000.0\\um\\devicetopology.idl", + "sdkSha256": "D601422AA6E068344CFEA90CC2416C953D78AAFE1787FEB2EC50E16041224F77" }, { "path": "um\\wdstptmgmt.h", "sourceSha256": "2C66C18120C8C18FFAD6B7BAFD07172B9545EB25E9DD3CF7344BA2F63E0A3851", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdstptmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdstptmgmt.idl", "sdkSha256": "B1C776D90D1C5238A792990E483B1811E5A8644ADF0EE207BF78B725F78C7A0F" }, { "path": "um\\ctffunc.h", "sourceSha256": "4D5B5E48CCF82D5E24CC37285FDAEA0D223802E45D2872E60D158492211B3F6F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctffunc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctffunc.idl", "sdkSha256": "D0F3F72F577E585AEA3B6931EA8557B143375EF26D581238E0D7695590DEB9B0" }, { "path": "um\\sbe.h", "sourceSha256": "1F47168C427E4AE332D175533937D293394700B3F84D2057E5FD0F6F1156A6F1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sbe.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sbe.idl", "sdkSha256": "13BC005E424A6D22DA65ED7F7A7DB5675645BC5F26800AB6078099CB8D55638B" }, { "path": "um\\windowsstoragecom.h", "sourceSha256": "B6C84070F400D8DBFFF59EDB32013D9F0CEC76684F5AC66B0A8DD47C0B502007", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windowsstoragecom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windowsstoragecom.idl", "sdkSha256": "50E2C8DDB471422D4D825C426E9BB90FEE4F3DB0455F2CCE8978AF627AB507CB" }, { "path": "um\\netfw.h", "sourceSha256": "0DB2B01F1B6826B3FD320068A33E595D5230E5329668D47702A0EF94A7079DEE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netfw.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netfw.idl", "sdkSha256": "D7D609DF3A8024B77209D2FD33DE3557F1FF88A04F10B4A2956E3AFB273E92BB" }, { "path": "um\\mileffects.h", "sourceSha256": "B4D68C22657106CA189416388EB964815FB900797AB1ADD60864FF8CA412BF00", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mileffects.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mileffects.idl", "sdkSha256": "D4E08B299E16646B4F1B3818A163E988400B8FF38B65A5C64056EEF53C5294AC" }, { "path": "shared\\dxgi1_2.h", "sourceSha256": "2EDB3CAEA468DD2FCAA9D1AE7608943A9EE9DB84F40B21DF74CE06CEB99B747E", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_2.idl", "sdkSha256": "260A3FD9F678599658A9A3F017C5D0426BC10B4A3E20CFC61F0ECAFE1EB08EF5" }, { "path": "shared\\dxgi1_3.h", "sourceSha256": "D061C7E4B380627D4A642B30EF70EB6A1C99DC275F744C9AAADD2A71EF13F2FC", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_3.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_3.idl", "sdkSha256": "066BEB1D472C56A77024C3D6A118F86A3C14A971FC53F6728A52D168552B772A" }, { "path": "um\\imapi2fs.h", "sourceSha256": "28129E8E8E2E8C4DC3B8422BEE1DBC97BC776DAC6570E7039720C965F444A917", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imapi2fs.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imapi2fs.idl", "sdkSha256": "D71FCFF53CD83E25F129F2EB301520FBCCAD2C94634DD391CCD8B7048FB17B8E" }, { "path": "um\\wtsprotocol.h", - "sourceSha256": "1A3F5F7ABB74967D12FC83AC80D6B8DF7EE743B92C63B9161CC9C8C0E45C5E8F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wtsprotocol.idl", - "sdkSha256": "B475107FFE4B058E65F07EDDBD4DB63A98F6F7E8C8EF01E53196E4A01BF40808" + "sourceSha256": "2694DBDD82F5353982F98D5C2713A243317E5B4C3B895B9A3086527799647D9F", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wtsprotocol.idl", + "sdkSha256": "9F838A95D32C241363A9653114448021E8736F9C51BD702523857519A5306425" }, { "path": "um\\bdaiface.h", "sourceSha256": "D56E05E6377B1F7F87C29858F7AD15BAA191AC1105558FA6788E6A80E6BAA923", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bdaiface.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bdaiface.idl", "sdkSha256": "370AC8F718618831E55FFE3A2C464DFB3D13D06F9D8A8351C326CD145C274E3E" }, { "path": "um\\mfplay.h", "sourceSha256": "C5BC9D34AA5855F8E9E6EB455A6385BDF2AD3EDDCCA6556782309B4452BE5789", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfplay.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfplay.idl", "sdkSha256": "E4B830D6F0C2CE952D89B857F336AF938225B223F5C533FD177750A54C5ED20D" }, { "path": "um\\upnp.h", "sourceSha256": "DA437C410FC7A51D9C66091318983625CB77522103D03F16D6EBCC0B48F00311", - "sdkPath": "c\\include\\10.0.26100.0\\um\\upnp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\upnp.idl", "sdkSha256": "40F4956D258A79F4AF35A391FB2E23E521A9B7B86CF9E0710C4E3715FB033D9C" }, { "path": "um\\ctfutb.h", "sourceSha256": "83086603DE4C7C2F18DC102D77EFF0491A559FB8F5130C3873F1CE256C9903F5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctfutb.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctfutb.idl", "sdkSha256": "9C4D9CB2855B1AA49DA5BC3DB785E4FA4A240EB98E6B2EB8ADA5DEE681EA2CD9" }, { "path": "um\\fsrmpipeline.h", "sourceSha256": "C412BC4AFF60A6BD891DE80F7E8BBF46C0B2D37C12F443300FDD64350412EB7A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmpipeline.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmpipeline.idl", "sdkSha256": "B478CF846C8DAC4A623E6850F3CCD3970C36A68CEAA98D1189289521D2CA30AB" }, { "path": "um\\textstor.h", - "sourceSha256": "78F32EA3EA003D2E9BF914949819D14FD58E49F59F9F36ADE78052B3C059B1BF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\textstor.idl", - "sdkSha256": "3ACBFF95B0A163BF95B2E99D42F478104D11F55FBF8C18BC2F00567272034042" + "sourceSha256": "4F924454BE4292ED4BB446D81D12AAAA5B1A8E050FC484FAF9C432941B1F08C2", + "sdkPath": "c\\include\\10.0.28000.0\\um\\textstor.idl", + "sdkSha256": "BC81E74C2C281627772745C7557ECA224942B066E5D09594786A4892A12A376F" }, { "path": "um\\dxva2api.h", - "sourceSha256": "9C6729718B18EC6F04A3973D30B23CEC1947AB1EC303545BED1ECCAD88CFEEA2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxva2api.idl", - "sdkSha256": "6C8C5A01516B77FE8ADFF77141F938393B1143843992C0C1045EE2C2BBD21D58" + "sourceSha256": "E6AB693899F51399F7EA3125793B2BA8798D0044C37B765D0BE3D791887FBF61", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxva2api.idl", + "sdkSha256": "2019A4D1292EE2ADD696B633DDA33B04BBC593CDD982A9AD6B184D40E1FBB432" }, { "path": "um\\netcon.h", "sourceSha256": "E9A09AA3BDAAD7C43043FA8F443E81929BD26A5DDB54D8370484A74929FEF2AF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netcon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netcon.idl", "sdkSha256": "0861FDD42BEF891C9AEAB304A5413E253C053355E05F8EDB847AFAB79D6BE78D" }, { "path": "um\\bits.h", "sourceSha256": "0A8822F127ABB82EEF9DD3A06D36C94E6AB29E79BFDA0CC4C4C2AE50C348DB72", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits.idl", "sdkSha256": "7D1E53AEEDE71E60584CDE1C2AAEC5F28BD9C1E5349819AF8EF7321F124E91EA" }, { "path": "um\\fsrm.h", "sourceSha256": "5DB6615343FF7CFA82CE587FD70F23BF42F75A3F2A04B86B85F96D809D620F80", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrm.idl", "sdkSha256": "9A9357D31D5AC49F7610397C276433F538597FDA42731BA1227836EBBB114048" }, { "path": "um\\mfreadwrite.h", - "sourceSha256": "9105C3C0ABB48BC18D31AA4695C47C4E0AF4EAC74620C59DCF309EAFE085E495", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfreadwrite.idl", - "sdkSha256": "F23764A1E8602479AA7CEB2178F171793D1959DFEBEAD232158EB8AFCFBDF850" + "sourceSha256": "DD967F256988833E08FAD09073799D7574B32C1B969BC138B409489F3017E2D0", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfreadwrite.idl", + "sdkSha256": "D67DC8A14849F897FFD7268761EE210A25B5D1BD24C38BB7C2A154E57F6D9C96" }, { "path": "um\\structuredquery.h", "sourceSha256": "0D6A42EDE308DF1C692512606519BC820B5AF386019C01A79DE82D4A8E5E234C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\structuredquery.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\structuredquery.idl", "sdkSha256": "5A84873E5DAFD200E84C04793453C99C79AC87F73C825B43D7EDB0A0BAAD475B" }, { "path": "um\\vmr9.h", "sourceSha256": "F8062385800424A57AD1F1F37EF1AECE241F1B9D82B721ADCFD888A3F57EE01C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vmr9.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vmr9.idl", "sdkSha256": "6D379479295B9496DC3E0A64C263AAD6E448CCB3FED239796D78EC484503677A" }, { "path": "um\\d3d11_3.h", "sourceSha256": "2AF835969BF29D31A22D1CC0D561D744F037180834F2DA6031309FF082A66C0A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_3.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_3.idl", "sdkSha256": "7EDB7726371BEE0A7F809893FE3B4D2533D602139D6F2C1FD6EF16C677CF5079" }, { "path": "um\\mmdeviceapi.h", - "sourceSha256": "4A06795EFD4AA792299E09AD9D94D1FD9B1EC22B98B44889B21261D3F6503287", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmdeviceapi.idl", - "sdkSha256": "6FD7A89D2811206152CA757E4D0F2231DDE665A2DBECEFE0660F54AF08101D1A" + "sourceSha256": "68F07239A02275D47B79D6D54A8540501F0A182DFF39D8CFA6CC2E743759E75C", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmdeviceapi.idl", + "sdkSha256": "940424E8B785289B5736411E4C529DB38C539FD1D51AF0AE7EDC492DCB12D229" }, { "path": "um\\wincodecsdk.h", "sourceSha256": "982323C05FA7CDD199820DE5AA6A2F2F7B28B4B431B775A1E7B974E6CBD4238F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincodecsdk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincodecsdk.idl", "sdkSha256": "759B44C5B926F2F4844E9C16FB01E46FFD5D05EA8D3D534C1E0C78922B12B1DD" }, { "path": "um\\wsdbase.h", "sourceSha256": "7CCF589295C96A187F92388E8EFCD4F362A10C9977ED51CC8A3BD64E7B83C349", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdbase.idl", "sdkSha256": "503B264600B1F57DE45AE5D2BB21DF95F43DA5B5DDF6A2B3135CC6480ED76B35" }, { "path": "um\\audioclient.h", "sourceSha256": "D5D3D0C05B8EF15C424293C6663F9B511327A74CD2DFDE3EC114CEA13342B7DC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioclient.idl", "sdkSha256": "145C2D5A33EFFD1D139CCF11DAB73DFF05EF82316BAE772C8B5E9E72386A836A" }, { "path": "um\\credentialprovider.h", "sourceSha256": "A18B30AEAFE2C90F44157F4FC488C22DE970D991AE5614D40D59E0E0A77DA328", - "sdkPath": "c\\include\\10.0.26100.0\\um\\credentialprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\credentialprovider.idl", "sdkSha256": "6D72DBC9D3E37D46D421634057398FDE0C68DB76EF298CFA69F41BB5057AEC8F" }, { "path": "um\\wsdhost.h", "sourceSha256": "4F4E0C36ED2C424D1D48EA30C230B1E5C88EA720980869EF476093AE86837660", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdhost.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdhost.idl", "sdkSha256": "A8830D0040D3E6E585186270B5D71B0702F4EB2066963EC4996A6F6C5D4456BB" }, { "path": "um\\amstream.h", "sourceSha256": "FA68C4BBBF6FA85451C46B3478AA2436CFB5BD542F752A1927D545E0ECA38FFF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amstream.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amstream.idl", "sdkSha256": "EF8203DBA8B3D6ADBF928DFD7E6C65C542BABE77AAED41B254B8C2724F13F57C" }, { "path": "um\\dxgidebug.h", "sourceSha256": "A337A5203AE3B3F2631019731BE77ED78C538A58616441BE3B56AC5DBCCCADEC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxgidebug.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxgidebug.idl", "sdkSha256": "12C6DB5809D9BDA9C5F905BCB34BA227FEB92B8C3F9798042006C0A26C081A28" }, { "path": "um\\dxvahd.h", "sourceSha256": "1FACB9E12E0D696B1BB3CB574B610D7BCE76950E6A21134A7F8EA2AA412C72A2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxvahd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxvahd.idl", "sdkSha256": "DF1CE8F1A63C12CCDBE6296EBB4AB9EFBD59CA62562459C264E2A459285B0D56" }, { "path": "um\\ehstorapi.h", "sourceSha256": "4029C7AAAE673FD24C3FEA4981A2F56FF58C08C88A4073E870C7F3D9D66CBD3D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ehstorapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ehstorapi.idl", "sdkSha256": "136E262543A74DFE4BE46E52A9463F051A6ECA714B8043BAF107210DE8D2BCC4" }, { "path": "um\\exdisp.h", "sourceSha256": "999A8DFB2D36968F7ADB22C49758C878B96A74BA4B1F4095B854E8120A2CCBB7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\exdisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\exdisp.idl", "sdkSha256": "882781091FF75D67A6C591C34880324DBACE6150F8912F48EBC2A98BC7BF15D9" }, { "path": "um\\mobsync.h", "sourceSha256": "6921C141ECBBF7A8074D104BCC0CA2D19D02112344DC0073B4ADD0056C91B5A7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mobsync.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mobsync.idl", "sdkSha256": "6C5CEDDEC4D0AC1AC0C808AEBE122D4A93C6F6A52D5412D37BCF962D5050525D" }, { "path": "um\\restrictederrorinfo.h", "sourceSha256": "CD3B7BF9FC2A2EA299E2C07A43E9BEEC70DE748D261A2E90D105BE574F04161B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\restrictederrorinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\restrictederrorinfo.idl", "sdkSha256": "04B11ADA883DC57DCE5588CDB91EE2F137FBFDB9E63D5C26BBCBCA5BF0E2FAA1" }, { "path": "um\\sdoias.h", "sourceSha256": "EB316D32F83739380813B06FDDD1CFDCC335F647034A67152E36A2C134C48C4A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sdoias.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sdoias.idl", "sdkSha256": "753822A7E3BB73FADC9121546992CE409CB53B060ECEB0A21875A5C64EAF30A8" }, { "path": "um\\sensevts.h", "sourceSha256": "C14C97207701906A3D2566CDBB6DB65C668A0F05760AF5A12C0B2F7BF6F29B37", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sensevts.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sensevts.idl", "sdkSha256": "F6F9D00DB96C90C4C466CECB93D90154BA3529D934969622A1325C280D5802A8" }, { "path": "um\\shappmgr.h", "sourceSha256": "537FC003D8D934F0E085F8FA8EC50B738E58527C935C8FFC55B85D82B7F28DF3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shappmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shappmgr.idl", "sdkSha256": "F58B85E04E0918A5D246438AFFC8CE8D1EC1BEC19748BF87B690D8277EC46592" }, { "path": "um\\thumbcache.h", "sourceSha256": "1A86A31356869AE92AD489573083F10CA6DD05025E13C6C1440D4D82A7A5587E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\thumbcache.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\thumbcache.idl", "sdkSha256": "539E3EA353BF1C72FD183B7F79B62C75F0004A7F2BF57D4502B1124181B915B0" }, { "path": "um\\vidcap.h", "sourceSha256": "880FD220D2B06068386DF08D21512AFC03C9343F8427755B101A718A66858B06", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vidcap.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vidcap.idl", "sdkSha256": "ACED57A5BA782D539F49037CB5819316D249C17BA592411C2B7EA824ED607A38" }, { "path": "um\\wmlss.h", "sourceSha256": "3C0C7CFFD9E5A4A8B2C270BBB1DE35A01E1D899F5C09378C5A1175B194EDF26A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmlss.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmlss.idl", "sdkSha256": "2C18894685250A6B5BA60E89ECB7C5E73C3B8FF4ED0B765B16FEF9469789D18F" }, { "path": "um\\xpsobjectmodel_1.h", "sourceSha256": "67E7B5E2AB8DCAC7694D18F16FB3EE0DE663D382371CE5D621F43F04F47899BA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel_1.idl", "sdkSha256": "C5F04D1ABAD77F70C002F4B86FBA1F15432560CF6FFBC411ED010FB581FE4FED" }, { "path": "shared\\dxgi1_5.h", "sourceSha256": "D9E9A8C2AB1FA5012899BBBD9ED8C32BCD7F379045DDC92E8E628EA3D6BD88D2", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_5.idl", "sdkSha256": "BF5826B7A7F0780F343E28D9C0960392F9A45C18F25BF2163463D638AE162979" }, { "path": "um\\bits2_5.h", "sourceSha256": "A164D07C172607C7ADF8BDD1E037F7A01746EF4AD3BD50090966BE848DFEBCB1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits2_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits2_5.idl", "sdkSha256": "E2CF9834A3479E27B02C43725C63F6E682659418A230CDAB389D56675709DA17" }, { "path": "um\\endpointvolume.h", "sourceSha256": "2AA5C0D5F2C5BF800AE3AFD0B0660AFD5F6C478D46B56F8D4C53F06B9244C202", - "sdkPath": "c\\include\\10.0.26100.0\\um\\endpointvolume.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\endpointvolume.idl", "sdkSha256": "8E86605B084062888642F3D5D02D5D46E0BAF41664C08986A92504CF1D349645" }, { "path": "um\\inkpresenterdesktop.h", "sourceSha256": "9A366FBAA9E6870CBB30F431E6D1F4F3C01E082F187052E617D92156A01EF5D3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inkpresenterdesktop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inkpresenterdesktop.idl", "sdkSha256": "0559B746C1C78ABF3B7E8E86648E043CA63E991FAE18E3CAE48F25F4F8A87432" }, { "path": "um\\mftransform.h", "sourceSha256": "6C24102150CBC30D7CABF6DA3D04DAF683B895F901612D062C64D48C9E081EE1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mftransform.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mftransform.idl", "sdkSha256": "F1C48D844E42B2592B3D01BD0ECE9DDB27EFBCFF729B75D29F7092E2E4098248" }, { "path": "um\\msxml6.h", "sourceSha256": "CE3EB71915125AEE9AC9EA46B88A34A7D103EFDD3DC00A4B21E710737179DEA4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msxml6.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msxml6.idl", "sdkSha256": "8C72BDA367FDCC9259F7D3DDBD04AA5BD5BE7BD5971EB29392F7F0525FABDF0E" }, { "path": "um\\ndhelper.h", "sourceSha256": "504B2568AE205295DC79324EEE47B8786CA669339FEFAE2B56CFF37C83205238", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ndhelper.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ndhelper.idl", "sdkSha256": "F02581256264FBCBA809A0E6A08C0B782DC3318EEFDAAA7CAF9C823409EFC39C" }, { "path": "um\\opmapi.h", "sourceSha256": "B4AF704B4FB5A713389DD51B66D6ECAEC558B4EEF3FEA5DAD39435A7479CAB1C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opmapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opmapi.idl", "sdkSha256": "80C3CC728A4B5D59E5FA57578B756962B1F6295095F803918C417A9A1777C14F" }, { "path": "um\\tsgpolicyengine.h", "sourceSha256": "F6FC4F9B6CD534242DE04F1D97632E26C7B4D8158123657624431169390AD7A6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsgpolicyengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsgpolicyengine.idl", "sdkSha256": "BE2F1AF55751E2C346ACD8C8F472145B2744AF949E356A184F7F75EB4F88C59A" }, { "path": "um\\wsdattachment.h", "sourceSha256": "769A9F6BE66518D72A7786CC784B6F12DE259A2135969CBFF9CF3FF376DA9B86", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdattachment.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdattachment.idl", "sdkSha256": "5852CDE44B187BF1EDD738B9E75AD89E610730B091F75F1659BAFC50BD3DE127" }, { "path": "winrt\\rdpappcontainerclient.h", "sourceSha256": "90D9A0118B1B99A71B32309A0354E6D0DE7AA7B440AFD27230ADFDE369247DC9", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\rdpappcontainerclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\rdpappcontainerclient.idl", "sdkSha256": "221816BACEBAE82E2C9FCD259F3ACFCE2A000932B0BCBCCF78E7913B0BCB8D4D" }, { "path": "um\\bits2_0.h", "sourceSha256": "EA4546519FB67B0D8780198CB48E10CAD233CD982247C3631864D48E0A125C2F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits2_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits2_0.idl", "sdkSha256": "363613AD114364FF5665BFD86FD0E80AA4111400995F7F7C451E288C25CC34B7" }, { "path": "um\\documenttarget.h", "sourceSha256": "2CEF97C340895C7724F78DB92D450AEF1B34AC35B1E7D90EF3AFB15DBD6C8BB1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\documenttarget.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\documenttarget.idl", "sdkSha256": "40FE271AE28C95154265EE7C160C363B61AA2FC7EE816E3D39116E9D56F12CE9" }, { "path": "um\\manipulations.h", "sourceSha256": "E079708C444B4EB161EB10BB57CC58D36C93FDF7EAC6DCBF64551B15DDDA9B8B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\manipulations.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\manipulations.idl", "sdkSha256": "0F47BAD74298A539A64F3FA0E505B47B588BEAE7E79118F44429ED042D60649F" }, { "path": "um\\mfmediacapture.h", "sourceSha256": "4CF94C167D8447E6325061F7B825638FD00E5C4B5BE4ABD4B4BEA10617ACBCF4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmediacapture.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmediacapture.idl", "sdkSha256": "7DC228AA8819528C8225124D08B45C23DD14A6E9266181496760162008E84C84" }, { "path": "um\\relogger.h", "sourceSha256": "6D75E9259BBC23FACF0CEF6AD1F039777404158E4EAC6D889D21DE0A2101E2D5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\relogger.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\relogger.idl", "sdkSha256": "6ADCAC79EB9F146085DFEAF829CBCDCB655153F28A4D72F87C5104795842044B" }, { "path": "um\\structuredquerycondition.h", "sourceSha256": "2E8764AA15201191980BDD7F03B6450782D8E50670BD1B720C561A39B81EF572", - "sdkPath": "c\\include\\10.0.26100.0\\um\\structuredquerycondition.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\structuredquerycondition.idl", "sdkSha256": "6D3BBED903B6FB49F4BD50D572B324F2F9AC6A7FF38D79DD4BABBD9314134054" }, { "path": "um\\wmiutils.h", "sourceSha256": "0A0037F3CC4ADF2D06F01D7FDF06AC96907297470F73899749738125C0E0FD0F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmiutils.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmiutils.idl", "sdkSha256": "717993CDE15F8F3484417CFF2D415FF1692C04D39C26DD53FCFA65151F9983BB" }, { "path": "um\\wmsecure.h", "sourceSha256": "9B00D4A2A1645E43E6F7D8F694985260B10F15814FBE0CFAAAED53F5A0C76E7A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsecure.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsecure.idl", "sdkSha256": "F2F48DA38B59D40419F409BB91E178EF53B23F4E87AC84273187A21496E69C09" }, { "path": "um\\wrdsgraphicschannels.h", "sourceSha256": "AB0F560F2D89E55783CD31C2AF0FD7373C1169F820529986C8308292C9535EEE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wrdsgraphicschannels.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wrdsgraphicschannels.idl", "sdkSha256": "AD97F7F0FE35DA04157926BA2B21E9CAC9F1EDB04915C66C7A5A69A2286773D1" }, { "path": "winrt\\weakreference.h", "sourceSha256": "C232772C8CC3CEA777F387ED6B77495B503885D2A4F9761E4219DBDBBE2A207A", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\weakreference.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\weakreference.idl", "sdkSha256": "5DA6A0EC24F7256F8755C160B8A5187DF28A35EC84B19E1ECA39601AF2F60C43" }, { "path": "um\\bits10_1.h", "sourceSha256": "9ECBF1E68E572A3D81CD01B3ED36DC1B2417D81B3C14A1CDB8A32E3C2D107601", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits10_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits10_1.idl", "sdkSha256": "1686B2C9FFAB2B3B3F3410E7AA3D7669F9C60A54CF5D349E4FC46E39315F5580" }, { "path": "um\\bits10_2.h", "sourceSha256": "D0D9CD258A6FF1C89B0824C06008FB177335FD0812BAB9CFB68AEBDD2EE847FC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits10_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits10_2.idl", "sdkSha256": "8F6F8FC51CA0DDABB5133DDA0F53AEC9DF76A8A2B18C315972A98605836837B4" }, { "path": "um\\bits5_0.h", "sourceSha256": "F2DB8B9E8368E3A0832614E0490142969B9ADFF0187A24024E61A681EB54178C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits5_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits5_0.idl", "sdkSha256": "A749B13BD3C05F2AE6C9F69F3CB34E6F8AAF0E4DFFF2B9DA12D16817378812DA" }, { "path": "um\\bitscfg.h", "sourceSha256": "128F75EB3FB076398C9057DC1D27CEE980CF83839E0542C50AF7E1BAAF157FFD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bitscfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bitscfg.idl", "sdkSha256": "EDE8061041669AB4E2FBB9FDD7DD46DE701BC5E6617ECDAED2F250F6B3771C7A" }, { "path": "um\\certpol.h", - "sourceSha256": "F7FF2BD50C9CD81B467987E3F3EE0058CC3C0BBD0513431BD5678F566CA13DF3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certpol.idl", - "sdkSha256": "CBDCF3C619FA7661467C3AF4B08A9D2EFD503AE770C7851BCB8B4F3D8FBE4592" + "sourceSha256": "A489208E5ED33D00163F1813F57D752179E4F561BE9432927ECA6C9AD88F838A", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certpol.idl", + "sdkSha256": "F3C0C6D662AD67CE441CF01DA4F6AA7275A1A5453E9EDD2B1D20229EB38FDEA6" }, { "path": "um\\d3d11_2.h", "sourceSha256": "7ECEB9C69218E44AED2474611D138784455EE4341EE620FA1595989E31AB5287", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_2.idl", "sdkSha256": "D4D3BF4818B498F6160E14A0EDA9283A45C401783D662E619BF4A33BC18A14F3" }, { "path": "um\\d3d11on12.h", "sourceSha256": "973CD916C83C8F5FA82B4AB0FEF7459194DA7A7ED6923544064B95659F070768", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11on12.idl", - "sdkSha256": "80C6B0EEC0792084B2F590E6E70D89F56A6F51203558375FFCE66056145F78F2" + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11on12.idl", + "sdkSha256": "9A2E8B015BF64A47A8D54AFC31E1CFB47E431A2E803B836AF78BDDB3CE42D126" }, { "path": "um\\directmanipulation.h", "sourceSha256": "ACDF772F82D060A87DCE239DC3424BEB6DB50F8236FDF9DE9D5F7F9574D32CD8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\directmanipulation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\directmanipulation.idl", "sdkSha256": "33F66AADA54A38B2A02C81FC8C9F74C5D7C7E16928A1D477314EE3F9B2AAC95A" }, { "path": "um\\dwrite.h", "sourceSha256": "E991BB9037949BB1C03BDF34EEE04A8DD8C0578D2504D41913A711CE77C697DE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dwrite.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dwrite.h", "sdkSha256": "E991BB9037949BB1C03BDF34EEE04A8DD8C0578D2504D41913A711CE77C697DE" }, { "path": "um\\wbemprov.h", "sourceSha256": "D918CADF7F38B138341E22B4E9830E533476C958CBB3DD055A56EAD52D8D7068", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wbemprov.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wbemprov.idl", "sdkSha256": "CC46D2D18E9F63A44292F63F7D1FB6E7812A6E03DA93B6004499A98F5DEB4FA8" }, { "path": "um\\mfcaptureengine.h", - "sourceSha256": "893C2FABFFDA909BF0B76DB98EB8ED4AEBBF72595E87DE1C06726C6A0A9FA3EE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfcaptureengine.idl", - "sdkSha256": "BF6F7E100D71E02D0B15C4B453E629C9DE3C767BC2164081BCF4D04B5006B759" + "sourceSha256": "DBA21FAD84A84DCC8EED1845A5C6058C5A3DF35C7527F314A77C799D022EC096", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfcaptureengine.idl", + "sdkSha256": "146768D8A46596B84AFF8735CA707DFCA2E78ABD50B3AC1C4D5DD7717E995FBF" }, { "path": "um\\uiribbon.h", "sourceSha256": "14F769DC542234B4C49A469041853B62FAD4A19B760015AD7F0E27BF82C159AA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiribbon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiribbon.idl", "sdkSha256": "8C8A7EB2A97A90B13AADDBDAA15CE35FB53D41627D77CEA7A90521DAC8C43AFE" }, { "path": "um\\portabledeviceapi.h", "sourceSha256": "270566037F69C9D02A2DF584995D5BFB859DA6030CE81A4D812A46B6316BFAFB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\portabledeviceapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\portabledeviceapi.idl", "sdkSha256": "AF30B2D030F63DE87E483C806D7C45F3C8C0A0CDB5164014B3B4130F2D9CE57F" }, { "path": "um\\wsdclient.h", "sourceSha256": "224D929F57311E3A77CA030AFF80BB9F5481ECA19B31B26A7C8F4FAAB85DA2CA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdclient.idl", "sdkSha256": "9ADDEAE23D52D2784AD32770519CA16A3984F0988F303DE124E819D06D170FC4" }, { "path": "um\\adhoc.h", "sourceSha256": "16E02B486B175DEA72E6EECE503805E959AFA74F88CCD223FA513CEBF6C77499", - "sdkPath": "c\\include\\10.0.26100.0\\um\\adhoc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\adhoc.idl", "sdkSha256": "10662977B80D8E7E832EFE06C7D115214784CDE609AFA179728BD6E806ED27A3" }, { "path": "um\\audioengineendpoint.h", "sourceSha256": "79003BAE31B98F0A7C7DA89A3C53BADE7BAD9EF7DCD35EC30BCAB53E8452CAD1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioengineendpoint.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioengineendpoint.idl", "sdkSha256": "773689C50C7821835FB75B7C12EE9853CEA34386C2D3A0D9CB76F340FD54B1E4" }, { "path": "um\\bits3_0.h", "sourceSha256": "B7FFAE395A411AAA00F0FCA8304367ED3EBA47A50BEAB0C2A607C7ED6E43DEE5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits3_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits3_0.idl", "sdkSha256": "D6AA0560CB797B50320A03B4A06E1EFA3724DE7E708012C7413B5AB6749B349E" }, { "path": "um\\certexit.h", "sourceSha256": "9B7AE26C1FFD373DE7DAA177293C56A91A60D4024A2DD44E995C91829A105773", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certexit.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certexit.idl", "sdkSha256": "65AE2C4E8C8BC5E9B94BEE2E704594883DAA96E9442492CF384E7A78DB168EB0" }, { "path": "um\\docobj.h", "sourceSha256": "A9988CF0C0D260884D61056E8743C178F2A69D0153CB6D2E8AB8AB53ECAD1997", - "sdkPath": "c\\include\\10.0.26100.0\\um\\docobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\docobj.idl", "sdkSha256": "EDE93F5F0089D183272A430CFC0261615A982C059DA0C7A4CFB46ECB6F0E87A5" }, { "path": "um\\fsrmscreen.h", "sourceSha256": "63FEB2EE272BAB593D4A192BDCAA8E23D3244E7DAA96E3CBA277ECB3A607DC65", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmscreen.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmscreen.idl", "sdkSha256": "DFA1F5249101E2ACF3662BA15F36880B7A60FCF16657C156DB7F35177D235CB4" }, { "path": "um\\spellcheck.h", "sourceSha256": "2092117C1A686ABC04EDB388A8AA4F347D41306F6D580E3AD834C142F351D56C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spellcheck.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spellcheck.idl", "sdkSha256": "56BE486FB700ABCB59B7B449A695BBD2D0B3EBBF94A980B9E5FB99732765340D" }, { "path": "um\\tsvirtualchannels.h", - "sourceSha256": "A5BAFEBBD54D3D4011D95F5A5F3C16BF9E003EC035C86DB6A3E45DA3A341288D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsvirtualchannels.idl", - "sdkSha256": "F0D4669DD038ACF9E3FE3D1C9D8691D9F6C41ACE6AB0567D540B52C8956DC420" + "sourceSha256": "9BDE1DCF30D8174A91FB0B1B90E647F82A01DC8662E75FE133E0CF9822F89188", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsvirtualchannels.idl", + "sdkSha256": "C9909881D53FD5B31F1377C1618E715DCDCC7BC818A26DE882D959838281449F" }, { "path": "um\\wsddisco.h", "sourceSha256": "6CA9DBED8ECDF89182D8CBD7A795A1256E09AF34C8DAE84B55CABE46EC61285C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsddisco.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsddisco.idl", "sdkSha256": "2949BB7252406E3C423680B7FE93487580549DCC62A5F09EA1F326F7BAB1D9FA" }, { "path": "um\\wsmandisp.h", "sourceSha256": "AE615103B496B8F5F2B8687F9336387890BAAA0A40CC2AE422090526743A6E5E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsmandisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsmandisp.idl", "sdkSha256": "E156CEAA3F978EC63F2FE0299D029E7F94BBA6FCE81DFCFC236BA78D952DF51F" }, { "path": "um\\audiopolicy.h", "sourceSha256": "3222E903474AE171728CB2F5963000518BCAED4B26076AF0C15A1FF470A20465", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audiopolicy.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audiopolicy.idl", "sdkSha256": "95BDADDE7F74320C0043BAA753F7DF5EDEC1462DC6E1ED4A26AF09B5CEBF42BF" }, { "path": "um\\d3d11_1.h", "sourceSha256": "5EEBC193F7A06F85DF5EA3A0DD0769C98923045DE92A8F53BA24539B909D6A8F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_1.idl", "sdkSha256": "23AEF0D6AEEB71F1B0E77A0F7E9AAD716E629613443F2A595A5642742F2784EF" }, { "path": "um\\fsrmquota.h", "sourceSha256": "0BBA6253F91E6B7DD099D55F387CBBA648169C7C5705FD45D36AF7C64194C3DA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmquota.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmquota.idl", "sdkSha256": "A597EDD4C6E2FDC07A2BC1086165D6976C0BBAFB444F35E4592BD24142048759" }, { "path": "um\\mfsharingengine.h", "sourceSha256": "BE3A0B6C475B5BDEF94297212E669855EF170AFCB00ED5F62FA6E57E9201DA05", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfsharingengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfsharingengine.idl", "sdkSha256": "D5968BFE635835F814FF416A03E92FCC0FE06FACFD052AE497DAEBF102FEC3BD" }, { "path": "um\\spatialaudiometadata.h", "sourceSha256": "A48FD14EDB61A7EAB71C18BB859D2F6348B91B5C7FBA847ACA1168C0948715C8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialaudiometadata.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialaudiometadata.idl", "sdkSha256": "273D2D32C885307267D3FD04761E188E108379DEC93FF3D6F32C703D55A1032C" }, { "path": "um\\workspaceruntime.h", "sourceSha256": "52CAC64EC03CA3AAA55D95FAF5B04938A4E48CD20374D60F22C685949532BA79", - "sdkPath": "c\\include\\10.0.26100.0\\um\\workspaceruntime.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\workspaceruntime.idl", "sdkSha256": "7BDB753040D5196D7CE894F30C6869D7681B50A6B0C11BA100E4267297F4C8AD" }, { "path": "um\\camerauicontrol.h", "sourceSha256": "F00DAD782B919615FF3FE143EFAC03982E2D92C7E26E7CA54EB1E32B25D9AE84", - "sdkPath": "c\\include\\10.0.26100.0\\um\\camerauicontrol.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\camerauicontrol.idl", "sdkSha256": "8B51E011E308F11F389186242162EDEB5777806F9940D8D951F5D8DB5D255A1C" }, { "path": "um\\fsrmreports.h", "sourceSha256": "3CA3AFA12F7C9CE6C04E2144F28CC1F45E763521DCB507D0CB8153F54B911126", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmreports.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmreports.idl", "sdkSha256": "8115B0465C7592F8869BFD056B20ECE280A46706FB6527A6A929476F4F2854DE" }, { "path": "um\\functiondiscoveryprovider.h", "sourceSha256": "CD19A54DB7FC32ECD4B157FA69A117687F8A3FBE67C24B7EECDDB36DD282F5DB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\functiondiscoveryprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\functiondiscoveryprovider.idl", "sdkSha256": "4463DA0474C0FA0D456D735B09F7997EC695620894EF82BD548A27210E30C5C1" }, { "path": "um\\printmanagerinterop.h", "sourceSha256": "12204080DF492F3782BB7C6F54E3782BF3A0CF6E3BC9F5CF9295B1D00A1139F7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\printmanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\printmanagerinterop.idl", "sdkSha256": "82CDA8132780D0601B51581EACBCCF9104DEEAB4C6ADCE29E9A18BFB16490ACC" }, { "path": "um\\regbag.h", "sourceSha256": "74B1F53A253058B327F38009C5430F7E70FEF2039AC841672DA7FD4310BDBD6D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\regbag.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\regbag.idl", "sdkSha256": "C220EAC5666EA10A510492DDB93DDA137ECDA9380B5C412D61FE459646039562" }, { "path": "um\\spatialinteractionmanagerinterop.h", "sourceSha256": "CEACFE3060B55271AF518D75098BA1251C3777BF9044416301B911167F853867", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialinteractionmanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialinteractionmanagerinterop.idl", "sdkSha256": "D957169602ADD2D5F68FC47ED9B63CE6DBEC8FC41A37A1EAF2E56218BD8C3BC3" }, { "path": "um\\thumbnailstreamcache.h", "sourceSha256": "7BAC28071AEF6FBC24E9AE48B631CE21016477D471BD888F76B6FF2DD47E0EAD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\thumbnailstreamcache.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\thumbnailstreamcache.idl", "sdkSha256": "78ACEAB63094F1B07F081A5E34A4AEEB4EA925F30099C8CDEF3417B008794EBD" }, { "path": "um\\tspubplugin2com.h", "sourceSha256": "81928713D7B98F132E1E71A7F0463D1A689F4C6AFDE5128EFD76B1395AC12A78", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tspubplugin2com.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tspubplugin2com.idl", "sdkSha256": "C90C01EEEEB3A271395C0CBF75D201C264FCDCFC6D7AE101DF27B04FACCF1E14" }, { "path": "um\\tspubplugincom.h", "sourceSha256": "E9EE7B6ACD83D49113129B6EC1EEA8ACFCF4CD1F698D97160482222ED5F05825", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tspubplugincom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tspubplugincom.idl", "sdkSha256": "966F8047842E0CC468215BBEA60F6FF1856AB4952B52405CFFE405CE394FEDAE" }, { "path": "um\\tssbx.h", "sourceSha256": "01E42C7FC74808E6049189974BCD9AA992B777DD8F439974CD35B19DD0547DBA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tssbx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tssbx.idl", "sdkSha256": "F59E3A25FCAF7D2767EE134D35999D778A650A1D2D6D6A626FF2C870CDA37F47" }, { "path": "um\\vsadmin.h", "sourceSha256": "EE9CD94020078D12C66ED11EB61F08EDAA17F072652F547A79E9EF396C5196E6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsadmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsadmin.idl", "sdkSha256": "2C8C5EEDB363C452FF05EC2B2D48AC86924A464B9646836B589E43901C8C7842" }, { "path": "um\\workspaceruntimeclientext.h", "sourceSha256": "1FA5530C75E68B0FC77411E086B56030A29277EC4AFE72C6DB88F62CE9308EB3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\workspaceruntimeclientext.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\workspaceruntimeclientext.idl", "sdkSha256": "32EAD8C24ED7752A3A6A7F9D2B4719AABA847406FE0037DB72B50CFB81E61C7D" }, { "path": "winrt\\activation.h", "sourceSha256": "9296D6DB4AE0A9CA875C941EACD2DA2C89FB894F15AC712A81F23C1763931C65", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\activation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\activation.idl", "sdkSha256": "10B820A9EA1A1432037A016A8165F9EA695457E35337FACF9BEFB46CA4F8D903" }, { "path": "winrt\\asyncinfo.h", "sourceSha256": "2AB28D3D4F16BC5EA061BD93F7B031E980233E5BCA14D576F2693C002B54EF10", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\asyncinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\asyncinfo.idl", "sdkSha256": "479DC67E42370602B494E0024606B218B20BF5FAFB47CC6AEF6120A071FC2D18" }, { "path": "winrt\\inspectable.h", "sourceSha256": "FF6C9D58BEA8E577177A47D46BB164B593F54EE051353059FEDED7F783EDEFA9", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\inspectable.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\inspectable.idl", "sdkSha256": "D7C278B83B622613E8FBFDE119B7B9F0FAD1515E1001E55C3F82DFE1FFAB8874" }, { "path": "um\\dshowasf.h", "sourceSha256": "275D8C3AA3AFB66AB0A77B055204DA0476C4D4D4B84C1225198A60A4F049655E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dshowasf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dshowasf.idl", "sdkSha256": "55B670B3A4DFEE9B934F5191EEC6808536988665A07FD1AF4A5D6EEA70C0D57B" }, { "path": "um\\inputpanelconfiguration.h", "sourceSha256": "4719ED9F62104D96DBAE3078B433F77D72D1452CB957D1297773925D9139814F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputpanelconfiguration.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputpanelconfiguration.idl", "sdkSha256": "0AB52414EA7FAF470B4C517C4DC82D5B5440CC4A90DAFEA68867B9FBCAD4EFF5" }, { "path": "um\\mfspatialaudio.h", "sourceSha256": "C5D955D9688D9CCE666B808C05860788022DB435DA803D47208511180E13525B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfspatialaudio.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfspatialaudio.idl", "sdkSha256": "F84B4434C040D67147DC80A778DD4D947CCEF3C78DE1CF090456A9227DDA8DB5" }, { "path": "um\\mixerocx.h", "sourceSha256": "B027CA8D70F9AFE032951A4AD00950088B90817603A694843A7D753356C00664", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mixerocx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mixerocx.idl", "sdkSha256": "69A445F81FF1E602FC5D8A66FD9C24B064CCDF2AA2C92232D7A2611098015554" }, { "path": "um\\mmcobj.h", "sourceSha256": "2D28241C0C4AE98B913DAE3EF8E3576BA9194545F85735D958FF01F04F687996", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmcobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmcobj.idl", "sdkSha256": "EBABD460778A1F31EDFBBC15EDE019C7ACF1B5C86D764BD74E8AAC7119AAD9FF" }, { "path": "um\\objectarray.h", "sourceSha256": "885A0E1983C2D5CF2B4B2B398F26306A174B9E28129D6A55ABA4259BA2DB5974", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objectarray.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objectarray.idl", "sdkSha256": "62C10FEC9CCEE38D307576665C42BBD5D44A567519CCC6A8243C33F7B3404F4E" }, { "path": "um\\spatialaudiohrtf.h", "sourceSha256": "72DAAE73C3356951B101B74149A2A358BB5FB8088889BE82428F736EEAF7AC2C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialaudiohrtf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialaudiohrtf.idl", "sdkSha256": "52EB81CA52800D5826A9099E8E290355E21BF2719A76DA43C03E5D00D2C084FF" }, { "path": "um\\spellcheckprovider.h", "sourceSha256": "E575EBF871481CBA72C59DE50F681239389FA3E9A836554907CDDCD320DF8316", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spellcheckprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spellcheckprovider.idl", "sdkSha256": "1EFE835D2054BCBC5FFE164EE4F6E2043FD293FE056CA364E3ACB8417FC0E2F1" }, { "path": "um\\tpmvscmgr.h", "sourceSha256": "39D9972C125A7ED24DAD94921A598EAF35B3EA1B1BB25923BE137B969DB9423F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tpmvscmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tpmvscmgr.idl", "sdkSha256": "F65976FB6E2F0A44E22AF7B931B5D84FA47A7178728D5D3F1200625AC8A7B4E7" }, { "path": "um\\tsgauthenticationengine.h", "sourceSha256": "C862CB2CB82D1DEA09F173E322467C5635169A656F1F2014B50E1B512A1EDCE6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsgauthenticationengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsgauthenticationengine.idl", "sdkSha256": "D211861D3748A8C0F94FB3B5EBC6C4844A45CACCEAF88B27123510AB1FA27F1E" }, { "path": "um\\tvratings.h", "sourceSha256": "A1BADCBEA02DE525437DEC8EDCD4503BDD16A609B3FC40DBB7F4AF754ED1F939", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tvratings.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tvratings.idl", "sdkSha256": "DAAADFB3D0612BD848B2EE2159E4C6395856024DEAFF0E52DB577ED12843F41A" }, { "path": "um\\videoacc.h", "sourceSha256": "78E288B1639852791CDD3C6F56C0C6746CE24A5E16E510D64C5440F1FAEABA98", - "sdkPath": "c\\include\\10.0.26100.0\\um\\videoacc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\videoacc.idl", "sdkSha256": "4B889E0FB86B7C452EBA91702FA1341D8C4BBFF930E97DF16B2D6EEE6E42DEA6" }, { "path": "um\\vss.h", "sourceSha256": "654F2464535949A4023667F2B032188D6F280ECFE45AB49B4B7409694734700E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vss.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vss.idl", "sdkSha256": "6251B17E386C0BA418E3F526C39163DC3A415D57FE649C3B5987CB0BB6FDBDCF" }, { "path": "um\\xpsobjectmodel_2.h", "sourceSha256": "D62092F9D92689D8FF5B0CEC7812FADE508DF9CDF35A7100F704B1135EA5D3DD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel_2.idl", "sdkSha256": "85BB7765D97E604AF9993D25E9DE2FC39046E85C72C1043536A1F032C11D8D0B" }, { "path": "um\\audioendpoints.h", "sourceSha256": "CBF737EDDA234A8CCE7974B67F520ECCFBA40A4FDE539E15F499A9205EC17963", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioendpoints.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioendpoints.idl", "sdkSha256": "B9827DC2D469A7F57FAC5EE0186002B321A16A2633B678CEBFB7B23707A1797C" }, { "path": "um\\bits1_5.h", "sourceSha256": "CF1507E181226D1129FE56255CCF26AC70A2E0D9712E9F40C4E7A77C55DC0847", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits1_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits1_5.idl", "sdkSha256": "04D3467CD33C1CFD63C4EFEE5783A54A5C9DB5B6664E88C22D112AEEB15D6B9D" }, { "path": "um\\certmod.h", "sourceSha256": "78F22D1463D87A6BA2099B9EF18B7660935CCF58AB77BBA26F3391A1FD55615B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certmod.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certmod.idl", "sdkSha256": "CEED4FE34F5CB94BB8328E2C77F96C8F53B626122CC50392C671460D6C2C920F" }, { "path": "um\\ctfspui.h", "sourceSha256": "93C6C4F8AEC357722330756FAAF6DC34D7D67B7C9D4B2DDBE6CFFD34D12E9C16", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctfspui.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctfspui.idl", "sdkSha256": "791E70D2FBF233B0C6EF62C1B2E33AC472A6E9F7F6B1E6075DBC5D68C198880A" }, { "path": "um\\ctxtcall.h", "sourceSha256": "59C3B0BABF5CBFADE205E448A99CB7CB7E177838CD6C2D252FF954930D64F4A7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctxtcall.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctxtcall.idl", "sdkSha256": "2EA29B4C802968CD49BD36A28FD1FD2B14E2B6A398273107A3DFFB0D3B48249B" }, { "path": "um\\d3d11_4.h", "sourceSha256": "74EC9F3FBB7A9C0D9B8C631419BD23CD234EA994423AD4C3302576767E469049", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_4.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_4.idl", "sdkSha256": "07D07BB005561A58A36B202D2119878D1489D599D665BDB02A45B85A5632D9E2" }, { "path": "um\\dcompanimation.h", "sourceSha256": "BFBF7675C1679524A532AB4BB1B43B9E8B0BE3AF3BD38C422B632881EA373B08", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dcompanimation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dcompanimation.idl", "sdkSha256": "FC2E05FC0240BA5586F3F96899F8F0C11B32E65EA4E2E0854269BB7BB5754254" }, { "path": "um\\dmodshow.h", "sourceSha256": "6DD54A4F85049D1C97E09C3D2BFC5B4F0264351FB56CB12F6B1EF49C949F7972", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dmodshow.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dmodshow.idl", "sdkSha256": "74111784154148089E8272104DD9906AB8003321A47CEFEF5A43DE6B92DC6111" }, { "path": "um\\editionupgradehelper.h", - "sourceSha256": "BEAF54928C4E8CA4F96032AB94A11F5FA967E7C7671807C1CAE317A6230387AE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\editionupgradehelper.idl", - "sdkSha256": "E1BF2C66DCFC5A777C6D06E6AC5F9D2C13992AFC8930DF0154A49DA307FF234D" + "sourceSha256": "6073FD9E18BFBCBC0EC2BEB3D583C619F4B943CCDCDAD8C9B360BE9E4B8A561F", + "sdkPath": "c\\include\\10.0.28000.0\\um\\editionupgradehelper.idl", + "sdkSha256": "49812845363B81327471E145B766BF128A0E56168FADAA9FD54E3656ED864CD2" }, { "path": "um\\filter.h", "sourceSha256": "4C2E98D5295A496D393CC7F0C8D16420FA03028AF7DD84DFD8184AE775495457", - "sdkPath": "c\\include\\10.0.26100.0\\um\\filter.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\filter.idl", "sdkSha256": "80416936FC95889C449FC9C5F7AF4D604AD447D82DC9565AA46E92C74A702D0E" }, { "path": "um\\filtereg.h", "sourceSha256": "D764EC7EEE70270D328AAB53C0F2C418A4ADFD3BA840F84489350ADBD518A06B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\filtereg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\filtereg.idl", "sdkSha256": "E436B740F02A8263527C172F0174EDA06EBBC41A9D6C6368D8F493A7A082C693" }, { "path": "um\\holographicspaceinterop.h", "sourceSha256": "6AC3200107A232903E8997B613ED9573208C5A5524DC0F28F32405AE2D187F62", - "sdkPath": "c\\include\\10.0.26100.0\\um\\holographicspaceinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\holographicspaceinterop.idl", "sdkSha256": "09F5FC605BE8F543B8939AEE952E96FB170F8BC513D102E26BDC90940D7A310F" }, { "path": "um\\iaccess.h", "sourceSha256": "3EEF7B500BDE5A95FAA9C7802EE24FAC23628E3CD918B86D0C624EA67CB0AC23", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iaccess.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iaccess.idl", "sdkSha256": "02F8173B7668C9E427164D172A557DFB47E94C1D47BB91AC3991AB840467DC78" }, { "path": "um\\icontentprefetchertasktrigger.h", "sourceSha256": "B045B2409BE86F0BAD1ADF7FE0FD20F4F0B9BB2E0446DAB99219C729C5C414FF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icontentprefetchertasktrigger.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icontentprefetchertasktrigger.idl", "sdkSha256": "1F52DEC7E41512A3BDB40A6ED0702E88CDBF8F10AD76A8F70C66D8462F70646D" }, { "path": "um\\inkrenderer.h", "sourceSha256": "57FE25E5312FE74A985CBFBD90BFCFC26E96219B59697222E5834D0BA6163214", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inkrenderer.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inkrenderer.idl", "sdkSha256": "C133920FFAEDCE82E4712D108883F1BD035CEAA3AD5C6CB68D0634661938DFEF" }, { "path": "um\\inputpaneinterop.h", "sourceSha256": "6A3F9BA67A746E5F2562BFC2DFD8EA663E89C6DE9DFB3ACF683DAA8A557B152B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputpaneinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputpaneinterop.idl", "sdkSha256": "1FCD4DA27F64F19A5A60CCEE007DD6999597EB7402306ED502A460C2BDE001B4" }, { "path": "um\\mfmp2dlna.h", "sourceSha256": "984BBCD75C8E331DF0211A3A185D27FFEDDD184D7C43691F2FDF6DF8AA629E55", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmp2dlna.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmp2dlna.idl", "sdkSha256": "635C9B364BE9736ABE6DDCBE6B788C3687406063BA147CAB259E9B7CD58DAF6B" }, { "path": "um\\mpeg2psiparser.h", "sourceSha256": "56D5839B67937031FEA6FD1045B57C56E6B713AC3D276ECF8ACF0D354B3BFE6E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpeg2psiparser.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpeg2psiparser.idl", "sdkSha256": "C19DC666A34164031B844E216D704E3F445780AE3EC076528351FFACFEBB1942" }, { "path": "um\\msimeapi.h", "sourceSha256": "1A0C7D2D7B894D0B770AA55343470894474FD5D64AB20ABC5EBEFB6145D74BB5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msimeapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msimeapi.idl", "sdkSha256": "7B02DE9C85DA744555876EE8F99628C206A04B7E0A4D283542A8303F0BCB1BA0" }, { "path": "um\\msvidctl.h", "sourceSha256": "750AA179A2F71EB3AB3B1479A39526A6F9A2C1354F555EAB6169D0BE215F8D67", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msvidctl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msvidctl.idl", "sdkSha256": "62D686FE5D299492D60D84CC8778C2CE1C229DAC97D4F4BD045CE2C43E45E701" }, { "path": "um\\playtomanagerinterop.h", "sourceSha256": "C7D3CC3E4676803BE8226331C344EC67F6BBECF58F39BEA566C693E74FD66A8F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\playtomanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\playtomanagerinterop.idl", "sdkSha256": "69A5BEB4064F964501F9489CE42E820DC6713FFC72D859906EFC087B8990F91E" }, { "path": "um\\portabledeviceconnectapi.h", "sourceSha256": "95B5AF91D315E83F299BBB8C629626DB6A5A67BEFA98754BF5F834F50B1AAE75", - "sdkPath": "c\\include\\10.0.26100.0\\um\\portabledeviceconnectapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\portabledeviceconnectapi.idl", "sdkSha256": "D9C89638BA317E16E30CECC70E1F75BD902ED69A024BC15E4D1913B8BA52899F" }, { "path": "um\\msclus.h", - "sourceSha256": "28045F0B639DA6118CE67E3D9B992B3974350708D2FB758174105D683922C6A3", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msclus.idl", + "sourceSha256": "12C59BC4E5E61D3C6D2B996B11F32CEB2EDA3E5A6A01902FB4CA7589DFE8EC2E", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msclus.idl", "sdkSha256": "59BC9E6F0BE0B6B579A3001DEE502FDE7E043266D61342FCAA00558BDC452F7D" }, { "path": "um\\mstask.h", "sourceSha256": "B97D42923767DAE8E53F397A44E2C07768E284D259A349B273EBEA716C93FF9C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mstask.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mstask.idl", "sdkSha256": "05FB210A4ECF1A36707A7CFB6F88D48681FC3C47299433A0D4965D9E5E937F4B" }, { "path": "um\\xamlom.h", "sourceSha256": "E3AF8F9BD73382D3EDF17090C684E3D3E170824794BF00F62162DF3E3BE9D021", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xamlom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xamlom.idl", "sdkSha256": "F5D34CD5D3743AC7F7637DB29773CFBC6681C18137D212A6BD16FF893825633B" }, { "path": "um\\xpsdigitalsignature.h", "sourceSha256": "80539F652ADF405AF62411E505AFA7AD138051E99227F436726DA618AEF6F3B7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsdigitalsignature.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsdigitalsignature.idl", "sdkSha256": "B7515D9CC85B5A481707FE403AF090ED335DF8CCF6DBDC5C75FD7A772E42B2AC" }, { "path": "shared\\dxgi1_4.h", "sourceSha256": "4D2C71FC2620633DC4B1797E6B9F68E773EC4F8DAB2C8A5C9D30CC433AF0160E", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_4.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_4.idl", "sdkSha256": "49339CA9214D9A284556929718DB5D15BE862861D6B5D824E631B7B2FAE3CD5A" }, { "path": "shared\\dxgi1_6.h", "sourceSha256": "7F2D532ACCB0789D7DA93A3BBD953A5FA86E6A12B85D21D29C8CD601B9091CC9", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_6.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_6.idl", "sdkSha256": "D209B7EF9E56E2DC67973E46AD88E91F9FFBB22F853E2A2FDC497CD9FD02CA54" }, { "path": "um\\emptyvc.h", "sourceSha256": "B5FE75AC34F8A7E997BDF5108F1D10F75EFCBAC9B0057101B824A3F73535813F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\emptyvc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\emptyvc.idl", "sdkSha256": "AF054A7CD69C88FE46928C273A3F4DB5FB4BDC4C061471F89E15E5516096A3C0" }, { "path": "um\\encdec.h", "sourceSha256": "6452D12935F1D8FE21AF5EC44BC54F772D5B99DD9C858D6C0632F8F0BE0A82AD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\encdec.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\encdec.idl", "sdkSha256": "35AE48450CCB4447C8C255F634B347DC54E80CE1DF7E8A50DC25471796F03786" }, { "path": "um\\functiondiscoveryapi.h", "sourceSha256": "2FFDE57DC46CE17C2AB9140F6C08BDE8EF8402B2FA598CD5E496F4FA63ADDF53", - "sdkPath": "c\\include\\10.0.26100.0\\um\\functiondiscoveryapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\functiondiscoveryapi.idl", "sdkSha256": "AD2AC4A02A83D8DB48B197C8F4FC550E4086F78586153979BE999EAD45DF5B8D" }, { "path": "um\\msaatext.h", "sourceSha256": "14963A22E6653F5844A72FDEC47ABE96DD745EC4415631A8EA894F617FEA51B1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msaatext.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msaatext.idl", "sdkSha256": "9CA80CDD0CB480870308E5A68A921D7689535E997AF74F9F9A82077008BF1821" }, { "path": "um\\upnphost.h", "sourceSha256": "68D8640353889135995546307653C9070494DC16F884D68FFAF7A5ACB4A53586", - "sdkPath": "c\\include\\10.0.26100.0\\um\\upnphost.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\upnphost.idl", "sdkSha256": "7C08142917D338DA650BD34AE4343248486629D0EAB65AB22359286FD07B8591" }, { "path": "winrt\\webapplication.h", "sourceSha256": "C19DC0487A4EA485AAF5443E967E9E7A06555BD06212FF1E820B850F2F3BEC24", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\webapplication.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\webapplication.idl", "sdkSha256": "0349EEB88558EE012D8FFCD9C110BCB1EFED897464B8C49EBC54D437693F4CD0" }, { "path": "um\\bits4_0.h", "sourceSha256": "3C52504A55E0238CF5E4F71E1C913E9D5C61706C6E015C2D0AB8A319F9F317FF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits4_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits4_0.idl", "sdkSha256": "1837D4518A7E66723DE8931010929C595B33FDF5806F68B9596BD29B9A0E8563" }, { "path": "um\\casetup.h", "sourceSha256": "8B27A051F24CD7BF0492BF6D9CC5227840AF79B7158F1D2EE92DB48483A4D5AB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\casetup.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\casetup.idl", "sdkSha256": "178772BF6875E42ADE31EFC75B80483AF8958314BA3EF72633908FBF93EB65E9" }, { "path": "um\\comcat.h", "sourceSha256": "111FA393F6075509BD53D44C17E4E1DDABD7BB01738B9B75233BA49B7EEACF07", - "sdkPath": "c\\include\\10.0.26100.0\\um\\comcat.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\comcat.idl", "sdkSha256": "04AD4E13812214C3D1C9925A3535E6744F6704E2B614636AC7FA74BB32F84B9E" }, { "path": "um\\commoncontrols.h", "sourceSha256": "A77D433F550901053CC738790DFBA3EE4731531E80CF8B3BFC5243F3EE8C4EB6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\commoncontrols.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\commoncontrols.idl", "sdkSha256": "CAD7D328E38F33C7C25E9880711C1E1F63D218704FE3EDC82B51D6C34385DE21" }, { "path": "um\\d3d11sdklayers.h", "sourceSha256": "0A5A3EAB6B8B38E9C1DD431ACE567ED2C4CE916B69A770A4805ED4C083017197", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11sdklayers.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11sdklayers.idl", "sdkSha256": "2921B8E7CA678ACCD40528FF48BE2BF27C97E4C19CF6F20BC1CF81E13416F43F" }, { "path": "um\\inputscope.h", "sourceSha256": "2E6A80C9894434C272458040224B169574D902DD7A79917EE1A60B74DCBB9EAC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputscope.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputscope.idl", "sdkSha256": "8D7A8DEE00B0FD4B0773F0669DE58795D58D13C8B856586E1349B95000D08D30" }, { "path": "um\\mfcontentdecryptionmodule.h", "sourceSha256": "BAFC188DD7B0CF15FF6440E10DA473A8A2737FC11268F1CFD84BAA9D462ED3B1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfcontentdecryptionmodule.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfcontentdecryptionmodule.idl", "sdkSha256": "3A8C8532E85B1D5338F97D07586120143F153BEC20B233B943136A2C41460BD4" }, { "path": "um\\natupnp.h", "sourceSha256": "A86DC4EA851DEF211FD83E2F1FB2F09A7C8724E5A75454EB60BDC79F8F55B474", - "sdkPath": "c\\include\\10.0.26100.0\\um\\natupnp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\natupnp.idl", "sdkSha256": "EA3A0350647EEE4A3B48A272DD71C234B20A7A41070EB3743D949B1870BB1D30" }, { "path": "um\\qmgr.h", "sourceSha256": "DA80F1A5743FE2D25E080A25E4472416AFA31CC209673A73A1192400F477CDEE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\qmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\qmgr.idl", "sdkSha256": "001601C4BAD8E6FF2098708BC023D63E0155C3079296E90A51CF10A0C6CF4C4B" }, { "path": "um\\shldisp.h", "sourceSha256": "11AE01DCBA47B94FC7C7588A89C633EC6FBBBDB8F20B09D279C56646ABE55D81", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shldisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shldisp.idl", "sdkSha256": "3229DFDFB6D10E8D0DE474BCC582B117C8DBB28639DA70CEDF2EDC15B126F1F1" }, { "path": "um\\spatialaudioclient.h", "sourceSha256": "A948B69CD0B65683177332F40FE116C02F5BFA19E4F7135317520023992E6451", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialaudioclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialaudioclient.idl", "sdkSha256": "222B1665B1E65EB278679866ACD7D00ADB1AFDA443A77F3FFC7C305C9B743B43" }, { "path": "um\\vsmgmt.h", "sourceSha256": "5DCADCC1041DF564D666B77440BE0A44803D804400A5F3CD01DA60A919DDE96E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsmgmt.idl", "sdkSha256": "840D17C61A6FD0AB4434F5B0B0D251294450EE260754F78EE5A5128CFC8C7090" }, { "path": "um\\vsprov.h", "sourceSha256": "A6C8761F269797C2241463FFA5AEF8381A5E69A6AD13A5E60D6C44D197A7D9E2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsprov.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsprov.idl", "sdkSha256": "FD21E10A77C76C59DCFFDC3B6BE2AF4A31DA3C686FB8EF206E8CECA6CCC6BECE" }, { "path": "um\\cluadmex.h", "sourceSha256": "44FE9E93F9353C08E1898DB6705CC3BCBA0656D07306D83789AB0196AB6664F8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cluadmex.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cluadmex.idl", "sdkSha256": "A959A87AEB3F55EFE4B6470F65EF0E5DADF4F53BA49690612F4AE1E71BB1DFF3" }, { "path": "um\\mpegtype.h", "sourceSha256": "D9754B14386E6B31A2FED882B7D1ADF7EBA6DF0D8C8545DE50D1A0EAA72DDD7D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpegtype.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpegtype.h", "sdkSha256": "D9754B14386E6B31A2FED882B7D1ADF7EBA6DF0D8C8545DE50D1A0EAA72DDD7D" }, { "path": "um\\comadmin.h", "sourceSha256": "6587948F79A11D30D46E5AA0A8392C73724C8BD71E14830CD6AE98C32EE2D004", - "sdkPath": "c\\include\\10.0.26100.0\\um\\comadmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\comadmin.idl", "sdkSha256": "8DA1E2C3E8964EB882BA8562B86AE9868CE8A6F3992979046F00A39789C9FD3B" }, { "path": "um\\wabiab.h", "sourceSha256": "36398E817C4CAD63CC8BF4F09032FF57BACB019514E6B07AA6A76CA71356D7E7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wabiab.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wabiab.h", "sdkSha256": "36398E817C4CAD63CC8BF4F09032FF57BACB019514E6B07AA6A76CA71356D7E7" }, { "path": "um\\richole.h", "sourceSha256": "A35ECC6540237235447DD414609EA82834BE2440CEC02A07B74CA0874CF76D7E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\richole.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\richole.h", "sdkSha256": "A35ECC6540237235447DD414609EA82834BE2440CEC02A07B74CA0874CF76D7E" }, { "path": "um\\d2d1effectauthor.h", "sourceSha256": "ABE531F28CAE43E28845F507B415AFD560C2B97B65B6CC59A3F1DC97A8654E47", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1effectauthor.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1effectauthor.h", "sdkSha256": "ABE531F28CAE43E28845F507B415AFD560C2B97B65B6CC59A3F1DC97A8654E47" }, { "path": "um\\dwrite_3.h", "sourceSha256": "1A033492B5BB70E9CC273A948CB76A5AC310D2B205FDA58136D13776501C7AD6", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dwrite_3.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dwrite_3.h", "sdkSha256": "1A033492B5BB70E9CC273A948CB76A5AC310D2B205FDA58136D13776501C7AD6" }, { "path": "um\\dskquota.h", "sourceSha256": "418D784DDACDC83CDEF9911E9360167809B5D8B9E8B3A3938132DC4A8A667EB9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dskquota.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dskquota.h", "sdkSha256": "418D784DDACDC83CDEF9911E9360167809B5D8B9E8B3A3938132DC4A8A667EB9" }, { "path": "um\\dwrite_2.h", "sourceSha256": "64D2FF91EEBCE0BA23CBB7F8EAF3D3DF5BABCABBEE408DEB98CE419C3BC49353", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dwrite_2.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dwrite_2.h", "sdkSha256": "64D2FF91EEBCE0BA23CBB7F8EAF3D3DF5BABCABBEE408DEB98CE419C3BC49353" }, { "path": "um\\qnetwork.h", "sourceSha256": "E39486744B197FD786FDEC2E79C0AD337C57A425F61F075AD328F0EC0D3F389E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\qnetwork.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\qnetwork.h", "sdkSha256": "E39486744B197FD786FDEC2E79C0AD337C57A425F61F075AD328F0EC0D3F389E" }, { "path": "um\\dwrite_1.h", "sourceSha256": "72107EA7B01125DCB095EEEEC1ABE18A05838C8BD0F7E525ACF2DCDF28D17BF8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dwrite_1.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dwrite_1.h", "sdkSha256": "72107EA7B01125DCB095EEEEC1ABE18A05838C8BD0F7E525ACF2DCDF28D17BF8" }, { "path": "um\\dsadmin.h", "sourceSha256": "8237B3ABA94B8430BBC44B33ACC0FB0F993A98289FE98E6438C579A59D9A3350", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsadmin.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsadmin.h", "sdkSha256": "8237B3ABA94B8430BBC44B33ACC0FB0F993A98289FE98E6438C579A59D9A3350" }, { "path": "um\\d3d11shader.h", "sourceSha256": "CC5B6359CE97EC951FB117297CC920FEDB24665CF60F0536E53ADA06E42CDD75", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11shader.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11shader.h", "sdkSha256": "CC5B6359CE97EC951FB117297CC920FEDB24665CF60F0536E53ADA06E42CDD75" }, { "path": "um\\wabdefs.h", "sourceSha256": "DD98D47E51CD2F08E84368A4BE7E191F2779845DBB8404C8F18C8AE819053B4F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wabdefs.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wabdefs.h", "sdkSha256": "DD98D47E51CD2F08E84368A4BE7E191F2779845DBB8404C8F18C8AE819053B4F" }, { "path": "um\\amvideo.h", "sourceSha256": "977B297DB87B72DEC8062281C42F5061F4B865DD725856453101BBD9647F4238", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amvideo.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amvideo.h", "sdkSha256": "977B297DB87B72DEC8062281C42F5061F4B865DD725856453101BBD9647F4238" }, { "path": "um\\cmnquery.h", "sourceSha256": "0E132CEE2FEDB6AC8FBF2E0932EEB8EE6BB7BE4D11D10AAD4156A4A612C098B4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmnquery.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmnquery.h", "sdkSha256": "0E132CEE2FEDB6AC8FBF2E0932EEB8EE6BB7BE4D11D10AAD4156A4A612C098B4" }, { "path": "um\\vpnotify.h", "sourceSha256": "1F639F12E5028E7A8E94ACDF10299CAC7D6BC12FEE6EFC684F6F898624322E91", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vpnotify.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vpnotify.h", "sdkSha256": "1F639F12E5028E7A8E94ACDF10299CAC7D6BC12FEE6EFC684F6F898624322E91" }, { "path": "um\\mpconfig.h", "sourceSha256": "EEB9FCCFA1503A47CAF371780A280C026E87CFB894763AAD8BF4F7D4A6809BBB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpconfig.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpconfig.h", "sdkSha256": "EEB9FCCFA1503A47CAF371780A280C026E87CFB894763AAD8BF4F7D4A6809BBB" }, { "path": "um\\objsel.h", "sourceSha256": "1EFFDCC6A210CD09E2F2EEF79D5D4B19957CD59FE21603B3C007C2FE93F80807", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objsel.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objsel.h", "sdkSha256": "1EFFDCC6A210CD09E2F2EEF79D5D4B19957CD59FE21603B3C007C2FE93F80807" }, { "path": "um\\vpconfig.h", "sourceSha256": "86B79FBD3D1538274114CF69A3EB0057F18E60DEEB5AD1283D69A4F18BFD8C25", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vpconfig.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vpconfig.h", "sdkSha256": "86B79FBD3D1538274114CF69A3EB0057F18E60DEEB5AD1283D69A4F18BFD8C25" }, { "path": "um\\wabapi.h", "sourceSha256": "9FB450A55DCDF794F43A02EAC4374C523D10F36621D0AEA2D820F3EFD6BBFA01", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wabapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wabapi.h", "sdkSha256": "9FB450A55DCDF794F43A02EAC4374C523D10F36621D0AEA2D820F3EFD6BBFA01" }, { "path": "um\\amaudio.h", "sourceSha256": "8287F2C2D7CBB6F1CB8D5F249BF55B86267982C8176ACA15EE201E3068666A4C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amaudio.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amaudio.h", "sdkSha256": "8287F2C2D7CBB6F1CB8D5F249BF55B86267982C8176ACA15EE201E3068666A4C" }, { "path": "um\\amparse.h", "sourceSha256": "7C0E1FAE760B261669A5AD4D4677353AFE9C1B096D719627A504BB537E015780", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amparse.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amparse.h", "sdkSha256": "7C0E1FAE760B261669A5AD4D4677353AFE9C1B096D719627A504BB537E015780" }, { "path": "um\\hrtfapoapi.h", "sourceSha256": "E80079F58FAD8C3F87282AED1181DE708D0E040864A9E61188A490654EC74941", - "sdkPath": "c\\include\\10.0.26100.0\\um\\hrtfapoapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\hrtfapoapi.h", "sdkSha256": "E80079F58FAD8C3F87282AED1181DE708D0E040864A9E61188A490654EC74941" }, { "path": "um\\il21dec.h", "sourceSha256": "A185F9B3385B327A501B5CEBDE462B5ADF508C2923285426FD1469E707FEE71F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\il21dec.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\il21dec.h", "sdkSha256": "A185F9B3385B327A501B5CEBDE462B5ADF508C2923285426FD1469E707FEE71F" }, { "path": "um\\iwstdec.h", "sourceSha256": "2846744F732410F5D1EB30AE10B4CA841A0A4BC28ED7170A2EC698611CD7206F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iwstdec.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iwstdec.h", "sdkSha256": "2846744F732410F5D1EB30AE10B4CA841A0A4BC28ED7170A2EC698611CD7206F" }, { "path": "shared\\cfg.h", "sourceSha256": "6E2AA35C540EC4754D8E13666B0B17F83CB174C4DFD34CF9076565F72361F5E3", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\cfg.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\cfg.h", "sdkSha256": "6E2AA35C540EC4754D8E13666B0B17F83CB174C4DFD34CF9076565F72361F5E3" }, { "path": "shared\\mmreg.h", "sourceSha256": "F1BFA2FDB661F7B3188813F9B4A056D818D26A95941155F13D9B7AAB15772631", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\mmreg.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\mmreg.h", "sdkSha256": "F1BFA2FDB661F7B3188813F9B4A056D818D26A95941155F13D9B7AAB15772631" }, { "path": "shared\\pciprop.h", - "sourceSha256": "324E884BA572C8FD7B2447CFC7B1767F301F04E4D1705340D957AB450E2EEDE7", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\pciprop.h", - "sdkSha256": "324E884BA572C8FD7B2447CFC7B1767F301F04E4D1705340D957AB450E2EEDE7" + "sourceSha256": "9D926E23CE0A9B8A081B280B2076AC9E925DA5F34EE7575DF34576F7FC7BAA34", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\pciprop.h", + "sdkSha256": "9D926E23CE0A9B8A081B280B2076AC9E925DA5F34EE7575DF34576F7FC7BAA34" }, { "path": "shared\\tdiinfo.h", "sourceSha256": "82D23453754E64CE5591D989C4E1947E408E616BEF457DD83D15EDE380681837", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\tdiinfo.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\tdiinfo.h", "sdkSha256": "82D23453754E64CE5591D989C4E1947E408E616BEF457DD83D15EDE380681837" }, { "path": "shared\\winbio_types.h", "sourceSha256": "614F6362EA3A2DFC45B569F4FC3ED52592BDD13CD0DF07BD0C0FFCE0069AC830", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winbio_types.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winbio_types.h", "sdkSha256": "614F6362EA3A2DFC45B569F4FC3ED52592BDD13CD0DF07BD0C0FFCE0069AC830" }, { "path": "shared\\winusbio.h", "sourceSha256": "1BE604E75B8CE82CCBD4CF59E10F5CD8A1E248F052873210F72D417BAAF5C966", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winusbio.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winusbio.h", "sdkSha256": "1BE604E75B8CE82CCBD4CF59E10F5CD8A1E248F052873210F72D417BAAF5C966" }, { "path": "um\\accctrl.h", "sourceSha256": "37A7438A7233AD985E312151F6979A55D499C75F1B92BA8BEB930A71FFA8E429", - "sdkPath": "c\\include\\10.0.26100.0\\um\\accctrl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\accctrl.h", "sdkSha256": "37A7438A7233AD985E312151F6979A55D499C75F1B92BA8BEB930A71FFA8E429" }, { "path": "um\\certsrv.h", "sourceSha256": "AAA0C9AE9320A7879FF2EFBCA4FD7DF9BE079EA4C67285682A94DAC68F978CF1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certsrv.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certsrv.h", "sdkSha256": "AAA0C9AE9320A7879FF2EFBCA4FD7DF9BE079EA4C67285682A94DAC68F978CF1" }, { "path": "um\\dbt.h", "sourceSha256": "7C718E36E8E5B3E0BAB96D76D397C2090E0DA0837EEBD7FE3E3F8A8C424B8A2C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbt.h", "sdkSha256": "7C718E36E8E5B3E0BAB96D76D397C2090E0DA0837EEBD7FE3E3F8A8C424B8A2C" }, { "path": "um\\dvdmedia.h", "sourceSha256": "67ED0BDE5F327B8D72D4361F574F59AEBC7FA8EC2DC57B5DA7366C1520B0D26E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dvdmedia.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dvdmedia.h", "sdkSha256": "67ED0BDE5F327B8D72D4361F574F59AEBC7FA8EC2DC57B5DA7366C1520B0D26E" }, { "path": "um\\imm.h", "sourceSha256": "942D0B80EB7D186EE935FCE8064CCDCDEA3A49B39BCC03F55208B7C37E289779", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imm.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imm.h", "sdkSha256": "942D0B80EB7D186EE935FCE8064CCDCDEA3A49B39BCC03F55208B7C37E289779" }, { "path": "um\\iptypes.h", "sourceSha256": "1335FA9CCDED9A98FC7FAEA84DD7E47D9419C771953892AD6C754B0BD35DEB81", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iptypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iptypes.h", "sdkSha256": "1335FA9CCDED9A98FC7FAEA84DD7E47D9419C771953892AD6C754B0BD35DEB81" }, { "path": "um\\mq.h", "sourceSha256": "A66B318D8882B5068EF68960843A20CD98B5C7DCB59EFDE326041305C538D66A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mq.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mq.h", "sdkSha256": "A66B318D8882B5068EF68960843A20CD98B5C7DCB59EFDE326041305C538D66A" }, { "path": "um\\playsoundapi.h", "sourceSha256": "29FB73D46381A51143B05C0BA5603DAD5DFF3EC879BB7376DD20E4A271E2D818", - "sdkPath": "c\\include\\10.0.26100.0\\um\\playsoundapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\playsoundapi.h", "sdkSha256": "29FB73D46381A51143B05C0BA5603DAD5DFF3EC879BB7376DD20E4A271E2D818" }, { "path": "um\\verrsrc.h", "sourceSha256": "FF9BEE8EE5B7AA81EAF79A1EAB0E93BD307601E87D3B80A73F24984E9C951C61", - "sdkPath": "c\\include\\10.0.26100.0\\um\\verrsrc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\verrsrc.h", "sdkSha256": "FF9BEE8EE5B7AA81EAF79A1EAB0E93BD307601E87D3B80A73F24984E9C951C61" }, { "path": "um\\vssym32.h", "sourceSha256": "E5A7450642A2D783E667EE106EB1888A4B547627EDEC1C6DF45BF1C6B8FC29ED", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vssym32.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vssym32.h", "sdkSha256": "E5A7450642A2D783E667EE106EB1888A4B547627EDEC1C6DF45BF1C6B8FC29ED" }, { "path": "um\\winioctl.h", - "sourceSha256": "E4F42E55B43604F34C8D7080C2435363845BA13484F4163B2D8AC5F730BD8FD2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winioctl.h", - "sdkSha256": "E4F42E55B43604F34C8D7080C2435363845BA13484F4163B2D8AC5F730BD8FD2" + "sourceSha256": "7A24C90197BA6AF73E3D876546A513461233778C179639072DBA265DA57DF8D5", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winioctl.h", + "sdkSha256": "7A24C90197BA6AF73E3D876546A513461233778C179639072DBA265DA57DF8D5" }, { "path": "um\\winperf.h", "sourceSha256": "F73392E4535CBD70EF811B91D9DE580A35E57930640A8A8B584507841006E20A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winperf.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winperf.h", "sdkSha256": "F73392E4535CBD70EF811B91D9DE580A35E57930640A8A8B584507841006E20A" }, { "path": "shared\\fwptypes.h", "sourceSha256": "C971CDF8A56B58265F510575819E6C47946F1B20F2FD3F23F3617C2B988A2FA1", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\fwptypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\fwptypes.idl", "sdkSha256": "46790A9804F690E09CD06BFF11A55BC11E49DFE3B847073A5EB03530A7102898" }, { "path": "shared\\wtypes.h", "sourceSha256": "F0F2E4AE8C2CEE4BE0BB4A0AB75C854F135929ADC6B2A70599E0BBF4C2286B02", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\wtypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\wtypes.idl", "sdkSha256": "F850757CCEF6092F20A97E955DD64AE2A595E0BF71C09A826A0BDE7C21B36E81" }, { "path": "um\\hlink.h", "sourceSha256": "E2D0131B7F74D47BB138C849BB743E63178D99DC4E2FD607E543C7EC75F09090", - "sdkPath": "c\\include\\10.0.26100.0\\um\\hlink.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\hlink.idl", "sdkSha256": "FE5E5415A518838B67AECB24CAEEF7B6B49274591B6225A570591EBE8AD64AAC" }, { "path": "um\\xmllite.h", "sourceSha256": "B0C6CF3E9886B1C0FD33A67DBB9FCBD5A1C1D27E30D7CA226EBC40F6909836DE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmllite.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmllite.idl", "sdkSha256": "F2A4DFDA73C7FF458433B48625440D01CD6E684947672D37D04AD82E14499F62" }, { "path": "um\\activprof.h", "sourceSha256": "043C3F6BA725DCBE50A9AFA743BDD70F52A5CD5A02D552E3DF9E6810D67A4CDE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\activprof.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\activprof.idl", "sdkSha256": "7CBF144EFD0654074DEEBBA38FA9060771A9E6FF9040856B775ADBC4FACA11FD" }, { "path": "um\\mshtmhst.h", "sourceSha256": "82487B9060AF24B066D4C14CB84FDCEB1CF1FB5D3FDB34E0CF22B8913F3BA78A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mshtmhst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mshtmhst.idl", "sdkSha256": "F906FF61A7B1BC4177C1F8B34C9E66CE4E6634EEB458C7E67E5E3D7FEB6BE48A" }, { "path": "um\\audioenginebaseapo.h", "sourceSha256": "4C4FA7A68B3E7042B2BE85D5BAA8DC4C592F3B09EBCE7296B824F4E8B6EEBC7C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioenginebaseapo.idl", - "sdkSha256": "7A6AF63707456D6FA3948973E23DD2369E14A519321EA105E979204E36EB7160" + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioenginebaseapo.idl", + "sdkSha256": "CE35719C8B6A4E1C4D6EFF49728BB3D170A19B6B5CAD0AFA719E59E2F5602616" }, { "path": "um\\dbgprop.h", "sourceSha256": "BD1558AE1425979F220DA72DF44C73A085D7AC1917B9159DFD8C86C57017B1DE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbgprop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbgprop.idl", "sdkSha256": "5C573323D0567D754018E35414E423A623218579983E88D08419D952FE666B1D" }, { "path": "um\\presentation.h", "sourceSha256": "FFF18CA1D4939B7CD243D9BD8F581B854DAB696A7BD46E5E7AFF69FC1CF5E7EF", - "sdkPath": "c\\include\\10.0.26100.0\\um\\presentation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\presentation.idl", "sdkSha256": "AFC7F3D24BBFCF1C9D46BC920E71A2F14FE5EB178818E32BF934F587F172E65C" }, { "path": "um\\dispex.h", "sourceSha256": "53E8E168A4E4AC8E4F2EC08C2665B9C5C4BCBE7660A96483A2C76F5AF2AA685F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dispex.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dispex.idl", "sdkSha256": "BDE5016BA1C04F32E21B8A33D4282D493AD375B2D0EBF516FB88F4B5A189E1E6" }, { "path": "um\\netcfgn.h", "sourceSha256": "D13140FA26FFE55C788D81A17B7CCFA21B0410456C0D84CAB4818FE58C61625E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netcfgn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netcfgn.idl", "sdkSha256": "34DC1B54CDDBB9EE72454DB49DAA0C0C1E2303DB64E86B7A7ECF7AACFB8C9151" }, { "path": "um\\oledb.h", "sourceSha256": "DEA54A3F28F230F257BA0E3E663AF2FEA321B812A84465794F2702F94EB1ED3A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oledb.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oledb.idl", "sdkSha256": "023D3F0D92178E635C3EF818BB7E9A3B6B3F5D9E4EBD8F7E9D68E1DCD8991437" }, { "path": "um\\oledbdep.h", "sourceSha256": "5BB46F50CB47863EEA78E2EC756BDF4D6D21ACEBDEDF07EC604738D2ED3DD2C0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oledbdep.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oledbdep.idl", "sdkSha256": "C7BE181281FDF1A696D9FB566A13206A05A1447CF22F5FA16B21903AA5CAE44F" }, { "path": "um\\mcx.h", "sourceSha256": "4EE416B2D24E45CFC5D35CE5B34833B64B34FD9A39957C66D75509F6D3B8F972", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mcx.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mcx.h", "sdkSha256": "4EE416B2D24E45CFC5D35CE5B34833B64B34FD9A39957C66D75509F6D3B8F972" }, { "path": "shared\\tcpmib.h", "sourceSha256": "8D202A04F8252892A3D9BCB752DDED6ACE19A8E56A2E7B92E805208B3F1C9B0F", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\tcpmib.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\tcpmib.h", "sdkSha256": "8D202A04F8252892A3D9BCB752DDED6ACE19A8E56A2E7B92E805208B3F1C9B0F" }, { "path": "um\\minschannel.h", "sourceSha256": "788EDFF9E4AF84DDEF6FC3009BFE1F5F3DA989EFC22A6AAD79C32334FE77A724", - "sdkPath": "c\\include\\10.0.26100.0\\um\\minschannel.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\minschannel.h", "sdkSha256": "788EDFF9E4AF84DDEF6FC3009BFE1F5F3DA989EFC22A6AAD79C32334FE77A724" }, { "path": "um\\credssp.h", "sourceSha256": "4E4E8CEA816FA8BC7A358BD93FAFE947174B3157EB671B6CB083E6AF8706103C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\credssp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\credssp.h", "sdkSha256": "4E4E8CEA816FA8BC7A358BD93FAFE947174B3157EB671B6CB083E6AF8706103C" }, { "path": "um\\vbinterf.h", "sourceSha256": "E59DF32953EA02F2178AAD0F108DD35CDF3EC78232B89BE1B32F8601CFAABFAD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vbinterf.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vbinterf.h", "sdkSha256": "E59DF32953EA02F2178AAD0F108DD35CDF3EC78232B89BE1B32F8601CFAABFAD" }, { "path": "um\\mmsyscom.h", "sourceSha256": "E312D128602E8E6D51456F12229F81B0228AD1C8EA6C9AC438053966A7D20C8F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmsyscom.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmsyscom.h", "sdkSha256": "E312D128602E8E6D51456F12229F81B0228AD1C8EA6C9AC438053966A7D20C8F" }, { "path": "shared\\ntstatus.h", - "sourceSha256": "34CDC350A1F1FAE13DC0194557F7B27FA012B6FF615900F31F05390D3EB7D4CB", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntstatus.h", - "sdkSha256": "34CDC350A1F1FAE13DC0194557F7B27FA012B6FF615900F31F05390D3EB7D4CB" + "sourceSha256": "7F2E2DD170D58DEC6B24A45BDBE1D4155A04269467DE14EF253C5FBFB948828E", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntstatus.h", + "sdkSha256": "7F2E2DD170D58DEC6B24A45BDBE1D4155A04269467DE14EF253C5FBFB948828E" }, { "path": "shared\\cderr.h", "sourceSha256": "BF32AFDC975BA03781B01DFC7B3A450787CC213257A3F4B7F53EC168CE07DD7C", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\cderr.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\cderr.h", "sdkSha256": "BF32AFDC975BA03781B01DFC7B3A450787CC213257A3F4B7F53EC168CE07DD7C" }, { "path": "shared\\bugcodes.h", - "sourceSha256": "1516034D71722CCDE51FF8818D0302F6ED637974E1ABE4B41CDA4247C455F2C8", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\bugcodes.h", - "sdkSha256": "1516034D71722CCDE51FF8818D0302F6ED637974E1ABE4B41CDA4247C455F2C8" + "sourceSha256": "11A6DF6ED75AD51D86C00B788DAE0343ACCDA605F2CD7DAB75C09EA7241E9C80", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\bugcodes.h", + "sdkSha256": "11A6DF6ED75AD51D86C00B788DAE0343ACCDA605F2CD7DAB75C09EA7241E9C80" }, { "path": "shared\\devpropdef.h", "sourceSha256": "79E4631E9E0CFDA0975270F71C9970D731352AD8D198D6706AC13A3970CEAA98", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\devpropdef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\devpropdef.h", "sdkSha256": "79E4631E9E0CFDA0975270F71C9970D731352AD8D198D6706AC13A3970CEAA98" }, { "path": "um\\htmlhelp.h", "sourceSha256": "A59DDEDC08021A30DC4E8BBEC683AA03E3DB02A481ADC66524A02C4BED10CF32", - "sdkPath": "c\\include\\10.0.26100.0\\um\\htmlhelp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\htmlhelp.h", "sdkSha256": "A59DDEDC08021A30DC4E8BBEC683AA03E3DB02A481ADC66524A02C4BED10CF32" }, { "path": "um\\lmuseflg.h", "sourceSha256": "104C9E031411978107B325D47A9D4F1F499182885558DB6B7A455DC4C2655E43", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lmuseflg.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lmuseflg.h", "sdkSha256": "104C9E031411978107B325D47A9D4F1F499182885558DB6B7A455DC4C2655E43" }, { "path": "um\\dshow.h", "sourceSha256": "40B1A1CF8028A06539F3DC3345D2640A120386C6AB498B1F3B43E762638E9736", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dshow.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dshow.h", "sdkSha256": "40B1A1CF8028A06539F3DC3345D2640A120386C6AB498B1F3B43E762638E9736" }, { "path": "um\\sens.h", "sourceSha256": "8ED40FAD01D6BFE53B2BD1AA16EA8CEAAD7002958EABECF9CC8D8E0133BC4172", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sens.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sens.h", "sdkSha256": "8ED40FAD01D6BFE53B2BD1AA16EA8CEAAD7002958EABECF9CC8D8E0133BC4172" }, { "path": "um\\infotech.h", "sourceSha256": "25F30931052889DDFF3BFF51432813D588140EC4F333E0D0004EEEAF441B193C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\infotech.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\infotech.h", "sdkSha256": "25F30931052889DDFF3BFF51432813D588140EC4F333E0D0004EEEAF441B193C" }, { "path": "um\\statehelpers.h", "sourceSha256": "097A90FC0A727B2354FC6ABC2DB04A0159524CCFBF96BFD21FF9276652A1ECDB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\statehelpers.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\statehelpers.h", "sdkSha256": "097A90FC0A727B2354FC6ABC2DB04A0159524CCFBF96BFD21FF9276652A1ECDB" }, { "path": "shared\\ntdef.h", - "sourceSha256": "4A107192DF73E5EFAE5B0AB6EC9024B9C40C9EF63F539471F70CB47DB21FB12C", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntdef.h", - "sdkSha256": "4A107192DF73E5EFAE5B0AB6EC9024B9C40C9EF63F539471F70CB47DB21FB12C" + "sourceSha256": "60ACAE211A3504DE41955D03E25A3E14E41B604620884066E98C3759E59650C9", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntdef.h", + "sdkSha256": "60ACAE211A3504DE41955D03E25A3E14E41B604620884066E98C3759E59650C9" }, { "path": "um\\regstr.h", "sourceSha256": "65D3AEF381BE3FD3B1FE5901949241E604D084C20808FED85B01206F0A9D75ED", - "sdkPath": "c\\include\\10.0.26100.0\\um\\regstr.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\regstr.h", "sdkSha256": "65D3AEF381BE3FD3B1FE5901949241E604D084C20808FED85B01206F0A9D75ED" }, { "path": "um\\audiomediatype.h", "sourceSha256": "219C68431234687FEF0D7957C98B26DBF2AD7630FE3D68F4415152DE620ED106", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audiomediatype.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audiomediatype.idl", "sdkSha256": "154316E0630E6EB8C8A63C65443DBE4B272EC0E08DBEE44619D16AC6CA7988DB" }, { "path": "um\\l2cmn.h", "sourceSha256": "7BF3D68DBF763399A8E99787E99B7E54D8376B3EFE79580FDC4BB50D1338C711", - "sdkPath": "c\\include\\10.0.26100.0\\um\\l2cmn.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\l2cmn.h", "sdkSha256": "7BF3D68DBF763399A8E99787E99B7E54D8376B3EFE79580FDC4BB50D1338C711" }, { "path": "um\\strmif.h", "sourceSha256": "13B64A8CF7C01475077124930C508E1B96C1C3D51314E34FAF1661F564932631", - "sdkPath": "c\\include\\10.0.26100.0\\um\\strmif.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\strmif.idl", "sdkSha256": "88CCFBC89223B3D14593DE2C11DD12FE9C5E8D353CA213702449714D2C23898B" }, { "path": "um\\SearchAPI.h", - "sourceSha256": "36E12FBE0BE2ACE120EA914A441242B2C5DA66B0A5FA1B2258666119E87AA994", - "sdkPath": "c\\include\\10.0.26100.0\\um\\searchapi.idl", + "sourceSha256": "78A798852AC1E5961ABA24F97BB02C856BCD864AAF3514D50F4BB1DA877E99AC", + "sdkPath": "c\\include\\10.0.28000.0\\um\\searchapi.idl", "sdkSha256": "AA19F77F4ACC575873F8924B190A226AD33E9C17D5A7200A9A5D6D41365CEE98" }, { "path": "shared\\fwpmtypes.h", - "sourceSha256": "8E84529708C92690C2D8C4537CFE28DC63A4E52DF93DD9802340FBC8606433F4", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\fwpmtypes.idl", - "sdkSha256": "FAB6532CDAB4239CE354D6034E129BBACFA6939F47D4D609A07AAA30CAD5E1AC" + "sourceSha256": "A8A4FAB6251BEAE7E56470743C9F1014CBD5ACA2CFA6D1260E13AC27A2135AC1", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\fwpmtypes.idl", + "sdkSha256": "5793E23F344418E5602827D408E6CA56FDDCF977181766B0D15E3237057C2449" }, { "path": "um\\oaidl.h", "sourceSha256": "77555F0602F68B20DB134A5A26D3F54D1D90711A1EB7488AA0853DAEA2242263", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oaidl.idl", "sdkSha256": "5F5A2B0508AFFC22C30289D6F44B08792CE047CD7F41303EBBB7470E2217D6BC" }, { "path": "um\\d3dcommon.h", "sourceSha256": "ED03E0CC37FA5220E4738B7BD5850C6ADB5AC8537F4A929C66EC08F73EC09CAB", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3dcommon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3dcommon.idl", "sdkSha256": "2513F619ECE3BDA0AF925B8120BA1ADFD6AC1D27A9CB62E4635EF3FAFBD09FD2" }, { "path": "um\\dxcapi.h", "sourceSha256": "CAF915A318579B0B48D51271D457107CECD4042E01D0F3308E498A18DF24A546", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxcapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxcapi.h", "sdkSha256": "CAF915A318579B0B48D51271D457107CECD4042E01D0F3308E498A18DF24A546" }, { "path": "um\\winsock.h", "sourceSha256": "F5D2165D8609DAF35BFC796846F67C8F6129E47B4C6536AEFBA90F9488520737", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsock.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsock.h", "sdkSha256": "F5D2165D8609DAF35BFC796846F67C8F6129E47B4C6536AEFBA90F9488520737" }, { "path": "shared\\ntddtape.h", "sourceSha256": "62A73169F77F9A8EACD955BF756744A1F1FBECB40E162340DCA08559174F8B3C", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntddtape.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntddtape.h", "sdkSha256": "62A73169F77F9A8EACD955BF756744A1F1FBECB40E162340DCA08559174F8B3C" }, { "path": "um\\dbghelp.h", - "sourceSha256": "55EC5FFEA6C2A099316DF485CD054C46E48FFC7B016F81158F8B5D6FED6D161C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbghelp.h", - "sdkSha256": "55EC5FFEA6C2A099316DF485CD054C46E48FFC7B016F81158F8B5D6FED6D161C" + "sourceSha256": "B430963A8445577C526E9FEAF75AB4EF004562AA54B85F69CD10BFD1CF33BEDD", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbghelp.h", + "sdkSha256": "B430963A8445577C526E9FEAF75AB4EF004562AA54B85F69CD10BFD1CF33BEDD" }, { "path": "shared\\intsafe.h", "sourceSha256": "E2BD9872E5402F8A802946D4859526FDFDA55C3A08F52249B0D976CB6E177A19", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\intsafe.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\intsafe.h", "sdkSha256": "E2BD9872E5402F8A802946D4859526FDFDA55C3A08F52249B0D976CB6E177A19" }, { "path": "shared\\strsafe.h", - "sourceSha256": "034660EB69D7B4F4ACA3D350A99F58F554297447160D44B18373F8A400427996", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\strsafe.h", - "sdkSha256": "034660EB69D7B4F4ACA3D350A99F58F554297447160D44B18373F8A400427996" + "sourceSha256": "9EAAF5C80E6CD93817641523D17E63516441013EC2F80DAE2EA15C32839DF6D2", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\strsafe.h", + "sdkSha256": "9EAAF5C80E6CD93817641523D17E63516441013EC2F80DAE2EA15C32839DF6D2" }, { "path": "um\\baseaudioprocessingobject.h", "sourceSha256": "AA31AB4FB49840EF21480C85B1A442D54CA434407BC2AC4DFCF0A198557852D5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\baseaudioprocessingobject.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\baseaudioprocessingobject.h", "sdkSha256": "AA31AB4FB49840EF21480C85B1A442D54CA434407BC2AC4DFCF0A198557852D5" }, { "path": "um\\gdiplusinit.h", "sourceSha256": "950C01B3D4F57B849B2EFC1CBEEAC46EB90B83A8DFE46CD1AEE8ADFFB8E84863", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplusinit.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplusinit.h", "sdkSha256": "950C01B3D4F57B849B2EFC1CBEEAC46EB90B83A8DFE46CD1AEE8ADFFB8E84863" }, { "path": "um\\gdiplusenums.h", "sourceSha256": "CBC7BF08D7BBDED17A9DFB4851FF62FCAB3280EE890A8C1B372D3C097666F77D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplusenums.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplusenums.h", "sdkSha256": "CBC7BF08D7BBDED17A9DFB4851FF62FCAB3280EE890A8C1B372D3C097666F77D" }, { "path": "um\\vswriter.h", "sourceSha256": "BA15C10621F2FC83379E95DDFD9ABD8B577F0EBE0AAD15F77214924FAA8C8127", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vswriter.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vswriter.h", "sdkSha256": "BA15C10621F2FC83379E95DDFD9ABD8B577F0EBE0AAD15F77214924FAA8C8127" }, { "path": "winrt\\roregistrationapi.h", "sourceSha256": "2C4B016488FBD0AADE5FCC1DD412ADB640DE2165ED16A5C9DB8BD413294022B2", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\roregistrationapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\roregistrationapi.h", "sdkSha256": "2C4B016488FBD0AADE5FCC1DD412ADB640DE2165ED16A5C9DB8BD413294022B2" }, { "path": "um\\propsys.h", "sourceSha256": "65E92F202F259CB56B5B9D2E042200953779A5F315FEB7C99795C1D679CC17E4", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propsys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propsys.idl", "sdkSha256": "1D53E43BDC74CD3884B637B8BA30E2FB6D87F9557904A1AF69C46F75182A41E2" }, { "path": "um\\atlthunk.h", "sourceSha256": "609E2D1A58162D39EA2253D790999B9633595DADE66558E6072DF6C943623A16", - "sdkPath": "c\\include\\10.0.26100.0\\um\\atlthunk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\atlthunk.h", "sdkSha256": "609E2D1A58162D39EA2253D790999B9633595DADE66558E6072DF6C943623A16" }, { "path": "um\\d2d1_1.h", "sourceSha256": "B4F0D073563CD8F46673CA3091967A57FCD9B255FC564E6274C3F1BB66D1DB7B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1_1.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1_1.h", "sdkSha256": "B4F0D073563CD8F46673CA3091967A57FCD9B255FC564E6274C3F1BB66D1DB7B" }, { "path": "um\\d2d1_1helper.h", "sourceSha256": "D55912DF1C5867D14D714F1FC7E4DEC79E6AE6C8AC51B505F77DE1F9E9FAD4BC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1_1helper.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1_1helper.h", "sdkSha256": "D55912DF1C5867D14D714F1FC7E4DEC79E6AE6C8AC51B505F77DE1F9E9FAD4BC" }, { "path": "um\\d2d1helper.h", "sourceSha256": "D66D5675CEBF2C082542E292D2C6FD1D50D0FBC35A26FDCD291C925C794F1B01", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1helper.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1helper.h", "sdkSha256": "D66D5675CEBF2C082542E292D2C6FD1D50D0FBC35A26FDCD291C925C794F1B01" }, { "path": "um\\gdiplusimagecodec.h", "sourceSha256": "26BCC9EF3BAD4ECD4055B318003F5C0224FF424A3A5E88C806D9518C680B9886", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplusimagecodec.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplusimagecodec.h", "sdkSha256": "26BCC9EF3BAD4ECD4055B318003F5C0224FF424A3A5E88C806D9518C680B9886" }, { "path": "shared\\ip2string.h", "sourceSha256": "16FE1F7FFBC3BD334E50A00CC4D365629A6E4D006049C102BD8BD43C06198D46", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ip2string.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ip2string.h", "sdkSha256": "16FE1F7FFBC3BD334E50A00CC4D365629A6E4D006049C102BD8BD43C06198D46" }, { "path": "um\\msdrm.h", "sourceSha256": "A07C28677A46662E1EEB94CB68AC5B5C184F7E6A993D99434D191901CA2F9015", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msdrm.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msdrm.h", "sdkSha256": "A07C28677A46662E1EEB94CB68AC5B5C184F7E6A993D99434D191901CA2F9015" }, { "path": "um\\networkisolation.h", "sourceSha256": "02D55C2BD8B062D266A1F62D9F6237D941D4C0DF98917FBD47DF9BA4465A366E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\networkisolation.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\networkisolation.h", "sdkSha256": "02D55C2BD8B062D266A1F62D9F6237D941D4C0DF98917FBD47DF9BA4465A366E" }, { "path": "um\\ntlsa.h", - "sourceSha256": "B03A828B67AFCF423DDC56930B97E436302198A6AD639BA5075B42F9D5072A7E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ntlsa.h", - "sdkSha256": "B03A828B67AFCF423DDC56930B97E436302198A6AD639BA5075B42F9D5072A7E" + "sourceSha256": "34E992090D8BF937E301806253AA19489CAF12BD366D87699571F6F3CDA824AA", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ntlsa.h", + "sdkSha256": "34E992090D8BF937E301806253AA19489CAF12BD366D87699571F6F3CDA824AA" }, { "path": "winrt\\rometadataresolution.h", "sourceSha256": "0B86B9CDAAC39396CEFF89AFDA528D4D2DCC0EFF2DEE3859798D83BE32F7643C", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\rometadataresolution.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\rometadataresolution.h", "sdkSha256": "0B86B9CDAAC39396CEFF89AFDA528D4D2DCC0EFF2DEE3859798D83BE32F7643C" }, { "path": "um\\rpcproxy.h", "sourceSha256": "96AE2185D9A8A688DAFA8EEF99686D07777549E8809891B8D977D258872F1B3C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rpcproxy.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rpcproxy.h", "sdkSha256": "96AE2185D9A8A688DAFA8EEF99686D07777549E8809891B8D977D258872F1B3C" }, { "path": "shared\\traceloggingprovider.h", - "sourceSha256": "C4F717FE5180302BF85C846DB5E493DEB67D9A0BDA9288002CF86731D174CB3F", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\traceloggingprovider.h", - "sdkSha256": "C4F717FE5180302BF85C846DB5E493DEB67D9A0BDA9288002CF86731D174CB3F" + "sourceSha256": "B21A5779E18AF678AE79850A3480550E1FC535F4E78513D97C985E68B8992CFB", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\traceloggingprovider.h", + "sdkSha256": "B21A5779E18AF678AE79850A3480550E1FC535F4E78513D97C985E68B8992CFB" }, { "path": "shared\\iketypes.h", "sourceSha256": "E628C5C2F3B71B6589EFDF45F481C3A9B276A7DDB68820C6362C9518BCD9061D", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\iketypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\iketypes.idl", "sdkSha256": "D0E8345FA2F68F276321211595D52B8FD4079BF5A3F18737F1D95CE3A6F41CF8" }, { "path": "shared\\ipsectypes.h", "sourceSha256": "668F92D724BF99B6D4D39FE34E945AD2B259CE1E1681049526F778B507D807F1", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ipsectypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ipsectypes.idl", "sdkSha256": "880848DC653C5E72528A2B0DFC512EF595EB817A58B472CF25723B63C552BBE4" }, { "path": "um\\minwinbase.h", "sourceSha256": "7D1408F4B8EEBA96AE45892209132258CDE80CAB6DAB192B4CCEEA591972C78B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\minwinbase.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\minwinbase.h", "sdkSha256": "7D1408F4B8EEBA96AE45892209132258CDE80CAB6DAB192B4CCEEA591972C78B" }, { "path": "um\\comppkgsup.h", "sourceSha256": "C7C9BA3FDD89341E9BFA8AA3A6BB551119883134E6A6292E2893303131C22C47", - "sdkPath": "c\\include\\10.0.26100.0\\um\\comppkgsup.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\comppkgsup.h", "sdkSha256": "C7C9BA3FDD89341E9BFA8AA3A6BB551119883134E6A6292E2893303131C22C47" }, { "path": "um\\d2d1_3helper.h", "sourceSha256": "D6DF0DB13A81FC4A16425B9ED402BA7986A0B405EF8070A21984E26F82EA8C08", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d2d1_3helper.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d2d1_3helper.h", "sdkSha256": "D6DF0DB13A81FC4A16425B9ED402BA7986A0B405EF8070A21984E26F82EA8C08" }, { "path": "um\\gdipluspixelformats.h", "sourceSha256": "A8BC2F8F61FB1FA3C005F5BC8A209F2B96B92157A98787C500AE2BD1C007C888", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdipluspixelformats.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdipluspixelformats.h", "sdkSha256": "A8BC2F8F61FB1FA3C005F5BC8A209F2B96B92157A98787C500AE2BD1C007C888" }, { "path": "um\\lpmapi.h", "sourceSha256": "6082A2092459BAF5E4015592A2338B7885CC33AB3A280866352039FD6F70A6B2", - "sdkPath": "c\\include\\10.0.26100.0\\um\\lpmapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\lpmapi.h", "sdkSha256": "6082A2092459BAF5E4015592A2338B7885CC33AB3A280866352039FD6F70A6B2" }, { "path": "um\\vsbackup.h", "sourceSha256": "C777F563CADB9285234C13D8B7633DC53EB67DD886106F3E1699B0EBFEEA8476", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsbackup.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsbackup.h", "sdkSha256": "C777F563CADB9285234C13D8B7633DC53EB67DD886106F3E1699B0EBFEEA8476" }, { "path": "shared\\clfs.h", "sourceSha256": "CB586375B76EBCB3E8C364DC77FC0820A8E309D18B88F0E9CA9B0BDE468DD3A0", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\clfs.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\clfs.h", "sdkSha256": "CB586375B76EBCB3E8C364DC77FC0820A8E309D18B88F0E9CA9B0BDE468DD3A0" }, { "path": "shared\\guiddef.h", "sourceSha256": "0C08463FBC5A23A8862E57699E2F30DD14CD3DB4A40903E4FCA9392A57942DAE", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\guiddef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\guiddef.h", "sdkSha256": "0C08463FBC5A23A8862E57699E2F30DD14CD3DB4A40903E4FCA9392A57942DAE" }, { "path": "um\\msime.h", "sourceSha256": "C1BA7E39DA2D82FAEC20C66C0A8C78421CBC5FA1085AE2621733BC61AEF40C08", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msime.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msime.h", "sdkSha256": "C1BA7E39DA2D82FAEC20C66C0A8C78421CBC5FA1085AE2621733BC61AEF40C08" }, { "path": "um\\reason.h", "sourceSha256": "30540EB35DAA79C7A5CB98059430DF480E86B549B7980247288DA8A2801ADD1D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\reason.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\reason.h", "sdkSha256": "30540EB35DAA79C7A5CB98059430DF480E86B549B7980247288DA8A2801ADD1D" }, { "path": "shared\\windef.h", "sourceSha256": "040535B19A60264E5FE6971F7CB13CBF24BE17ABEEAA8ACD21E44F5D7DFE8D22", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\windef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\windef.h", "sdkSha256": "040535B19A60264E5FE6971F7CB13CBF24BE17ABEEAA8ACD21E44F5D7DFE8D22" }, { "path": "um\\gdiplusflat.h", "sourceSha256": "28A3E8FCF58047D3AC1AD5BEB133817687C1AC3A21CC16BC6AE09124B54DCD14", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplusflat.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplusflat.h", "sdkSha256": "28A3E8FCF58047D3AC1AD5BEB133817687C1AC3A21CC16BC6AE09124B54DCD14" }, { "path": "um\\gdiplustypes.h", "sourceSha256": "96E9186ACD42DA2F50EF428DBBBE2715B7A99726104D67E3241DA7B46FFBE421", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplustypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplustypes.h", "sdkSha256": "96E9186ACD42DA2F50EF428DBBBE2715B7A99726104D67E3241DA7B46FFBE421" }, { "path": "um\\mswsock.h", "sourceSha256": "3B3E501DF4FAE9683E4216F909083CA1E0278EFA99F8624655C6742439E8D5C7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mswsock.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mswsock.h", "sdkSha256": "3B3E501DF4FAE9683E4216F909083CA1E0278EFA99F8624655C6742439E8D5C7" }, { "path": "um\\sti.h", "sourceSha256": "4E45E572A9BEA4B4907933F3AF7067C9F01F9E1D36D0683EAA780C984AA092AE", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sti.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sti.h", "sdkSha256": "4E45E572A9BEA4B4907933F3AF7067C9F01F9E1D36D0683EAA780C984AA092AE" }, { "path": "um\\winhvplatform.h", "sourceSha256": "DA7B74CECB8D335609E64385274B13CA3C2DDFAEB38D73ADD6073401CEFDEFD1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winhvplatform.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winhvplatform.h", "sdkSha256": "DA7B74CECB8D335609E64385274B13CA3C2DDFAEB38D73ADD6073401CEFDEFD1" }, { "path": "um\\cimfs.h", - "sourceSha256": "E1462F0032AA074E88A83F44874315018E8A7CEFECBC4F81FFF7A6BDC79CC8E8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cimfs.h", - "sdkSha256": "E1462F0032AA074E88A83F44874315018E8A7CEFECBC4F81FFF7A6BDC79CC8E8" + "sourceSha256": "8D19EDA1934F77B8C12F14CB8CB2079563466C3B651A30CFF2F677268EBE1B17", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cimfs.h", + "sdkSha256": "8D19EDA1934F77B8C12F14CB8CB2079563466C3B651A30CFF2F677268EBE1B17" }, { "path": "um\\ddrawgdi.h", "sourceSha256": "FC7A46429BC40FFB012B8F19D02311C6787B4DA73986B5409E7F8B0C7C94CA91", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddrawgdi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddrawgdi.h", "sdkSha256": "FC7A46429BC40FFB012B8F19D02311C6787B4DA73986B5409E7F8B0C7C94CA91" }, { "path": "um\\versionhelpers.h", "sourceSha256": "A0A68A8851D0B28E86F21D5CE1566F01AB89A7D6850D582A6C88762966E43E85", - "sdkPath": "c\\include\\10.0.26100.0\\um\\versionhelpers.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\versionhelpers.h", "sdkSha256": "A0A68A8851D0B28E86F21D5CE1566F01AB89A7D6850D582A6C88762966E43E85" }, { "path": "um\\computecore.h", "sourceSha256": "740B439A859A0D2E7606DD35908972D16183DA323403333BCC06CBE46F3CD614", - "sdkPath": "c\\include\\10.0.26100.0\\um\\computecore.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\computecore.h", "sdkSha256": "740B439A859A0D2E7606DD35908972D16183DA323403333BCC06CBE46F3CD614" }, { "path": "um\\featurestagingapi.h", "sourceSha256": "B86A10D682DE9A8DC138305AE694E5C15046DF72CDB2AF977AF31CDC4A37279D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\featurestagingapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\featurestagingapi.h", "sdkSha256": "B86A10D682DE9A8DC138305AE694E5C15046DF72CDB2AF977AF31CDC4A37279D" }, { "path": "um\\gamingexperience.h", "sourceSha256": "FB07EC07D14CE6AA5418976E58D6C56F9C75A0B69039F9422467967F047BF2E9", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gamingexperience.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gamingexperience.h", "sdkSha256": "FB07EC07D14CE6AA5418976E58D6C56F9C75A0B69039F9422467967F047BF2E9" }, { "path": "um\\scesvc.h", "sourceSha256": "016502AA984F22DBE328F5E6EB32E14AE2FCCFC464999FE214290EB70028F1E8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\scesvc.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\scesvc.h", "sdkSha256": "016502AA984F22DBE328F5E6EB32E14AE2FCCFC464999FE214290EB70028F1E8" }, { "path": "um\\ioringapi.h", "sourceSha256": "D5F813397E9189AB4506DA7D36600F5BC62D5278F2F4DEE83B95C52BC69E0688", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ioringapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ioringapi.h", "sdkSha256": "D5F813397E9189AB4506DA7D36600F5BC62D5278F2F4DEE83B95C52BC69E0688" }, { "path": "um\\dsound.h", - "sourceSha256": "781E58E6B6EB081AFD0B4097F8D5C60036D746AD49C3A54CD92555E24A80BEEC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dsound.h", - "sdkSha256": "781E58E6B6EB081AFD0B4097F8D5C60036D746AD49C3A54CD92555E24A80BEEC" + "sourceSha256": "385BE5E7E77CD9F7B027C40D71C81EE7070A806EFAC4FA46048DCBDA16A68419", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dsound.h", + "sdkSha256": "385BE5E7E77CD9F7B027C40D71C81EE7070A806EFAC4FA46048DCBDA16A68419" }, { "path": "um\\chstring.h", "sourceSha256": "E754F01C20D0FEB6EEF983FF92902B492EDE6588BCD45D48A7E61F2E2B1314BC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\chstring.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\chstring.h", "sdkSha256": "E754F01C20D0FEB6EEF983FF92902B492EDE6588BCD45D48A7E61F2E2B1314BC" }, { "path": "um\\commapi.h", "sourceSha256": "53433EE1E326280663C5EAA707DB6D2BE41F1E00486EEA08D501903C5A5E456A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\commapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\commapi.h", "sdkSha256": "53433EE1E326280663C5EAA707DB6D2BE41F1E00486EEA08D501903C5A5E456A" }, { "path": "um\\winsplp.h", "sourceSha256": "8183F90C31E7DBC184E835C5525AB2A385A98178019F5CAB20FFE4690802709C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\winsplp.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\winsplp.h", "sdkSha256": "8183F90C31E7DBC184E835C5525AB2A385A98178019F5CAB20FFE4690802709C" }, { "path": "shared\\windnsdef.h", - "sourceSha256": "905489CCA8B6B1B3A796BD715FDBAFA2EEF251AA651B848E88427E62E75FFA7A", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\windnsdef.h", - "sdkSha256": "905489CCA8B6B1B3A796BD715FDBAFA2EEF251AA651B848E88427E62E75FFA7A" + "sourceSha256": "C4B50DE295D3D676080CF19579E15D707E71E3FCFF2B38524D4A1492B1B871DA", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\windnsdef.h", + "sdkSha256": "C4B50DE295D3D676080CF19579E15D707E71E3FCFF2B38524D4A1492B1B871DA" }, { "path": "shared\\ws2def.h", "sourceSha256": "57C53A7FAA53BB1ACFEC935EB8E562B1F2D51069A7F30AC3DFA2E046DD6C304F", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ws2def.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ws2def.h", "sdkSha256": "57C53A7FAA53BB1ACFEC935EB8E562B1F2D51069A7F30AC3DFA2E046DD6C304F" }, { "path": "um\\msports.h", "sourceSha256": "8CA9C12EB5BA2C2EA37A634735F28C1C293B3E543425D64C97EE7C803215891F", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msports.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msports.h", "sdkSha256": "8CA9C12EB5BA2C2EA37A634735F28C1C293B3E543425D64C97EE7C803215891F" }, { "path": "um\\gdiplusheaders.h", "sourceSha256": "C47DA15209BC32D900A6DAED0DF69345BADA74F1802039845264B6F5F42AEF93", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gdiplusheaders.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gdiplusheaders.h", "sdkSha256": "C47DA15209BC32D900A6DAED0DF69345BADA74F1802039845264B6F5F42AEF93" }, { "path": "winrt\\wrl\\wrappers\\corewrappers.h", "sourceSha256": "2DE38D91C122646F0E2B256184B0D55BB8D9453735BD8D3A0E8F91696DF0CB6B", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\wrl\\wrappers\\corewrappers.h", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\wrl\\wrappers\\corewrappers.h", "sdkSha256": "2DE38D91C122646F0E2B256184B0D55BB8D9453735BD8D3A0E8F91696DF0CB6B" }, { "path": "shared\\d3d9.h", "sourceSha256": "DF78083EE8E75E6D3851422F6AA8ABF6213E349F22BF27E7F161E98E8D90DF04", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\d3d9.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\d3d9.h", "sdkSha256": "DF78083EE8E75E6D3851422F6AA8ABF6213E349F22BF27E7F161E98E8D90DF04" }, { "path": "shared\\devioctl.h", - "sourceSha256": "53517C9E0E43807F3E638C7D8DB6179EE4EBB04BD860F3F0D16A8DD4585C27F8", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\devioctl.h", - "sdkSha256": "53517C9E0E43807F3E638C7D8DB6179EE4EBB04BD860F3F0D16A8DD4585C27F8" + "sourceSha256": "1B6397337A8E6B992863ED391B4D2486F09114FBBA906C64C96B4648EDE8939A", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\devioctl.h", + "sdkSha256": "1B6397337A8E6B992863ED391B4D2486F09114FBBA906C64C96B4648EDE8939A" }, { "path": "um\\reconcil.h", "sourceSha256": "7F8CB9199D1E00378A0B354F4663FFB0D027B83FF2D847E4E0F995A422470085", - "sdkPath": "c\\include\\10.0.26100.0\\um\\reconcil.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\reconcil.h", "sdkSha256": "7F8CB9199D1E00378A0B354F4663FFB0D027B83FF2D847E4E0F995A422470085" }, { "path": "um\\ieobj.h", "sourceSha256": "0C039613D87488B9B79AE9529DEFDF9BC1934F37C8751CBAA343B11DEDD8E81C", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ieobj.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ieobj.h", "sdkSha256": "0C039613D87488B9B79AE9529DEFDF9BC1934F37C8751CBAA343B11DEDD8E81C" }, { "path": "um\\dbgeng.h", - "sourceSha256": "3DAA5D6AEBBFCA3AEFCEE6FD0B5B34ABD2EEBF2A0313FACB3F5939DA6AE8DEFA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbgeng.h", - "sdkSha256": "3DAA5D6AEBBFCA3AEFCEE6FD0B5B34ABD2EEBF2A0313FACB3F5939DA6AE8DEFA" + "sourceSha256": "F45F90D8669D68809BB105D920DE91294C07ABBEB437261FCDD52992FF00CB25", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbgeng.h", + "sdkSha256": "F45F90D8669D68809BB105D920DE91294C07ABBEB437261FCDD52992FF00CB25" }, { "path": "um\\imepad.h", "sourceSha256": "96CCB64E5628E3D1FFC3E3B0A9458AF2DCAEC58CDCA8AE1BE4AED51F0E8C100E", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imepad.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imepad.h", "sdkSha256": "96CCB64E5628E3D1FFC3E3B0A9458AF2DCAEC58CDCA8AE1BE4AED51F0E8C100E" }, { "path": "shared\\ntddchgr.h", "sourceSha256": "B6F9593F13552BF566F0847E56D58A4154E5EA4EB95251D4B64B138B5B5ACB96", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntddchgr.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntddchgr.h", "sdkSha256": "B6F9593F13552BF566F0847E56D58A4154E5EA4EB95251D4B64B138B5B5ACB96" }, { "path": "shared\\ntdddisk.h", - "sourceSha256": "A35AC9D3AA4EF603E49BA154862C4AAE6391DCE4D78C8BC1E24D21E1475F704D", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntdddisk.h", - "sdkSha256": "A35AC9D3AA4EF603E49BA154862C4AAE6391DCE4D78C8BC1E24D21E1475F704D" + "sourceSha256": "BC72BF10C54B3161835EB1614666D8379226389933A015E986AF33EE619C467B", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntdddisk.h", + "sdkSha256": "BC72BF10C54B3161835EB1614666D8379226389933A015E986AF33EE619C467B" }, { "path": "shared\\rpcnterr.h", "sourceSha256": "9D94281CBD9272E02A39B51E19367DF2A87F3756B85B5C848BEE38828E0CDC23", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\rpcnterr.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\rpcnterr.h", "sdkSha256": "9D94281CBD9272E02A39B51E19367DF2A87F3756B85B5C848BEE38828E0CDC23" }, { "path": "shared\\ntiologc.h", "sourceSha256": "2FC1A6AF02A01B2F8903F1AE07CE9F17D53CC1EB0C1621AB5876C74594CBDFD6", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ntiologc.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ntiologc.h", "sdkSha256": "2FC1A6AF02A01B2F8903F1AE07CE9F17D53CC1EB0C1621AB5876C74594CBDFD6" }, { "path": "um\\activdbg.h", "sourceSha256": "A35A28331B5F225B50097D7BA6E9DCCA5A044E5771A9CA6FC9743E12104CEE79", - "sdkPath": "c\\include\\10.0.26100.0\\um\\activdbg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\activdbg.idl", "sdkSha256": "C63EDCEB9F0678E94AA19DD3683C9C2F1EAAD9BB38291274B85E228C6BCA0447" }, { "path": "um\\cmdtree.h", "sourceSha256": "F3878DB669F51C94B9E68E38012FB26794A199F1077CDD4ADA44C9B9C5451862", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdtree.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdtree.idl", "sdkSha256": "D7AAA247E40AAA4DF6B564F74C32BA93029D723697D54C0EF2E4C1CA346B4B38" }, { "path": "um\\ddstream.h", "sourceSha256": "3E07B2819FC4A3A1423E9DD5EC48C5FC9A5F71A6B19EC832F09C748F690044AC", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddstream.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddstream.idl", "sdkSha256": "D0D559F74149A353AAFF5D8E496D39B82FA13B008D3591991B39794601AF5934" }, { "path": "um\\txlogpub.h", "sourceSha256": "2BACFFCE9E483BAA7149AB1B4ACC2BFB020EACEAE9EEF3AB0E3484A5184C4EFA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\txlogpub.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\txlogpub.idl", "sdkSha256": "67E008A14FB077ECAA13577FC7B3D5EF85BC8BB3DC5C089D3B07B4A31BF1D178" }, { "path": "um\\Wsdxml.h", "sourceSha256": "D18ADCC90FD1C0B64F5034BE72851DD687E113E2DA012739169DE470D60184DA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Wsdxml.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Wsdxml.idl", "sdkSha256": "C8DC076719D7CD2BE8F2BF1B49ED32DE25F238244076304BBFCFE800F2975717" }, { "path": "shared\\fltUserStructures.h", "sourceSha256": "2DCE74F025A5DE4CF07A3DD6E82FA8502DA46ED7FE28580D3B8D95977AE9FDC1", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\fltUserStructures.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\fltUserStructures.h", "sdkSha256": "2DCE74F025A5DE4CF07A3DD6E82FA8502DA46ED7FE28580D3B8D95977AE9FDC1" }, { "path": "shared\\ifdef.h", "sourceSha256": "CEFA534E00E88225D7820AC45ACEB8437D53F8FF3C9103EECF9C31E23F35D03A", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ifdef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ifdef.h", "sdkSha256": "CEFA534E00E88225D7820AC45ACEB8437D53F8FF3C9103EECF9C31E23F35D03A" }, { "path": "shared\\minwindef.h", "sourceSha256": "A9CF08BE8407A196104124D5ADE2308E204E47D3252BCD2AD20D0F2137843D62", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\minwindef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\minwindef.h", "sdkSha256": "A9CF08BE8407A196104124D5ADE2308E204E47D3252BCD2AD20D0F2137843D62" }, { "path": "shared\\mswsockdef.h", "sourceSha256": "6555E8528263DE35DEFD45F80232C86DC36F3BBF1576AE261296250431A5D9CA", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\mswsockdef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\mswsockdef.h", "sdkSha256": "6555E8528263DE35DEFD45F80232C86DC36F3BBF1576AE261296250431A5D9CA" }, { "path": "shared\\usbioctl.h", "sourceSha256": "C6A077BE7981F49BB506A496AD3DEFC2048FDAAA5574965847297E3C6B2998FB", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\usbioctl.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\usbioctl.h", "sdkSha256": "C6A077BE7981F49BB506A496AD3DEFC2048FDAAA5574965847297E3C6B2998FB" }, { "path": "um\\appnotify.h", "sourceSha256": "F930F7FDDE271ED88F8DD1DD3E39EAF8EA10DB5CC1C1669C010F6E24EC4F9E53", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appnotify.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appnotify.h", "sdkSha256": "F930F7FDDE271ED88F8DD1DD3E39EAF8EA10DB5CC1C1669C010F6E24EC4F9E53" }, { "path": "um\\computedefs.h", - "sourceSha256": "7EEB788CFC3A5CF9673D5FB877893A891BFF8E08E21787F8E52E8E2325B5B2C1", - "sdkPath": "c\\include\\10.0.26100.0\\um\\computedefs.h", - "sdkSha256": "7EEB788CFC3A5CF9673D5FB877893A891BFF8E08E21787F8E52E8E2325B5B2C1" + "sourceSha256": "1E5D89D062DCC7BAD0E6A10ACC7C5BC9047078A5451DAE1F201D96012697FF21", + "sdkPath": "c\\include\\10.0.28000.0\\um\\computedefs.h", + "sdkSha256": "1E5D89D062DCC7BAD0E6A10ACC7C5BC9047078A5451DAE1F201D96012697FF21" }, { "path": "um\\ddraw.h", "sourceSha256": "ED39E56E10D8040D186D9FEC279BADE271895C43CB247DAD4552509E7D4B81EA", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddraw.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddraw.h", "sdkSha256": "ED39E56E10D8040D186D9FEC279BADE271895C43CB247DAD4552509E7D4B81EA" }, { "path": "um\\ddrawint.h", "sourceSha256": "95064B98904599553469B97476EA94AB5AF318650D4F5F61BE2D9DED42176385", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddrawint.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddrawint.h", "sdkSha256": "95064B98904599553469B97476EA94AB5AF318650D4F5F61BE2D9DED42176385" }, { "path": "um\\devquery.h", "sourceSha256": "3A628FAABE753A4CFC80D03F6820AE45EBE7B7D2F90F531D1DD2BF7439056BF0", - "sdkPath": "c\\include\\10.0.26100.0\\um\\devquery.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\devquery.h", "sdkSha256": "3A628FAABE753A4CFC80D03F6820AE45EBE7B7D2F90F531D1DD2BF7439056BF0" }, { "path": "um\\esent.h", - "sourceSha256": "909E366454622091F94220F41456D9C67AC792D5B10BF33B113C3503D57E5F4D", - "sdkPath": "c\\include\\10.0.26100.0\\um\\esent.h", - "sdkSha256": "909E366454622091F94220F41456D9C67AC792D5B10BF33B113C3503D57E5F4D" + "sourceSha256": "585417620513AAFB08217C86FB51CBA87D821E2054B030B729551E978CD68327", + "sdkPath": "c\\include\\10.0.28000.0\\um\\esent.h", + "sdkSha256": "585417620513AAFB08217C86FB51CBA87D821E2054B030B729551E978CD68327" }, { "path": "um\\HttpExt.h", "sourceSha256": "096CE538C3D46C97ED5237D20872BB34B843E1F0478121D364C2763E284038E8", - "sdkPath": "c\\include\\10.0.26100.0\\um\\HttpExt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\HttpExt.h", "sdkSha256": "096CE538C3D46C97ED5237D20872BB34B843E1F0478121D364C2763E284038E8" }, { "path": "um\\imessage.h", "sourceSha256": "335090C4F621F49B64D2C9EE069454F0E525F3A895493F3A28DD082E6EC4F88B", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imessage.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imessage.h", "sdkSha256": "335090C4F621F49B64D2C9EE069454F0E525F3A895493F3A28DD082E6EC4F88B" }, { "path": "um\\packagevirtualizationcontext.h", "sourceSha256": "DD3886FC7BB9C884C73B007D65D0FF3E38640F916B56F85F0A6E1F152D9BB0F5", - "sdkPath": "c\\include\\10.0.26100.0\\um\\packagevirtualizationcontext.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\packagevirtualizationcontext.h", "sdkSha256": "DD3886FC7BB9C884C73B007D65D0FF3E38640F916B56F85F0A6E1F152D9BB0F5" }, { "path": "um\\tspi.h", "sourceSha256": "088AA42F06DA8AF1BC54D1C233DCC4AACBEB1F35E89117F640A89602A6024E56", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tspi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tspi.h", "sdkSha256": "088AA42F06DA8AF1BC54D1C233DCC4AACBEB1F35E89117F640A89602A6024E56" }, { "path": "um\\wincontypes.h", "sourceSha256": "209E79FDBBB30971740E59B2DA2D6C86E27C0E9DD02BEE9CBC21736FBD2426AD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincontypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincontypes.h", "sdkSha256": "209E79FDBBB30971740E59B2DA2D6C86E27C0E9DD02BEE9CBC21736FBD2426AD" }, { "path": "um\\WinHvPlatformDefs.h", - "sourceSha256": "91A864B6EC2D932BCC7CE17F503F72A7813759CDE81BE2D1AC86CBA9ABB61C4A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\WinHvPlatformDefs.h", - "sdkSha256": "91A864B6EC2D932BCC7CE17F503F72A7813759CDE81BE2D1AC86CBA9ABB61C4A" + "sourceSha256": "6DBDC20B01AA4119CE740B33FB1ED0925C377FB6BC227B99370269F7FA8F7680", + "sdkPath": "c\\include\\10.0.28000.0\\um\\WinHvPlatformDefs.h", + "sdkSha256": "6DBDC20B01AA4119CE740B33FB1ED0925C377FB6BC227B99370269F7FA8F7680" }, { "path": "um\\kbd.h", "sourceSha256": "45C584D1DF780DC149A5DEA0A8CDA38A35FD9B7FD82EB0D91C4AEAB2018A1493", - "sdkPath": "c\\include\\10.0.26100.0\\um\\kbd.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\kbd.h", "sdkSha256": "45C584D1DF780DC149A5DEA0A8CDA38A35FD9B7FD82EB0D91C4AEAB2018A1493" }, - { - "path": "um\\d3dshadercacheregistration.h", - "sourceSha256": "7190E6A50A29FF845C6C4429B61D860AC22E16EA3B8F90071CD9D256217C43B7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3dshadercacheregistration.idl", - "sdkSha256": "1761675EAF3D3AEA8660796EDA94E75B574D76BD8555F881756A9015377681CD" - }, { "path": "um\\objidlbase.h", "sourceSha256": "138298FA54A63BF7D1DB72295A32E369AF950300B8BF34E64F4B6CAC8161C48A", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objidlbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objidlbase.idl", "sdkSha256": "A31AD8BCEB15641FA625EE1DE35657269B1449BB84DB4F11553D68B410F59E71" }, { "path": "um\\sapi.h", "sourceSha256": "C6DE6E49AA22E99F29CE9A010CDA54755AACA11DA0145A99F69384A3C8465B70", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sapi.idl", "sdkSha256": "2F208F9A869297A9C5B8B2BEC56CC2BE453339113B4EC51ADD25AEFE8FEAA781" }, { "path": "um\\sapiddk.h", "sourceSha256": "83AA93AEE6A7FBACBE9B7D8BF2F8C846AAAA573B0ADEB9E6E41B6A57041F85E7", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sapiddk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sapiddk.idl", "sdkSha256": "8F55ABBA0D0D571B218A00F270E93B5DC4F82B77E9BB9EC0DFAFEDC7A2F1DF2F" }, { "path": "um\\urlmon.h", "sourceSha256": "749A9A1BB999E90FFF9E4B386CD6FE275E657830F348CD6C6D903B31138FDDDD", - "sdkPath": "c\\include\\10.0.26100.0\\um\\urlmon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\urlmon.idl", "sdkSha256": "EBCB44AB8A595A0B8987E0045EE34603A1DDAAB4A832F20ACDDCE3B06F7ED07B" }, { "path": "um\\windows.ui.xaml.hosting.referencetracker.h", "sourceSha256": "4DC92762EF63B52DA0D7AEE4D7A192997964ADAB4EC0D9DF5D297ECC2651B075", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windows.ui.xaml.hosting.referencetracker.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windows.ui.xaml.hosting.referencetracker.idl", "sdkSha256": "F963B0B957B2C7D25E3ED00A072F1BC9AD909C5AC4B3562F42A2EECE218A5B99" } ], "midl": { "tools": [ { - "sdkPath": "c\\bin\\10.0.26100.0\\x64\\midl.exe", - "sha256": "53CCBCBC2FF14B2D08D029AD07B3D1AA4FF3B103F712199A15248A6CCCF6D2A3" + "sdkPath": "c\\bin\\10.0.28000.0\\x64\\midl.exe", + "sha256": "7E8AB31406275501C337B32CBCA079DA2954E181BB7A3606A9908D588088513C" }, { - "sdkPath": "c\\bin\\10.0.26100.0\\x64\\midlc.exe", - "sha256": "D12AFF8A74397601041BEC46552FC8DEE1206DAA97E39600E72A7B1B1A5EF6AB" + "sdkPath": "c\\bin\\10.0.28000.0\\x64\\midlc.exe", + "sha256": "D511371F6570BB12BA095248FB209EABB418EF58905A59A3AC852E97FD077F9B" } ], "inputs": [ + { + "path": "um\\d3d12markerapienums.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d12markerapienums.idl", + "sdkSha256": "3A56A193A577050B3457C6D493C3C85E3660C219BD9A6892436674F8053BA415" + }, { "path": "shared\\sal.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sal.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sal.h", "sdkSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1" }, { "path": "shared\\concurrencysal.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\concurrencysal.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\concurrencysal.h", "sdkSha256": "1EA9A2E32A6FF298AD7904610CC71028CAA9B172399A579CA90A120D1B1AEC12" }, { "path": "um\\waasapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\waasapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\waasapi.idl", "sdkSha256": "A29CC19E76CFC63B284E24F2B81BFBF523436B9F29C51121882D255B82A51C38" }, { "path": "um\\waasapitypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\WaaSAPITypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\WaaSAPITypes.idl", "sdkSha256": "225C8859217E03DD4A00DD5D93449995C97E6281B7D148121B9B0440EA4F9822" }, { "path": "um\\propidlbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propidlbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propidlbase.idl", "sdkSha256": "0C7803172E592422CB636DD6E6224F61381CD3D1E043041D0A94854A0C51252C" }, { "path": "um\\propidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propidl.idl", "sdkSha256": "6F81BD32D2160425665A7EFB79C16D8FF327BFE0F070E4F2E7DED05817409A6A" }, { "path": "um\\oaidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oaidl.idl", "sdkSha256": "5F5A2B0508AFFC22C30289D6F44B08792CE047CD7F41303EBBB7470E2217D6BC" }, { "path": "um\\objidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objidl.idl", "sdkSha256": "09C1AB7AEF7C01D1552BAA826AAC549C15D1806E9C696B99814FCFF0241DE539" }, { "path": "um\\objidlbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objidlbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objidlbase.idl", "sdkSha256": "A31AD8BCEB15641FA625EE1DE35657269B1449BB84DB4F11553D68B410F59E71" }, { "path": "um\\unknwn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\unknwn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\unknwn.idl", "sdkSha256": "2E146DA78625D05E345E7D480A61C5CC54696DD7C713B8FF07D9D36D95363C6C" }, { "path": "um\\unknwnbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\unknwnbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\unknwnbase.idl", "sdkSha256": "797B7267F24259A02A14455203F9B11309B504C1BFFAF879AF7BC05B8B67A5BC" }, { "path": "shared\\wtypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\wtypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\wtypes.idl", "sdkSha256": "F850757CCEF6092F20A97E955DD64AE2A595E0BF71C09A826A0BDE7C21B36E81" }, { "path": "shared\\wtypesbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\wtypesbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\wtypesbase.idl", "sdkSha256": "5DFF65DAA90EC39AAE0EB89EC2E7DF1ACD8A8D22E49514E5E062F13DD9B4B564" }, { "path": "shared\\basetsd.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\basetsd.h", - "sdkSha256": "D35B73F885D7EF7DFD27FCE3762C190C1C952A21E10A3945BCB3D1860C673B12" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\basetsd.h", + "sdkSha256": "169189B34A5836F156050ACDA49BBF2E0EA043989193B4E339F0AB962CD35172" }, { "path": "shared\\guiddef.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\guiddef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\guiddef.h", "sdkSha256": "0C08463FBC5A23A8862E57699E2F30DD14CD3DB4A40903E4FCA9392A57942DAE" }, { "path": "um\\oaidl.acf", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oaidl.acf", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oaidl.acf", "sdkSha256": "333B0D33450F70D2FB5288D79B11ECF6C4043B933ECB7B7A2A996E3185F714BF" }, { "path": "shared\\winapifamily.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winapifamily.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winapifamily.h", "sdkSha256": "BDA507D14F2E40023D344CB943CBD98AF26DE8A47F3B0F5FAC694D2025711AF1" }, { "path": "shared\\winpackagefamily.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winpackagefamily.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winpackagefamily.h", "sdkSha256": "8F74E254896094A3884E6975FD24B3493846514065F47D2666DF53CDEA45B8EA" }, { "path": "um\\amsi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amsi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amsi.idl", "sdkSha256": "17D39F2A78E7D3DCF0E10AC146F11070BFE9374004199F424E194568C7B62EAC" }, { "path": "um\\callobj.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\callobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\callobj.idl", "sdkSha256": "CEF9673107F25AEEC0FDD86A62F69A4C897D2455603F6E95D4E3A8F1DD4EEFC0" }, { "path": "um\\comcat.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\comcat.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\comcat.idl", "sdkSha256": "04AD4E13812214C3D1C9925A3535E6744F6704E2B614636AC7FA74BB32F84B9E" }, { "path": "um\\ddpbackup.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddpbackup.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddpbackup.idl", "sdkSha256": "20DD5778F6D5BE1CC225A014C8BF4D2F7D4261B7053D6DCBFB0EA14662AAD0C6" }, { "path": "um\\EventSys.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\EventSys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\EventSys.idl", "sdkSha256": "FB9D8FCAB51FF13E259E06D4B899FE12C2399557FA16827F2876B6451028D728" }, { "path": "um\\FhCfg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\FhCfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\FhCfg.idl", "sdkSha256": "EE64E8CCA3D20B51AA58023C2C8561000A722B3A0CD39786ABF5835584B4DF3C" }, { "path": "um\\IContact.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\IContact.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\IContact.idl", "sdkSha256": "DCC9C8D2A58B422BF4515494C3028A366687DDC875F9250FAE574E1298DC6ABD" }, { "path": "um\\idispids.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\idispids.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\idispids.h", "sdkSha256": "B27CFD71F6D05146E26CC88DBE8AE47E7914DEEF6E2D160776B74F9AC70B0648" }, { "path": "um\\msrdc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msrdc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msrdc.idl", "sdkSha256": "4470145098F210805D6893F68D438911C647FE814B5E7E3138C2BFC6453C2177" }, { "path": "um\\msxml.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msxml.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msxml.idl", "sdkSha256": "F9AA42962221A91808AC85D4907D8B65BF6004B4E08A9B6FC89FAA2560D65E84" }, { "path": "um\\msxmldid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msxmldid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msxmldid.h", "sdkSha256": "8A06E4B75AD47835A2205C9AC57684BA438ADD05607D0DE43DA91E8F822416EC" }, { "path": "um\\netlistmgr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netlistmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netlistmgr.idl", "sdkSha256": "C334776532B435450D5DA0E0EF4F92B5A8B639B13E737221CC1B47A5787D8E54" }, { "path": "um\\NotificationActivationCallback.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\NotificationActivationCallback.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\NotificationActivationCallback.idl", "sdkSha256": "BC3CA30AB53317683AFABF4BAD532E8FCEBC4F90BA6D8B3BB068C82205FDBA6E" }, { "path": "um\\ObjectArray.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ObjectArray.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ObjectArray.idl", "sdkSha256": "62C10FEC9CCEE38D307576665C42BBD5D44A567519CCC6A8243C33F7B3404F4E" }, { "path": "um\\ocidl.acf", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ocidl.acf", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ocidl.acf", "sdkSha256": "06208BC3FDCB4CA966E42468103EA353EA192FE4FE2221C45040AC3222D972EB" }, { "path": "um\\ocidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ocidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ocidl.idl", "sdkSha256": "D22A5326B0AB61D61C6475C4047F164DF0F1F2B568A0AC32EE9F0F2025451514" }, { "path": "um\\oleidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oleidl.idl", - "sdkSha256": "6736D03509172C9D3E79D6D94BA07DF6A8942E8FAB0B32228BE6F78ACF8DACFC" + "sdkPath": "c\\include\\10.0.28000.0\\um\\oleidl.idl", + "sdkSha256": "939BBA380B0F1F425B91D855FF29D4960C7EADCE873C82D31C0F9D973B5F2599" }, { "path": "um\\propsys.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\propsys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\propsys.idl", "sdkSha256": "1D53E43BDC74CD3884B637B8BA30E2FB6D87F9557904A1AF69C46F75182A41E2" }, { "path": "um\\RadialControllerInterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\RadialControllerInterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\RadialControllerInterop.idl", "sdkSha256": "FD6A57358A3B3527076A6D982C0BDCDC47B0150DD769962731E8C268B7EF9EEF" }, { "path": "um\\RrasCfg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\RrasCfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\RrasCfg.idl", "sdkSha256": "BE0FDA967666B91306A115EE91A158C0D83BBF1676251F0F68CE59B9DDE13FFF" }, { "path": "um\\servprov.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\servprov.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\servprov.idl", "sdkSha256": "81F0EA15DF697A868EF0419A90332D9B4EC79D71FDDBC9F38E5823F67F87EC74" }, { "path": "um\\shobjidl_core.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shobjidl_core.idl", - "sdkSha256": "43DAAA97DE4C359BACB8BAA0DF4813C950ED2C29BF8474CBED2131633BB1A101" + "sdkPath": "c\\include\\10.0.28000.0\\um\\shobjidl_core.idl", + "sdkSha256": "753EBD13148DD28356476FEA6C9EDB2EA9C16A36EB40D41DB80543D7ABECE163" }, { "path": "um\\shtypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shtypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shtypes.idl", "sdkSha256": "3CA5EB53FA1D076619ADEC1A848FA09795C8B6BDF375F189FA0D0D401ED2A45A" }, { "path": "um\\StructuredQueryCondition.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\StructuredQueryCondition.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\StructuredQueryCondition.idl", "sdkSha256": "6D3BBED903B6FB49F4BD50D572B324F2F9AC6A7FF38D79DD4BABBD9314134054" }, { "path": "um\\urlmon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\urlmon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\urlmon.idl", "sdkSha256": "EBCB44AB8A595A0B8987E0045EE34603A1DDAAB4A832F20ACDDCE3B06F7ED07B" }, { "path": "um\\wsbapp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsbapp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsbapp.idl", "sdkSha256": "F8DCC85EA4BB30395A45423ACE0E2E78189C461D82671486E546D10170B01871" }, { "path": "um\\xmldom.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmldom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmldom.idl", "sdkSha256": "45E067B4FDCEA51EA3537DF70BE5907EF61BE3A938ABBED0F5F3C7BC3DD85C98" }, { "path": "um\\xmldomdid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmldomdid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmldomdid.h", "sdkSha256": "5115AE295678E9F74239CB006DCB7130F280D905324E204B450EFAF0C0E4BE02" }, { "path": "um\\xmldso.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmldso.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmldso.idl", "sdkSha256": "A84F38B92A8243BDDCA3ED62CA1E106CE2FAB7244AD9739F213975E4E0860261" }, { "path": "um\\xmldsodid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmldsodid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmldsodid.h", "sdkSha256": "31D2427CDD51E33401D6F863236073C091C500C30159E1D1F04080FE8F0DE13A" }, { "path": "winrt\\hstring.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\hstring.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\hstring.idl", "sdkSha256": "E10ED2CE9A0101D4D2DE71E17B01D3C066ECB87D793607467CD4554E2D649213" }, { "path": "winrt\\inspectable.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\inspectable.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\inspectable.idl", "sdkSha256": "D7C278B83B622613E8FBFDE119B7B9F0FAD1515E1001E55C3F82DFE1FFAB8874" }, { "path": "shared\\bcrypt.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\bcrypt.h", - "sdkSha256": "C979EE7490EC190779385D69A39026F9D79308EEB6AAADA64EF0766C1E3E0376" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\bcrypt.h", + "sdkSha256": "B463D20348188ECDF20F01A730B2316224AD1B8E4592F88C3B69E1D902F2A8D5" }, { "path": "shared\\BdaTypes.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\BdaTypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\BdaTypes.h", "sdkSha256": "1691FA51F6E1B2CAF0D3076F96D79F647B6F9591EECD8C19995C65869397E821" }, { "path": "shared\\driverspecs.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\driverspecs.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\driverspecs.h", "sdkSha256": "9CF7E9E1C9B55C7C351E87FF5A98E362B6FFDB511C3309AB9CF46B62B0DACE42" }, { "path": "shared\\dxgi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi.idl", - "sdkSha256": "275FAC397E580B0858D81DE0B6DF1390A839CDDC81981F5FAA47482199458B8F" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi.idl", + "sdkSha256": "D9E79CF3050E3254C9DEBFAD6B235D211F185E324EE3A5AD18F5AED07F62C9E0" }, { "path": "shared\\dxgicommon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgicommon.idl", - "sdkSha256": "CC96A3EA307AF6ECD77B0C54A4D31417F116BA674C6415C8EB4E864ADC78FF77" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgicommon.idl", + "sdkSha256": "E8F64BB4F48B9B5C7E0CCC8BF36D6D8745EA20F98F20BA4BD367C97A45DF1558" }, { "path": "shared\\dxgiformat.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgiformat.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgiformat.idl", "sdkSha256": "DEC3BD183947EBF7BDEF8547AFF8F1B3AA6E6F6BE770D3BE15B14D39B626618F" }, { "path": "shared\\dxgitype.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgitype.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgitype.idl", "sdkSha256": "00F6315338E5D49B30CED9F97C47D11FE1BF4C6234954E86386308B316CFF6F1" }, { "path": "shared\\exposeenums2managed.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\exposeenums2managed.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\exposeenums2managed.h", "sdkSha256": "74090113924A818DDA42F2A7EA6C837355BA67D7B3177586E8C562304556BB3B" }, { "path": "shared\\mmreg.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\mmreg.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\mmreg.h", "sdkSha256": "F1BFA2FDB661F7B3188813F9B4A056D818D26A95941155F13D9B7AAB15772631" }, { "path": "shared\\sdv_driverspecs.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sdv_driverspecs.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sdv_driverspecs.h", "sdkSha256": "99FD81F9464150F56963C3BBAFAA95F93B837C221C4237E6E399A85E00EA9F39" }, { "path": "shared\\specstrings_strict.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\specstrings_strict.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\specstrings_strict.h", "sdkSha256": "49B12898B42BCF53E5F8FB75E6DB1A5D3FFB7A9F394E50DF3351E0824D4A8B42" }, { "path": "shared\\specstrings.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\specstrings.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\specstrings.h", "sdkSha256": "3B83B1CD3B4F9BF46009BFDCCF01D5C3A6FA6EED3F823D1EF497ED6D1B9BCE0E" }, { "path": "shared\\unexposeenums2managed.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\unexposeenums2managed.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\unexposeenums2managed.h", "sdkSha256": "395D0A6A8464A9DC8AE265928054B975588FF895951EEB7A60BCDE625540CF9A" }, { "path": "um\\appxpackaging.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appxpackaging.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appxpackaging.idl", "sdkSha256": "2B2447B5748FE5760215B05505E0A78CE02F070C01FFB960E1DE54BB9BDEB048" }, { "path": "um\\axcore.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\axcore.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\axcore.idl", "sdkSha256": "C0538410C4BBF335745AE94671AD43E71214E338E37436AAC4D9C54801993204" }, { "path": "um\\axextend.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\axextend.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\axextend.idl", "sdkSha256": "CD96140A3A8B6C764DA0A7C0A9693D5ED89351D34D3C480FFA854E05B065D628" }, { "path": "um\\axextendenums.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\axextendenums.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\axextendenums.h", "sdkSha256": "72D2ED0CE3DDF218EA633CD59F620BEF2917D07A225F9586210A1EBB4B923B4E" }, { "path": "um\\bdaiface_enums.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bdaiface_enums.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bdaiface_enums.h", "sdkSha256": "5A2BB1ED4E278110BD606E4C9EFF5AAC9C4D29D9D26C32A3C31860BC7BE72BE6" }, { "path": "um\\bdaiface.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bdaiface.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bdaiface.idl", "sdkSha256": "370AC8F718618831E55FFE3A2C464DFB3D13D06F9D8A8351C326CD145C274E3E" }, { "path": "um\\ctfutb.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctfutb.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctfutb.idl", "sdkSha256": "9C4D9CB2855B1AA49DA5BC3DB785E4FA4A240EB98E6B2EB8ADA5DEE681EA2CD9" }, { "path": "um\\d3d11.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11.idl", - "sdkSha256": "1AB19BDCEAAD996EBAA08D0E8D891F20E3A80E3C008F1AEE92F2BF565E83E326" + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11.idl", + "sdkSha256": "4E17AD32A8EC80A20EA55391857D95CE96EBF61B7C347AF22BD75A985D917D5D" }, { "path": "um\\d3dcommon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3dcommon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3dcommon.idl", "sdkSha256": "2513F619ECE3BDA0AF925B8120BA1ADFD6AC1D27A9CB62E4635EF3FAFBD09FD2" }, { "path": "um\\devenum.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\devenum.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\devenum.idl", "sdkSha256": "7CA96FF0A3228733606C263FD5473F2FB5357B8243C034E635B3F69DD2A1561F" }, { "path": "um\\docobj.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\docobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\docobj.idl", "sdkSha256": "EDE93F5F0089D183272A430CFC0261615A982C059DA0C7A4CFB46ECB6F0E87A5" }, { "path": "um\\dpapi.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dpapi.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dpapi.h", "sdkSha256": "A98783DA8086DEF831C97880296504468A043B01E7EB35E500A70198F33582BC" }, { "path": "um\\dvbsiparser.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dvbsiparser.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dvbsiparser.idl", "sdkSha256": "BAB520282E5605B54F5C0433142B3E4DACA77CA84DC1C617DE99FFF8A6E6302B" }, { "path": "um\\dvdif.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dvdif.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dvdif.idl", "sdkSha256": "D20088F9EA8803A44C743A1A061B67C7BC0BA6EFC9B592BB108B0366D7C6B22B" }, { "path": "um\\dyngraph.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dyngraph.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dyngraph.idl", "sdkSha256": "C583E9B35AC695CFFACE5F527CD9DE7155B584BBFECA3C6A2A4A322477EA6072" }, { "path": "um\\gpmgmt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\gpmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\gpmgmt.idl", "sdkSha256": "43556DC3A563DCAF1F433D96E39D765B37B77315A213C98B823C071A4BEDFFA8" }, { "path": "um\\icodecapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icodecapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icodecapi.idl", "sdkSha256": "901CEB4D0CC31AF383222593D726572DA80CECFC8724FE8A3A0B669436942A93" }, { "path": "um\\mbnapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mbnapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mbnapi.idl", "sdkSha256": "F918113EF44C75D07B69F7CB9AC2B2F68DDCAF7531E716DDCDDCEF6815F7C066" }, { "path": "um\\mediaobj.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mediaobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mediaobj.idl", "sdkSha256": "62F53C758B0E76EDC5BCA86DBE43EE3639CAF0BF3F3431BB44EF106D80C396E1" }, { "path": "um\\mfidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfidl.idl", - "sdkSha256": "C2EDE5C7FA61043366AAC253630F91A0D47094D79EC62139714464F0400AA0DC" + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfidl.idl", + "sdkSha256": "DE989CDF0A50210BE08885479E6DF0021F3CC05983C8DF05E982F4FA18BBD608" }, { "path": "um\\mfmediaengine.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmediaengine.idl", - "sdkSha256": "B5CDE0EA42295029A3F7B28FBC15C253258DEF8400844CFF4EB0568DB0586543" + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmediaengine.idl", + "sdkSha256": "D48E9D42403104B3AEFF106B58805E75ED420B01AEB41655480A4F73E7FBA71F" }, { "path": "um\\mfobjects.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfobjects.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfobjects.idl", "sdkSha256": "8D72B993D9D12EC1D7A88DB6164F1A9C089A22E24EB6D33E306514132DAC3AEC" }, { "path": "um\\mftransform.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mftransform.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mftransform.idl", "sdkSha256": "F1C48D844E42B2592B3D01BD0ECE9DDB27EFBCFF729B75D29F7092E2E4098248" }, { "path": "um\\mmc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmc.idl", "sdkSha256": "2FD77DE38BCA29CFCA9B070D86368AF54B557DAE9247CC731E170F469F1E25B0" }, { "path": "um\\Mpeg2Bits.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Mpeg2Bits.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Mpeg2Bits.h", "sdkSha256": "F18EAC8BBFDAB16794C5B6A590FD5B76344CE9F3C4EF76324FAD68600B1DBCEE" }, { "path": "um\\mpeg2data.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpeg2data.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpeg2data.idl", "sdkSha256": "B7D4EAC347C1CA4E84EB111AB921BEC409126A3E203DFA77659B90E21C3361A5" }, { "path": "um\\mpeg2psiparser.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpeg2psiparser.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpeg2psiparser.idl", "sdkSha256": "C19DC666A34164031B844E216D704E3F445780AE3EC076528351FFACFEBB1942" }, { "path": "um\\mpeg2structs.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mpeg2structs.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mpeg2structs.idl", "sdkSha256": "6E0DA3C911482116C65DC50355F621D0C362BABA3D87E48905084F955642BF84" }, { "path": "um\\msctf.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msctf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msctf.idl", "sdkSha256": "CB9AA0961623633907B3FCDADD7533B6D1557BA6F0FD53D6E8DF6916F056372D" }, { "path": "um\\msopc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msopc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msopc.idl", "sdkSha256": "B9CFFEAD07EC6EFE8C10124BAB114D3AB900180CA785E7639D10B3F6412E0737" }, { "path": "um\\ncrypt.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ncrypt.h", - "sdkSha256": "3319FB310BA9056C4B5D8457BC14F5FABD1C7A428F2611D6D4F9084D9CB42E66" + "sdkPath": "c\\include\\10.0.28000.0\\um\\ncrypt.h", + "sdkSha256": "D0B82C832CCCFA9A93F8B6B0F79BD45CFBDCA281847D57DF4DF89BB341829FDE" }, { "path": "um\\oleacc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oleacc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oleacc.idl", "sdkSha256": "25D89E32A149168A945F404A36AD7B69E462E94DD6D1DCC73577ACEF986F29E0" }, { "path": "um\\olectl.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\olectl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\olectl.h", "sdkSha256": "6165D86EE5AB4F4F0B027B5D1A579ED5C704C20BC48629C19F7071650AA08594" }, { "path": "um\\opcbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opcbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opcbase.idl", "sdkSha256": "D65912CF7941AF39B47D2C75E24F571DEC1B016AD5EF59F516F4B8675A9EB3DA" }, { "path": "um\\opcdigitalsignature.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opcdigitalsignature.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opcdigitalsignature.idl", "sdkSha256": "3BB299F20D68098C31054C90CE3681E4DF8C898FDDF2BE60384A58F8771C8FD4" }, { "path": "um\\opcobjectmodel.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opcobjectmodel.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opcobjectmodel.idl", "sdkSha256": "0A51C44BEB3BB0E85C669DB716C6D6588B7CF19F34A33326E7EDE27E21A63685" }, { "path": "um\\opcparturi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opcparturi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opcparturi.idl", "sdkSha256": "39D0440B91508ACABDF0B5911FFD3D29A7324B58254492C5B9A673FA1DF11A95" }, { "path": "um\\prsht.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\prsht.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\prsht.idl", "sdkSha256": "E900432CF4F6B534B27D6616AAAED9AFBD06AF3FDF44F3BC4304616F31150444" }, { "path": "um\\regbag.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\regbag.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\regbag.idl", "sdkSha256": "C220EAC5666EA10A510492DDB93DDA137ECDA9380B5C412D61FE459646039562" }, { "path": "um\\shobjidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shobjidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shobjidl.idl", "sdkSha256": "7024954CC3342618381279CD00816366A4F95B2AB1ADAB9DDB97BB2AFE179011" }, { "path": "um\\strmif.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\strmif.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\strmif.idl", "sdkSha256": "88CCFBC89223B3D14593DE2C11DD12FE9C5E8D353CA213702449714D2C23898B" }, { "path": "um\\textstor.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\textstor.idl", - "sdkSha256": "3ACBFF95B0A163BF95B2E99D42F478104D11F55FBF8C18BC2F00567272034042" + "sdkPath": "c\\include\\10.0.28000.0\\um\\textstor.idl", + "sdkSha256": "BC81E74C2C281627772745C7557ECA224942B066E5D09594786A4892A12A376F" }, { "path": "um\\tuner.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tuner.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tuner.idl", "sdkSha256": "B93C313E7008F5BCD70151B001ACC55C341921C4F9C892D8F0B9C228CC93D040" }, { "path": "um\\uiautomationclient.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiautomationclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiautomationclient.idl", "sdkSha256": "B79EFF8E7357F51BEA749611B365A61F969ED70F3DBCB9F2C4FAD97678286F1F" }, { "path": "um\\UIAutomationCore.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\UIAutomationCore.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\UIAutomationCore.idl", "sdkSha256": "57833474568FCDC6EA385834D95B7F7D6229C6949C20902D714A5EA16B5297EB" }, { "path": "um\\VMRender.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\VMRender.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\VMRender.idl", "sdkSha256": "D5B26669A6C10EB72E420C29E5E7DC331C792451835B8C33DEFD2C4D83272817" }, { "path": "um\\wbemcli.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wbemcli.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wbemcli.idl", "sdkSha256": "2857D259C3A435F6CCBB9537735CEBB24A59244ED84CA6A8BDC35EBAA21E2E0C" }, { "path": "um\\wincodec.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincodec.idl", - "sdkSha256": "0784D153A4CB107F9EFB4E36B6DCA98610B8C807E797BD37888D6553F4F1EF2A" + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincodec.idl", + "sdkSha256": "2561C1F95F95A5986F51C7FB275520761B060ACCA644648A97E9D1AA1733E7B4" }, { "path": "um\\wincrypt.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincrypt.h", - "sdkSha256": "D73BA64946BBAAD342447564676A837E15380041B37674639FCF659EE67F13E2" + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincrypt.h", + "sdkSha256": "FBFE26829E98353B0F3E889FC85A330ECDD9D28531BA4165F22EA0A6E4BD2C4F" }, { "path": "um\\wincrypt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincrypt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincrypt.idl", "sdkSha256": "9A33B07F016AD89C7103F22DEA62CDFDF2CAD572BBE63F5F2E76ED4B1961C4F3" }, { "path": "um\\wuapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wuapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wuapi.idl", "sdkSha256": "BA0E980FE970FC4EC24B56FF3A365A6C1F25E8A70366178D434B92364CA0FF9B" }, { "path": "um\\xpsobjectmodel.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel.idl", "sdkSha256": "4300981EF72C97B1C40B4623D3604447BC2BEF0CD0352E89B56D3F52158B08F2" }, { "path": "shared\\dxgi1_2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_2.idl", "sdkSha256": "260A3FD9F678599658A9A3F017C5D0426BC10B4A3E20CFC61F0ECAFE1EB08EF5" }, { "path": "shared\\dxgi1_3.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_3.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_3.idl", "sdkSha256": "066BEB1D472C56A77024C3D6A118F86A3C14A971FC53F6728A52D168552B772A" }, { "path": "shared\\sdkddkver.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\sdkddkver.h", - "sdkSha256": "2472140E0A4D56595743BB74002A51AEE9B58667BD178FC43742E19DEBFEB774" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\sdkddkver.h", + "sdkSha256": "A80967A364C6C6974C4C80A7052AAA135CD3D236BF470AD038DE2AACCB373CC0" }, { "path": "um\\audioclient.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioclient.idl", "sdkSha256": "145C2D5A33EFFD1D139CCF11DAB73DFF05EF82316BAE772C8B5E9E72386A836A" }, { "path": "um\\AudioSessionTypes.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\AudioSessionTypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\AudioSessionTypes.h", "sdkSha256": "4A0C382E146DF043B736E598616B9A48F570FED531AB811B5D9DA81BC21BE69D" }, { "path": "um\\bits.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits.idl", "sdkSha256": "7D1E53AEEDE71E60584CDE1C2AAEC5F28BD9C1E5349819AF8EF7321F124E91EA" }, { "path": "um\\credentialprovider.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\credentialprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\credentialprovider.idl", "sdkSha256": "6D72DBC9D3E37D46D421634057398FDE0C68DB76EF298CFA69F41BB5057AEC8F" }, { "path": "um\\ctffunc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctffunc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctffunc.idl", "sdkSha256": "D0F3F72F577E585AEA3B6931EA8557B143375EF26D581238E0D7695590DEB9B0" }, { "path": "um\\d3d11_1.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_1.idl", "sdkSha256": "23AEF0D6AEEB71F1B0E77A0F7E9AAD716E629613443F2A595A5642742F2784EF" }, { "path": "um\\d3d11_2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_2.idl", "sdkSha256": "D4D3BF4818B498F6160E14A0EDA9283A45C401783D662E619BF4A33BC18A14F3" }, { "path": "um\\d3d11_3.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_3.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_3.idl", "sdkSha256": "7EDB7726371BEE0A7F809893FE3B4D2533D602139D6F2C1FD6EF16C677CF5079" }, { "path": "um\\dcompanimation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dcompanimation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dcompanimation.idl", "sdkSha256": "FC2E05FC0240BA5586F3F96899F8F0C11B32E65EA4E2E0854269BB7BB5754254" }, { "path": "um\\devicetopology.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\devicetopology.idl", - "sdkSha256": "E0EB3098EE504F7AF5B8671BDC050E0D6F414BB802F28FEF1458BC7BF06AED5E" + "sdkPath": "c\\include\\10.0.28000.0\\um\\devicetopology.idl", + "sdkSha256": "D601422AA6E068344CFEA90CC2416C953D78AAFE1787FEB2EC50E16041224F77" }, { "path": "um\\dxva2api.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxva2api.idl", - "sdkSha256": "6C8C5A01516B77FE8ADFF77141F938393B1143843992C0C1045EE2C2BBD21D58" + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxva2api.idl", + "sdkSha256": "2019A4D1292EE2ADD696B633DDA33B04BBC593CDD982A9AD6B184D40E1FBB432" }, { "path": "um\\encdec_enums.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\encdec_enums.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\encdec_enums.h", "sdkSha256": "411BAA8050AE3A5B160A11C0BC11080D7EC2CA6ACBBFD6D891F64EBE9CCCB246" }, { "path": "um\\encdec.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\encdec.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\encdec.idl", "sdkSha256": "35AE48450CCB4447C8C255F634B347DC54E80CE1DF7E8A50DC25471796F03786" }, { "path": "um\\evr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\evr.idl", - "sdkSha256": "C1C4BA8D7560D3819DACA74CD91E9821838EE2DBD5B127B6AB89CD06122E203D" + "sdkPath": "c\\include\\10.0.28000.0\\um\\evr.idl", + "sdkSha256": "67ACDCB07509FD9FDCDEC2C9C1D86542B1E22A28D9212280BF359CC53DAEB376" }, { "path": "um\\fsrm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrm.idl", "sdkSha256": "9A9357D31D5AC49F7610397C276433F538597FDA42731BA1227836EBBB114048" }, { "path": "um\\fsrmenums.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmenums.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmenums.idl", "sdkSha256": "00631ED968410D8580513419FDE856CB16DA2FC9CB626287C346AB283709EA2E" }, { "path": "um\\fsrmpipeline.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmpipeline.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmpipeline.idl", "sdkSha256": "B478CF846C8DAC4A623E6850F3CCD3970C36A68CEAA98D1189289521D2CA30AB" }, { "path": "um\\icftypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icftypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icftypes.idl", "sdkSha256": "7228B536848BAC4122D22D2B589B283A595E072D4E3B9FAD260419FDA645640C" }, { "path": "um\\imapi2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imapi2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imapi2.idl", "sdkSha256": "8A5CC004AC975F87B198362D0990F335A44FC0AAD58C1BC4E10F9618D5567889" }, { "path": "um\\imapi2fs.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\imapi2fs.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\imapi2fs.idl", "sdkSha256": "D71FCFF53CD83E25F129F2EB301520FBCCAD2C94634DD391CCD8B7048FB17B8E" }, { "path": "um\\mfplay.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfplay.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfplay.idl", "sdkSha256": "E4B830D6F0C2CE952D89B857F336AF938225B223F5C533FD177750A54C5ED20D" }, { "path": "um\\mfreadwrite.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfreadwrite.idl", - "sdkSha256": "F23764A1E8602479AA7CEB2178F171793D1959DFEBEAD232158EB8AFCFBDF850" + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfreadwrite.idl", + "sdkSha256": "D67DC8A14849F897FFD7268761EE210A25B5D1BD24C38BB7C2A154E57F6D9C96" }, { "path": "um\\mileffects.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mileffects.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mileffects.idl", "sdkSha256": "D4E08B299E16646B4F1B3818A163E988400B8FF38B65A5C64056EEF53C5294AC" }, { "path": "um\\mmdeviceapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmdeviceapi.idl", - "sdkSha256": "6FD7A89D2811206152CA757E4D0F2231DDE665A2DBECEFE0660F54AF08101D1A" + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmdeviceapi.idl", + "sdkSha256": "940424E8B785289B5736411E4C529DB38C539FD1D51AF0AE7EDC492DCB12D229" }, { "path": "um\\netcon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netcon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netcon.idl", "sdkSha256": "0861FDD42BEF891C9AEAB304A5413E253C053355E05F8EDB847AFAB79D6BE78D" }, { "path": "um\\netfw.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netfw.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netfw.idl", "sdkSha256": "D7D609DF3A8024B77209D2FD33DE3557F1FF88A04F10B4A2956E3AFB273E92BB" }, { "path": "um\\rdpencomapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rdpencomapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rdpencomapi.idl", "sdkSha256": "42BD0EEBE2636D94D1348308D22116FC27E2D50CC662AFD277F270FD8D6174FA" }, { "path": "um\\sbe.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sbe.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sbe.idl", "sdkSha256": "13BC005E424A6D22DA65ED7F7A7DB5675645BC5F26800AB6078099CB8D55638B" }, { "path": "um\\sbtsv.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sbtsv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sbtsv.idl", "sdkSha256": "23562A0247B3CD377F90D2EF65BCA8AC2261BE1A3E2D2DD18C23D9908F6F28FC" }, { "path": "um\\segment.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\segment.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\segment.idl", "sdkSha256": "B1630D5F230A83FE4D98EC2EA4F420505A4F0DBB066EDC4BD51591AF89B0DFB4" }, { "path": "um\\SessdirPublicTypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SessdirPublicTypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SessdirPublicTypes.idl", "sdkSha256": "0999A1167A5CAE6D4DC6470A616FAF7538950478CDBDDB2DAE62FC9ACB9DB614" }, { "path": "um\\structuredquery.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\structuredquery.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\structuredquery.idl", "sdkSha256": "5A84873E5DAFD200E84C04793453C99C79AC87F73C825B43D7EDB0A0BAAD475B" }, { "path": "um\\syncmgr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\syncmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\syncmgr.idl", "sdkSha256": "1EF7F4777CCDBFE9C69B809055A4A2D686DF5D873BA7DF5416249CF4FF88E40D" }, { "path": "um\\tvratings_enum.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tvratings_enum.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tvratings_enum.h", "sdkSha256": "10692F960BB142B77BDE4521877053CB56D893D97A52F620D059CB111874B1F1" }, { "path": "um\\tvratings.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tvratings.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tvratings.idl", "sdkSha256": "DAAADFB3D0612BD848B2EE2159E4C6395856024DEAFF0E52DB577ED12843F41A" }, { "path": "um\\uianimation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uianimation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uianimation.idl", "sdkSha256": "C60460E8EFEA11DFE10D6F07BB08F2E349B3E8A379478ADC75FA5654FBFF057D" }, { "path": "um\\upnp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\upnp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\upnp.idl", "sdkSha256": "40F4956D258A79F4AF35A391FB2E23E521A9B7B86CF9E0710C4E3715FB033D9C" }, { "path": "um\\vds.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vds.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vds.idl", "sdkSha256": "C9427750C33970CB3AAA8A42C2139D3D9CFC4F52942888E98B9F99F1C713AABC" }, { "path": "um\\vdscmmn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdscmmn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdscmmn.idl", "sdkSha256": "22E4026674231FDDB862A4739AFB043643AC36A616B5EEED5115691A267828C9" }, { "path": "um\\vdscmprv.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdscmprv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdscmprv.idl", "sdkSha256": "A550B0DFD4F4A6EEA68B68ECDE377D12CF850C4CEE0E8CD40A17B05A817D823A" }, { "path": "um\\vdserr.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdserr.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdserr.h", "sdkSha256": "2C6E20E9204A9863A90C75EB5E88F3E8A0E22E1818C6D135BB53D2649A1686B6" }, { "path": "um\\vdshp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdshp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdshp.idl", "sdkSha256": "1B906111384BC644BE9C19C9947F637A1DC9670D50917170444829D126B5984E" }, { "path": "um\\vdshpcm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdshpcm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdshpcm.idl", "sdkSha256": "F6DC3613B6C8C61E339B83EA62596F1C5E4B7E3A6D664BCDFA5CA0F1E71E586B" }, { "path": "um\\vdshwprv.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdshwprv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdshwprv.idl", "sdkSha256": "A7FE6162D83332D5D51780B8C06606B8A49D9DF81DDD147CAA6110435FEE8F36" }, { "path": "um\\vdslun.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdslun.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdslun.idl", "sdkSha256": "3D6D807B46E0BB2119E796DD7E342C38DED3B4AF5938A31610DB7E5A69D69A2E" }, { "path": "um\\vdsprvcm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdsprvcm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdsprvcm.idl", "sdkSha256": "5A5FA21E49D5BDB1374D7C6D8A21A377352850F708DE0E52A705929D29F90A2E" }, { "path": "um\\vdssp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdssp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdssp.idl", "sdkSha256": "E9D5B7F33313DA1E2953C5FDA365790ECD22F3F685AEF1259E022D0049755367" }, { "path": "um\\vdssys.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdssys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdssys.idl", "sdkSha256": "2F4B66B70ABF74DA620113923518A8D2E9B4D0BC7992D566D1E55D3A12BEE62E" }, { "path": "um\\vdsvd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vdsvd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vdsvd.idl", "sdkSha256": "F48D94582F630F690DE27F2D3A3032AE0B1EE6D8132958F04B1E85F5ACADADD3" }, { "path": "um\\virtdisk.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\virtdisk.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\virtdisk.h", "sdkSha256": "B920639BCE6E101C9A29F99D2D1BB5C36C9C36E9A2C665E20EB23B452B81996A" }, { "path": "um\\vmr9.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vmr9.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vmr9.idl", "sdkSha256": "6D379479295B9496DC3E0A64C263AAD6E448CCB3FED239796D78EC484503677A" }, { "path": "um\\wdstptmgmt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wdstptmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wdstptmgmt.idl", "sdkSha256": "B1C776D90D1C5238A792990E483B1811E5A8644ADF0EE207BF78B725F78C7A0F" }, { "path": "um\\wincodecsdk.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wincodecsdk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wincodecsdk.idl", "sdkSha256": "759B44C5B926F2F4844E9C16FB01E46FFD5D05EA8D3D534C1E0C78922B12B1DD" }, { "path": "um\\windowsstoragecom.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windowsstoragecom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windowsstoragecom.idl", "sdkSha256": "50E2C8DDB471422D4D825C426E9BB90FEE4F3DB0455F2CCE8978AF627AB507CB" }, { "path": "um\\wmcontainer.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmcontainer.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmcontainer.idl", "sdkSha256": "666A5752BCF1A88B48634938BF4AEEF7A388EE592939CEF9C110086F71C5C5E7" }, { "path": "um\\wmsbuffer.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsbuffer.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsbuffer.idl", "sdkSha256": "7EC96953796264AB3C6DD9C32696020332C14CA64351B5FDFD164609B2687FDF" }, { "path": "um\\wmsdkidl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsdkidl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsdkidl.idl", "sdkSha256": "68CD55C0F2B2FF6541ACA37BD297AF0782541223F87658BB475110EB37ACF399" }, { "path": "um\\wsdbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdbase.idl", "sdkSha256": "503B264600B1F57DE45AE5D2BB21DF95F43DA5B5DDF6A2B3135CC6480ED76B35" }, { "path": "um\\wtsdefs.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wtsdefs.h", - "sdkSha256": "709AF282E9B80AE19EBE201D2C7752DA37547E56C2318B1580FE05994DEAE08D" + "sdkPath": "c\\include\\10.0.28000.0\\um\\wtsdefs.h", + "sdkSha256": "1E70E7492B7D64E37FF5EBE54D6F1C1C143014B1B8591D765B1ADFDAB8938F81" }, { "path": "um\\wtsprotocol.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wtsprotocol.idl", - "sdkSha256": "B475107FFE4B058E65F07EDDBD4DB63A98F6F7E8C8EF01E53196E4A01BF40808" + "sdkPath": "c\\include\\10.0.28000.0\\um\\wtsprotocol.idl", + "sdkSha256": "9F838A95D32C241363A9653114448021E8736F9C51BD702523857519A5306425" }, { "path": "shared\\dxgi1_4.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_4.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_4.idl", "sdkSha256": "49339CA9214D9A284556929718DB5D15BE862861D6B5D824E631B7B2FAE3CD5A" }, { "path": "shared\\dxgi1_5.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_5.idl", "sdkSha256": "BF5826B7A7F0780F343E28D9C0960392F9A45C18F25BF2163463D638AE162979" }, { "path": "um\\amstream.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\amstream.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\amstream.idl", "sdkSha256": "EF8203DBA8B3D6ADBF928DFD7E6C65C542BABE77AAED41B254B8C2724F13F57C" }, { "path": "um\\appmgmt.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\appmgmt.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\appmgmt.h", "sdkSha256": "FEF0E1C7A1F54F1258F611534932E2F0D4541E7EA722115D90584EDAEB345178" }, { "path": "um\\bits1_5.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits1_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits1_5.idl", "sdkSha256": "04D3467CD33C1CFD63C4EFEE5783A54A5C9DB5B6664E88C22D112AEEB15D6B9D" }, { "path": "um\\bits10_1.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits10_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits10_1.idl", "sdkSha256": "1686B2C9FFAB2B3B3F3410E7AA3D7669F9C60A54CF5D349E4FC46E39315F5580" }, { "path": "um\\bits10_2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits10_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits10_2.idl", "sdkSha256": "8F6F8FC51CA0DDABB5133DDA0F53AEC9DF76A8A2B18C315972A98605836837B4" }, { "path": "um\\bits2_0.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits2_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits2_0.idl", "sdkSha256": "363613AD114364FF5665BFD86FD0E80AA4111400995F7F7C451E288C25CC34B7" }, { "path": "um\\bits2_5.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits2_5.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits2_5.idl", "sdkSha256": "E2CF9834A3479E27B02C43725C63F6E682659418A230CDAB389D56675709DA17" }, { "path": "um\\bits3_0.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits3_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits3_0.idl", "sdkSha256": "D6AA0560CB797B50320A03B4A06E1EFA3724DE7E708012C7413B5AB6749B349E" }, { "path": "um\\bits4_0.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits4_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits4_0.idl", "sdkSha256": "1837D4518A7E66723DE8931010929C595B33FDF5806F68B9596BD29B9A0E8563" }, { "path": "um\\bits5_0.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bits5_0.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bits5_0.idl", "sdkSha256": "A749B13BD3C05F2AE6C9F69F3CB34E6F8AAF0E4DFFF2B9DA12D16817378812DA" }, { "path": "um\\bitscfg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\bitscfg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\bitscfg.idl", "sdkSha256": "EDE8061041669AB4E2FBB9FDD7DD46DE701BC5E6617ECDAED2F250F6B3771C7A" }, { "path": "um\\certbase.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certbase.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certbase.idl", "sdkSha256": "8966B3C9EC0B5A7E54A0C6B95070B115C0C5DCC497154971EDE2C0E9C6058EAD" }, { "path": "um\\certbcli.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certbcli.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certbcli.h", "sdkSha256": "CDBA65B104A50A63B5AB01CACF1C2FAE54F5B5E9E42D2AC3FF5FF480E2371EE1" }, { "path": "um\\certbcli.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certbcli.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certbcli.idl", "sdkSha256": "3C8C97A341AB3A11AD4B8F7321E93DF64B9F819B919CB909FAC37CCE6D11719C" }, { "path": "um\\certmod.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certmod.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certmod.idl", "sdkSha256": "CEED4FE34F5CB94BB8328E2C77F96C8F53B626122CC50392C671460D6C2C920F" }, { "path": "um\\certpol.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certpol.idl", - "sdkSha256": "CBDCF3C619FA7661467C3AF4B08A9D2EFD503AE770C7851BCB8B4F3D8FBE4592" + "sdkPath": "c\\include\\10.0.28000.0\\um\\certpol.idl", + "sdkSha256": "F3C0C6D662AD67CE441CF01DA4F6AA7275A1A5453E9EDD2B1D20229EB38FDEA6" }, { "path": "um\\d3d11on12.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11on12.idl", - "sdkSha256": "80C6B0EEC0792084B2F590E6E70D89F56A6F51203558375FFCE66056145F78F2" + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11on12.idl", + "sdkSha256": "9A2E8B015BF64A47A8D54AFC31E1CFB47E431A2E803B836AF78BDDB3CE42D126" }, { "path": "um\\d3d12.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d12.idl", - "sdkSha256": "6832980CD02A5A65976B6914AFBB152BE6DA8DBACCBA42050EE4EC1FA7298CCF" + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d12.idl", + "sdkSha256": "D5976A4024F16A0D28845F27FA31B02824CEC0E7AAFE9D9039AE098555C721B3" }, { "path": "um\\directmanipulation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\directmanipulation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\directmanipulation.idl", "sdkSha256": "33F66AADA54A38B2A02C81FC8C9F74C5D7C7E16928A1D477314EE3F9B2AAC95A" }, { "path": "um\\documenttarget.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\documenttarget.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\documenttarget.idl", "sdkSha256": "40FE271AE28C95154265EE7C160C363B61AA2FC7EE816E3D39116E9D56F12CE9" }, { "path": "um\\dxgidebug.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxgidebug.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxgidebug.idl", "sdkSha256": "12C6DB5809D9BDA9C5F905BCB34BA227FEB92B8C3F9798042006C0A26C081A28" }, { "path": "um\\dxvahd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dxvahd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dxvahd.idl", "sdkSha256": "DF1CE8F1A63C12CCDBE6296EBB4AB9EFBD59CA62562459C264E2A459285B0D56" }, { "path": "um\\ehstorapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ehstorapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ehstorapi.idl", "sdkSha256": "136E262543A74DFE4BE46E52A9463F051A6ECA714B8043BAF107210DE8D2BCC4" }, { "path": "um\\endpointvolume.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\endpointvolume.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\endpointvolume.idl", "sdkSha256": "8E86605B084062888642F3D5D02D5D46E0BAF41664C08986A92504CF1D349645" }, { "path": "um\\exdisp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\exdisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\exdisp.idl", "sdkSha256": "882781091FF75D67A6C591C34880324DBACE6150F8912F48EBC2A98BC7BF15D9" }, { "path": "um\\exdispid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\exdispid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\exdispid.h", "sdkSha256": "EB908D33E3FC55BBE174698F6529A3A943B0268794C0E00A2CAB205E25CC7AD4" }, { "path": "um\\inkpresenterdesktop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inkpresenterdesktop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inkpresenterdesktop.idl", "sdkSha256": "0559B746C1C78ABF3B7E8E86648E043CA63E991FAE18E3CAE48F25F4F8A87432" }, { "path": "um\\manipulations.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\manipulations.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\manipulations.idl", "sdkSha256": "0F47BAD74298A539A64F3FA0E505B47B588BEAE7E79118F44429ED042D60649F" }, { "path": "um\\mfmediacapture.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmediacapture.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmediacapture.idl", "sdkSha256": "7DC228AA8819528C8225124D08B45C23DD14A6E9266181496760162008E84C84" }, { "path": "um\\mmstream.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmstream.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmstream.idl", "sdkSha256": "E9DB156F7A3BC231B37825EBD4BD5C31B03D138FC470D82FCB1312A92DFDED5E" }, { "path": "um\\mobsync.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mobsync.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mobsync.idl", "sdkSha256": "6C5CEDDEC4D0AC1AC0C808AEBE122D4A93C6F6A52D5412D37BCF962D5050525D" }, { "path": "um\\mstask.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mstask.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mstask.idl", "sdkSha256": "05FB210A4ECF1A36707A7CFB6F88D48681FC3C47299433A0D4965D9E5E937F4B" }, { "path": "um\\msxml6.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msxml6.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msxml6.idl", "sdkSha256": "8C72BDA367FDCC9259F7D3DDBD04AA5BD5BE7BD5971EB29392F7F0525FABDF0E" }, { "path": "um\\msxml6did.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msxml6did.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msxml6did.h", "sdkSha256": "6A37D2E1E8AD764DF6F3CB872F58B947C8E8FBDAB405B46525F8A71060832A3E" }, { "path": "um\\ndattrib.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ndattrib.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ndattrib.idl", "sdkSha256": "23742F0B93482270A8E09B655C52080F161D8B4B533F82644FAC69C23E84438E" }, { "path": "um\\ndhelper.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ndhelper.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ndhelper.idl", "sdkSha256": "F02581256264FBCBA809A0E6A08C0B782DC3318EEFDAAA7CAF9C823409EFC39C" }, { "path": "um\\opmapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opmapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opmapi.idl", "sdkSha256": "80C3CC728A4B5D59E5FA57578B756962B1F6295095F803918C417A9A1777C14F" }, { "path": "um\\portabledeviceapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\portabledeviceapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\portabledeviceapi.idl", "sdkSha256": "AF30B2D030F63DE87E483C806D7C45F3C8C0A0CDB5164014B3B4130F2D9CE57F" }, { "path": "um\\PortableDeviceTypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\PortableDeviceTypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\PortableDeviceTypes.idl", "sdkSha256": "57F0B22B06BDC5921CBDF7122B35D8D4CDE08F805C80D3E47C56355A752023ED" }, { "path": "um\\relogger.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\relogger.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\relogger.idl", "sdkSha256": "6ADCAC79EB9F146085DFEAF829CBCDCB655153F28A4D72F87C5104795842044B" }, { "path": "um\\restrictederrorinfo.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\restrictederrorinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\restrictederrorinfo.idl", "sdkSha256": "04B11ADA883DC57DCE5588CDB91EE2F137FBFDB9E63D5C26BBCBCA5BF0E2FAA1" }, { "path": "um\\sdoias.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sdoias.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sdoias.idl", "sdkSha256": "753822A7E3BB73FADC9121546992CE409CB53B060ECEB0A21875A5C64EAF30A8" }, { "path": "um\\sensevts.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sensevts.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sensevts.idl", "sdkSha256": "F6F9D00DB96C90C4C466CECB93D90154BA3529D934969622A1325C280D5802A8" }, { "path": "um\\shappmgr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shappmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shappmgr.idl", "sdkSha256": "F58B85E04E0918A5D246438AFFC8CE8D1EC1BEC19748BF87B690D8277EC46592" }, { "path": "um\\thumbcache.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\thumbcache.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\thumbcache.idl", "sdkSha256": "539E3EA353BF1C72FD183B7F79B62C75F0004A7F2BF57D4502B1124181B915B0" }, { "path": "um\\tsgpolicyengine.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsgpolicyengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsgpolicyengine.idl", "sdkSha256": "BE2F1AF55751E2C346ACD8C8F472145B2744AF949E356A184F7F75EB4F88C59A" }, { "path": "um\\vidcap.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vidcap.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vidcap.idl", "sdkSha256": "ACED57A5BA782D539F49037CB5819316D249C17BA592411C2B7EA824ED607A38" }, { "path": "um\\wmiutils.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmiutils.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmiutils.idl", "sdkSha256": "717993CDE15F8F3484417CFF2D415FF1692C04D39C26DD53FCFA65151F9983BB" }, { "path": "um\\wmlss.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmlss.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmlss.idl", "sdkSha256": "2C18894685250A6B5BA60E89ECB7C5E73C3B8FF4ED0B765B16FEF9469789D18F" }, { "path": "um\\wmsecure.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wmsecure.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wmsecure.idl", "sdkSha256": "F2F48DA38B59D40419F409BB91E178EF53B23F4E87AC84273187A21496E69C09" }, { "path": "um\\wrdsgraphicschannels.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wrdsgraphicschannels.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wrdsgraphicschannels.idl", "sdkSha256": "AD97F7F0FE35DA04157926BA2B21E9CAC9F1EDB04915C66C7A5A69A2286773D1" }, { "path": "um\\wsdattachment.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdattachment.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdattachment.idl", "sdkSha256": "5852CDE44B187BF1EDD738B9E75AD89E610730B091F75F1659BAFC50BD3DE127" }, { "path": "um\\wsdhost.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdhost.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdhost.idl", "sdkSha256": "A8830D0040D3E6E585186270B5D71B0702F4EB2066963EC4996A6F6C5D4456BB" }, { "path": "um\\wsdtypes.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdtypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdtypes.h", "sdkSha256": "E44FFCCFD1FA0DF7670A0145EFA32EE01057B50071D06E4BA2DC18EC87DCEF7A" }, { "path": "um\\wsdxmldom.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdxmldom.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdxmldom.h", "sdkSha256": "A80B028AC70132A24EF9712B2E6D3ED7D1A33A9217E04FE4EF9B6F0BFB80C10D" }, { "path": "um\\xpsobjectmodel_1.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel_1.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel_1.idl", "sdkSha256": "C5F04D1ABAD77F70C002F4B86FBA1F15432560CF6FFBC411ED010FB581FE4FED" }, { "path": "winrt\\rdpappcontainerclient.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\rdpappcontainerclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\rdpappcontainerclient.idl", "sdkSha256": "221816BACEBAE82E2C9FCD259F3ACFCE2A000932B0BCBCCF78E7913B0BCB8D4D" }, { "path": "winrt\\weakreference.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\weakreference.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\weakreference.idl", "sdkSha256": "5DA6A0EC24F7256F8755C160B8A5187DF28A35EC84B19E1ECA39601AF2F60C43" }, { "path": "um\\adhoc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\adhoc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\adhoc.idl", "sdkSha256": "10662977B80D8E7E832EFE06C7D115214784CDE609AFA179728BD6E806ED27A3" }, { "path": "um\\audioapotypes.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioapotypes.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioapotypes.h", "sdkSha256": "528CE885B69A57BD48C6A8741FD73931DA5266A9CDEA0F8C74B2E476D4F7AB8C" }, { "path": "um\\audioengineendpoint.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioengineendpoint.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioengineendpoint.idl", "sdkSha256": "773689C50C7821835FB75B7C12EE9853CEA34386C2D3A0D9CB76F340FD54B1E4" }, { "path": "um\\audiopolicy.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audiopolicy.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audiopolicy.idl", "sdkSha256": "95BDADDE7F74320C0043BAA753F7DF5EDEC1462DC6E1ED4A26AF09B5CEBF42BF" }, { "path": "um\\camerauicontrol.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\camerauicontrol.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\camerauicontrol.idl", "sdkSha256": "8B51E011E308F11F389186242162EDEB5777806F9940D8D951F5D8DB5D255A1C" }, { "path": "um\\certexit.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\certexit.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\certexit.idl", "sdkSha256": "65AE2C4E8C8BC5E9B94BEE2E704594883DAA96E9442492CF384E7A78DB168EB0" }, { "path": "um\\fsrmquota.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmquota.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmquota.idl", "sdkSha256": "A597EDD4C6E2FDC07A2BC1086165D6976C0BBAFB444F35E4592BD24142048759" }, { "path": "um\\fsrmreports.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmreports.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmreports.idl", "sdkSha256": "8115B0465C7592F8869BFD056B20ECE280A46706FB6527A6A929476F4F2854DE" }, { "path": "um\\fsrmscreen.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\fsrmscreen.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\fsrmscreen.idl", "sdkSha256": "DFA1F5249101E2ACF3662BA15F36880B7A60FCF16657C156DB7F35177D235CB4" }, { "path": "um\\FunctionDiscoveryAPI.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\FunctionDiscoveryAPI.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\FunctionDiscoveryAPI.idl", "sdkSha256": "AD2AC4A02A83D8DB48B197C8F4FC550E4086F78586153979BE999EAD45DF5B8D" }, { "path": "um\\FunctionDiscoveryConstraints.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\FunctionDiscoveryConstraints.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\FunctionDiscoveryConstraints.h", "sdkSha256": "1FA4D820E94F9A6A48E8B0C8CE6EE16D52E3FD5473FE8B8716573FA76E0ED686" }, { "path": "um\\functiondiscoveryprovider.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\functiondiscoveryprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\functiondiscoveryprovider.idl", "sdkSha256": "4463DA0474C0FA0D456D735B09F7997EC695620894EF82BD548A27210E30C5C1" }, { "path": "um\\mfcaptureengine.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfcaptureengine.idl", - "sdkSha256": "BF6F7E100D71E02D0B15C4B453E629C9DE3C767BC2164081BCF4D04B5006B759" + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfcaptureengine.idl", + "sdkSha256": "146768D8A46596B84AFF8735CA707DFCA2E78ABD50B3AC1C4D5DD7717E995FBF" }, { "path": "um\\mfsharingengine.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfsharingengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfsharingengine.idl", "sdkSha256": "D5968BFE635835F814FF416A03E92FCC0FE06FACFD052AE497DAEBF102FEC3BD" }, { "path": "um\\SpatialAudioClient.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SpatialAudioClient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SpatialAudioClient.idl", "sdkSha256": "222B1665B1E65EB278679866ACD7D00ADB1AFDA443A77F3FFC7C305C9B743B43" }, { "path": "um\\spatialaudiometadata.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialaudiometadata.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialaudiometadata.idl", "sdkSha256": "273D2D32C885307267D3FD04761E188E108379DEC93FF3D6F32C703D55A1032C" }, { "path": "um\\spellcheck.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spellcheck.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spellcheck.idl", "sdkSha256": "56BE486FB700ABCB59B7B449A695BBD2D0B3EBBF94A980B9E5FB99732765340D" }, { "path": "um\\tsvirtualchannels.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsvirtualchannels.idl", - "sdkSha256": "F0D4669DD038ACF9E3FE3D1C9D8691D9F6C41ACE6AB0567D540B52C8956DC420" + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsvirtualchannels.idl", + "sdkSha256": "C9909881D53FD5B31F1377C1618E715DCDCC7BC818A26DE882D959838281449F" }, { "path": "um\\uiribbon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\uiribbon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\uiribbon.idl", "sdkSha256": "8C8A7EB2A97A90B13AADDBDAA15CE35FB53D41627D77CEA7A90521DAC8C43AFE" }, { "path": "um\\wbemprov.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wbemprov.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wbemprov.idl", "sdkSha256": "CC46D2D18E9F63A44292F63F7D1FB6E7812A6E03DA93B6004499A98F5DEB4FA8" }, { "path": "um\\workspaceruntime.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\workspaceruntime.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\workspaceruntime.idl", "sdkSha256": "7BDB753040D5196D7CE894F30C6869D7681B50A6B0C11BA100E4267297F4C8AD" }, { "path": "um\\workspaceruntimeclientext.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\workspaceruntimeclientext.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\workspaceruntimeclientext.idl", "sdkSha256": "32EAD8C24ED7752A3A6A7F9D2B4719AABA847406FE0037DB72B50CFB81E61C7D" }, { "path": "um\\wsdclient.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsdclient.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsdclient.idl", "sdkSha256": "9ADDEAE23D52D2784AD32770519CA16A3984F0988F303DE124E819D06D170FC4" }, { "path": "um\\wsddisco.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsddisco.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsddisco.idl", "sdkSha256": "2949BB7252406E3C423680B7FE93487580549DCC62A5F09EA1F326F7BAB1D9FA" }, { "path": "um\\wsmandisp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\wsmandisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\wsmandisp.idl", "sdkSha256": "E156CEAA3F978EC63F2FE0299D029E7F94BBA6FCE81DFCFC236BA78D952DF51F" }, { "path": "um\\printmanagerinterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\printmanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\printmanagerinterop.idl", "sdkSha256": "82CDA8132780D0601B51581EACBCCF9104DEEAB4C6ADCE29E9A18BFB16490ACC" }, { "path": "um\\spatialinteractionmanagerinterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialinteractionmanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialinteractionmanagerinterop.idl", "sdkSha256": "D957169602ADD2D5F68FC47ED9B63CE6DBEC8FC41A37A1EAF2E56218BD8C3BC3" }, { "path": "um\\thumbnailstreamcache.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\thumbnailstreamcache.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\thumbnailstreamcache.idl", "sdkSha256": "78ACEAB63094F1B07F081A5E34A4AEEB4EA925F30099C8CDEF3417B008794EBD" }, { "path": "um\\tspubplugin2com.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tspubplugin2com.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tspubplugin2com.idl", "sdkSha256": "C90C01EEEEB3A271395C0CBF75D201C264FCDCFC6D7AE101DF27B04FACCF1E14" }, { "path": "um\\tspubplugincom.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tspubplugincom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tspubplugincom.idl", "sdkSha256": "966F8047842E0CC468215BBEA60F6FF1856AB4952B52405CFFE405CE394FEDAE" }, { "path": "um\\tssbx.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tssbx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tssbx.idl", "sdkSha256": "F59E3A25FCAF7D2767EE134D35999D778A650A1D2D6D6A626FF2C870CDA37F47" }, { "path": "um\\vsadmin.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsadmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsadmin.idl", "sdkSha256": "2C8C5EEDB363C452FF05EC2B2D48AC86924A464B9646836B589E43901C8C7842" }, { "path": "um\\vss.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vss.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vss.idl", "sdkSha256": "6251B17E386C0BA418E3F526C39163DC3A415D57FE649C3B5987CB0BB6FDBDCF" }, { "path": "winrt\\activation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\activation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\activation.idl", "sdkSha256": "10B820A9EA1A1432037A016A8165F9EA695457E35337FACF9BEFB46CA4F8D903" }, { "path": "winrt\\asyncinfo.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\asyncinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\asyncinfo.idl", "sdkSha256": "479DC67E42370602B494E0024606B218B20BF5FAFB47CC6AEF6120A071FC2D18" }, { "path": "um\\dshowasf.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dshowasf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dshowasf.idl", "sdkSha256": "55B670B3A4DFEE9B934F5191EEC6808536988665A07FD1AF4A5D6EEA70C0D57B" }, { "path": "um\\inputpanelconfiguration.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputpanelconfiguration.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputpanelconfiguration.idl", "sdkSha256": "0AB52414EA7FAF470B4C517C4DC82D5B5440CC4A90DAFEA68867B9FBCAD4EFF5" }, { "path": "um\\mfspatialaudio.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfspatialaudio.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfspatialaudio.idl", "sdkSha256": "F84B4434C040D67147DC80A778DD4D947CCEF3C78DE1CF090456A9227DDA8DB5" }, { "path": "um\\mixerocx.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mixerocx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mixerocx.idl", "sdkSha256": "69A445F81FF1E602FC5D8A66FD9C24B064CCDF2AA2C92232D7A2611098015554" }, { "path": "um\\mmcobj.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mmcobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mmcobj.idl", "sdkSha256": "EBABD460778A1F31EDFBBC15EDE019C7ACF1B5C86D764BD74E8AAC7119AAD9FF" }, { "path": "um\\spatialaudiohrtf.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spatialaudiohrtf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spatialaudiohrtf.idl", "sdkSha256": "52EB81CA52800D5826A9099E8E290355E21BF2719A76DA43C03E5D00D2C084FF" }, { "path": "um\\spellcheckprovider.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\spellcheckprovider.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\spellcheckprovider.idl", "sdkSha256": "1EFE835D2054BCBC5FFE164EE4F6E2043FD293FE056CA364E3ACB8417FC0E2F1" }, { "path": "um\\TpmVscAttestation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\TpmVscAttestation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\TpmVscAttestation.idl", "sdkSha256": "05CCF9D0484E047F582BFC7492E26801D2F65DF16C77A1BFC9539C2873179D7F" }, { "path": "um\\tpmvscmgr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tpmvscmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tpmvscmgr.idl", "sdkSha256": "F65976FB6E2F0A44E22AF7B931B5D84FA47A7178728D5D3F1200625AC8A7B4E7" }, { "path": "um\\tsgauthenticationengine.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tsgauthenticationengine.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tsgauthenticationengine.idl", "sdkSha256": "D211861D3748A8C0F94FB3B5EBC6C4844A45CACCEAF88B27123510AB1FA27F1E" }, { "path": "um\\audioendpoints.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioendpoints.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioendpoints.idl", "sdkSha256": "B9827DC2D469A7F57FAC5EE0186002B321A16A2633B678CEBFB7B23707A1797C" }, { "path": "um\\ctfspui.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctfspui.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctfspui.idl", "sdkSha256": "791E70D2FBF233B0C6EF62C1B2E33AC472A6E9F7F6B1E6075DBC5D68C198880A" }, { "path": "um\\ctxtcall.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ctxtcall.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ctxtcall.idl", "sdkSha256": "2EA29B4C802968CD49BD36A28FD1FD2B14E2B6A398273107A3DFFB0D3B48249B" }, { "path": "um\\d3d11_4.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11_4.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11_4.idl", "sdkSha256": "07D07BB005561A58A36B202D2119878D1489D599D665BDB02A45B85A5632D9E2" }, { "path": "um\\dmodshow.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dmodshow.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dmodshow.idl", "sdkSha256": "74111784154148089E8272104DD9906AB8003321A47CEFEF5A43DE6B92DC6111" }, { "path": "um\\editionupgradehelper.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\editionupgradehelper.idl", - "sdkSha256": "E1BF2C66DCFC5A777C6D06E6AC5F9D2C13992AFC8930DF0154A49DA307FF234D" + "sdkPath": "c\\include\\10.0.28000.0\\um\\editionupgradehelper.idl", + "sdkSha256": "49812845363B81327471E145B766BF128A0E56168FADAA9FD54E3656ED864CD2" }, { "path": "um\\filter.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\filter.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\filter.idl", "sdkSha256": "80416936FC95889C449FC9C5F7AF4D604AD447D82DC9565AA46E92C74A702D0E" }, { "path": "um\\videoacc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\videoacc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\videoacc.idl", "sdkSha256": "4B889E0FB86B7C452EBA91702FA1341D8C4BBFF930E97DF16B2D6EEE6E42DEA6" }, { "path": "um\\xpsobjectmodel_2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsobjectmodel_2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsobjectmodel_2.idl", "sdkSha256": "85BB7765D97E604AF9993D25E9DE2FC39046E85C72C1043536A1F032C11D8D0B" }, { "path": "shared\\devpropdef.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\devpropdef.h", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\devpropdef.h", "sdkSha256": "79E4631E9E0CFDA0975270F71C9970D731352AD8D198D6706AC13A3970CEAA98" }, { "path": "um\\accctrl.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\accctrl.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\accctrl.h", "sdkSha256": "37A7438A7233AD985E312151F6979A55D499C75F1B92BA8BEB930A71FFA8E429" }, { "path": "um\\dimm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dimm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dimm.idl", "sdkSha256": "6426B217FB9608253E609E83675F624DA80AF43E5F543E164571468DBF1361B2" }, { "path": "um\\dispex.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dispex.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dispex.idl", "sdkSha256": "BDE5016BA1C04F32E21B8A33D4282D493AD375B2D0EBF516FB88F4B5A189E1E6" }, { "path": "um\\filtereg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\filtereg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\filtereg.idl", "sdkSha256": "E436B740F02A8263527C172F0174EDA06EBBC41A9D6C6368D8F493A7A082C693" }, { "path": "um\\holographicspaceinterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\holographicspaceinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\holographicspaceinterop.idl", "sdkSha256": "09F5FC605BE8F543B8939AEE952E96FB170F8BC513D102E26BDC90940D7A310F" }, { "path": "um\\iaccess.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\iaccess.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\iaccess.idl", "sdkSha256": "02F8173B7668C9E427164D172A557DFB47E94C1D47BB91AC3991AB840467DC78" }, { "path": "um\\icontentprefetchertasktrigger.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\icontentprefetchertasktrigger.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\icontentprefetchertasktrigger.idl", "sdkSha256": "1F52DEC7E41512A3BDB40A6ED0702E88CDBF8F10AD76A8F70C66D8462F70646D" }, { "path": "um\\inkrenderer.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inkrenderer.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inkrenderer.idl", "sdkSha256": "C133920FFAEDCE82E4712D108883F1BD035CEAA3AD5C6CB68D0634661938DFEF" }, { "path": "um\\inputpaneinterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputpaneinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputpaneinterop.idl", "sdkSha256": "1FCD4DA27F64F19A5A60CCEE007DD6999597EB7402306ED502A460C2BDE001B4" }, { "path": "um\\mfmp2dlna.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfmp2dlna.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfmp2dlna.idl", "sdkSha256": "635C9B364BE9736ABE6DDCBE6B788C3687406063BA147CAB259E9B7CD58DAF6B" }, { "path": "um\\mshtmcid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mshtmcid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mshtmcid.h", "sdkSha256": "79DB77720BFC64CDF08BDC0EC2EA13119C83AEA560D61643E527BDE499741AFD" }, { "path": "um\\mshtmdid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mshtmdid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mshtmdid.h", "sdkSha256": "ACB92C86C3320CF94C7C863D823364DD254B4A52A0009A7B9F5209BDBAB2A87A" }, { "path": "um\\mshtml.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mshtml.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mshtml.idl", "sdkSha256": "EDCB6864C8712DB1120CC29AA82DFD11E95194E00729731822522E1820A56320" }, { "path": "um\\msimeapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msimeapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msimeapi.idl", "sdkSha256": "7B02DE9C85DA744555876EE8F99628C206A04B7E0A4D283542A8303F0BCB1BA0" }, { "path": "um\\msvidctl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msvidctl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msvidctl.idl", "sdkSha256": "62D686FE5D299492D60D84CC8778C2CE1C229DAC97D4F4BD045CE2C43E45E701" }, { "path": "um\\playtomanagerinterop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\playtomanagerinterop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\playtomanagerinterop.idl", "sdkSha256": "69A5BEB4064F964501F9489CE42E820DC6713FFC72D859906EFC087B8990F91E" }, { "path": "um\\portabledeviceconnectapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\portabledeviceconnectapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\portabledeviceconnectapi.idl", "sdkSha256": "D9C89638BA317E16E30CECC70E1F75BD902ED69A024BC15E4D1913B8BA52899F" }, { "path": "um\\PortableDeviceConnectImports.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\PortableDeviceConnectImports.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\PortableDeviceConnectImports.h", "sdkSha256": "416F011D0EF82F97AA2BD58977FAD82A8E2A1C1C9F30A6910DEEE0FBAF731449" }, { "path": "um\\PortableDeviceConnectImports.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\PortableDeviceConnectImports.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\PortableDeviceConnectImports.idl", "sdkSha256": "A0BCA4C86B098C72AE8300006F83C885E05534BF0E8060FE1AED0AF8FE0C93B5" }, { "path": "shared\\winerror.h", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\winerror.h", - "sdkSha256": "0284EA46280C14063BB714D08C9EC48DE18DE6A7F0384323B263FEC234428833" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\winerror.h", + "sdkSha256": "F42853B8BE5115028850EB932908376EA8D0AE4BCB1FE867D394841FBD707B75" }, { "path": "um\\clusapi.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\clusapi.h", - "sdkSha256": "E482D9DB059AD2EB16E9AEB870E4AA6DB1B3621673B4ED71DA17EBA87563216C" + "sdkPath": "c\\include\\10.0.28000.0\\um\\clusapi.h", + "sdkSha256": "00C84E3E4A883033918FCF781C32B9AB0921B98124504D008186FD724AC1345B" }, { "path": "um\\msclus.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msclus.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msclus.idl", "sdkSha256": "59BC9E6F0BE0B6B579A3001DEE502FDE7E043266D61342FCAA00558BDC452F7D" }, { "path": "shared\\dxgi1_6.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\dxgi1_6.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\dxgi1_6.idl", "sdkSha256": "D209B7EF9E56E2DC67973E46AD88E91F9FFBB22F853E2A2FDC497CD9FD02CA54" }, { "path": "um\\activscp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\activscp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\activscp.idl", "sdkSha256": "89B5780592CB05DC4AAEF4F99376DE664A0811125821DCE092F4DA67BADE0ADA" }, { "path": "um\\casetup.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\casetup.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\casetup.idl", "sdkSha256": "178772BF6875E42ADE31EFC75B80483AF8958314BA3EF72633908FBF93EB65E9" }, { "path": "um\\commoncontrols.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\commoncontrols.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\commoncontrols.idl", "sdkSha256": "CAD7D328E38F33C7C25E9880711C1E1F63D218704FE3EDC82B51D6C34385DE21" }, { "path": "um\\d3d11sdklayers.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3d11sdklayers.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\d3d11sdklayers.idl", "sdkSha256": "2921B8E7CA678ACCD40528FF48BE2BF27C97E4C19CF6F20BC1CF81E13416F43F" }, { "path": "um\\emptyvc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\emptyvc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\emptyvc.idl", "sdkSha256": "AF054A7CD69C88FE46928C273A3F4DB5FB4BDC4C061471F89E15E5516096A3C0" }, { "path": "um\\inputscope.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inputscope.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inputscope.idl", "sdkSha256": "8D7A8DEE00B0FD4B0773F0669DE58795D58D13C8B856586E1349B95000D08D30" }, { "path": "um\\mfcontentdecryptionmodule.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mfcontentdecryptionmodule.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mfcontentdecryptionmodule.idl", "sdkSha256": "3A8C8532E85B1D5338F97D07586120143F153BEC20B233B943136A2C41460BD4" }, { "path": "um\\msaatext.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\msaatext.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\msaatext.idl", "sdkSha256": "9CA80CDD0CB480870308E5A68A921D7689535E997AF74F9F9A82077008BF1821" }, { "path": "um\\natupnp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\natupnp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\natupnp.idl", "sdkSha256": "EA3A0350647EEE4A3B48A272DD71C234B20A7A41070EB3743D949B1870BB1D30" }, { "path": "um\\qmgr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\qmgr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\qmgr.idl", "sdkSha256": "001601C4BAD8E6FF2098708BC023D63E0155C3079296E90A51CF10A0C6CF4C4B" }, { "path": "um\\shdispid.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shdispid.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shdispid.h", "sdkSha256": "EEB6E16DBD8817A936561B6555E403B49EB926D7BC1B81C46ABEF6286AB73736" }, { "path": "um\\shldisp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\shldisp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\shldisp.idl", "sdkSha256": "3229DFDFB6D10E8D0DE474BCC582B117C8DBB28639DA70CEDF2EDC15B126F1F1" }, { "path": "um\\upnphost.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\upnphost.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\upnphost.idl", "sdkSha256": "7C08142917D338DA650BD34AE4343248486629D0EAB65AB22359286FD07B8591" }, { "path": "um\\vsmgmt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsmgmt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsmgmt.idl", "sdkSha256": "840D17C61A6FD0AB4434F5B0B0D251294450EE260754F78EE5A5128CFC8C7090" }, { "path": "um\\vsprov.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vsprov.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vsprov.idl", "sdkSha256": "FD21E10A77C76C59DCFFDC3B6BE2AF4A31DA3C686FB8EF206E8CECA6CCC6BECE" }, { "path": "um\\xamlom.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xamlom.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xamlom.idl", "sdkSha256": "F5D34CD5D3743AC7F7637DB29773CFBC6681C18137D212A6BD16FF893825633B" }, { "path": "um\\xpsdigitalsignature.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xpsdigitalsignature.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xpsdigitalsignature.idl", "sdkSha256": "B7515D9CC85B5A481707FE403AF090ED335DF8CCF6DBDC5C75FD7A772E42B2AC" }, { "path": "winrt\\webapplication.idl", - "sdkPath": "c\\include\\10.0.26100.0\\winrt\\webapplication.idl", + "sdkPath": "c\\include\\10.0.28000.0\\winrt\\webapplication.idl", "sdkSha256": "0349EEB88558EE012D8FFCD9C110BCB1EFED897464B8C49EBC54D437693F4CD0" }, { "path": "um\\cluadmex.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cluadmex.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cluadmex.idl", "sdkSha256": "A959A87AEB3F55EFE4B6470F65EF0E5DADF4F53BA49690612F4AE1E71BB1DFF3" }, { "path": "um\\comadmin.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\comadmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\comadmin.idl", "sdkSha256": "8DA1E2C3E8964EB882BA8562B86AE9868CE8A6F3992979046F00A39789C9FD3B" }, { "path": "shared\\fwptypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\fwptypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\fwptypes.idl", "sdkSha256": "46790A9804F690E09CD06BFF11A55BC11E49DFE3B847073A5EB03530A7102898" }, { "path": "um\\activprof.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\activprof.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\activprof.idl", "sdkSha256": "7CBF144EFD0654074DEEBBA38FA9060771A9E6FF9040856B775ADBC4FACA11FD" }, { "path": "um\\audioenginebaseapo.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audioenginebaseapo.idl", - "sdkSha256": "7A6AF63707456D6FA3948973E23DD2369E14A519321EA105E979204E36EB7160" + "sdkPath": "c\\include\\10.0.28000.0\\um\\audioenginebaseapo.idl", + "sdkSha256": "CE35719C8B6A4E1C4D6EFF49728BB3D170A19B6B5CAD0AFA719E59E2F5602616" }, { "path": "um\\audiomediatype.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\audiomediatype.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\audiomediatype.idl", "sdkSha256": "154316E0630E6EB8C8A63C65443DBE4B272EC0E08DBEE44619D16AC6CA7988DB" }, { "path": "um\\dbgprop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbgprop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbgprop.idl", "sdkSha256": "5C573323D0567D754018E35414E423A623218579983E88D08419D952FE666B1D" }, { "path": "um\\hlink.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\hlink.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\hlink.idl", "sdkSha256": "FE5E5415A518838B67AECB24CAEEF7B6B49274591B6225A570591EBE8AD64AAC" }, { "path": "um\\mshtmhst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mshtmhst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mshtmhst.idl", "sdkSha256": "F906FF61A7B1BC4177C1F8B34C9E66CE4E6634EEB458C7E67E5E3D7FEB6BE48A" }, { "path": "um\\netcfgn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netcfgn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netcfgn.idl", "sdkSha256": "34DC1B54CDDBB9EE72454DB49DAA0C0C1E2303DB64E86B7A7ECF7AACFB8C9151" }, { "path": "um\\netcfgx.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\netcfgx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\netcfgx.idl", "sdkSha256": "312E946B06B9ADBCF8AC808000A51779D7DD19C3ED7DFB4CB739851B2483EA63" }, { "path": "um\\presentation.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\presentation.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\presentation.idl", "sdkSha256": "AFC7F3D24BBFCF1C9D46BC920E71A2F14FE5EB178818E32BF934F587F172E65C" }, { "path": "um\\PresentationTypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\PresentationTypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\PresentationTypes.idl", "sdkSha256": "A28F037998DD3FA15C977FBF54C86D79E3FBF2E49664FECF2F05CC9A22AAB013" }, { "path": "um\\xmllite.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\xmllite.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\xmllite.idl", "sdkSha256": "F2A4DFDA73C7FF458433B48625440D01CD6E684947672D37D04AD82E14499F62" }, { "path": "um\\access.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\access.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\access.idl", "sdkSha256": "56993B453918DD5D8A1CF74279456DC9A23D7709BDF0CA6912B07DF8E41F5C41" }, { "path": "um\\altidx.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\altidx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\altidx.idl", "sdkSha256": "DD999121CD81DCB7FF2C46F2BBAE064FE414FF5ED851A8374288F29FFF37D7D7" }, { "path": "um\\alttab.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\alttab.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\alttab.idl", "sdkSha256": "060800607FB0808BF577219CD2472B688E54EDCD2035DFFD6DD1AC409C69FECF" }, { "path": "um\\asynot.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\asynot.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\asynot.idl", "sdkSha256": "EAF82C0AE7C922B5127DD2F6B55A8434DA39BB36AD2E61E482276849FEC50E3E" }, { "path": "um\\asysta.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\asysta.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\asysta.idl", "sdkSha256": "0E43CCF7B33C3CB70275B2537CFA9D7EC1EFF67EB5E96602357A4014C592228F" }, { "path": "um\\binres.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\binres.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\binres.idl", "sdkSha256": "F4F498338B6FF7465D9FA3BC3F5652D1F89BF8BB0BBE718EDA287342DDBD9602" }, { "path": "um\\chprst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\chprst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\chprst.idl", "sdkSha256": "9DF307740CF469182F1D9A28F84234FABA8BFD625CFAB286711F583B0F8FDF2B" }, { "path": "um\\clinf2.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\clinf2.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\clinf2.idl", "sdkSha256": "1003DDD96AE596F58A62B713B6EFC808DC5BCCBC098647478BA905E8D5B13D3A" }, { "path": "um\\cmdbas.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdbas.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdbas.idl", "sdkSha256": "175E7A5C9EA1B066CFEC7F86A6C1BC1505881450647F93E2BFECE779A44AD741" }, { "path": "um\\cmdpre.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdpre.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdpre.idl", "sdkSha256": "CDA34A161C2503638628D510BA93B13C12A00181F9CE3F7C4CCC9759D7DE1B3D" }, { "path": "um\\cmdprp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdprp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdprp.idl", "sdkSha256": "280DD084CD16029E22FCA745C022A50EA132270A256B38018E136BFD79CAE12E" }, { "path": "um\\cmdprst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdprst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdprst.idl", "sdkSha256": "5040CDAD23070685D4115C0ADFA1178C6493B5D0B6C9A969D223FC5FCE3F3C56" }, { "path": "um\\cmdstrm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdstrm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdstrm.idl", "sdkSha256": "42480E0749BAAE65DFF38D33197D725FEB2BD00201AE525EF59F61D205D2BF45" }, { "path": "um\\cmdtxt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdtxt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdtxt.idl", "sdkSha256": "023486A6E31FBD9466E21327F02694F9E5944E618C7F649123F2582C6904E505" }, { "path": "um\\cmdwpr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdwpr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdwpr.idl", "sdkSha256": "DC29203EA636AE55DBAF4D745040C1341BF3BB42EDC73A7A435BC98DA50FD785" }, { "path": "um\\colinf.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\colinf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\colinf.idl", "sdkSha256": "C65621847645FD5C20A1BC35D5EB6078D36EE235969444CB208A7AC9BE1AECE9" }, { "path": "um\\colrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\colrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\colrst.idl", "sdkSha256": "BACC9FEA96C60FD2DBBE377F74559F1C061EBEF5653FC57356C73BD90D2DAF30" }, { "path": "um\\crtrow.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\crtrow.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\crtrow.idl", "sdkSha256": "AC091BE2C5B35F97F01F8FAB6948C2F27CADBD4227A668D20F1FA09642F97C66" }, { "path": "um\\cvttyp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cvttyp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cvttyp.idl", "sdkSha256": "B08C7E60AB13E83609B011F3FF6487A0887CB5EB5C7A6F929B2A4896B2597E4E" }, { "path": "um\\dbccmd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbccmd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbccmd.idl", "sdkSha256": "94209B3FF82C6851F2C55E5CD69CFF376291EF1942F54B06080EA1B11D9E3E4A" }, { "path": "um\\dbcses.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbcses.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbcses.idl", "sdkSha256": "2AA5DEE29B8FE20CCF9E9770ED6E4A0997B382E85AD243A08735E9997F74A176" }, { "path": "um\\dbdsad.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbdsad.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbdsad.idl", "sdkSha256": "7394B0D5D6220803AF345E531B69845010B34B730A3BC994F69919A4DC1CEE44" }, { "path": "um\\dbinfo.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbinfo.idl", "sdkSha256": "2A203B63F89ABFC99F20BF679A7F38B2EC46A4485E843C1F9401A9652E597C7F" }, { "path": "um\\dbinit.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbinit.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbinit.idl", "sdkSha256": "E58ECD74417ABDF908C07C89D1DD2D845A3EC40137C5EB09380EA4AC1631B913" }, { "path": "um\\dbprop.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbprop.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbprop.idl", "sdkSha256": "9A47E71D08C8DAE58D256999DCCEC617D71BE39C9359D7E562EA1917A457D99F" }, { "path": "um\\dbrtpr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbrtpr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbrtpr.idl", "sdkSha256": "514FE20F22E5CA908CCD8FC4CD209657F30352DE80184A397C5945D3140D37A9" }, { "path": "um\\dbs.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbs.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbs.idl", "sdkSha256": "BBE31F6E6885C4AF99C4845AD7FE30B416448EF4629F53B3D7BACB6C152FE0C5" }, { "path": "um\\dbsrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbsrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbsrst.idl", "sdkSha256": "3EF3E994D1DCA83116BD65A2565AE38255CA5B0F8C53EFC79277533DFB363185" }, { "path": "um\\errlup.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\errlup.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\errlup.idl", "sdkSha256": "94EF49AD6B08EB9CD3FA1F7681BD774EC852820B61D1566C8185C91B49BACAF9" }, { "path": "um\\errrec.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\errrec.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\errrec.idl", "sdkSha256": "EDADE7ED47124E2E1DDF4BE526DC435E72CC9B608E3A895455BFD5EDB5A93C8D" }, { "path": "um\\getdts.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\getdts.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\getdts.idl", "sdkSha256": "DA464B045728E420E629CC5F09F54EB0AFFFD216820C40DEF9442F98BDD84C34" }, { "path": "um\\getrow.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\getrow.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\getrow.idl", "sdkSha256": "6A910FF18EC25D52A0BB14A331BC1B8EB052899195CC8C8FC111999E458EF91B" }, { "path": "um\\getses.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\getses.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\getses.idl", "sdkSha256": "07013EF0708629CEA370BBDFEAE5436BA1A6603768392F53413B7059C83622D2" }, { "path": "um\\getsrw.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\getsrw.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\getsrw.idl", "sdkSha256": "37F6DE9E436431F2E14FCF1423AA82A05F89187FF87F846BE420661F31159D8F" }, { "path": "um\\idlmulti.h", - "sdkPath": "c\\include\\10.0.26100.0\\um\\idlmulti.h", + "sdkPath": "c\\include\\10.0.28000.0\\um\\idlmulti.h", "sdkSha256": "CDCBD5395469AF4C7665A3C7B62984A5529DA375EBFCACC50C1C8173D89C804E" }, { "path": "um\\inddef.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\inddef.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\inddef.idl", "sdkSha256": "2AC64B8FD5184208C2A61EFBB333B0F7248ED27D1A92A0098558F2DEB8BD88B4" }, { "path": "um\\mddset.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mddset.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mddset.idl", "sdkSha256": "66AA06F6CFADBDD56634E184C66983B0C38217158E10BE2227BF5686AA899198" }, { "path": "um\\mdfind.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mdfind.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mdfind.idl", "sdkSha256": "6BD7996D767C90682B7CDFC9D1D4FA191444E6DFD6C19FDEADE1BE56DA1C2CEC" }, { "path": "um\\mdrrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mdrrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mdrrst.idl", "sdkSha256": "E70268519DB330E460A038673EE0C895C8A0C80A56D274E2A3EB34001082D672" }, { "path": "um\\mulres.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\mulres.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\mulres.idl", "sdkSha256": "EA27682CFD739F4AEFB8893D787C3ABF3FC77AE4E3479D6F4A58F2CFA626D324" }, { "path": "um\\objactnl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\objactnl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\objactnl.idl", "sdkSha256": "07BA828E7932B5D1FCB63A7C23A8DD9D6F0DCECDBCFE2D99433288E0C12940B1" }, { "path": "um\\oledb.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oledb.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oledb.idl", "sdkSha256": "023D3F0D92178E635C3EF818BB7E9A3B6B3F5D9E4EBD8F7E9D68E1DCD8991437" }, { "path": "um\\opnrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\opnrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\opnrst.idl", "sdkSha256": "9A64FCA127D04A2E5C2C9A74FA178428C10B8F63FBC4E1E0543F61B14EC2BB44" }, { "path": "um\\parrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\parrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\parrst.idl", "sdkSha256": "C173E558E6E63DD3816DA4478EE1931E05B79A3D5F32FB7C0748458065477006" }, { "path": "um\\regprv.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\regprv.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\regprv.idl", "sdkSha256": "4AE06EB154B55333CFE584451456628E5D68FE2DC915CD1784AA6204D731D114" }, { "path": "um\\row.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\row.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\row.idl", "sdkSha256": "927C886DF3FB1A1485946C4CA1C57C19F1103D91D759744D2F476C5CD0E985CB" }, { "path": "um\\rowchg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rowchg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rowchg.idl", "sdkSha256": "8B6785FE3B47BC05D592DBD33361816C3918A6B786229BCEA756356E975FD986" }, { "path": "um\\rowpos.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rowpos.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rowpos.idl", "sdkSha256": "B7D5D0D7E833D10E7021D862DE137793DC21F070CBFFF28DDAEBA2A2BCA5B932" }, { "path": "um\\rowpsc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rowpsc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rowpsc.idl", "sdkSha256": "0CC0202C09FF20BD1B6150464C8876463D4F9B0E49DC3853B0922AEE271DA11B" }, { "path": "um\\rstbas.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstbas.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstbas.idl", "sdkSha256": "FF64968C4B11A759C523D91AA14CA48EEB88293F646AB86A15F72D44C7EE0F2C" }, { "path": "um\\rstbmrk.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstbmrk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstbmrk.idl", "sdkSha256": "18BA86140F5FA60ADC57048303369A16F113FB1F8C700B292177E28E134C3285" }, { "path": "um\\rstchg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstchg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstchg.idl", "sdkSha256": "C847E2445F38FE06DF25E19580BF39A7E86CC806093C50F4E3D50AF572A65023" }, { "path": "um\\rstchpmb.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstchpmb.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstchpmb.idl", "sdkSha256": "A4127EBA533367D53A36B25FCADB0693E3E517C3471BA61B67539FE18A18C993" }, { "path": "um\\rstcridx.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstcridx.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstcridx.idl", "sdkSha256": "9539C7FA0801E84261EFA7BC6BAF5ED7F78CF37876FE59B4DA444A1BB9F0C469" }, { "path": "um\\rstfnd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstfnd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstfnd.idl", "sdkSha256": "A92F699B994AD5727761EC6D50E229B8B474A52E969E054D09A5EEC9C9633D16" }, { "path": "um\\rstidn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstidn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstidn.idl", "sdkSha256": "34A2B6DFABDAF8F72DC1A455B98DB3800E17F5F6BE9F6255A5C5150CDF2D86C7" }, { "path": "um\\rstind.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstind.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstind.idl", "sdkSha256": "96C18BBEBF59B4E0EED653CFDE93AA03CF9AE443F2EC1590AFC9C48ACAED53D4" }, { "path": "um\\rstinf.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstinf.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstinf.idl", "sdkSha256": "B39F1633A1291334173D175807A6C8D6A852ED85810CBB86F4B4ED7E681371A4" }, { "path": "um\\rstloc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstloc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstloc.idl", "sdkSha256": "3AA04D97CA5867D0D8E2A328FD7A5068B198C3A668FFD40BA91EC6456F823B0E" }, { "path": "um\\rstnot.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstnot.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstnot.idl", "sdkSha256": "8BBE0B13F85FA4FE378F0C32D8A631F5DA537A7E44F4686EA04D9CA249F6E7AF" }, { "path": "um\\rstres.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstres.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstres.idl", "sdkSha256": "3354F65B2CB409B93CC22DD2E86F7FEF81E2DAF33EFBA38516915409AF958A7A" }, { "path": "um\\rstrfres.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstrfres.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstrfres.idl", "sdkSha256": "9BBE13F184424428D95A815230FD082C42C79C2E8AECA10D9CB878AFEB0BE0B5" }, { "path": "um\\rstscr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstscr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstscr.idl", "sdkSha256": "50BE7B917CEFE9648D71CF7AD322008E59FD46D92ADF2B03956D797C3E16E1F1" }, { "path": "um\\rstupd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstupd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstupd.idl", "sdkSha256": "849D2FF626AED1EDB5645B74997833E4E5EA08570D840FEB484519FE39A319C3" }, { "path": "um\\rstvw.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstvw.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstvw.idl", "sdkSha256": "03A1766DABC8396E62E7E7465520B705802C261B214979E9D86A4F3EAC0BED3A" }, { "path": "um\\rstxsc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstxsc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstxsc.idl", "sdkSha256": "4FDC3FE93B081196C25403C13E52C06761D1EF589333988F3C939D894B6CE938" }, { "path": "um\\rwschg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rwschg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rwschg.idl", "sdkSha256": "356E9DBA3C28EB3958FF0256AE94F81C8A2DBCCD8BBDFB97BD53F2F6EA22D0F6" }, { "path": "um\\scpops.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\scpops.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\scpops.idl", "sdkSha256": "9E7363C01481C6713892726785709F948E4BA3F40BFD2B889AF009C9E1038F30" }, { "path": "um\\sesprp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sesprp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sesprp.idl", "sdkSha256": "60ED06CF504A1F07113CB4BAFB0DD4BFBCB0D2FE95BADE144F25900B08708254" }, { "path": "um\\seurinfo.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\seurinfo.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\seurinfo.idl", "sdkSha256": "7F6143BF2B0EE56752522F93BE2D30302D3C561B94DECFD6B8133E9A20E4F339" }, { "path": "um\\sqleri.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sqleri.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sqleri.idl", "sdkSha256": "FDE3A0CA305AF55DB2EABD67421BD26256F2DE4AD97D73F60ECE07572855FF85" }, { "path": "um\\srcrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\srcrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\srcrst.idl", "sdkSha256": "3AA00CB9D819ADAD3E39BEE6D42C11B9D4CE9D98F8A6A0ACBAC6B96566E40A1E" }, { "path": "um\\tabdef.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tabdef.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tabdef.idl", "sdkSha256": "50D6B4B2EA3918E2E3D2703192F4188E6DD8E72A2743EB49310C16744D32F054" }, { "path": "um\\tbdefcnt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tbdefcnt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tbdefcnt.idl", "sdkSha256": "B2326037EBDA9A7BE737095E61CEE95B9411CF0F3523178B5F965028410AA327" }, { "path": "um\\tblcrt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tblcrt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tblcrt.idl", "sdkSha256": "94065992C47CAD56139335B1FE362CE7BF06DADDBE9D453BE9964F86914ACFBE" }, { "path": "um\\transact.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\transact.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\transact.idl", "sdkSha256": "50C31ADCFDF1E11B5D13D7ECB7B409C85E196FC0C6DB61FFF67BFEC0B017E69C" }, { "path": "um\\trnjoi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\trnjoi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\trnjoi.idl", "sdkSha256": "BD1282ECB422425030A487202729EEFFEAB46FDD203D7FD81A8947858D0FB259" }, { "path": "um\\trnlcl.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\trnlcl.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\trnlcl.idl", "sdkSha256": "83368C42FA3BAA90ED7821091AA9EA5018AA9A81FC444AC89AA6AF6E5A6CB385" }, { "path": "um\\trnobj.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\trnobj.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\trnobj.idl", "sdkSha256": "0BC3512EEE42AE3105B163B2F778DD3CBA972B2991EF1DC59B92A55DEDC6C253" }, { "path": "um\\truadmin.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\truadmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\truadmin.idl", "sdkSha256": "96F6086B509F45206608E2AD6D51F0502AFB26BCA91327E2E7B953CCB37927B5" }, { "path": "um\\trugpadm.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\trugpadm.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\trugpadm.idl", "sdkSha256": "35A5EEE85345ADE65141F946EDBA102D24CE0DB2AB5996313C5BFD7BAA3C3B58" }, { "path": "um\\vwchp.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vwchp.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vwchp.idl", "sdkSha256": "801A0EC82FE6907C44B64BC1FA20550A6AE6D37DF50B5DA2509E5B8DE8BB2787" }, { "path": "um\\vwflt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vwflt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vwflt.idl", "sdkSha256": "D68A81194B2E544B6297FB2C82B152AF92058F38E416274DA488D12522096949" }, { "path": "um\\vwrst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vwrst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vwrst.idl", "sdkSha256": "C6DC3138BD56D9E18371924A8AB9B7F02A1C9EE22262986FE20790C69C7C42A3" }, { "path": "um\\vwsrt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\vwsrt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\vwsrt.idl", "sdkSha256": "5C99197CC52ED905105E0C9E2353B5B9400D2FAA14482C8EDFE6EC03FA55A635" }, { "path": "um\\cmdcst.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdcst.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdcst.idl", "sdkSha256": "D6B1CED8C6B7B1A9883064B2240457D800E34466A9A78319E71DDB4A9EE103DE" }, { "path": "um\\cmdval.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdval.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdval.idl", "sdkSha256": "50A43052C305E51F4EFBDE7DC08B5440B0D34549A4E180BBFF2F8C5EF8407A48" }, { "path": "um\\dbscmd.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbscmd.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbscmd.idl", "sdkSha256": "949085B735A1F7CCA5EE486CA35F3016A5FF400E9D2EFF24B02BFD1F17946791" }, { "path": "um\\dbsdep.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\dbsdep.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\dbsdep.idl", "sdkSha256": "67185B10C19A51BF9567B81BE155E97865F07FECF3E86E1F8AA84222746E52D2" }, { "path": "um\\oledbdep.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\oledbdep.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\oledbdep.idl", "sdkSha256": "C7BE181281FDF1A696D9FB566A13206A05A1447CF22F5FA16B21903AA5CAE44F" }, { "path": "um\\prvmon.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\prvmon.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\prvmon.idl", "sdkSha256": "6A6C50B3DB0AAF21BE7BB417354F3BFE83E0B54F3B9ED80AFDA757E7DCB90018" }, { "path": "um\\readdt.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\readdt.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\readdt.idl", "sdkSha256": "6405C0823D993A11520B260E18CF9028B5C7D8AFBA606406FE6490BB0F86E345" }, { "path": "um\\rstasn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstasn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstasn.idl", "sdkSha256": "8A66350B15FCD3085E93EC029B76C2A5A38D1D17D82EF7D0C15DC6529F6B5C08" }, { "path": "um\\rstcpr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstcpr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstcpr.idl", "sdkSha256": "EF44CBDD38CA5808B7B2B466466A3D4259303EA1AEFD41F28ED85BD3B43966F9" }, { "path": "um\\rstkys.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstkys.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstkys.idl", "sdkSha256": "6F04C799E94622B90364CA05319967A37BA9F16BABDFC151D221E40B77DEB8F6" }, { "path": "um\\rstnra.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstnra.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstnra.idl", "sdkSha256": "FC5410B0E1E8050E5E71F6B5422277F065BBA773003F4B7C23AAC724235FB342" }, { "path": "um\\rstnxr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstnxr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstnxr.idl", "sdkSha256": "B727399C27C48E3CC85EDE54387466F135D4E6BE23D93D55B82536602C8C5D84" }, { "path": "um\\rstwpr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstwpr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstwpr.idl", "sdkSha256": "610803689F67D542C71E058CAA4D055049C2684AAEFB8D8ED235631D34EFAB7E" }, { "path": "um\\rstwta.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstwta.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstwta.idl", "sdkSha256": "7244D55583E6437D9269DF3D38C835AF7E00772A48A5D5EE1B34D7DA47FA3353" }, { "path": "um\\rstwtn.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstwtn.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstwtn.idl", "sdkSha256": "8BEFC7E9CFBF1E9A652E8450F27E30FC694A86C2A78C3EDA415E47E1DB80F68D" }, { "path": "um\\rstwtr.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\rstwtr.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\rstwtr.idl", "sdkSha256": "7910850C5B91FA5C0420E22E4EDD7592E589F1C3CA7A7E865E1CE5DD4E7686C1" }, { "path": "um\\tabren.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\tabren.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\tabren.idl", "sdkSha256": "7362FE6DF0BF826DA0A317720525E3BA2C312286874FB618899B38BB068DE576" }, { "path": "um\\SearchAdmin.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchAdmin.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchAdmin.idl", "sdkSha256": "5C08A82C5487C994724945445602819B770B604BF2F5DFA40F50ADAA05E78929" }, { "path": "um\\searchapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\searchapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\searchapi.idl", "sdkSha256": "AA19F77F4ACC575873F8924B190A226AD33E9C17D5A7200A9A5D6D41365CEE98" }, { "path": "um\\SearchCatalog.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchCatalog.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchCatalog.idl", "sdkSha256": "36352742A7B346C4BA6B5D9129448A333A6F362917ECBCB537B1FF1A24B11370" }, { "path": "um\\SearchCrawlScopeManager.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchCrawlScopeManager.idl", - "sdkSha256": "4E9AB07DA583C43E84CFDA1120779E981DFA3FBD049DBB7D921AEFB97AED2AD5" + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchCrawlScopeManager.idl", + "sdkSha256": "9870C5216169B2A3A174F9FA11C7883010EB3FABB2F706EEDB7E1CE35BEF2105" }, { "path": "um\\SearchLanguageSupport.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchLanguageSupport.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchLanguageSupport.idl", "sdkSha256": "0FC81BB82940CEED111F48B0C907D0FCB4E52063409765D1A38FE3227B4783C1" }, { "path": "um\\SearchNotifications.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchNotifications.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchNotifications.idl", "sdkSha256": "37C2A8EF8E7D1D1B441A3BF0AF8E224AFCB3E21C5556E9E3BC085BCA08BD4462" }, { "path": "um\\SearchQuery.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\SearchQuery.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\SearchQuery.idl", "sdkSha256": "E753F8E783B05042E588A3EC6E62676B5048ABC324F7B7E9C2E25C51D8EDB091" }, { "path": "um\\srchntfyinlinesite.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\srchntfyinlinesite.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\srchntfyinlinesite.idl", "sdkSha256": "DD10A54647E1D5B097B2AECE6D7FFFBC264DFFEA549C73E246A0E1B718572CC8" }, { "path": "um\\srchprth.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\srchprth.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\srchprth.idl", "sdkSha256": "0C1A1CB8D13177FF0CE50EBEC63DC2D70BFC8D9E384F14337FDEB42557706F8F" }, { "path": "um\\urlacc.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\urlacc.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\urlacc.idl", "sdkSha256": "BFC0CDB3D563D747E74C901B0BD9966CA0DEF07FDBB224C854901CB28DC0A4BF" }, { "path": "um\\urlaccsdk.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\urlaccsdk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\urlaccsdk.idl", "sdkSha256": "909514D70C1DA6ACDBBA3A8181AF9F5CCEB083EF63DFD453FA3169602E75577F" }, { "path": "shared\\fwpmtypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\fwpmtypes.idl", - "sdkSha256": "FAB6532CDAB4239CE354D6034E129BBACFA6939F47D4D609A07AAA30CAD5E1AC" + "sdkPath": "c\\include\\10.0.28000.0\\shared\\fwpmtypes.idl", + "sdkSha256": "5793E23F344418E5602827D408E6CA56FDDCF977181766B0D15E3237057C2449" }, { "path": "shared\\iketypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\iketypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\iketypes.idl", "sdkSha256": "D0E8345FA2F68F276321211595D52B8FD4079BF5A3F18737F1D95CE3A6F41CF8" }, { "path": "shared\\ipsectypes.idl", - "sdkPath": "c\\include\\10.0.26100.0\\shared\\ipsectypes.idl", + "sdkPath": "c\\include\\10.0.28000.0\\shared\\ipsectypes.idl", "sdkSha256": "880848DC653C5E72528A2B0DFC512EF595EB817A58B472CF25723B63C552BBE4" }, { "path": "um\\wsdxml.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\Wsdxml.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Wsdxml.idl", "sdkSha256": "C8DC076719D7CD2BE8F2BF1B49ED32DE25F238244076304BBFCFE800F2975717" }, { "path": "um\\txlogpub.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\txlogpub.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\txlogpub.idl", "sdkSha256": "67E008A14FB077ECAA13577FC7B3D5EF85BC8BB3DC5C089D3B07B4A31BF1D178" }, { "path": "um\\cmdtre.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdtre.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdtre.idl", "sdkSha256": "3D2B99BC939FFCAAA4411569DDF27D2162ECC68E9C97DD12D40179AA87FC09A2" }, { "path": "um\\qrybas.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\qrybas.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\qrybas.idl", "sdkSha256": "DA5AB6BE0B59FDFE045FD1D73322804C0BD48E3F0EC2F338BD268EAB3D77692B" }, { "path": "um\\ddstream.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\ddstream.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\ddstream.idl", "sdkSha256": "D0D559F74149A353AAFF5D8E496D39B82FA13B008D3591991B39794601AF5934" }, { @@ -6958,32 +6957,27 @@ }, { "path": "um\\activdbg.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\activdbg.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\activdbg.idl", "sdkSha256": "C63EDCEB9F0678E94AA19DD3683C9C2F1EAAD9BB38291274B85E228C6BCA0447" }, { "path": "um\\cmdtree.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\cmdtree.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\cmdtree.idl", "sdkSha256": "D7AAA247E40AAA4DF6B564F74C32BA93029D723697D54C0EF2E4C1CA346B4B38" }, - { - "path": "um\\d3dshadercacheregistration.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\d3dshadercacheregistration.idl", - "sdkSha256": "1761675EAF3D3AEA8660796EDA94E75B574D76BD8555F881756A9015377681CD" - }, { "path": "um\\sapi.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sapi.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sapi.idl", "sdkSha256": "2F208F9A869297A9C5B8B2BEC56CC2BE453339113B4EC51ADD25AEFE8FEAA781" }, { "path": "um\\sapiddk.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\sapiddk.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\sapiddk.idl", "sdkSha256": "8F55ABBA0D0D571B218A00F270E93B5DC4F82B77E9BB9EC0DFAFEDC7A2F1DF2F" }, { "path": "um\\windows.ui.xaml.hosting.referencetracker.idl", - "sdkPath": "c\\include\\10.0.26100.0\\um\\windows.ui.xaml.hosting.referencetracker.idl", + "sdkPath": "c\\include\\10.0.28000.0\\um\\windows.ui.xaml.hosting.referencetracker.idl", "sdkSha256": "F963B0B957B2C7D25E3ED00A072F1BC9AD909C5AC4B3562F42A2EECE218A5B99" } ], @@ -7992,10 +7986,6 @@ "source": "um\\wsdxml.idl", "path": "um\\Wsdxml.h" }, - { - "source": "um\\d3dshadercacheregistration.idl", - "path": "um\\d3dshadercacheregistration.h" - }, { "source": "um\\objidlbase.idl", "path": "um\\objidlbase.h" @@ -9008,7 +8998,6 @@ "um\\wincontypes.h.patch", "um\\WinHvPlatformDefs.h.patch", "um\\kbd.h.patch", - "um\\d3dshadercacheregistration.idl.patch", "um\\prsht.idl.patch", "um\\sapi.idl.patch", "um\\sapiddk.idl.patch", diff --git a/generation/WinSDK/patches/shared/netioapi.h.patch b/generation/WinSDK/patches/shared/netioapi.h.patch index c0785a7b8..edf126e0e 100644 --- a/generation/WinSDK/patches/shared/netioapi.h.patch +++ b/generation/WinSDK/patches/shared/netioapi.h.patch @@ -1,8 +1,8 @@ diff --git a/shared/netioapi.h b/shared/netioapi.h -index ca51682f..1b598a28 100644 +index c3ae36f..5835f76 100644 --- a/shared/netioapi.h +++ b/shared/netioapi.h -@@ -223,6 +223,7 @@ typedef struct _MIB_IF_TABLE2 { +@@ -225,6 +225,7 @@ typedef struct _MIB_IF_TABLE2 { MIB_IF_ROW2 Table[ANY_SIZE]; } MIB_IF_TABLE2, *PMIB_IF_TABLE2; @@ -10,7 +10,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -270,6 +271,7 @@ typedef enum _MIB_IF_ENTRY_LEVEL { +@@ -272,6 +273,7 @@ typedef enum _MIB_IF_ENTRY_LEVEL { MibIfEntryNormalWithoutStatistics = 2 } MIB_IF_ENTRY_LEVEL, *PMIB_IF_ENTRY_LEVEL; @@ -18,7 +18,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -312,6 +314,7 @@ Notes: +@@ -314,6 +316,7 @@ Notes: --*/ #endif @@ -26,7 +26,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -350,6 +353,7 @@ typedef enum _MIB_IF_TABLE_LEVEL { +@@ -352,6 +355,7 @@ typedef enum _MIB_IF_TABLE_LEVEL { #endif } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL; @@ -34,7 +34,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -496,6 +500,7 @@ typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES { +@@ -498,6 +502,7 @@ typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES { } MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES, *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES; @@ -42,7 +42,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -504,6 +509,7 @@ GetIfStackTable( +@@ -506,6 +511,7 @@ GetIfStackTable( _Outptr_ PMIB_IFSTACK_TABLE *Table ); @@ -50,7 +50,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -512,6 +518,7 @@ GetInvertedIfStackTable( +@@ -514,6 +520,7 @@ GetInvertedIfStackTable( _Outptr_ PMIB_INVERTEDIFSTACK_TABLE *Table ); @@ -58,7 +58,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -547,6 +554,7 @@ Notes: +@@ -549,6 +556,7 @@ Notes: --*/ @@ -66,7 +66,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -586,6 +594,7 @@ Notes: +@@ -588,6 +596,7 @@ Notes: --*/ @@ -74,7 +74,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE VOID -@@ -615,6 +624,7 @@ Notes: +@@ -617,6 +626,7 @@ Notes: --*/ @@ -82,7 +82,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -667,6 +677,7 @@ Notes: +@@ -669,6 +679,7 @@ Notes: --*/ @@ -90,7 +90,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -703,6 +714,7 @@ Notes: +@@ -705,6 +716,7 @@ Notes: --*/ @@ -98,7 +98,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -793,6 +805,7 @@ VOID +@@ -795,6 +807,7 @@ VOID #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -106,7 +106,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -829,6 +842,7 @@ Notes: +@@ -831,6 +844,7 @@ Notes: --*/ @@ -114,7 +114,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -860,6 +874,7 @@ Notes: +@@ -862,6 +876,7 @@ Notes: --*/ @@ -122,7 +122,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -900,6 +915,7 @@ Notes: +@@ -902,6 +917,7 @@ Notes: #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -130,7 +130,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -946,6 +962,7 @@ Notes: +@@ -948,6 +964,7 @@ Notes: #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -138,7 +138,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE VOID -@@ -983,6 +1000,7 @@ Notes: +@@ -985,6 +1002,7 @@ Notes: #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -146,7 +146,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1042,6 +1060,7 @@ VOID +@@ -1044,6 +1062,7 @@ VOID _In_ PMIB_UNICASTIPADDRESS_TABLE AddressTable ); @@ -154,7 +154,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1060,6 +1079,7 @@ NotifyStableUnicastIpAddressTable( +@@ -1062,6 +1081,7 @@ NotifyStableUnicastIpAddressTable( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -162,7 +162,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1119,6 +1139,7 @@ typedef struct _MIB_ANYCASTIPADDRESS_TABLE { +@@ -1121,6 +1141,7 @@ typedef struct _MIB_ANYCASTIPADDRESS_TABLE { MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE]; } MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE; @@ -170,7 +170,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1150,6 +1171,7 @@ Notes: +@@ -1152,6 +1173,7 @@ Notes: --*/ @@ -178,7 +178,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1181,6 +1203,7 @@ Notes: +@@ -1183,6 +1205,7 @@ Notes: --*/ @@ -186,7 +186,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1215,6 +1238,7 @@ Notes: +@@ -1217,6 +1240,7 @@ Notes: --*/ @@ -194,7 +194,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1278,6 +1302,7 @@ typedef struct _MIB_MULTICASTIPADDRESS_TABLE { +@@ -1280,6 +1304,7 @@ typedef struct _MIB_MULTICASTIPADDRESS_TABLE { MIB_MULTICASTIPADDRESS_ROW Table[ANY_SIZE]; } MIB_MULTICASTIPADDRESS_TABLE, *PMIB_MULTICASTIPADDRESS_TABLE; @@ -202,7 +202,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1312,6 +1337,7 @@ Notes: +@@ -1314,6 +1339,7 @@ Notes: --*/ @@ -210,7 +210,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1416,6 +1442,7 @@ VOID +@@ -1418,6 +1444,7 @@ VOID _In_ MIB_NOTIFICATION_TYPE NotificationType ); @@ -218,7 +218,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1453,6 +1480,7 @@ Notes: +@@ -1455,6 +1482,7 @@ Notes: --*/ @@ -226,7 +226,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1491,6 +1519,7 @@ Notes: +@@ -1493,6 +1521,7 @@ Notes: #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -234,7 +234,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1548,6 +1577,7 @@ Notes: +@@ -1550,6 +1579,7 @@ Notes: #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -242,7 +242,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1590,6 +1620,7 @@ Notes: +@@ -1592,6 +1622,7 @@ Notes: #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -250,7 +250,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1635,6 +1666,7 @@ Notes: +@@ -1637,6 +1668,7 @@ Notes: #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -258,7 +258,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE VOID -@@ -1664,6 +1696,7 @@ Notes: +@@ -1666,6 +1698,7 @@ Notes: --*/ @@ -266,7 +266,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1716,6 +1749,7 @@ Notes: +@@ -1718,6 +1751,7 @@ Notes: --*/ @@ -274,7 +274,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1809,6 +1843,7 @@ typedef struct _MIB_IPPATH_TABLE { +@@ -1811,6 +1845,7 @@ typedef struct _MIB_IPPATH_TABLE { } MIB_IPPATH_TABLE, *PMIB_IPPATH_TABLE; @@ -282,7 +282,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1840,6 +1875,7 @@ Return Value: +@@ -1842,6 +1877,7 @@ Return Value: --*/ @@ -290,7 +290,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1874,6 +1910,7 @@ Notes: +@@ -1876,6 +1912,7 @@ Notes: --*/ @@ -298,7 +298,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1955,6 +1992,7 @@ typedef struct _MIB_IPNET_TABLE2 { +@@ -1957,6 +1994,7 @@ typedef struct _MIB_IPNET_TABLE2 { MIB_IPNET_ROW2 Table[ANY_SIZE]; } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2; @@ -306,7 +306,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -1987,6 +2025,7 @@ Notes: +@@ -1989,6 +2027,7 @@ Notes: --*/ @@ -314,7 +314,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2019,6 +2058,7 @@ Notes: +@@ -2021,6 +2060,7 @@ Notes: --*/ @@ -322,7 +322,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2056,6 +2096,7 @@ Return Value: +@@ -2058,6 +2098,7 @@ Return Value: --*/ @@ -330,7 +330,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2090,6 +2131,7 @@ Notes: +@@ -2092,6 +2133,7 @@ Notes: --*/ @@ -338,7 +338,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2129,6 +2171,7 @@ Notes: +@@ -2131,6 +2173,7 @@ Notes: --*/ @@ -346,7 +346,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2170,6 +2213,7 @@ Notes: +@@ -2172,6 +2215,7 @@ Notes: --*/ @@ -354,7 +354,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2221,6 +2265,7 @@ VOID +@@ -2223,6 +2267,7 @@ VOID _Inout_ MIB_NOTIFICATION_TYPE NotificationType ); @@ -362,7 +362,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2232,6 +2277,7 @@ NotifyTeredoPortChange( +@@ -2234,6 +2279,7 @@ NotifyTeredoPortChange( _Inout_ HANDLE *NotificationHandle ); @@ -370,7 +370,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2279,6 +2325,7 @@ Return Value: +@@ -2281,6 +2327,7 @@ Return Value: #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -378,7 +378,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE NETIOAPI_API -@@ -2308,6 +2355,7 @@ Notes: +@@ -2310,6 +2357,7 @@ Notes: --*/ @@ -386,7 +386,7 @@ index ca51682f..1b598a28 100644 IPHLPAPI_DLL_LINKAGE VOID NETIOAPI_API_ -@@ -2336,6 +2384,7 @@ Return Value: +@@ -2338,6 +2386,7 @@ Return Value: #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -394,7 +394,17 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2457,6 +2506,7 @@ Return Value: +@@ -2405,6 +2454,9 @@ Return Value: + + struct sockaddr; + ++#ifdef __IPHLPAPI_H__ ++_Win32_SupportedOS_WindowsXP_ ++#endif + IPHLPAPI_DLL_LINKAGE + _NETIOAPI_SUCCESS_ + NETIOAPI_API +@@ -2470,6 +2522,7 @@ Return Value: --*/ @@ -402,7 +412,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2485,6 +2535,7 @@ Return Value: +@@ -2498,6 +2551,7 @@ Return Value: --*/ @@ -410,7 +420,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2513,6 +2564,7 @@ Return Value: +@@ -2526,6 +2580,7 @@ Return Value: --*/ @@ -418,7 +428,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2544,6 +2596,7 @@ Return Value: +@@ -2554,6 +2609,7 @@ Return Value: --*/ @@ -426,7 +436,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2575,6 +2628,7 @@ Return Value: +@@ -2585,6 +2641,7 @@ Return Value: --*/ @@ -434,7 +444,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2603,6 +2657,7 @@ Return Value: +@@ -2616,6 +2673,7 @@ Return Value: --*/ @@ -442,7 +452,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2631,6 +2686,7 @@ Return Value: +@@ -2644,6 +2702,7 @@ Return Value: --*/ @@ -450,7 +460,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2662,6 +2718,7 @@ Return Value: +@@ -2672,6 +2731,7 @@ Return Value: --*/ @@ -458,7 +468,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2690,6 +2747,7 @@ Return Value: +@@ -2703,6 +2763,7 @@ Return Value: --*/ @@ -466,7 +476,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2718,6 +2776,7 @@ Return Value: +@@ -2731,6 +2792,7 @@ Return Value: --*/ @@ -474,7 +484,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -2748,6 +2807,7 @@ Return Value: +@@ -2789,6 +2851,7 @@ Return Value: #define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE @@ -482,7 +492,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE NET_IFINDEX -@@ -2771,6 +2831,7 @@ Return Value: +@@ -2812,6 +2875,7 @@ Return Value: --*/ @@ -490,7 +500,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE PCHAR -@@ -3021,6 +3082,7 @@ Return Value: +@@ -3011,6 +3075,7 @@ Permissions: --*/ @@ -498,7 +508,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE NET_IF_COMPARTMENT_ID -@@ -3111,6 +3173,7 @@ Return Value: +@@ -3152,6 +3217,7 @@ Return Value: #pragma warning(pop) @@ -506,7 +516,7 @@ index ca51682f..1b598a28 100644 IPHLPAPI_DLL_LINKAGE NETIOAPI_API ConvertLengthToIpv4Mask( -@@ -3137,6 +3200,7 @@ Return Value: +@@ -3178,6 +3244,7 @@ Return Value: --*/ @@ -514,7 +524,7 @@ index ca51682f..1b598a28 100644 IPHLPAPI_DLL_LINKAGE NETIOAPI_API ConvertIpv4MaskToLength( -@@ -3518,6 +3582,7 @@ Return Value: +@@ -3559,6 +3626,7 @@ Return Value: --*/ @@ -522,7 +532,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -3544,6 +3609,7 @@ Return Value: +@@ -3585,6 +3653,7 @@ Return Value: --*/ @@ -530,7 +540,7 @@ index ca51682f..1b598a28 100644 _IRQL_requires_max_(PASSIVE_LEVEL) IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ -@@ -3582,6 +3648,7 @@ VOID +@@ -3623,6 +3692,7 @@ VOID _In_ NL_NETWORK_CONNECTIVITY_HINT ConnectivityHint ); diff --git a/generation/WinSDK/patches/um/iphlpapi.h.patch b/generation/WinSDK/patches/um/iphlpapi.h.patch index 3fe1574b6..246ed019c 100644 --- a/generation/WinSDK/patches/um/iphlpapi.h.patch +++ b/generation/WinSDK/patches/um/iphlpapi.h.patch @@ -1,7 +1,8 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h +index 3a4ac2c..bf1920e 100644 --- a/um/iphlpapi.h +++ b/um/iphlpapi.h -@@ -18,6 +18,7 @@ +@@ -18,6 +18,7 @@ Abstract: #if _MSC_VER > 1000 #pragma once #endif @@ -9,7 +10,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h #include ////////////////////////////////////////////////////////////////////////////// -@@ -78,6 +79,7 @@ +@@ -78,6 +79,7 @@ extern "C" { // // ////////////////////////////////////////////////////////////////////////////// @@ -17,7 +18,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -93,6 +95,7 @@ +@@ -93,6 +95,7 @@ GetNumberOfInterfaces( // // ////////////////////////////////////////////////////////////////////////////// @@ -25,7 +26,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -106,6 +109,7 @@ +@@ -106,6 +109,7 @@ GetIfEntry( // // ////////////////////////////////////////////////////////////////////////////// @@ -33,7 +34,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -121,6 +125,7 @@ +@@ -121,6 +125,7 @@ GetIfTable( // // ////////////////////////////////////////////////////////////////////////////// @@ -41,7 +42,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -136,6 +141,7 @@ +@@ -136,6 +141,7 @@ GetIpAddrTable( // // ////////////////////////////////////////////////////////////////////////////// @@ -49,7 +50,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -151,6 +157,7 @@ +@@ -151,6 +157,7 @@ GetIpNetTable( // // ////////////////////////////////////////////////////////////////////////////// @@ -57,7 +58,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -172,6 +179,7 @@ +@@ -172,6 +179,7 @@ GetIpForwardTable( #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -65,7 +66,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -181,6 +189,7 @@ +@@ -181,6 +189,7 @@ GetTcpTable( _In_ BOOL Order ); @@ -73,7 +74,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -211,13 +220,14 @@ +@@ -211,13 +220,14 @@ GetExtendedTcpTable( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -89,7 +90,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h _Inout_ PDWORD pdwSize ); -@@ -227,6 +237,7 @@ +@@ -227,6 +237,7 @@ GetOwnerModuleFromTcpEntry( #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -97,7 +98,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -236,6 +247,7 @@ +@@ -236,6 +247,7 @@ GetUdpTable( _In_ BOOL Order ); @@ -105,7 +106,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -254,17 +266,19 @@ +@@ -254,17 +266,19 @@ GetExtendedUdpTable( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -126,7 +127,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -287,7 +301,7 @@ +@@ -287,7 +301,7 @@ GetTcpTable2( // DWORD @@ -135,7 +136,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h _Outptr_ PVOID *ppTcpTable, _In_ BOOL bOrder, _In_ HANDLE hHeap, -@@ -296,7 +310,7 @@ +@@ -296,7 +310,7 @@ AllocateAndGetTcpExTableFromStack( ); DWORD @@ -144,7 +145,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h _Outptr_ PVOID *ppUdpTable, _In_ BOOL bOrder, _In_ HANDLE hHeap, -@@ -318,6 +332,7 @@ +@@ -318,6 +332,7 @@ AllocateAndGetUdpExTableFromStack( // #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -152,7 +153,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -327,6 +342,7 @@ +@@ -327,6 +342,7 @@ GetTcp6Table( _In_ BOOL Order ); @@ -160,7 +161,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -340,6 +356,7 @@ +@@ -340,6 +356,7 @@ GetTcp6Table2( #ifdef WINAPI @@ -168,7 +169,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -357,6 +374,7 @@ +@@ -357,6 +374,7 @@ GetPerTcpConnectionEStats( _In_ ULONG RodSize ); @@ -176,7 +177,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -371,6 +389,7 @@ +@@ -371,6 +389,7 @@ SetPerTcpConnectionEStats( #ifdef _WS2IPDEF_ @@ -184,7 +185,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -388,6 +407,7 @@ +@@ -388,6 +407,7 @@ GetPerTcp6ConnectionEStats( _In_ ULONG RodSize ); @@ -192,7 +193,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -404,16 +424,18 @@ +@@ -404,16 +424,18 @@ SetPerTcp6ConnectionEStats( #endif // WINAPI @@ -212,7 +213,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -423,13 +445,14 @@ +@@ -423,13 +445,14 @@ GetUdp6Table( _In_ BOOL Order ); @@ -228,7 +229,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h _Inout_ PDWORD pdwSize ); -@@ -455,6 +478,7 @@ +@@ -455,6 +478,7 @@ GetOwnerModuleFromPidAndInfo( ////////////////////////////////////////////////////////////////////////////// #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -236,7 +237,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -470,6 +494,7 @@ +@@ -470,6 +494,7 @@ GetIpStatistics( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -244,7 +245,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -485,6 +510,7 @@ +@@ -485,6 +510,7 @@ GetIcmpStatistics( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -252,7 +253,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -492,6 +518,7 @@ +@@ -492,6 +518,7 @@ GetTcpStatistics( _Out_ PMIB_TCPSTATS Statistics ); @@ -260,7 +261,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -501,6 +528,7 @@ +@@ -501,6 +528,7 @@ GetUdpStatistics( #endif #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -268,7 +269,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -517,6 +545,7 @@ +@@ -517,6 +545,7 @@ SetIpStatisticsEx( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -276,7 +277,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -525,6 +554,7 @@ +@@ -525,6 +554,7 @@ GetIpStatisticsEx( _In_ ULONG Family ); @@ -284,7 +285,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -533,6 +563,7 @@ +@@ -533,6 +563,7 @@ GetIcmpStatisticsEx( _In_ ULONG Family ); @@ -292,7 +293,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -541,6 +572,7 @@ +@@ -541,6 +572,7 @@ GetTcpStatisticsEx( _In_ ULONG Family ); @@ -300,7 +301,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -551,6 +583,7 @@ +@@ -551,6 +583,7 @@ GetUdpStatisticsEx( #endif #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) @@ -308,7 +309,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -559,6 +592,7 @@ +@@ -559,6 +592,7 @@ GetTcpStatisticsEx2( _In_ ULONG Family ); @@ -316,7 +317,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -583,6 +617,7 @@ +@@ -583,6 +617,7 @@ GetUdpStatisticsEx2( // // ////////////////////////////////////////////////////////////////////////////// @@ -324,7 +325,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -600,6 +635,7 @@ +@@ -600,6 +635,7 @@ SetIfEntry( // // ////////////////////////////////////////////////////////////////////////////// @@ -332,7 +333,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -607,6 +643,7 @@ +@@ -607,6 +643,7 @@ CreateIpForwardEntry( _In_ PMIB_IPFORWARDROW pRoute ); @@ -340,7 +341,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -614,6 +651,7 @@ +@@ -614,6 +651,7 @@ SetIpForwardEntry( _In_ PMIB_IPFORWARDROW pRoute ); @@ -348,7 +349,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -632,6 +670,7 @@ +@@ -632,6 +670,7 @@ DeleteIpForwardEntry( ////////////////////////////////////////////////////////////////////////////// #if (NTDDI_VERSION >= NTDDI_WIN2K) @@ -356,7 +357,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -646,6 +685,7 @@ +@@ -646,6 +685,7 @@ SetIpStatistics( // // ////////////////////////////////////////////////////////////////////////////// @@ -364,7 +365,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -661,6 +701,7 @@ +@@ -661,6 +701,7 @@ SetIpTTL( // // ////////////////////////////////////////////////////////////////////////////// @@ -372,7 +373,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -668,6 +709,7 @@ +@@ -668,6 +709,7 @@ CreateIpNetEntry( _In_ PMIB_IPNETROW pArpEntry ); @@ -380,7 +381,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -675,6 +717,7 @@ +@@ -675,6 +717,7 @@ SetIpNetEntry( _In_ PMIB_IPNETROW pArpEntry ); @@ -388,7 +389,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -682,6 +725,7 @@ +@@ -682,6 +725,7 @@ DeleteIpNetEntry( _In_ PMIB_IPNETROW pArpEntry ); @@ -396,7 +397,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -698,6 +742,7 @@ +@@ -698,6 +742,7 @@ FlushIpNetTable( // // ////////////////////////////////////////////////////////////////////////////// @@ -404,7 +405,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -707,6 +752,7 @@ +@@ -707,6 +752,7 @@ CreateProxyArpEntry( _In_ DWORD dwIfIndex ); @@ -412,7 +413,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -724,6 +770,7 @@ +@@ -724,6 +770,7 @@ DeleteProxyArpEntry( // // ////////////////////////////////////////////////////////////////////////////// @@ -420,7 +421,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -731,6 +778,7 @@ +@@ -731,6 +778,7 @@ SetTcpEntry( _In_ PMIB_TCPROW pTcpRow ); @@ -428,7 +429,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -751,6 +799,7 @@ +@@ -751,6 +799,7 @@ GetUniDirectionalAdapterInfo( #ifndef NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED #define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED @@ -436,7 +437,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -771,6 +820,7 @@ +@@ -771,6 +820,7 @@ NhpAllocateAndGetInterfaceInfoFromStack( // // ////////////////////////////////////////////////////////////////////////////// @@ -444,15 +445,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -787,6 +837,7 @@ - - #pragma warning(push) - #pragma warning(disable:4115) -+_Win32_SupportedOS_WindowsXP_ - IPHLPAPI_DLL_LINKAGE - DWORD - WINAPI -@@ -812,6 +863,7 @@ +@@ -795,6 +845,7 @@ GetBestInterface( // // ////////////////////////////////////////////////////////////////////////////// @@ -460,7 +453,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -821,6 +873,7 @@ +@@ -804,6 +855,7 @@ GetBestRoute( _Out_ PMIB_IPFORWARDROW pBestRoute ); @@ -468,7 +461,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -829,6 +882,7 @@ +@@ -812,6 +864,7 @@ NotifyAddrChange( _In_ LPOVERLAPPED overlapped ); @@ -476,7 +469,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -837,6 +891,7 @@ +@@ -820,6 +873,7 @@ NotifyRouteChange( _In_ LPOVERLAPPED overlapped ); @@ -484,7 +477,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE BOOL WINAPI -@@ -844,6 +899,7 @@ +@@ -827,6 +881,7 @@ CancelIPChangeNotify( _In_ LPOVERLAPPED notifyOverlapped ); @@ -492,7 +485,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -852,6 +908,7 @@ +@@ -835,6 +890,7 @@ GetAdapterIndex( _Inout_ PULONG IfIndex ); @@ -500,7 +493,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -863,6 +920,7 @@ +@@ -846,6 +902,7 @@ AddIPAddress( _Out_ PULONG NTEInstance ); @@ -508,7 +501,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -877,6 +935,8 @@ +@@ -860,6 +917,8 @@ DeleteIPAddress( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) #if (NTDDI_VERSION >= NTDDI_WIN2KSP1) @@ -517,7 +510,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -892,14 +952,16 @@ +@@ -875,14 +934,16 @@ GetNetworkParams( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -535,7 +528,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE PIP_ADAPTER_ORDER_MAP WINAPI -@@ -920,26 +982,28 @@ +@@ -903,26 +964,28 @@ GetAdapterOrderMap( // The following functions require Winsock2. // @@ -567,7 +560,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h _Inout_ PULONG pOutBufLen ); #endif -@@ -991,6 +1055,9 @@ +@@ -974,6 +1037,9 @@ typedef struct _INTERFACE_HARDWARE_CROSSTIMESTAMP } INTERFACE_HARDWARE_CROSSTIMESTAMP, *PINTERFACE_HARDWARE_CROSSTIMESTAMP; DECLARE_HANDLE(HIFTIMESTAMPCHANGE); @@ -577,7 +570,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD -@@ -1032,7 +1099,7 @@ +@@ -1015,7 +1081,7 @@ WINAPI RegisterInterfaceTimestampConfigChange( _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, _In_opt_ PVOID CallerContext, @@ -586,7 +579,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h ); IPHLPAPI_DLL_LINKAGE -@@ -1064,7 +1131,7 @@ +@@ -1047,7 +1113,7 @@ WINAPI NotifyIfTimestampConfigChange( _In_opt_ PVOID CallerContext, _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, @@ -595,7 +588,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h ); IPHLPAPI_DLL_LINKAGE -@@ -1119,6 +1186,9 @@ +@@ -1102,6 +1168,9 @@ typedef struct _INTERFACE_HARDWARE_CROSSTIMESTAMP } INTERFACE_HARDWARE_CROSSTIMESTAMP, *PINTERFACE_HARDWARE_CROSSTIMESTAMP; DECLARE_HANDLE(HIFTIMESTAMPCHANGE); @@ -605,7 +598,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD -@@ -1160,7 +1230,7 @@ +@@ -1143,7 +1212,7 @@ WINAPI NotifyIfTimestampConfigChange( _In_opt_ PVOID CallerContext, _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, @@ -614,7 +607,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h ); IPHLPAPI_DLL_LINKAGE -@@ -1178,6 +1248,7 @@ +@@ -1161,6 +1230,7 @@ CancelIfTimestampConfigChange( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -622,7 +615,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1185,6 +1256,7 @@ +@@ -1168,6 +1238,7 @@ IpReleaseAddress( _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo ); @@ -630,7 +623,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1192,6 +1264,7 @@ +@@ -1175,6 +1246,7 @@ IpRenewAddress( _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo ); @@ -638,7 +631,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1202,6 +1275,8 @@ +@@ -1185,6 +1257,8 @@ SendARP( _Inout_ PULONG PhyAddrLen ); @@ -647,7 +640,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE BOOL WINAPI -@@ -1212,6 +1287,7 @@ +@@ -1195,6 +1269,7 @@ GetRTTAndHopCount( _Out_ PULONG RTT ); @@ -655,7 +648,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1219,6 +1295,7 @@ +@@ -1202,6 +1277,7 @@ GetFriendlyIfIndex( _In_ DWORD IfIndex ); @@ -663,7 +656,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1227,6 +1304,7 @@ +@@ -1210,6 +1286,7 @@ EnableRouter( _Out_ OVERLAPPED* pOverlapped ); @@ -671,7 +664,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1235,6 +1313,7 @@ +@@ -1218,6 +1295,7 @@ UnenableRouter( _Out_opt_ LPDWORD lpdwEnableCount ); @@ -679,7 +672,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1243,6 +1322,7 @@ +@@ -1226,6 +1304,7 @@ DisableMediaSense( _In_ OVERLAPPED *pOverLapped ); @@ -687,7 +680,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1253,6 +1333,7 @@ +@@ -1236,6 +1315,7 @@ RestoreMediaSense( #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -695,7 +688,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1264,6 +1345,7 @@ +@@ -1247,6 +1327,7 @@ GetIpErrorString( #if (NTDDI_VERSION >= NTDDI_VISTA) #ifdef _WS2DEF_ @@ -703,7 +696,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1279,6 +1361,7 @@ +@@ -1262,6 +1343,7 @@ ResolveNeighbor( // Port reservation API routines. // @@ -711,7 +704,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1288,6 +1371,7 @@ +@@ -1271,6 +1353,7 @@ CreatePersistentTcpPortReservation( _Out_ PULONG64 Token ); @@ -719,7 +712,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1297,6 +1381,7 @@ +@@ -1280,6 +1363,7 @@ CreatePersistentUdpPortReservation( _Out_ PULONG64 Token ); @@ -727,7 +720,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1305,6 +1390,7 @@ +@@ -1288,6 +1372,7 @@ DeletePersistentTcpPortReservation( _In_ USHORT NumberOfPorts ); @@ -735,7 +728,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1313,6 +1399,7 @@ +@@ -1296,6 +1381,7 @@ DeletePersistentUdpPortReservation( _In_ USHORT NumberOfPorts ); @@ -743,7 +736,7 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1322,6 +1409,7 @@ +@@ -1305,6 +1391,7 @@ LookupPersistentTcpPortReservation( _Out_ PULONG64 Token ); @@ -751,9 +744,9 @@ diff --git a/um/iphlpapi.h b/um/iphlpapi.h IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1427,6 +1515,7 @@ +@@ -1415,6 +1502,7 @@ typedef struct NET_ADDRESS_INFO_ - } NET_ADDRESS_INFO, *PNET_ADDRESS_INFO; + #pragma warning(pop) // 4201 nonstandard extension used: nameless struct/union +_Win32_SupportedOS_WindowsVista_ IPHLPAPI_DLL_LINKAGE From 3eed94a278d3782578a79e97f928cf7915cc2b31 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 09:14:45 -0700 Subject: [PATCH 46/57] Align header-only SDK preparation with published tooling Project existing enum Flags through original IDL metadata comments and pin the admitted SDK mirror/helper to the supported published toolchain. Separate complete generation and normal CI gates from recorded migration differences. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/copilot/header-annotation-decisions.md | 24 ++++++++++++- .../header-annotation-migration-playbook.md | 22 ++++++++++-- generation/WinSDK/patches/SdkHeaders.json | 4 +-- .../WinSDK/patches/shared/wtypes.idl.patch | 36 ++++--------------- 4 files changed, 50 insertions(+), 36 deletions(-) diff --git a/docs/copilot/header-annotation-decisions.md b/docs/copilot/header-annotation-decisions.md index c281823d4..cd91f7e90 100644 --- a/docs/copilot/header-annotation-decisions.md +++ b/docs/copilot/header-annotation-decisions.md @@ -1,6 +1,6 @@ # Header annotation migration: problems and decisions -Updated: 2026-10-23 (UTC). +Updated: 2026-10-24 (UTC). This is the running record of migration blockers, their evidence, and the decisions made while resolving them. The goal is to express win32metadata's intended API @@ -8,6 +8,28 @@ metadata faithfully in the selected SDK's original headers and IDL. A zero-diffe OLD-to-NEW WinMD is not a goal. Breaking changes and unexplained differences remain visible for review. +## Full generation and green PR gates + +Produce the complete ordinary SDK image and its unfiltered same-SDK OLD-to-NEW +comparison using one coherent published toolchain and prepared-header identity. +Do not wait for individual native or physical investigations, projected-storage +changes, or character-projection fixes before running the full scrape, constant +extraction, manual-source composition, and emission. + +Both stacked PRs must pass their exact-head normal CI gates. Parser, compiler, +emitter, integrity, and regression-test failures remain blocking and require +repairs. Do not disable jobs, blanket-skip tests, suppress diagnostics, or report +an incomplete image as successful. + +Keep the migration-difference report separate from those build gates. Known +`PSTR` versus `CHAR*` projection and `VARENUM` storage differences are nonblocking +follow-up findings for image production; they are not equality or qualified +compatibility. Preserve the full raw differences and independent Const, import, +flag, and parameter-sequence evidence. Retain native, SAL, and coverage findings +without turning each investigation into a prerequisite for the next full image. +After establishing green normal CI, make further repairs with focused regression +coverage and a fresh normal CI run. + ## Completion plan and next review The next run follows a reviewed repair of the header-only source migration. diff --git a/docs/copilot/plans/header-annotation-migration-playbook.md b/docs/copilot/plans/header-annotation-migration-playbook.md index ef848a02d..90bddaf01 100644 --- a/docs/copilot/plans/header-annotation-migration-playbook.md +++ b/docs/copilot/plans/header-annotation-migration-playbook.md @@ -395,6 +395,21 @@ ran. Do not treat an old output's existence as a result. ## Grade differences, not expectations +Produce a complete ordinary SDK image and the unfiltered same-SDK OLD-to-NEW +comparison before requiring individual migration-difference investigations. +Use one coherent published toolchain, recipe, and prepared-header identity. +Keep both stacked PRs green on their exact-head normal CI gates. Parser, +compiler, emitter, integrity, and genuine regression-test failures still block; +fix them without disabling jobs, blanket-skipping tests, or suppressing diagnostics. + +Known projection and metadata-storage differences, including `PSTR` versus +`CHAR*` and `VARENUM`, remain visible nonblocking follow-ups for image production. +They are not equality, acceptance, or permission to alter native contracts. +Preserve raw comparison rows and separate Const, import, flag, and +parameter-sequence checks. Native, SAL, and coverage investigations continue +without becoming serial prerequisites for full generation. Each subsequent +repair needs focused regression coverage and fresh normal CI. + Native storage plus `AssociatedEnum` and canonical result preservation are intentional representation changes, not blanket waivers. Review the exact affected sites and physical facts for each candidate. A known category does not authorize @@ -402,9 +417,10 @@ an arbitrary new API, enum member, signature change, floor, or missing annotatio Do not create checked-in expected-difference files, normalize away raw output, invent aliases, or weaken OLD snapshots to obtain a pass. -When an integration candidate is blocked, retain its failing image, raw comparison, -native/MIDL logs, and minimal reproducer. Keep its affected acceptance facts blocked -rather than calling the whole partition migrated. Continue drafting other originals. +When an integration candidate has unresolved differences, retain its image, raw +comparison, native/MIDL logs, and minimal reproducer. Keep its affected acceptance +facts open rather than calling the whole partition migrated. Continue full +generation and drafting other originals. Fix a shared parser issue once in the tooling lane, requalify its pin, then rerun the affected combined candidate. diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index cb8805419..d372c4234 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "sdkPackageVersion": "10.0.28000.2705", "sourceStage": "post-midl", - "sourceGitTree": "e9b175f05749125349ecb42f72fc01cf3da49425", + "sourceGitTree": "4dd741bb691ea30f83ac09d56c836201b63dd442", "headers": [ { "path": "um\\winnt.h", @@ -6953,7 +6953,7 @@ }, { "path": "shared\\win32metadata_annotations.h", - "sourceSha256": "8654A090389AC88792F40FDEEBB9B298F2C8427136BB0D1B5E39E90D70D48B5D" + "sourceSha256": "CCF58C367C6CA06844126D14FE6D0C478C26E5DF1191793082BC3358AFCAF959" }, { "path": "um\\activdbg.idl", diff --git a/generation/WinSDK/patches/shared/wtypes.idl.patch b/generation/WinSDK/patches/shared/wtypes.idl.patch index 0a9e0b0e2..5192929fe 100644 --- a/generation/WinSDK/patches/shared/wtypes.idl.patch +++ b/generation/WinSDK/patches/shared/wtypes.idl.patch @@ -1,5 +1,5 @@ diff --git a/shared/wtypes.idl b/shared/wtypes.idl -index 075e85e4..7dc8213b 100644 +index 7f4a102f3..6cc54ff1e 100644 --- a/shared/wtypes.idl +++ b/shared/wtypes.idl @@ -153,7 +153,8 @@ @@ -21,7 +21,7 @@ index 075e85e4..7dc8213b 100644 // Maximum size of comparison buffer for IROTData::GetComparisonData cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") -@@ -334,11 +338,19 @@ typedef enum tagDVASPECT +@@ -334,11 +338,17 @@ typedef enum tagDVASPECT DVASPECT_ICON = 4, DVASPECT_DOCPRINT = 8 } DVASPECT; @@ -35,23 +35,11 @@ index 075e85e4..7dc8213b 100644 /* Storage commit types */ -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") -+cpp_quote("#pragma clang attribute push (__attribute__((flag_enum)), apply_to = enum)") -+cpp_quote("#endif") ++cpp_quote("/* Win32Metadata: enum ::tagSTGC => Flags */") typedef enum tagSTGC { STGC_DEFAULT = 0, -@@ -347,6 +359,9 @@ typedef enum tagSTGC - STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4, - STGC_CONSOLIDATE = 8 - } STGC; -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") -+cpp_quote("#pragma clang attribute pop") -+cpp_quote("#endif") - - - typedef enum tagSTGMOVE -@@ -724,11 +739,13 @@ +@@ -724,11 +734,13 @@ cpp_quote("#else // _PREFAST_") cpp_quote("typedef _Null_terminated_ OLECHAR *BSTR;") cpp_quote("#endif") @@ -65,23 +53,11 @@ index 075e85e4..7dc8213b 100644 cpp_quote("/* The BSTRBLOB structure is used by some implementations */") cpp_quote("/* of the IPropertyStorage interface when marshaling BSTRs */") cpp_quote("/* on systems which don't support BSTR marshaling. */") -@@ -824,6 +841,9 @@ cpp_quote(" * VT_BYREF [V] void* for local use") +@@ -824,6 +836,7 @@ cpp_quote(" * VT_BYREF [V] void* for local use") cpp_quote(" * VT_BSTR_BLOB Reserved for system use") cpp_quote(" */") -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") -+cpp_quote("#pragma clang attribute push (__attribute__((flag_enum)), apply_to = enum)") -+cpp_quote("#endif") ++cpp_quote("/* Win32Metadata: enum ::VARENUM => Flags */") enum VARENUM { VT_EMPTY = 0, -@@ -885,6 +905,9 @@ enum VARENUM - VT_ILLEGALMASKED = 0x0fff, - VT_TYPEMASK = 0x0fff - }; -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") -+cpp_quote("#pragma clang attribute pop") -+cpp_quote("#endif") - - - // Property stuff From c38adcf9daa28038ad53ec94c8cc2ce1c604a6ae Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 09:45:16 -0700 Subject: [PATCH 47/57] Account for unavailable SDK originals without claiming migration completion Keep the exact30 historical source-blocked metadata units in a report-only inventory bound to selected SDK28000. Replace unconditional source-completion assertions with exact deferred/unqualified accounting, preserve sidecar-absence and generated-header ownership guards, and reject missing/changed facts or false coverage claims. Keep historical strict physical controls unchanged and correct report/documentation preservation wording. Refresh the migration fixture's published shared-helper pin. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- docs/copilot/header-annotation-decisions.md | 15 +- docs/header-annotation-migration-playbook.md | 42 ++-- scripts/Get-SdkAnnotationCoverage.py | 56 +++++- .../SourceBlockedMetadata.json | 82 ++++++++ .../test_coverage.py | 55 ++++++ .../SdkComponentMigrationTests.cs | 17 +- .../WinHttpMigrationTests.cs | 184 +++++++++++++----- 7 files changed, 376 insertions(+), 75 deletions(-) create mode 100644 tests/SdkAnnotationCoverage.Tests/SourceBlockedMetadata.json diff --git a/docs/copilot/header-annotation-decisions.md b/docs/copilot/header-annotation-decisions.md index cd91f7e90..af2bbce0a 100644 --- a/docs/copilot/header-annotation-decisions.md +++ b/docs/copilot/header-annotation-decisions.md @@ -30,6 +30,15 @@ without turning each investigation into a prerequisite for the next full image. After establishing green normal CI, make further repairs with focused regression coverage and a fresh normal CI run. +For original IDL unavailable in the shipped SDK, ordinary tests enforce exact +deferred-fact accounting rather than unconditional migration completion. The +report-only `tests\SdkAnnotationCoverage.Tests\SourceBlockedMetadata.json` ledger +retains all 30 historical units: 26 availability values, three associations and +`IdentityUpdateEvent` Flags. It supplies no emitter input or semantic fallback. +Missing entries, altered values, generated-header patches and false coverage or +preservation claims remain failures. Current physical projection is unqualified; +raw losses remain visible in the bulk comparison. + ## Completion plan and next review The next run follows a reviewed repair of the header-only source migration. @@ -88,8 +97,10 @@ unchanged preparation test fails with MIDL9008 beneath the long session-artifact prefix and passes beneath `artifacts\t-002`; no preparation success policy or fixture spaces/quoting is changed. Source-state tests inspect effective global plus partition annotation settings and source-owned facts, not retired sidecar -rows. Retiring a row does not prove source coverage: missing original-IDL floors -and native associations remain explicit test failures, not accepted baselines. +rows. Retiring a row does not prove source coverage. Missing original-IDL floors, +native associations and Flags remain exactly inventoried, deferred and +unqualified; ordinary accounting regressions reject unaccounted changes or false +coverage claims without making incomplete migration a generation prerequisite. The manual-type inventory exposed replacement-era exclusions that survived deletion of their handwritten providers. The frozen source packet retires ten diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index b8686d83c..aa9fd2d58 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -1501,9 +1501,9 @@ remains unverified. ## Resumed original-artifact preflight and source-blocked residuals -The selected SDK's generated banners and all 930 shipped IDL files were checked -before resuming authoring. Seven previously patched headers are MIDL-generated -but their owning IDL and interface declarations are not present in that SDK: +The historical SDK26100 preflight checked generated banners and all 930 shipped +IDL files before resuming authoring. Seven previously patched headers are +MIDL-generated but their owning IDL and interface declarations were not present: `iwscapi.h`, `winsatcominterfacei.h`, `locationapi.h`, `WcnDevice.h`, `IdentityProvider.h`, `IdentityStore.h` and `rendezvoussession.h`. A shipped generated header is a consumption artifact, not an authored C/C++ @@ -1512,12 +1512,32 @@ source merely because its filename ends in `.h`. These seven migrations are **source-blocked**, not accepted header-only migrations and not removed APIs. Their historical generated-header patches and images remain immutable controls; the seven patches are removed from the active -recipe. Their exact existing legacy contracts remain: 26 availability rows, -three associations and the IdentityUpdateEvent flags setting. No declaration, +recipe. The frozen SDK26100 controls retained 26 availability rows, three +associations and the IdentityUpdateEvent flags setting. That is historical +preservation evidence, not a current SDK28000 preservation claim. No declaration, floor, native alias or replacement authoring source is invented. Natural SDK SAL/MIDL facts may still be read from unchanged consumption headers; that does not authorize annotating the generated files. +The selected SDK28000 package `10.0.28000.2705` was separately checked across all +932 shipped IDL contents. None of the 47 interface probes below or the two +`IdentityUpdateEvent`/`tag_IdentityUpdateEvent` probes occurs. The package archive +SHA256 is `A74CA8F9AF98BD61925D9E2932AD98F746306123167B8F0BBA99CD9EA9F03807`; +the content-probe receipt SHA256 is +`9333E1407910D8EE961DEC3BC3BDBA53C472F0666BC1F5DD6C99A08CAC7554EB`. + +Current source-blocked accounting uses the report-only +`tests\SdkAnnotationCoverage.Tests\SourceBlockedMetadata.json` inventory. All 30 +historical identities and values remain deferred and unqualified. No current +availability, association or Flags preservation is inferred from removing +sidecars. `Get-SdkAnnotationCoverage.py` reports deferred facts rather than +`preservedLegacyFacts`; it supplies no semantic fallback or completed migration +credit. Always-running accounting checks reject deleted or changed entries and +false coverage claims, retain sidecar-absence and no-generated-header-patch +checks, and leave current raw losses visible for bulk grading. Incomplete +migration is nonblocking for image production; genuine parser, compiler, emitter, +integrity and regression failures remain blocking. + ### Original-source request inventory The following exact lookup targets were checked across all 930 IDL files in @@ -1525,8 +1545,8 @@ SDK package `10.0.26100.7705`, include version `10.0.26100.0`. None of the 47 interface names or seven filename probes matched. The IDL filenames below are search terms, not reconstructed source artifacts or proof of their original authoring filenames. Use the shipped header and its interface names when -requesting the matching original SDK source; preserve its legacy metadata until -that source is available and qualified. +requesting the matching original SDK source. Current deferred accounting does +not restore sidecars or claim physical preservation while that source is absent. | Shipped generated header | IDL filename probe | Exact interface-name probes | | --- | --- | --- | @@ -1548,12 +1568,12 @@ ddpbackup, NotificationActivationCallback and wsbapp reuse grouped interface carriers and ordinary SAL includes, without copying declarations or adding a per-API annotation-header include. -`SourceBlockedArtifactsRetainEveryLegacyPhysicalFact` checks the retained facts -on x86, x64 and ARM64: all 26 original availability values, all three association +The unchanged historical `SourceBlockedArtifactsRetainEveryLegacyPhysicalFact` +control checks retained facts on x86, x64 and ARM64: all 26 original availability values, all three association values and their unchanged native signatures/parameter flags, and the complete IdentityUpdateEvent enum including its Flags payload. This also covers the mixed -SecurityCenter owner; admitting authored Wsc functions must not discard IWsc -metadata. These checks do not suppress independently captured native retval facts. +SecurityCenter owner. These strict frozen controls are not current-image +qualification and do not suppress independently captured native retval facts. These are source classifications and bounded authoring inputs only. Updated qualified tooling, common native/MIDL SAL bootstrap, measured input/including-IDL diff --git a/scripts/Get-SdkAnnotationCoverage.py b/scripts/Get-SdkAnnotationCoverage.py index cb4ba8e0f..c57ef6142 100644 --- a/scripts/Get-SdkAnnotationCoverage.py +++ b/scripts/Get-SdkAnnotationCoverage.py @@ -26,6 +26,8 @@ r"um\wcndevice.h", r"um\identityprovider.h", r"um\identitystore.h", r"um\rendezvoussession.h", } +SOURCE_BLOCKED_INVENTORY = Path("tests") / "SdkAnnotationCoverage.Tests" / "SourceBlockedMetadata.json" +SOURCE_BLOCKED_FACTS_SHA256 = "10BE7F9BFB824E520619172A0462210C9B2A7A045967F85331E4A421218B6C3D" DEVICE_RESERVED = { r"um\cfgmgr32.h", r"um\newdev.h", r"um\winusb.h", r"um\swdevice.h", } @@ -34,6 +36,51 @@ GENERATED = re.compile(r"File created by MIDL compiler|ALWAYS GENERATED file|automatically generated from [^\r\n]*\.idl", re.I) +def source_blocked_accounting(inventory, sdk_package_version): + if set(inventory) != { + "schemaVersion", "sdkPackageVersion", "sdkArchiveSha256", + "sourceState", "migrationState", "currentProjectionState", "headers", + } or type(inventory["schemaVersion"]) is not int or inventory["schemaVersion"] != 1: + raise ValueError("Source-blocked accounting has an invalid schema or an unreviewed coverage claim") + if inventory["sdkPackageVersion"] != sdk_package_version or sdk_package_version != "10.0.28000.2705": + raise ValueError("Source-blocked accounting does not bind the selected SDK") + if inventory["sdkArchiveSha256"] != "A74CA8F9AF98BD61925D9E2932AD98F746306123167B8F0BBA99CD9EA9F03807": + raise ValueError("Source-blocked accounting does not bind the reviewed shipped archive") + if (inventory["sourceState"], inventory["migrationState"], inventory["currentProjectionState"]) != ( + "original-unavailable", "deferred-unqualified", "unqualified", + ): + raise ValueError("Source-blocked facts cannot claim source coverage or current projection preservation") + headers, rows, facts = [], [], [] + for header in inventory["headers"]: + if set(header) != {"path", "sha256", "facts"} or not re.fullmatch(r"[0-9A-F]{64}", header["sha256"]): + raise ValueError("Source-blocked header identity changed") + path = header["path"].lower() + headers.append(path) + for fact in header["facts"]: + if set(fact) != {"category", "target", "value"} or not all( + isinstance(value, str) and value for value in fact.values() + ): + raise ValueError("Source-blocked fact identity or coverage claim changed") + rows.append("|".join((path, header["sha256"], fact["category"], fact["target"], fact["value"]))) + facts.append({"header": path, **fact, "state": "deferred-unqualified", "currentPhysicalProjection": None}) + if len(headers) != len(SOURCE_BLOCKED) or set(headers) != SOURCE_BLOCKED: + raise ValueError("Source-blocked header accounting is incomplete or duplicated") + digest = hashlib.sha256("\n".join(sorted(rows)).encode("utf-8")).hexdigest().upper() + if digest != SOURCE_BLOCKED_FACTS_SHA256: + raise ValueError("Source-blocked historical facts changed, disappeared or were duplicated") + counts = Counter(fact["category"] for fact in facts) + return { + "headers": sorted(headers), "deferredLegacyFacts": len(facts), + "state": "source-blocked/deferred-unqualified", "currentProjectionState": "unqualified", + "availability": counts["supportedOS"], "associatedEnumUses": counts["associated-enum-use"], + "enumFlags": counts["enum-flags"], "currentPreservationClaimed": False, + "sdkPackageVersion": sdk_package_version, "sdkArchiveSha256": inventory["sdkArchiveSha256"], + "inventory": str(SOURCE_BLOCKED_INVENTORY).replace("/", "\\"), + "facts": sorted(facts, key=lambda fact: (fact["header"], fact["category"], fact["target"])), + "basis": "Exact historical units and reviewed selected-SDK source unavailability; no current physical preservation or completed migration is established.", + } + + def text(path): data = Path(path).read_bytes() if data.startswith((b"\xff\xfe", b"\xfe\xff")): @@ -1092,12 +1139,9 @@ def map_fact(fact): for path in mirror_files if relative(path, project / "RecompiledIdlHeaders").lower() not in sdk_files ) report["manualSources"] = manual - report["missingOriginalSourceMigrations"] = { - "headers": sorted(SOURCE_BLOCKED), "preservedLegacyFacts": 30, - "state": "missing-source/global-tooling-exception", - "availability": 26, "associatedEnumUses": 3, "enumFlags": 1, - "basis": "Frozen ledger and docs/header-annotation-migration-playbook.md original-source request inventory; IDL filename probes are not invented original filenames.", - } + report["missingOriginalSourceMigrations"] = source_blocked_accounting( + json.loads(text(repo / SOURCE_BLOCKED_INVENTORY)), report["snapshot"]["sdkPackageVersion"] + ) report["intentionalRemovals"] = { "policy": "Agile is intentionally jettisoned, not migrated into headers.", "stillConfiguredRules": [fact for fact in current_facts if fact["treatment"] == "intentional-removal"], diff --git a/tests/SdkAnnotationCoverage.Tests/SourceBlockedMetadata.json b/tests/SdkAnnotationCoverage.Tests/SourceBlockedMetadata.json new file mode 100644 index 000000000..dd492696f --- /dev/null +++ b/tests/SdkAnnotationCoverage.Tests/SourceBlockedMetadata.json @@ -0,0 +1,82 @@ +{ + "schemaVersion": 1, + "sdkPackageVersion": "10.0.28000.2705", + "sdkArchiveSha256": "A74CA8F9AF98BD61925D9E2932AD98F746306123167B8F0BBA99CD9EA9F03807", + "sourceState": "original-unavailable", + "migrationState": "deferred-unqualified", + "currentProjectionState": "unqualified", + "headers": [ + { + "path": "um\\IdentityProvider.h", + "sha256": "24A3462C7B117F8D3C59382E0F94F911FF764C20182936EF2CDCA5EF9D7E77BE", + "facts": [ + { "category": "supportedOS", "target": "IAssociatedIdentityProvider", "value": "windows6.1" }, + { "category": "supportedOS", "target": "IConnectedIdentityProvider", "value": "windows8.0" }, + { "category": "supportedOS", "target": "IIdentityAdvise", "value": "windows6.1" }, + { "category": "supportedOS", "target": "IIdentityProvider", "value": "windows6.1" }, + { "category": "associated-enum-use", "target": "IIdentityAdvise::IdentityUpdated::dwIdentityUpdateEvents", "value": "IdentityUpdateEvent" }, + { "category": "associated-enum-use", "target": "IIdentityProvider::Advise::dwIdentityUpdateEvents", "value": "IdentityUpdateEvent" }, + { "category": "enum-flags", "target": "IdentityUpdateEvent", "value": "Flags" } + ] + }, + { + "path": "um\\IdentityStore.h", + "sha256": "EE96A96BA3DA324BC971E272DB518AC2B4808D6A452A3444E438CDCC22816774", + "facts": [ + { "category": "supportedOS", "target": "IIdentityStore", "value": "windows6.1" } + ] + }, + { + "path": "um\\iwscapi.h", + "sha256": "FA56628E0426D07A7E5CC93E0F0D09821C805D4519B28BAF11B03EE8BA6AA0F8", + "facts": [ + { "category": "supportedOS", "target": "IWscProduct", "value": "windows8.0" }, + { "category": "supportedOS", "target": "IWSCProductList", "value": "windows8.0" }, + { "category": "associated-enum-use", "target": "IWSCProductList::Initialize::provider", "value": "WSC_SECURITY_PROVIDER" } + ] + }, + { + "path": "um\\locationapi.h", + "sha256": "565800816BE42A0B059BE0B5296C84E85F8FEF59E0E98CAD83BC6F7C5C935471", + "facts": [ + { "category": "supportedOS", "target": "ICivicAddressReport", "value": "windows6.1" }, + { "category": "supportedOS", "target": "IDefaultLocation", "value": "windows6.1" }, + { "category": "supportedOS", "target": "ILatLongReport", "value": "windows6.1" }, + { "category": "supportedOS", "target": "ILocation", "value": "windows6.1" }, + { "category": "supportedOS", "target": "ILocationEvents", "value": "windows6.1" }, + { "category": "supportedOS", "target": "ILocationPower", "value": "windows8.0" }, + { "category": "supportedOS", "target": "ILocationReport", "value": "windows6.1" } + ] + }, + { + "path": "um\\rendezvoussession.h", + "sha256": "D681E95EC4C9F227060ABBC7C4C1A907CA848F0558A0A2CE55A51ECCFCE24925", + "facts": [ + { "category": "supportedOS", "target": "DRendezvousSessionEvents", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IRendezvousApplication", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IRendezvousSession", "value": "windows6.0.6000" } + ] + }, + { + "path": "um\\WcnDevice.h", + "sha256": "54AD4BAD1B3326E46E6CAB2DDDEDA117B9AC6749BEDB234B11E78CC935225588", + "facts": [ + { "category": "supportedOS", "target": "IWCNConnectNotify", "value": "windows6.1" }, + { "category": "supportedOS", "target": "IWCNDevice", "value": "windows6.1" } + ] + }, + { + "path": "um\\winsatcominterfacei.h", + "sha256": "1EEDA1A0FB95BA15479F6FD702B712B979D01100D328F1CF0C20418D004677B3", + "facts": [ + { "category": "supportedOS", "target": "IInitiateWinSATAssessment", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IProvideWinSATAssessmentInfo", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IProvideWinSATResultsInfo", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IProvideWinSATVisuals", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IQueryAllWinSATAssessments", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IQueryRecentWinSATAssessment", "value": "windows6.0.6000" }, + { "category": "supportedOS", "target": "IWinSATInitiateEvents", "value": "windows6.0.6000" } + ] + } + ] +} diff --git a/tests/SdkAnnotationCoverage.Tests/test_coverage.py b/tests/SdkAnnotationCoverage.Tests/test_coverage.py index b68527152..25049b606 100644 --- a/tests/SdkAnnotationCoverage.Tests/test_coverage.py +++ b/tests/SdkAnnotationCoverage.Tests/test_coverage.py @@ -46,6 +46,61 @@ def report_fixture(): } +class SourceBlockedAccountingTests(unittest.TestCase): + def inventory(self): + return json.loads((Path(__file__).parent / "SourceBlockedMetadata.json").read_text()) + + def test_every_historical_unit_is_deferred_without_a_preservation_claim(self): + result = coverage.source_blocked_accounting(self.inventory(), "10.0.28000.2705") + self.assertEqual(result["deferredLegacyFacts"], 30) + self.assertEqual(result["availability"], 26) + self.assertEqual(result["associatedEnumUses"], 3) + self.assertEqual(result["enumFlags"], 1) + self.assertNotIn("preservedLegacyFacts", result) + self.assertFalse(result["currentPreservationClaimed"]) + self.assertEqual(result["currentProjectionState"], "unqualified") + self.assertEqual(len(result["facts"]), 30) + self.assertTrue(all(fact["currentPhysicalProjection"] is None for fact in result["facts"])) + flags = [fact for fact in result["facts"] if fact["category"] == "enum-flags"] + self.assertEqual([(fact["target"], fact["value"]) for fact in flags], [("IdentityUpdateEvent", "Flags")]) + + def test_missing_changed_or_falsely_covered_units_cannot_turn_green(self): + for mutation in ( + "missing", "duplicate", "value", "flags", "covered", "preserved", + "available-source", "extra-coverage-claim", "owner", "source-hash", + ): + with self.subTest(mutation=mutation): + inventory = self.inventory() + header = inventory["headers"][0] + facts = header["facts"] + if mutation == "missing": + facts.pop(0) + elif mutation == "duplicate": + facts.append(facts[0].copy()) + elif mutation == "value": + facts[0]["value"] = "windows10.0" + elif mutation == "flags": + header["facts"] = [fact for fact in facts if fact["category"] != "enum-flags"] + elif mutation == "covered": + inventory["migrationState"] = "covered" + elif mutation == "preserved": + inventory["currentProjectionState"] = "preserved" + elif mutation == "available-source": + inventory["sourceState"] = "original-available" + elif mutation == "extra-coverage-claim": + inventory["preservedLegacyFacts"] = 30 + elif mutation == "owner": + header["path"] = r"um\unrelated.h" + elif mutation == "source-hash": + header["sha256"] = "0" * 64 + with self.assertRaisesRegex(ValueError, "Source-blocked"): + coverage.source_blocked_accounting(inventory, "10.0.28000.2705") + + def test_another_selected_sdk_requires_a_fresh_source_disposition(self): + with self.assertRaisesRegex(ValueError, "selected SDK"): + coverage.source_blocked_accounting(self.inventory(), "10.0.26100.7705") + + class ConfigurationTests(unittest.TestCase): def test_response_sections_keep_exact_lines_and_duplicate_rules(self): entries = list(coverage.rsp_entries( diff --git a/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs b/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs index 25276b01f..6d69cca33 100644 --- a/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs @@ -53,7 +53,7 @@ private static readonly (string Target, string OS)[] Floors = public SdkComponentMigrationTests(ITestOutputHelper output) => this.output = output; [HeaderMigrationDataFact] - public void OwnedFloorsKeepOnlyTheExplicitSourceBlockedResidualsAndParserConfiguration() + public void AvailableSourceFloorsAndDeferredRendezvousFactsKeepExactAccounting() { string sdk = Path.Combine(WinHttpMigrationTests.RepositoryRoot, "generation", "WinSDK"); string sidecar = File.ReadAllText(Path.Combine(sdk, "supportedOS.rsp")); @@ -75,12 +75,15 @@ public void OwnedFloorsKeepOnlyTheExplicitSourceBlockedResidualsAndParserConfigu Assert.Contains("_DEDUP_SET_PARAM_TYPE=DEDUP_SET_PARAM_TYPE", File.ReadAllText(Path.Combine(sdk, "scraper.settings.rsp"))); Assert.DoesNotContain("--nativeFieldArrayInfo", File.ReadAllText(Path.Combine(sdk, "emitter.settings.rsp"))); - string rendezvous = Path.Combine(sdk, "patches", "um", "rendezvoussession.idl.patch"); - Assert.True(File.Exists(rendezvous), - "Header-only coverage is incomplete: the three retired rendezvous-session floors have no original-IDL patch."); - foreach (var fact in Floors.Skip(3).Take(3)) - HeaderMigrationAssertions.AssertCommentFact(@"um\rendezvoussession.idl", "interface", fact.Target, - "SupportedOSPlatform(\"" + fact.OS + "\")"); + using var deferred = WinHttpMigrationTests.ReadSourceBlockedInventory(); + WinHttpMigrationTests.AssertSourceBlockedInventory(deferred.RootElement); + var rendezvous = Assert.Single(deferred.RootElement.GetProperty("headers").EnumerateArray() + .Where(header => header.GetProperty("path").GetString() == @"um\rendezvoussession.h")); + Assert.Equal(Floors.Skip(3).Take(3).Select(fact => fact.Target + "=" + fact.OS) + .OrderBy(value => value, StringComparer.Ordinal), + rendezvous.GetProperty("facts").EnumerateArray() + .Select(fact => fact.GetProperty("target").GetString() + "=" + fact.GetProperty("value").GetString()) + .OrderBy(value => value, StringComparer.Ordinal)); } [ComponentMigrationTheory] diff --git a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs index 5bba9b503..bb765e9ca 100644 --- a/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/WinHttpMigrationTests.cs @@ -9,6 +9,7 @@ using System.Reflection.PortableExecutable; using System.Security.Cryptography; using System.Text.Json; +using System.Text.Json.Nodes; using System.Text.RegularExpressions; using MetadataTasks; using Microsoft.CodeAnalysis; @@ -113,41 +114,43 @@ private static readonly (string Name, uint Bits)[] DwmContactMembers = ("DWMSC_NONE", 0), ("DWMSC_ALL", uint.MaxValue), }; - private static readonly (string Target, string OS)[] SourceBlockedAvailability = - { - ("IAssociatedIdentityProvider", "windows6.1"), - ("IConnectedIdentityProvider", "windows8.0"), - ("IIdentityAdvise", "windows6.1"), - ("IIdentityProvider", "windows6.1"), - ("IIdentityStore", "windows6.1"), - ("IWscProduct", "windows8.0"), - ("IWSCProductList", "windows8.0"), - ("ICivicAddressReport", "windows6.1"), - ("IDefaultLocation", "windows6.1"), - ("ILatLongReport", "windows6.1"), - ("ILocation", "windows6.1"), - ("ILocationEvents", "windows6.1"), - ("ILocationPower", "windows8.0"), - ("ILocationReport", "windows6.1"), - ("DRendezvousSessionEvents", "windows6.0.6000"), - ("IRendezvousApplication", "windows6.0.6000"), - ("IRendezvousSession", "windows6.0.6000"), - ("IWCNConnectNotify", "windows6.1"), - ("IWCNDevice", "windows6.1"), - ("IInitiateWinSATAssessment", "windows6.0.6000"), - ("IProvideWinSATAssessmentInfo", "windows6.0.6000"), - ("IProvideWinSATResultsInfo", "windows6.0.6000"), - ("IProvideWinSATVisuals", "windows6.0.6000"), - ("IQueryAllWinSATAssessments", "windows6.0.6000"), - ("IQueryRecentWinSATAssessment", "windows6.0.6000"), - ("IWinSATInitiateEvents", "windows6.0.6000"), + private static readonly (string Header, string Target, string OS)[] SourceBlockedAvailability = + { + (@"um\IdentityProvider.h", "IAssociatedIdentityProvider", "windows6.1"), + (@"um\IdentityProvider.h", "IConnectedIdentityProvider", "windows8.0"), + (@"um\IdentityProvider.h", "IIdentityAdvise", "windows6.1"), + (@"um\IdentityProvider.h", "IIdentityProvider", "windows6.1"), + (@"um\IdentityStore.h", "IIdentityStore", "windows6.1"), + (@"um\iwscapi.h", "IWscProduct", "windows8.0"), + (@"um\iwscapi.h", "IWSCProductList", "windows8.0"), + (@"um\locationapi.h", "ICivicAddressReport", "windows6.1"), + (@"um\locationapi.h", "IDefaultLocation", "windows6.1"), + (@"um\locationapi.h", "ILatLongReport", "windows6.1"), + (@"um\locationapi.h", "ILocation", "windows6.1"), + (@"um\locationapi.h", "ILocationEvents", "windows6.1"), + (@"um\locationapi.h", "ILocationPower", "windows8.0"), + (@"um\locationapi.h", "ILocationReport", "windows6.1"), + (@"um\rendezvoussession.h", "DRendezvousSessionEvents", "windows6.0.6000"), + (@"um\rendezvoussession.h", "IRendezvousApplication", "windows6.0.6000"), + (@"um\rendezvoussession.h", "IRendezvousSession", "windows6.0.6000"), + (@"um\WcnDevice.h", "IWCNConnectNotify", "windows6.1"), + (@"um\WcnDevice.h", "IWCNDevice", "windows6.1"), + (@"um\winsatcominterfacei.h", "IInitiateWinSATAssessment", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IProvideWinSATAssessmentInfo", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IProvideWinSATResultsInfo", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IProvideWinSATVisuals", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IQueryAllWinSATAssessments", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IQueryRecentWinSATAssessment", "windows6.0.6000"), + (@"um\winsatcominterfacei.h", "IWinSATInitiateEvents", "windows6.0.6000"), }; - private static readonly string[] SourceBlockedAssociations = + private static readonly (string Header, string Target, string Enum)[] SourceBlockedAssociationFacts = { - "IIdentityAdvise::IdentityUpdated::dwIdentityUpdateEvents=[AssociatedEnum(\"IdentityUpdateEvent\")]", - "IIdentityProvider::Advise::dwIdentityUpdateEvents=[AssociatedEnum(\"IdentityUpdateEvent\")]", - "IWSCProductList::Initialize::provider=[AssociatedEnum(\"WSC_SECURITY_PROVIDER\")]", + (@"um\IdentityProvider.h", "IIdentityAdvise::IdentityUpdated::dwIdentityUpdateEvents", "IdentityUpdateEvent"), + (@"um\IdentityProvider.h", "IIdentityProvider::Advise::dwIdentityUpdateEvents", "IdentityUpdateEvent"), + (@"um\iwscapi.h", "IWSCProductList::Initialize::provider", "WSC_SECURITY_PROVIDER"), }; + private static readonly string[] SourceBlockedAssociations = SourceBlockedAssociationFacts + .Select(fact => fact.Target + "=[AssociatedEnum(\"" + fact.Enum + "\")]").ToArray(); private static readonly (string Owner, string Member, string Enum, string Native)[] Associations = { ("WinHttpOpenRequest", "dwFlags", "WINHTTP_OPEN_REQUEST_FLAGS", "UInt32"), @@ -620,7 +623,7 @@ public void HeaderPatchAvailabilityUsesCanonicalPublicMacros() @"shared\win32metadata_annotations.h", StringComparison.OrdinalIgnoreCase))); Assert.Equal(new[] { "path", "sourceSha256" }, helper.EnumerateObject().Select(property => property.Name).OrderBy(name => name, StringComparer.Ordinal)); - Assert.Equal("8654A090389AC88792F40FDEEBB9B298F2C8427136BB0D1B5E39E90D70D48B5D", + Assert.Equal("CCF58C367C6CA06844126D14FE6D0C478C26E5DF1191793082BC3358AFCAF959", helper.GetProperty("sourceSha256").GetString()); byte[] helperBytes = File.ReadAllBytes(Path.Combine(AppContext.BaseDirectory, "assets", "win32metadata_annotations.h")); Assert.Equal(helper.GetProperty("sourceSha256").GetString(), Convert.ToHexString(SHA256.HashData(helperBytes))); @@ -4032,9 +4035,11 @@ public void OriginalErrorGroupBatchPreservesEveryPhysicalTypeWithoutOrderNormali } [HeaderMigrationDataFact] - public void SourceBlockedGeneratedArtifactsRetainTheirExactLegacyFacts() + public void SourceBlockedGeneratedArtifactsAccountForEveryDeferredHistoricalFact() { string project = Path.Combine(RepositoryRoot, "generation", "WinSDK"); + using var deferred = ReadSourceBlockedInventory(); + AssertSourceBlockedInventory(deferred.RootElement); string[] osRows = File.ReadAllLines(Path.Combine(project, "supportedOS.rsp")); foreach (var fact in SourceBlockedAvailability) Assert.DoesNotContain(osRows, row => row.StartsWith(fact.Target + "=", StringComparison.Ordinal)); @@ -4048,6 +4053,15 @@ public void SourceBlockedGeneratedArtifactsRetainTheirExactLegacyFacts() { string source = File.ReadAllText(Path.Combine(project, "RecompiledIdlHeaders", "um", file)); Assert.Contains("File created by MIDL compiler", source); + var header = Assert.Single(deferred.RootElement.GetProperty("headers").EnumerateArray() + .Where(header => string.Equals(header.GetProperty("path").GetString(), @"um\" + file, + StringComparison.OrdinalIgnoreCase))); + var pin = Assert.Single(recipe.RootElement.GetProperty("headers").EnumerateArray() + .Where(pin => string.Equals(pin.GetProperty("path").GetString(), @"um\" + file, + StringComparison.OrdinalIgnoreCase))); + Assert.Equal(header.GetProperty("sha256").GetString(), pin.GetProperty("sdkSha256").GetString()); + Assert.Equal(header.GetProperty("sha256").GetString(), Convert.ToHexString(SHA256.HashData( + File.ReadAllBytes(Path.Combine(project, "RecompiledIdlHeaders", "um", file))))); Assert.DoesNotContain(patches, path => File.ReadAllText(Path.Combine(project, "patches", path)) .Split('\n').Any(line => line.StartsWith("+++ ", StringComparison.Ordinal) && line.TrimEnd('\r').EndsWith("/" + file, StringComparison.OrdinalIgnoreCase))); @@ -4056,21 +4070,93 @@ public void SourceBlockedGeneratedArtifactsRetainTheirExactLegacyFacts() .Split('\n').Where(line => line.StartsWith("+", StringComparison.Ordinal) && !line.StartsWith("+++", StringComparison.Ordinal))).SelectMany(lines => lines)) .Replace("\\\"", "\"", StringComparison.Ordinal); - string[] missingFloors = SourceBlockedAvailability.Where(fact => !Regex.IsMatch(authored, - @"/\* Win32Metadata: (?:interface|record) ::" + Regex.Escape(fact.Target) + - @" => SupportedOSPlatform\(""" + Regex.Escape(fact.OS) + @"""\) \*/")) - .Select(fact => fact.Target + "=" + fact.OS).ToArray(); - string[] missingAssociations = SourceBlockedAssociations.Where(row => - { - string target = row.Substring(0, row.IndexOf('=')); - int quote = row.IndexOf('"'); - string name = row.Substring(quote + 1, row.LastIndexOf('"') - quote - 1); - return !authored.Contains($"/* Win32Metadata: parameter ::{target} => AssociatedEnum({name}) */", - StringComparison.Ordinal); - }).ToArray(); - Assert.True(missingFloors.Length == 0 && missingAssociations.Length == 0, - "Header-only source coverage is incomplete; retired metadata is not a substitute for original-IDL facts: " + - string.Join(", ", missingFloors.Concat(missingAssociations))); + foreach (var fact in SourceBlockedAvailability) + Assert.DoesNotMatch(@"/\* Win32Metadata: (?:interface|record) ::" + Regex.Escape(fact.Target) + + @" => SupportedOSPlatform\(""" + Regex.Escape(fact.OS) + @"""\) \*/", authored); + foreach (var fact in SourceBlockedAssociationFacts) + Assert.DoesNotContain($"/* Win32Metadata: parameter ::{fact.Target} => AssociatedEnum({fact.Enum}) */", + authored); + Assert.DoesNotMatch(@"/\* Win32Metadata: enum ::(?:tag_)?IdentityUpdateEvent => Flags \*/", authored); + } + + internal static JsonDocument ReadSourceBlockedInventory() + => JsonDocument.Parse(File.ReadAllText(Path.Combine(RepositoryRoot, "tests", + "SdkAnnotationCoverage.Tests", "SourceBlockedMetadata.json"))); + + internal static void AssertSourceBlockedInventory(JsonElement inventory) + { + ExactProperties(inventory, "schemaVersion", "sdkPackageVersion", "sdkArchiveSha256", + "sourceState", "migrationState", "currentProjectionState", "headers"); + Assert.Equal(1, inventory.GetProperty("schemaVersion").GetInt32()); + Assert.Equal("10.0.28000.2705", inventory.GetProperty("sdkPackageVersion").GetString()); + Assert.Equal("A74CA8F9AF98BD61925D9E2932AD98F746306123167B8F0BBA99CD9EA9F03807", + inventory.GetProperty("sdkArchiveSha256").GetString()); + Assert.Equal("original-unavailable", inventory.GetProperty("sourceState").GetString()); + Assert.Equal("deferred-unqualified", inventory.GetProperty("migrationState").GetString()); + Assert.Equal("unqualified", inventory.GetProperty("currentProjectionState").GetString()); + var headers = inventory.GetProperty("headers").EnumerateArray().ToArray(); + Assert.Equal(SourceBlockedAvailability.Select(fact => fact.Header.ToLowerInvariant()) + .Distinct(StringComparer.Ordinal).OrderBy(value => value, StringComparer.Ordinal), + headers.Select(header => header.GetProperty("path").GetString().ToLowerInvariant()) + .OrderBy(value => value, StringComparer.Ordinal)); + var expected = SourceBlockedAvailability.Select(fact => + fact.Header.ToLowerInvariant() + "|supportedOS|" + fact.Target + "|" + fact.OS) + .Concat(SourceBlockedAssociationFacts.Select(fact => + fact.Header.ToLowerInvariant() + "|associated-enum-use|" + fact.Target + "|" + fact.Enum)) + .Append(@"um\identityprovider.h|enum-flags|IdentityUpdateEvent|Flags"); + var actual = new List(); + foreach (var header in headers) + { + ExactProperties(header, "path", "sha256", "facts"); + Assert.Matches(@"\A[0-9A-F]{64}\z", header.GetProperty("sha256").GetString()); + foreach (var fact in header.GetProperty("facts").EnumerateArray()) + { + ExactProperties(fact, "category", "target", "value"); + actual.Add(header.GetProperty("path").GetString().ToLowerInvariant() + "|" + + fact.GetProperty("category").GetString() + "|" + fact.GetProperty("target").GetString() + "|" + + fact.GetProperty("value").GetString()); + } + } + Assert.Equal(expected.OrderBy(value => value, StringComparer.Ordinal), + actual.OrderBy(value => value, StringComparer.Ordinal)); + + static void ExactProperties(JsonElement value, params string[] names) + => Assert.Equal(names.OrderBy(name => name, StringComparer.Ordinal), + value.EnumerateObject().Select(property => property.Name).OrderBy(name => name, StringComparer.Ordinal)); + } + + [Theory] + [InlineData("missing")] + [InlineData("duplicate")] + [InlineData("value")] + [InlineData("flags")] + [InlineData("covered")] + [InlineData("preserved")] + [InlineData("available-source")] + [InlineData("extra-coverage-claim")] + [InlineData("owner")] + public void DeferredSourceAccountingRejectsUnaccountedChangesAndFalseCoverage(string mutation) + { + using var original = ReadSourceBlockedInventory(); + var inventory = JsonNode.Parse(original.RootElement.GetRawText()); + var facts = inventory["headers"][0]["facts"].AsArray(); + switch (mutation) + { + case "missing": facts.RemoveAt(0); break; + case "duplicate": facts.Add(facts[0].DeepClone()); break; + case "value": facts[0]["value"] = "windows10.0"; break; + case "flags": + facts.Remove(facts.Single(fact => fact["category"].GetValue() == "enum-flags")); + break; + case "covered": inventory["migrationState"] = "covered"; break; + case "preserved": inventory["currentProjectionState"] = "preserved"; break; + case "available-source": inventory["sourceState"] = "original-available"; break; + case "extra-coverage-claim": inventory["preservedLegacyFacts"] = 30; break; + case "owner": inventory["headers"][0]["path"] = @"um\unrelated.h"; break; + default: throw new ArgumentOutOfRangeException(nameof(mutation)); + } + using var changed = JsonDocument.Parse(inventory.ToJsonString()); + Assert.ThrowsAny(() => AssertSourceBlockedInventory(changed.RootElement)); } [MigrationTheory] From 9a3cee6da0fba9073116bf4901be2f91635d6b9f Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 09:48:36 -0700 Subject: [PATCH 48/57] Refresh deferred-source accounting without stale preservation claims Run the same exact thirty-unit accounting on refreshed coverage reports and cover the real refresh entry point with a focused regression. Preserve frozen source inputs and avoid rescanning SDK sources in the refresh path. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- scripts/Get-SdkAnnotationCoverage.py | 3 ++ .../test_coverage.py | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/scripts/Get-SdkAnnotationCoverage.py b/scripts/Get-SdkAnnotationCoverage.py index c57ef6142..459a9e15c 100644 --- a/scripts/Get-SdkAnnotationCoverage.py +++ b/scripts/Get-SdkAnnotationCoverage.py @@ -746,6 +746,9 @@ def main(): raise ValueError("A dirty-input inventory cannot supply committed baseline counts") if campaign.get("sourceReceipts") and not report["sourceProgressScoreboard"]["strictApplyRows"]: raise ValueError("Committed source receipts require a strictly applied baseline inventory") + report["missingOriginalSourceMigrations"] = source_blocked_accounting( + json.loads(text(repo / SOURCE_BLOCKED_INVENTORY)), version + ) report["selectedProviderOverlayOriginals"] = selected_overlay_originals( [item["original"] for item in report["selectedSdkOriginals"]], report["additionalSelectedSourceProviders"][0]["publicIncludeFiles"], diff --git a/tests/SdkAnnotationCoverage.Tests/test_coverage.py b/tests/SdkAnnotationCoverage.Tests/test_coverage.py index 25049b606..fdaea29dd 100644 --- a/tests/SdkAnnotationCoverage.Tests/test_coverage.py +++ b/tests/SdkAnnotationCoverage.Tests/test_coverage.py @@ -100,6 +100,42 @@ def test_another_selected_sdk_requires_a_fresh_source_disposition(self): with self.assertRaisesRegex(ValueError, "selected SDK"): coverage.source_blocked_accounting(self.inventory(), "10.0.26100.7705") + def test_refresh_replaces_the_old_preservation_claim_without_rescanning_sources(self): + report = report_fixture() + report["snapshot"].update({ + "configurationGitTree": "frozen-tree", "sdkPackageVersion": "10.0.28000.2705", + "sdkIncludeVersion": "10.0.28000.0", + }) + report["scope"] = {} + report["additionalSelectedSourceProviders"] = [{"publicIncludeFiles": []}] + report["sourceProgressScoreboard"] = { + "committedPatchInputs": True, "strictApplyRows": [], + "committedNonBootstrapNativeHeaderCount": 0, "goalEligibleCommittedNativeHeaderCount": 0, + "actuallyAffectedGeneratedHeaderCount": None, "goalEligibleObservedGeneratedHeaderCount": None, + "eligiblePatchedHeaderCountKnown": None, "newNativeHeaderPathsBeyondSnapshot": [], + "receiptStrictApplyStatusCounts": {}, + } + report["missingOriginalSourceMigrations"] = {"preservedLegacyFacts": 30} + with tempfile.TemporaryDirectory() as directory: + root = Path(directory) + (root / "c" / "include" / "10.0.28000.0").mkdir(parents=True) + output = root / "inventory.json" + output.write_text(json.dumps(report), encoding="utf-8") + with ( + patch("sys.argv", ["coverage", "--refresh", "--output", str(output), + "--sdk-package-root", str(root)]), + patch.object(coverage, "git", side_effect=lambda repo, *args: + "" if args[0] == "diff" else "frozen-tree"), + patch.object(coverage, "update_source_receipts"), + patch.object(coverage, "update_generated_observations"), + patch.object(coverage, "write_operational_outputs"), + patch("builtins.print"), + ): + coverage.main() + refreshed = json.loads(output.read_text(encoding="utf-8")) + self.assertEqual(refreshed["missingOriginalSourceMigrations"], + coverage.source_blocked_accounting(self.inventory(), "10.0.28000.2705")) + class ConfigurationTests(unittest.TestCase): def test_response_sections_keep_exact_lines_and_duplicate_rules(self): From 214a8d28150567445d5a73f7381632bfbaa1faff Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 10:51:48 -0700 Subject: [PATCH 49/57] Allow two hours for the full SDK scrape matrix The expanded SDK annotation/native-constant workload exceeded the one-hour x86 job budget in exact-head run40113275852 while source generation was still advancing. Its GitHub check explicitly reports the maximum execution time, not a compiler failure. Increase only the scrape-matrix budget60to120minutes and cover both the new scrape budget and unchanged60-minute build/test budget in the existing48-case workflow regression suite. Keep matrix work, prerequisite checks, diagnostics, coverage, cancellation and all correctness gates unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/tests/pr-api-diff-comment.test.cjs | 5 +++++ .github/workflows/pr-validation.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/tests/pr-api-diff-comment.test.cjs b/.github/tests/pr-api-diff-comment.test.cjs index eb5d1abc1..41161b0a9 100644 --- a/.github/tests/pr-api-diff-comment.test.cjs +++ b/.github/tests/pr-api-diff-comment.test.cjs @@ -180,6 +180,11 @@ test('both artifact uploads still include the generated patch', () => { } }); +test('full SDK scrapes have a bounded two-hour budget while build and test keep one hour', () => { + assert.match(validationJob('scrape'), /^ timeout-minutes: 120$/m); + assert.match(validationJob('build-test'), /^ timeout-minutes: 60$/m); +}); + for (const [jobName, uploadCount] of [['scrape', 1], ['build-test', 2]]) { test(`${jobName} always-run local uploads require a successful checkout`, () => { const job = validationJob(jobName); diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 349b2086e..f7b7e9171 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -98,7 +98,7 @@ jobs: needs: [changes] if: needs.changes.outputs.build_needed == 'true' runs-on: windows-2022 - timeout-minutes: 60 + timeout-minutes: 120 strategy: fail-fast: false From a642ebcd6eabcaf6d206825fbffeeda81bd4e416 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 12:48:43 -0700 Subject: [PATCH 50/57] Remove obsolete Hlsl namespace from SDK scraper prologue Keep generated C# imports aligned with the selected SDK namespace closure. Guard the authored scraper preamble without restoring removed APIs or suppressing compiler diagnostics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- generation/WinSDK/scraper.header.txt | 1 - .../SdkComponentMigrationTests.cs | 10 ++++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/generation/WinSDK/scraper.header.txt b/generation/WinSDK/scraper.header.txt index 4a6dd2d5f..7a1051a33 100644 --- a/generation/WinSDK/scraper.header.txt +++ b/generation/WinSDK/scraper.header.txt @@ -51,7 +51,6 @@ using Windows.Win32.Graphics.DXCore; using Windows.Win32.Graphics.Dxgi; using Windows.Win32.Graphics.Dxgi.Common; using Windows.Win32.Graphics.Gdi; -using Windows.Win32.Graphics.Hlsl; using Windows.Win32.Graphics.Imaging; using Windows.Win32.Graphics.OpenGL; using Windows.Win32.Graphics.Printing; diff --git a/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs b/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs index 6d69cca33..f4afa637d 100644 --- a/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs +++ b/tests/Win32MetadataScraperTests/SdkComponentMigrationTests.cs @@ -52,6 +52,16 @@ private static readonly (string Target, string OS)[] Floors = public SdkComponentMigrationTests(ITestOutputHelper output) => this.output = output; + [Fact] + public void ScraperPreambleDoesNotImportTheRemovedHlslNamespace() + { + string path = Path.Combine(WinHttpMigrationTests.RepositoryRoot, + "generation", "WinSDK", "scraper.header.txt"); + var root = (CompilationUnitSyntax)CSharpSyntaxTree.ParseText(File.ReadAllText(path)).GetRoot(); + Assert.DoesNotContain(root.Usings, + directive => directive.Name.ToString() == "Windows.Win32.Graphics.Hlsl"); + } + [HeaderMigrationDataFact] public void AvailableSourceFloorsAndDeferredRendezvousFactsKeepExactAccounting() { From fe467867e3d12daa952fa436af30035c40226f3d Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Sat, 24 Oct 2026 13:35:48 -0700 Subject: [PATCH 51/57] Align SDK import fixtures with the selected namespace surface Require the exact remaining import sequence and reject missing, duplicate, changed, reordered or reintroduced Hlsl imports. Preserve the historical257-import snapshot and all eight retained and436retired metadata records. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../HeaderEnumOwnershipRepairTests.cs | 55 +++++++++++++------ 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/tests/Win32MetadataScraperTests/HeaderEnumOwnershipRepairTests.cs b/tests/Win32MetadataScraperTests/HeaderEnumOwnershipRepairTests.cs index f6b85ae24..db6198a8e 100644 --- a/tests/Win32MetadataScraperTests/HeaderEnumOwnershipRepairTests.cs +++ b/tests/Win32MetadataScraperTests/HeaderEnumOwnershipRepairTests.cs @@ -72,11 +72,11 @@ public void NativeNotificationBaseIsNotExcludedAfterManualProviderRetirement() } [HeaderMigrationDataFact] - public void SharedScraperImportsPreserveTheInheritedNamespaceSet() + public void SharedScraperImportsMatchTheSelectedSdkNamespaceSet() { string path = Path.Combine(WinHttpMigrationTests.RepositoryRoot, "generation", "WinSDK", "scraper.header.txt"); - AssertInheritedImports(File.ReadAllLines(path)); + AssertSelectedSdkImports(File.ReadAllLines(path)); } [HeaderMigrationDataFact] @@ -127,11 +127,11 @@ public void TreeViewUsesAnOrderedLiteralCarrierWithoutInventingNativeConstants() } [Fact] - public void RetainedHeaderMetadataSnapshotKeepsTheFullInheritedRecordsAndImports() + public void RetainedHeaderMetadataSnapshotKeepsTheFullInheritedRecordsAndSelectedSdkImports() { var snapshot = RetainedHeaderMetadata(); AssertInheritedAutoTypes((JArray)snapshot["retained"]); - AssertInheritedImports(File.ReadAllLines(Path.Combine(WinHttpMigrationTests.RepositoryRoot, + AssertSelectedSdkImports(File.ReadAllLines(Path.Combine(WinHttpMigrationTests.RepositoryRoot, "generation", "WinSDK", "scraper.header.txt"))); } @@ -167,17 +167,39 @@ public void RetainedHeaderMetadataRejectsMissingChangedOrRetiredRecords(string m Assert.ThrowsAny(() => AssertInheritedAutoTypes(records)); } + [Fact] + public void HistoricalInheritedImportSnapshotRemainsPinned() + { + var imports = RetainedHeaderMetadata()["imports"]; + Assert.Equal("4a6dd2d5f8fc5bec7a9f093f98a6a3a7fb4bc8ef", (string)imports["blob"]); + Assert.Equal(257, (int)imports["count"]); + Assert.Equal("E4F134E519BFC202F103384C9AE0E24EF5DE1782A28889621905C73653390C09", + (string)imports["sha256"]); + } + [Theory] - [InlineData(false)] - [InlineData(true)] - public void RetainedHeaderMetadataRejectsMissingOrDuplicateHlslImports(bool duplicate) + [InlineData("missing")] + [InlineData("duplicate")] + [InlineData("added")] + [InlineData("changed")] + [InlineData("reordered")] + [InlineData("removed-hlsl")] + public void SelectedSdkImportsRejectMissingDuplicateChangedReorderedOrRemovedNamespaces(string mutation) { var imports = File.ReadAllLines(Path.Combine(WinHttpMigrationTests.RepositoryRoot, - "generation", "WinSDK", "scraper.header.txt")).ToList(); - const string hlsl = "using Windows.Win32.Graphics.Hlsl;"; - if (duplicate) imports.Add(hlsl); - else imports.Remove(hlsl); - Assert.ThrowsAny(() => AssertInheritedImports(imports)); + "generation", "WinSDK", "scraper.header.txt")) + .Where(line => Regex.IsMatch(line, @"^using\s+.+;$")).ToList(); + switch (mutation) + { + case "missing": imports.RemoveAt(0); break; + case "duplicate": imports.Add(imports[0]); break; + case "added": imports.Add("using Unexpected.Namespace;"); break; + case "changed": imports[0] = "using Unexpected.Namespace;"; break; + case "reordered": (imports[0], imports[1]) = (imports[1], imports[0]); break; + case "removed-hlsl": imports.Add("using Windows.Win32.Graphics.Hlsl;"); break; + default: throw new ArgumentOutOfRangeException(nameof(mutation)); + } + Assert.ThrowsAny(() => AssertSelectedSdkImports(imports)); } private static JObject RetainedHeaderMetadata() => JObject.Parse(File.ReadAllText(Path.Combine( @@ -186,13 +208,12 @@ private static JObject RetainedHeaderMetadata() => JObject.Parse(File.ReadAllTex private static JArray ReadAutoTypes(string text) => JArray.Parse(text, new JsonLoadSettings { DuplicatePropertyNameHandling = DuplicatePropertyNameHandling.Error }); - private static void AssertInheritedImports(IEnumerable lines) + private static void AssertSelectedSdkImports(IEnumerable lines) { string[] imports = lines.Where(line => Regex.IsMatch(line, @"^using\s+.+;$")).ToArray(); - Assert.Single(imports, line => line == "using Windows.Win32.Graphics.Hlsl;"); - var expected = RetainedHeaderMetadata()["imports"]; - Assert.Equal((int)expected["count"], imports.Length); - Assert.Equal((string)expected["sha256"], + Assert.DoesNotContain("using Windows.Win32.Graphics.Hlsl;", imports); + Assert.Equal(256, imports.Length); + Assert.Equal("F2FBE5708B94D81A172AF9EBAB520A168A9D5CEC9F75F8AF31DDEE3378E911CC", Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("\n", imports))))); } From 1012a7b401dd499b61878a84f82be65a5bbd2b6e Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Mon, 26 Oct 2026 02:08:48 -0700 Subject: [PATCH 52/57] Annotate ImageHlp declarations and prioritize SDK constants Declare SetLastError on the authored ImageHlp declarations used by Debug while retaining the existing annotation transport. Prefer devicetopology.h for E_NOTFOUND through the shared SDK constants response file and retain native ordering for unlisted headers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../WinSDK/ConstantsScraper.settings.rsp | 3 ++ generation/WinSDK/patches/um/imagehlp.h.patch | 30 ++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/generation/WinSDK/ConstantsScraper.settings.rsp b/generation/WinSDK/ConstantsScraper.settings.rsp index 968a97cbd..60f5e30a3 100644 --- a/generation/WinSDK/ConstantsScraper.settings.rsp +++ b/generation/WinSDK/ConstantsScraper.settings.rsp @@ -1,3 +1,6 @@ +--headerPriority +um\devicetopology.h + --exclude TRUE FALSE diff --git a/generation/WinSDK/patches/um/imagehlp.h.patch b/generation/WinSDK/patches/um/imagehlp.h.patch index 2af8b9690..f927b0961 100644 --- a/generation/WinSDK/patches/um/imagehlp.h.patch +++ b/generation/WinSDK/patches/um/imagehlp.h.patch @@ -222,7 +222,23 @@ index 1cdaaf10..5bb44717 100644 BOOL IMAGEAPI UpdateDebugInfoFileEx( -@@ -845,6 +890,12 @@ UnDecorateSymbolNameW( +@@ -470,6 +515,7 @@ typedef BOOL + _In_ PVOID CallerData + ); + ++_Win32_SetLastError_ + HANDLE + IMAGEAPI + SymFindDebugInfoFile( +@@ -629,6 +675,7 @@ FindExecutableImageExW( + _In_ PVOID CallerData + ); + ++_Win32_SetLastError_ + PIMAGE_NT_HEADERS + IMAGEAPI + ImageNtHeader ( +@@ -845,6 +892,12 @@ UnDecorateSymbolNameW( #define DBHHEADER_DEBUGDIRS 0x1 #define DBHHEADER_CVMISC 0x2 @@ -235,7 +251,7 @@ index 1cdaaf10..5bb44717 100644 #define DBHHEADER_PDBGUID 0x3 #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) */ -@@ -1611,6 +1662,27 @@ enum SymTagEnum +@@ -1611,6 +1664,27 @@ enum SymTagEnum #define SYMFLAG_ILREL 0x00010000 #define SYMFLAG_METADATA 0x00020000 #define SYMFLAG_CLR_TOKEN 0x00040000 @@ -263,7 +279,7 @@ index 1cdaaf10..5bb44717 100644 #define SYMFLAG_NULL 0x00080000 #define SYMFLAG_FUNC_NO_RETURN 0x00100000 #define SYMFLAG_SYNTHETIC_ZEROBASE 0x00200000 -@@ -1949,6 +2021,14 @@ enum { +@@ -1949,6 +2023,14 @@ enum { sevFatal, sevMax // unused }; @@ -278,7 +294,7 @@ index 1cdaaf10..5bb44717 100644 #define EVENT_SRCSPEW_START 100 #define EVENT_SRCSPEW 100 -@@ -3024,6 +3104,14 @@ SymSetSearchPathW( +@@ -3024,6 +3106,14 @@ SymSetSearchPathW( #define SLMFLAG_ALT_INDEX 0x2 #define SLMFLAG_NO_SYMBOLS 0x4 @@ -293,7 +309,7 @@ index 1cdaaf10..5bb44717 100644 DWORD64 IMAGEAPI SymLoadModuleEx( -@@ -3614,6 +3702,12 @@ SymGetTypeInfo( +@@ -3614,6 +3704,12 @@ SymGetTypeInfo( #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 @@ -306,7 +322,7 @@ index 1cdaaf10..5bb44717 100644 typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { IN ULONG SizeOfStruct; IN ULONG Flags; -@@ -4163,6 +4257,13 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) +@@ -4163,6 +4259,13 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) #define SSRVOPT_DWORD 0x00000002 #define SSRVOPT_DWORDPTR 0x00000004 #define SSRVOPT_GUIDPTR 0x00000008 @@ -320,7 +336,7 @@ index 1cdaaf10..5bb44717 100644 #define SSRVOPT_OLDGUIDPTR 0x00000010 #define SSRVOPT_UNATTENDED 0x00000020 #define SSRVOPT_NOCOPY 0x00000040 -@@ -4239,6 +4340,15 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) +@@ -4239,6 +4342,15 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) #define SYMSTOREOPT_UNICODE 0x20 #define SYMSTOREOPT_PASS_IF_EXISTS 0x40 From 023ee90d43a63cfe70ea86b547da9a9304239554 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Tue, 27 Oct 2026 12:35:08 -0700 Subject: [PATCH 53/57] Preserve reviewed SDK API and QueryInterface contracts Apply the accepted combined header/IDL patch corrections and native contract regression coverage. Keep the SDK deltas in the ordered patch recipe and regenerate the complete combined root rather than adopting partial outputs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session-Id: 6ba49aff-a4a4-4de6-a6bf-08a189f3ce6d --- generation/WinSDK/patches/SdkHeaders.json | 20 ++ generation/WinSDK/patches/um/fileapi.h.patch | 15 +- generation/WinSDK/patches/um/imagehlp.h.patch | 30 +++ generation/WinSDK/patches/um/synchapi.h.patch | 8 +- .../WinSDK/patches/um/unknwnbase.idl.patch | 18 +- generation/WinSDK/patches/um/winsock2.h.patch | 5 +- .../NativeContractBatchTests.cs | 195 +++++++++++++++++- 7 files changed, 273 insertions(+), 18 deletions(-) diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index f54ffd778..1ec9f5829 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -28,6 +28,18 @@ "sdkPath": "c\\include\\10.0.28000.0\\shared\\sal.h", "sdkSha256": "A2B3EE38BC3B998D7162A38D1AA1C8D19EB3F72EEA64EB5EE68FB6497B65E7F1" }, + { + "path": "um\\Unknwn.h", + "sourceSha256": "A75D789AB4B466E4023B19A7A905F7109CF7268701AB35C84EF7155D9A026A05", + "sdkPath": "c\\include\\10.0.28000.0\\um\\unknwn.idl", + "sdkSha256": "2E146DA78625D05E345E7D480A61C5CC54696DD7C713B8FF07D9D36D95363C6C" + }, + { + "path": "um\\Unknwnbase.h", + "sourceSha256": "AC994A95B97A3E2E5D2FDB14D2E2B63B560BFFE042E28895BC311D960C4041AA", + "sdkPath": "c\\include\\10.0.28000.0\\um\\unknwnbase.idl", + "sdkSha256": "797B7267F24259A02A14455203F9B11309B504C1BFFAF879AF7BC05B8B67A5BC" + }, { "path": "um\\winhttp.h", "sourceSha256": "45B2CCF904EEAA904E773E90A1E677BD04E41FB57E003F3F398CDE0195C2FDD2", @@ -6988,6 +7000,14 @@ } ], "outputs": [ + { + "source": "um\\unknwn.idl", + "path": "um\\Unknwn.h" + }, + { + "source": "um\\unknwnbase.idl", + "path": "um\\Unknwnbase.h" + }, { "source": "um\\waasapitypes.idl", "path": "um\\waasapitypes.h" diff --git a/generation/WinSDK/patches/um/fileapi.h.patch b/generation/WinSDK/patches/um/fileapi.h.patch index 0e8f5d650..2d213bdd8 100644 --- a/generation/WinSDK/patches/um/fileapi.h.patch +++ b/generation/WinSDK/patches/um/fileapi.h.patch @@ -388,24 +388,26 @@ WINBASEAPI UINT WINAPI -@@ -594,6 +682,8 @@ +@@ -594,7 +682,9 @@ DWORD nFileSizeLow; } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA; -+_Win32_SetLastError_ ++_Win32_PreserveResult_ _Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ WINBASEAPI DWORD WINAPI -@@ -601,6 +691,8 @@ + GetFileAttributesA( +@@ -601,7 +691,9 @@ _In_ LPCSTR lpFileName ); -+_Win32_SetLastError_ ++_Win32_PreserveResult_ _Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ WINBASEAPI DWORD WINAPI + GetFileAttributesW( @@ -614,6 +706,8 @@ #define GetFileAttributes GetFileAttributesA #endif // !UNICODE @@ -637,15 +639,16 @@ _Reserved_ DWORD dwReserved, _In_ DWORD nNumberOfBytesToLockLow, _In_ DWORD nNumberOfBytesToLockHigh, -@@ -967,6 +1105,8 @@ +@@ -967,7 +1105,9 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -+_Win32_SetLastError_ ++_Win32_PreserveResult_ _Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ WINBASEAPI DWORD WINAPI + QueryDosDeviceW( @@ -986,6 +1126,8 @@ #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) diff --git a/generation/WinSDK/patches/um/imagehlp.h.patch b/generation/WinSDK/patches/um/imagehlp.h.patch index f927b0961..10b5e6175 100644 --- a/generation/WinSDK/patches/um/imagehlp.h.patch +++ b/generation/WinSDK/patches/um/imagehlp.h.patch @@ -230,6 +230,16 @@ index 1cdaaf10..5bb44717 100644 HANDLE IMAGEAPI SymFindDebugInfoFile( +@@ -499,8 +545,8 @@ SymFindDebugInfoFileW( + + HANDLE + IMAGEAPI +-FindDebugInfoFile ( ++_Win32_SetLastError_ FindDebugInfoFile ( + _In_ PCSTR FileName, + _In_ PCSTR SymbolPath, + _Out_writes_(MAX_PATH + 1) PSTR DebugFilePath + ); @@ -629,6 +675,7 @@ FindExecutableImageExW( _In_ PVOID CallerData ); @@ -238,6 +248,26 @@ index 1cdaaf10..5bb44717 100644 PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader ( +@@ -656,17 +703,17 @@ ImageDirectoryEntryToData( + + PIMAGE_SECTION_HEADER + IMAGEAPI +-ImageRvaToSection( ++_Win32_SetLastError_ ImageRvaToSection( + _In_ PIMAGE_NT_HEADERS NtHeaders, + _In_ PVOID Base, + _In_ ULONG Rva + ); + + PVOID + IMAGEAPI +-ImageRvaToVa( ++_Win32_SetLastError_ ImageRvaToVa( + _In_ PIMAGE_NT_HEADERS NtHeaders, + _In_ PVOID Base, + _In_ ULONG Rva, + _In_opt_ OUT PIMAGE_SECTION_HEADER *LastRvaSection + ); @@ -845,6 +892,12 @@ UnDecorateSymbolNameW( #define DBHHEADER_DEBUGDIRS 0x1 diff --git a/generation/WinSDK/patches/um/synchapi.h.patch b/generation/WinSDK/patches/um/synchapi.h.patch index 7a1ba1ba0..bf1b1626e 100644 --- a/generation/WinSDK/patches/um/synchapi.h.patch +++ b/generation/WinSDK/patches/um/synchapi.h.patch @@ -265,7 +265,7 @@ index 8721bd1d..296a266f 100644 -WINBASEAPI +_Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ -+_Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI ++_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI DWORD WINAPI WaitForSingleObject( @@ -284,7 +284,7 @@ index 8721bd1d..296a266f 100644 -WINBASEAPI +_Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ -+_Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI ++_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI DWORD WINAPI WaitForSingleObjectEx( @@ -295,7 +295,7 @@ index 8721bd1d..296a266f 100644 -WINBASEAPI +_Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ -+_Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI ++_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI DWORD WINAPI WaitForMultipleObjectsEx( @@ -589,7 +589,7 @@ index 8721bd1d..296a266f 100644 -WINBASEAPI +_Win32_SetLastError_ +_Win32_SupportedOS_WindowsXP_ -+_Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI ++_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI DWORD WINAPI WaitForMultipleObjects( diff --git a/generation/WinSDK/patches/um/unknwnbase.idl.patch b/generation/WinSDK/patches/um/unknwnbase.idl.patch index 636239d50..663777ebc 100644 --- a/generation/WinSDK/patches/um/unknwnbase.idl.patch +++ b/generation/WinSDK/patches/um/unknwnbase.idl.patch @@ -16,16 +16,26 @@ index e44b2a38..3992681a 100644 [ local, object, -@@ -117,6 +120,8 @@ cpp_quote("#else") +@@ -54,6 +57,7 @@ cpp_quote(" public:") + cpp_quote(" BEGIN_INTERFACE") ++cpp_quote(" _Win32_PreserveResult_") + cpp_quote(" virtual HRESULT STDMETHODCALLTYPE QueryInterface( ") + cpp_quote(" /* [in] */ REFIID riid,") + cpp_quote(" /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;") + cpp_quote("") + cpp_quote(" virtual ULONG STDMETHODCALLTYPE AddRef( void) = 0;") +@@ -117,6 +121,10 @@ cpp_quote("#else") } ++cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE) && (_MSC_VER < 1100)") ++cpp_quote("_WIN32META_ANNOTATE_METHOD_(IUnknown::QueryInterface, _Win32_PreserveResult_);") ++cpp_quote("#endif") ++ cpp_quote("#endif") -+cpp_quote("/* Win32Metadata: method ::IUnknown::QueryInterface => PreserveResult */") -+ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */") #pragma endregion -@@ -150,6 +155,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P +@@ -150,6 +158,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P #pragma region Application Family or OneCore Family cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)") diff --git a/generation/WinSDK/patches/um/winsock2.h.patch b/generation/WinSDK/patches/um/winsock2.h.patch index 2d84151bb..ba1c91ab0 100644 --- a/generation/WinSDK/patches/um/winsock2.h.patch +++ b/generation/WinSDK/patches/um/winsock2.h.patch @@ -947,15 +947,16 @@ WINSOCK_API_LINKAGE _Must_inspect_result_ SOCKET -@@ -3482,6 +3689,8 @@ +@@ -3482,7 +3689,9 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES -+_Win32_AssociatedEnum_(WAIT_EVENT) _Win32_SetLastError_ ++_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) _Win32_SetLastError_ +_Win32_SupportedOS_Windows81_ WINSOCK_API_LINKAGE DWORD WSAAPI + WSAWaitForMultipleEvents( @@ -3508,6 +3717,8 @@ #if INCL_WINSOCK_API_PROTOTYPES diff --git a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs index 44776c695..f7dabff0c 100644 --- a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs +++ b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs @@ -4,6 +4,8 @@ using System.Linq; using System.Reflection; using System.Reflection.Metadata; +using System.Runtime.CompilerServices; +using System.Text.RegularExpressions; using MetadataUtils; using Win32MetadataScraper; using Xunit; @@ -39,6 +41,20 @@ struct __declspec(uuid(""eb0c0ca2-cfc2-4538-a693-314db6fc20f2"")) IOverride { struct BATCH_OPAQUE; _Win32_NativeTypedef_ typedef struct BATCH_OPAQUE* BATCH_HOPAQUE; BATCH_BOOL RoundTripBatch(BATCH_BOOL value, BATCH_HANDLE handle, BATCH_PHANDLE output, BATCH_HOPAQUE opaque); +typedef unsigned long DWORD; +typedef int BOOL; +enum WAIT_EVENT : unsigned long { WAIT_OBJECT_0 = 0, WAIT_ABANDONED = 128, WAIT_IO_COMPLETION = 192, WAIT_TIMEOUT = 258, WAIT_FAILED = 0xffffffffUL }; +extern ""C"" { +_Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ _Win32_AssociatedEnum_(WAIT_EVENT) +DWORD __stdcall _Win32_PreserveResult_ WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds); +_Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ _Win32_AssociatedEnum_(WAIT_EVENT) +DWORD __stdcall _Win32_PreserveResult_ WaitForSingleObjectEx(HANDLE hHandle, DWORD dwMilliseconds, BOOL bAlertable); +_Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ _Win32_AssociatedEnum_(WAIT_EVENT) +DWORD __stdcall _Win32_PreserveResult_ WaitForMultipleObjects(DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds); +_Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ _Win32_AssociatedEnum_(WAIT_EVENT) +DWORD __stdcall _Win32_PreserveResult_ WaitForMultipleObjectsEx(DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds, BOOL bAlertable); +DWORD __stdcall WaitResultWithoutPreserveResult(DWORD dwMilliseconds); +} #define BATCH_WRAP32 (0xffffffffU + 1U) #define BATCH_POINTER_SIZE sizeof(void*) #if defined(_WIN64) @@ -46,6 +62,45 @@ struct BATCH_OPAQUE; #else #define BATCH_ONLY_32 32U #endif +"; + + private const string ImageHlpLastErrorDeclarations = @" +extern ""C"" { +void* __stdcall _Win32_SetLastError_ ImageRvaToSection(void* headers, void* image, unsigned long rva); +void* __stdcall _Win32_SetLastError_ ImageRvaToVa(void* headers, void* image, unsigned long rva, void** section); +HANDLE __stdcall _Win32_SetLastError_ FindDebugInfoFile(const char* fileName, const char* searchPath, char* result); +void* __stdcall ImageHlpWithoutLastError(void* image); +} +"; + + private const string FileAndSocketResultDeclarations = @" +typedef unsigned long DWORD; +typedef int BOOL; +typedef const char* LPCSTR; +typedef const wchar_t* LPCWSTR; +typedef wchar_t* LPWSTR; +typedef void* WSAEVENT; +enum BATCH_SOCKET_WAIT_EVENT : unsigned long { BatchEvent = 0, BatchCompletion = 192, BatchTimeout = 258, BatchFailed = 0xffffffffUL }; +extern ""C"" { +_Win32_PreserveResult_ _Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ +DWORD __stdcall GetFileAttributesA(_In_ LPCSTR lpFileName); +_Win32_PreserveResult_ _Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ +DWORD __stdcall GetFileAttributesW(_In_ LPCWSTR lpFileName); +_Win32_PreserveResult_ _Win32_SetLastError_ _Win32_SupportedOS_WindowsXP_ +DWORD __stdcall QueryDosDeviceW(_In_opt_ LPCWSTR lpDeviceName, + _Out_writes_to_opt_(ucchMax,return) LPWSTR lpTargetPath, _In_ DWORD ucchMax); +_Win32_PreserveResult_ _Win32_AssociatedEnum_(BATCH_SOCKET_WAIT_EVENT) _Win32_SetLastError_ _Win32_SupportedOS_Windows81_ +DWORD __stdcall WSAWaitForMultipleEvents(_In_ DWORD cEvents, + _In_reads_(cEvents) const WSAEVENT* lphEvents, _In_ BOOL fWaitAll, _In_ DWORD dwTimeout, _In_ BOOL fAlertable); +DWORD __stdcall FileAndSocketResultWithoutPreserveResult(DWORD value); +} +"; + + private const string FileAndSocketResultLibraries = @"--with-librarypath +GetFileAttributesA=kernel32.dll +GetFileAttributesW=kernel32.dll +QueryDosDeviceW=kernel32.dll +WSAWaitForMultipleEvents=ws2_32.dll "; [Fact] @@ -63,9 +118,10 @@ public void OneHeaderPerArchitectureExercisesNativeContractsAndPhysicalMetadata( { this.output.WriteLine($"Native contract batch: architecture={architecture}; target={target}"); string declarations = "#define _WIN32_WINNT 0x0600\n" + Declarations + - ScopedDeclarations + AssociatedConstantNativeDeclarations + AdditionalDeclarations; + ScopedDeclarations + AssociatedConstantNativeDeclarations + AdditionalDeclarations + + ImageHlpLastErrorDeclarations + FileAndSocketResultDeclarations; var fixture = new HeaderAnnotationTests.NativeFixture(architecture, target, declarations, - extraSettings: "--config\nnative-constant-values\n"); + extraSettings: "--config\nnative-constant-values\n" + FileAndSocketResultLibraries); fixtures.Add((architecture, fixture)); fixture.AssertSuccess("FlagEnum", "FlagEnum", "MSInheritance", "MSInheritance"); Assert.Equal(NativeSurface(fixture, target, metadataEnabled: false), @@ -73,6 +129,9 @@ public void OneHeaderPerArchitectureExercisesNativeContractsAndPhysicalMetadata( using var image = Emit(fixture, architecture); var reader = image.Reader; AssertNativeHeaders(fixture, reader); + AssertImageHlpLastError(reader); + AssertWaitResults(reader); + AssertFileAndSocketResults(reader); foreach (string name in new[] { "SCOPED_RECORD", "SCOPED_ENUM", "SCOPED_TOKEN", "PFN_SCOPED" }) AssertStringAttribute(reader, FindType(reader, name).GetCustomAttributes(), @@ -143,6 +202,9 @@ public void OneHeaderPerArchitectureExercisesNativeContractsAndPhysicalMetadata( fixtures.ToDictionary(value => value.Fixture.Header, _ => "Test"), new(), new(), new(), new()); using var combined = Emit(first, "crossarch"); AssertNativeHeaders(first, combined.Reader); + AssertImageHlpLastError(combined.Reader); + AssertWaitResults(combined.Reader); + AssertFileAndSocketResults(combined.Reader); AssertConstant(combined.Reader, "Apis", "BATCH_WRAP32", 0); var fields = FindType(combined.Reader, "Apis").GetFields().Select(combined.Reader.GetFieldDefinition) .GroupBy(field => combined.Reader.GetString(field.Name)).ToDictionary(group => group.Key, group => group.ToArray()); @@ -167,6 +229,34 @@ public void OneHeaderPerArchitectureExercisesNativeContractsAndPhysicalMetadata( } } + [Fact] + public void SelectedImageHlpLastErrorContractsAreAnnotatedOnTheTraversedHeader() + { + string sdk = Path.Combine(RepositoryRoot(), "generation", "WinSDK"); + Assert.Contains("#include ", File.ReadAllText(Path.Combine(sdk, "Partitions", "Debug", "main.cpp"))); + Assert.Contains("/um/ImageHlp.h", + File.ReadAllText(Path.Combine(sdk, "Partitions", "Debug", "settings.rsp"))); + string patch = File.ReadAllText(Path.Combine(sdk, "patches", "um", "imagehlp.h.patch")); + foreach (string name in new[] { "ImageRvaToSection", "ImageRvaToVa", "FindDebugInfoFile" }) + Assert.Matches(@"(?m)^\+_Win32_SetLastError_\s+" + Regex.Escape(name) + @"\s*\(", patch); + } + + private static string RepositoryRoot([CallerFilePath] string source = null) + => Path.GetFullPath(Path.Combine(Path.GetDirectoryName(source), "..", "..")); + + private static void AssertImageHlpLastError(MetadataReader reader) + { + foreach (string name in new[] { "ImageRvaToSection", "ImageRvaToVa", "FindDebugInfoFile" }) + { + var import = FindMethod(reader, "Apis", name).GetImport(); + Assert.True(import.Attributes.HasFlag(MethodImportAttributes.SetLastError)); + Assert.Equal("scan.dll", reader.GetString(reader.GetModuleReference(import.Module).Name)); + Assert.Equal(name, reader.GetString(import.Name)); + } + Assert.False(FindMethod(reader, "Apis", "ImageHlpWithoutLastError").GetImport() + .Attributes.HasFlag(MethodImportAttributes.SetLastError)); + } + [Fact] public void InvalidNativeFactsFailClosedWithoutPublishingBindings() { @@ -249,6 +339,107 @@ public void NativeIntegrationUsesBatchesInsteadOfInheritedScenarioTheories() BindingFlags.Instance | BindingFlags.Static).Where(method => method.IsDefined(typeof(FactAttribute), inherit: true))); } + [Fact] + public void ActiveWaitDeclarationsPreserveNativeStatusResults() + { + string root = WaitStatusRepositoryRoot(); + string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", "synchapi.h.patch")); + foreach (string name in new[] { "WaitForSingleObject", "WaitForSingleObjectEx", "WaitForMultipleObjects", "WaitForMultipleObjectsEx" }) + Assert.Contains("+_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI\n DWORD\n WINAPI\n " + name + "(", + patch.Replace("\r\n", "\n")); + Assert.Contains("/um/synchapi.h", File.ReadAllText( + Path.Combine(root, "generation", "WinSDK", "Partitions", "Threading", "settings.rsp"))); + } + + private static string WaitStatusRepositoryRoot( + [System.Runtime.CompilerServices.CallerFilePath] string sourceFile = "") => + Path.GetFullPath(Path.Combine(Path.GetDirectoryName(sourceFile), "..", "..")); + + private static void AssertWaitResults(MetadataReader reader) + { + foreach (var (name, parameterCount) in new[] + { + ("WaitForSingleObject", 2), ("WaitForSingleObjectEx", 3), + ("WaitForMultipleObjects", 4), ("WaitForMultipleObjectsEx", 5), + }) + { + var method = FindMethod(reader, "Apis", name); + Assert.True(method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig), name); + Assert.True(method.GetImport().Attributes.HasFlag(MethodImportAttributes.SetLastError), name); + Assert.Equal(name, reader.GetString(method.GetImport().Name)); + var signature = method.DecodeSignature(new SignatureNames(), null); + Assert.Equal("UInt32", signature.ReturnType); + Assert.Equal(parameterCount, signature.ParameterTypes.Length); + var result = method.GetParameters().Select(reader.GetParameter).Single(parameter => parameter.SequenceNumber == 0); + AssertStringAttribute(reader, result.GetCustomAttributes(), "AssociatedEnumAttribute", "WAIT_EVENT"); + AssertStringAttribute(reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute", "windows5.1.2600"); + } + Assert.False(FindMethod(reader, "Apis", "WaitResultWithoutPreserveResult") + .ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig)); + } + + [Fact] + public void ActiveFileAndSocketDeclarationsPreserveNativeResults() + { + string root = FileAndSocketResultRepositoryRoot(); + foreach (var (header, name, prefix, os, linkage, convention) in new[] + { + ("fileapi.h", "GetFileAttributesA", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("fileapi.h", "GetFileAttributesW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("fileapi.h", "QueryDosDeviceW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("winsock2.h", "WSAWaitForMultipleEvents", "_Win32_AssociatedEnum_(WAIT_EVENT) ", + "Windows81", "WINSOCK_API_LINKAGE", "WSAAPI"), + }) + { + string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", header + ".patch")) + .Replace("\r\n", "\n"); + Assert.Contains("+_Win32_PreserveResult_ " + prefix + "_Win32_SetLastError_\n" + + "+_Win32_SupportedOS_" + os + "_\n " + linkage + "\n DWORD\n " + convention + "\n " + name + "(", patch); + } + foreach (var (partition, header) in new[] { ("Fs", "fileapi.h"), ("WinSock", "WinSock2.h") }) + { + string directory = Path.Combine(root, "generation", "WinSDK", "Partitions", partition); + Assert.Contains("/um/" + header, File.ReadAllText(Path.Combine(directory, "settings.rsp"))); + Assert.Contains("#include <" + header.ToLowerInvariant() + ">", File.ReadAllText(Path.Combine(directory, "main.cpp"))); + } + } + + private static string FileAndSocketResultRepositoryRoot( + [System.Runtime.CompilerServices.CallerFilePath] string sourceFile = "") => + Path.GetFullPath(Path.Combine(Path.GetDirectoryName(sourceFile), "..", "..")); + + private static void AssertFileAndSocketResults(MetadataReader reader, string waitEnum = "BATCH_SOCKET_WAIT_EVENT") + { + foreach (var (name, count) in new[] + { + ("GetFileAttributesA", 1), ("GetFileAttributesW", 1), + ("QueryDosDeviceW", 3), ("WSAWaitForMultipleEvents", 5), + }) + { + bool socket = name == "WSAWaitForMultipleEvents"; + var method = FindMethod(reader, "Apis", name); + Assert.True(method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig), name); + var import = method.GetImport(); + Assert.Equal(MethodImportAttributes.ExactSpelling | MethodImportAttributes.CallingConventionWinApi | + MethodImportAttributes.SetLastError, import.Attributes); + Assert.Equal(socket ? "ws2_32.dll" : "kernel32.dll", reader.GetString(reader.GetModuleReference(import.Module).Name)); + Assert.Equal(name, reader.GetString(import.Name)); + var signature = method.DecodeSignature(new SignatureNames(), null); + Assert.Equal("UInt32", signature.ReturnType); + Assert.Equal(count, signature.ParameterTypes.Length); + var results = method.GetParameters().Select(reader.GetParameter).Where(parameter => parameter.SequenceNumber == 0).ToArray(); + if (socket) + AssertStringAttribute(reader, Assert.Single(results).GetCustomAttributes(), "AssociatedEnumAttribute", waitEnum); + else + foreach (var result in results) + AssertDoesNotHaveAttribute(reader, result.GetCustomAttributes(), "AssociatedEnumAttribute"); + AssertStringAttribute(reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute", + socket ? "windows8.1" : "windows5.1.2600"); + } + Assert.False(FindMethod(reader, "Apis", "FileAndSocketResultWithoutPreserveResult") + .ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig)); + } + private static void AssertConstant(MetadataReader reader, string type, string name, long expected) { var field = FindType(reader, type).GetFields().Select(reader.GetFieldDefinition) From f89cb10fa9d59a103dc264681b80f2659f309088 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Tue, 27 Oct 2026 21:39:14 -0700 Subject: [PATCH 54/57] Preserve reviewed SDK header compatibility contracts Select the latest DirectML declarations, preserve Iads result semantics, retain the approved AllJoyn surface, restore native-sized callback and namespace projections, and guard SearchPath locally. Project documented PBI fields only for metadata while preserving the shipped native layout and ordinary SDK declaration. Pin retained preparation inputs explicitly and align ownership guidance with actual MIDL outputs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/copilot-instructions.md | 2 +- .../header-annotation-migration-playbook.md | 65 ++- docs/header-annotation-migration-playbook.md | 35 +- .../WinSDK/Partitions/DirectML/main.cpp | 1 + generation/WinSDK/patches/SdkHeaders.json | 14 + .../WinSDK/patches/shared/minwindef.h.patch | 9 + generation/WinSDK/patches/um/Iads.h.patch | 30 ++ .../um/alljoyn_c/AboutDataListener.h.patch | 26 + generation/WinSDK/patches/um/dbghelp.h.patch | 452 +++++++++++------- generation/WinSDK/patches/um/winternl.h.patch | 47 +- .../WinSDK/requiredNamespacesForNames.rsp | 3 + scripts/Prepare-SdkHeaders.ps1 | 54 ++- .../HeaderCompatibilityPatchTests.cs | 308 ++++++++++++ .../PreparedSdkHeadersTests.cs | 76 ++- 14 files changed, 882 insertions(+), 240 deletions(-) create mode 100644 generation/WinSDK/patches/um/Iads.h.patch create mode 100644 generation/WinSDK/patches/um/alljoyn_c/AboutDataListener.h.patch create mode 100644 tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 4edcb4b44..b08306a65 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -74,7 +74,7 @@ Each arch job scrapes ALL partitions for that architecture. **Import discovery before header overrides:** Before adding `_Win32_ImportLibrary_` or a manual DLL mapping, inspect the selected SDK's import libraries and the library-processing set in `scripts\CreateProcLibMappingForAllLibs.ps1`. Use `WinmdUtils dumpImports --lib ` to verify the actual symbols and DLL, not just the library filename. If a matching `.lib` was omitted or its imports were missed, fix shared discovery instead of adding a redundant header annotation. Use an authored override only when no authoritative SDK library mapping is available or the native contract genuinely requires an override; record the SDK/library search evidence. -**Header-annotation migration:** Follow `docs\copilot\plans\header-annotation-migration-playbook.md`. Classify the original artifact before editing: patch authored `.h` files directly, but patch original `.idl` and regenerate all affected outputs for IDL-owned declarations. Never patch a generated `.h` or independently patch the same shared artifact in different partitions. Use exact qualified tooling/pilot pins and keep raw OLD-to-NEW differences visible. +**Header-annotation migration:** Follow `docs\copilot\plans\header-annotation-migration-playbook.md`. Annotate the definition consumed by the actual SDK preparation. If preparation runs MIDL to regenerate that header, patch the owning IDL input before MIDL and regenerate the affected outputs. Otherwise, patch the consumed shipped SDK header in the established patch phase, even if it has a generated banner or corresponding IDL/ODL is present but not regenerated. An external IDL/ODL import or version match is not a prerequisite for that header patch. Do not edit the SDK mirror or prepared outputs directly, or independently patch the same shared artifact in different partitions. Use exact qualified tooling/pilot pins and keep raw OLD-to-NEW differences visible. **Winmd equivalence:** After any change, the winmd must be compared against the baseline. The `NoSuggestedRemappings` test in `Windows.Win32.Tests` validates that no new unhandled remappings were introduced. API diffs are automatically posted as PR comments by CI. Run `.\scripts\DiffWinmdToBaseline.ps1` locally to see a full C# declaration diff against the last release. diff --git a/docs/copilot/plans/header-annotation-migration-playbook.md b/docs/copilot/plans/header-annotation-migration-playbook.md index 90bddaf01..59d97d6c0 100644 --- a/docs/copilot/plans/header-annotation-migration-playbook.md +++ b/docs/copilot/plans/header-annotation-migration-playbook.md @@ -36,14 +36,18 @@ separate native-control matrix or image for every selector, original, or partiti 1. **Claim an original or IDL family.** Use the shared remaining-fact inventory and one writer per original. Include all owned facts in a substantial cohort rather than selecting only the next fact with an already-green local probe. -2. **Read the selected SDK's native declarations.** Identify the authored `.h` or - original `.idl`, its guards, and the declarations to annotate. The repository's +2. **Read the selected SDK's native declarations.** Identify the consumed definition, + its guards, and whether the actual SDK-preparation MIDL set regenerates its header. + Patch the owning IDL input when preparation regenerates the consumed header; + otherwise patch the shipped SDK header that preparation consumes as-is. A generated + banner or a present but unused IDL/ODL does not change that route. The repository's `RecompiledIdlHeaders` tree is generated output, not an unmodified shipped-SDK source authority. Use the actual selected package's headers/IDL when they differ. 3. **Write cumulative source patches.** Put them under `generation\WinSDK\patches`, following the existing pre-MIDL/post-MIDL recipe. - Use the specification's vocabulary and the rules below. For IDL-owned declarations, - patch the original IDL and leave regeneration to integration. Preserve native + Use the specification's vocabulary and the rules below. When preparation regenerates + the consumed header, patch its owning IDL input and leave regeneration to integration. + Otherwise patch the consumed shipped header. Preserve native declarations, SAL, values, guards, storage, and ordinary-consumer behavior. 4. **Draft the corresponding legacy removals.** Deliver the patch and removal edits together, mapped to the original fact IDs/selectors. Preserve foreign @@ -100,23 +104,32 @@ Do not merge PRs or start consumer changes as part of this migration. ## Choose the original artifact before editing -| Declaration owner | Authored change | Required preparation | +| Consumed definition and preparation route | Authored change | Required preparation | | --- | --- | --- | -| Shipped, C/C++-authored `.h` | One cumulative patch for that original header | Apply to an exact private SDK snapshot; scrape the patched header. | -| Header generated from shipped `.idl` | One cumulative patch for the original `.idl`, never its generated `.h` | Apply before MIDL; regenerate every admitted header produced by that source and its including IDL. | -| IDL that includes another patched IDL | Patch only the source that owns the fact; pin the including IDL as an input | Regenerate both outputs where the included source is embedded in both. Preserve include order and guards. | +| Shipped `.h` consumed as-is, whether authored or generated upstream | One cumulative patch for that SDK header, even if corresponding IDL/ODL is present | Apply to the exact private SDK snapshot in the established patch phase; scrape the patched header. | +| Header regenerated by the actual SDK-preparation MIDL set | One cumulative patch for the owning IDL input, not the regenerated output | Apply before MIDL; regenerate every admitted header produced by that source and its including IDL. | +| Regenerated IDL that includes another patched IDL | Patch only the source that owns the fact; pin the including IDL as an input | Regenerate both consumed outputs where the included source is embedded in both. Preserve include order and guards. | | Shared bootstrap, such as `shared\sal.h` | One shared original-header patch, not one include patch per API header | Apply the same admitted patch to native and MIDL input copies that consume it; retain exact preimage checks for both. | | Global parser/tooling setting | Keep a justified global configuration or parser fix | Demonstrate that it is not an API-specific fact being left behind. | -A file named `.h` is not evidence that it is the authored source. Check its generated -banner and the selected SDK's original IDL, including `#include` and `import` edges. -Patch identity is the SDK-relative original artifact path, not the partition name. -Multiple partitions sharing a header share one patch and one writer. - -If a generated header ships without its owning IDL, block that conversion. Preserve -its unmigrated facts on the existing legacy path as explicit residuals: do not drop -the APIs, author a generated-header patch, or let partition-wide admission filter -the still-needed facts. +Determine the route from the actual preparation script/recipe's MIDL inputs and +outputs. A generated banner, an existing IDL/ODL, or upstream source ownership alone +does not establish that preparation regenerates a consumed header. If it does, +follow the owning input's `#include` and `import` edges and patch that source. If it +does not, annotate the definition in the shipped header we consume, including when +IDL/ODL is present but not regenerated. Do not require importing or version-matching +an external IDL/ODL for that header patch. + +Keep the changes as reviewed patch files; do not edit the SDK mirror or prepared +outputs directly. Patch identity is the SDK-relative input artifact path, not the +partition name. Multiple partitions sharing that artifact share one patch and one +writer. + +If preparation regenerates a header but its required owning input is unavailable, +keep the facts as explicit residuals until that preparation input is resolved. +Do not drop the APIs or patch the regenerated output to bypass the missing input. +An unavailable original IDL/ODL does not block a patch to a shipped header consumed +as-is. The property-storage pilot is the important closure example: `propidl.idl` defines `BUILDING_PROPIDL_IDL` and includes `propidlbase.idl`. Its generated `PropIdl.h` @@ -308,22 +321,26 @@ for an author to deliver a draft or start another owned original. 2. **Prepare exact private inputs.** Pin original SDK/IDL/header and tool identities; apply one cumulative patch per original artifact. Use the pilot preparer and manifest, with no fuzz, installed-SDK writes, ambient include fallback, or direct - generated-header editing. The declared input set must equal the measured - preprocessing closure, not merely contain it. + SDK-mirror or prepared-output editing. Follow the actual preparation route above: + patch owning IDL inputs for regenerated headers and shipped SDK headers consumed + as-is. The declared input set must equal the measured preprocessing closure, not + merely contain it. 3. **Generate the combined metadata and iterate.** Enable annotation ingestion for every affected consumer, not only the partition that owns a group definition. Scrape the affected closure and include the normal constants stage and complete emission, with no legacy fallback for the removed facts. Group failures by shared cause and repair the source or tooling once. Do not send every author back to reproduce the same compiler failure or require an image per patch. -4. **Prove native behavior and grade the image.** Regenerate pristine and patched - IDL with the same MIDL/MSVC arguments. Compile actual C and C++ consumption, including C-interface +4. **Prove native behavior and grade the image.** For affected outputs regenerated + by preparation, regenerate pristine and patched IDL with the same MIDL/MSVC + arguments. For shipped headers consumed as-is, compare the pristine and patched + SDK headers directly. Compile actual C and C++ consumption, including C-interface forms where relevant, on x86/x64/ARM64 with metadata off; exercise metadata-on parsing as C++ only. Compare native signatures/layout/vtables/symbols and actual compiler SAL facts. Compare warning - contexts as well as counts. Compare RPC proxy, IID, dlldata, and TLB outputs - against matched pristine regeneration; explain existing mirror-only differences - separately. Batch these checks around shared transports and affected source + contexts as well as counts. Where preparation regenerates RPC proxy, IID, dlldata, + or TLB outputs, compare them against matched pristine regeneration; explain + existing mirror-only differences separately. Batch these checks around shared transports and affected source families instead of repeating the full matrix for each fact. Preserve raw logs, including known pristine failures; do not claim those cases passed. Run physical metadata checks for attributes, flags, types, signatures, constants, availability, diff --git a/docs/header-annotation-migration-playbook.md b/docs/header-annotation-migration-playbook.md index aa9fd2d58..2205727a8 100644 --- a/docs/header-annotation-migration-playbook.md +++ b/docs/header-annotation-migration-playbook.md @@ -242,10 +242,11 @@ The new manifest records `midlIdentity`, `midlReusedFrom` and the original Old caches without that identity require one fresh production. Corrupt matching caches fail rather than falling back to regeneration. -Respect the SDK artifact boundary, not just a recipe filename extension. Patch a -shipped source IDL before MIDL when its corresponding generated header owns the -fact; keep real direct-shipped header artifacts as header patches. A generated -dependency is not automatically another annotation target. Never run broad +Follow the actual preparation inputs. When preparation regenerates the consumed +header, patch its owning SDK IDL before MIDL. Otherwise patch the shipped SDK header +that preparation consumes, even when it has a generated banner or a corresponding +IDL/ODL that is not regenerated. A generated dependency is not automatically another +annotation target. Never run broad SDK/IDL update scripts to implement a bounded migration: those scripts reset the mirror and restore removed SDK artifacts. @@ -258,14 +259,30 @@ that same artifact (`a/um/winhttp.h` to `b/um/winhttp.h`), starting from its pri admitted SDK bytes, not another patch's output. Reject repeated targets even under different filenames; do not stack semantic layers on a header. +Retained compatibility headers require an explicit recipe entry with +`sourceKind: "retained"`, their repository `sourceSha256`, and a nonempty +`retentionReason`. They have no `sdkPath` or `sdkSha256`, cannot replace an SDK MIDL +input, and are listed separately in the prepared manifest's `retainedHeaders`. +This update deliberately retains the existing AllJoyn surface for compatibility. +Ordinary entries still require their exact selected-SDK binding; a missing SDK +header never enables retention automatically. + +The cumulative `um\winternl.h` patch selects the documented +`PROCESS_BASIC_INFORMATION` fields only under `WIN32METADATA`. It uses the native +`NTSTATUS`, `PPEB`, `ULONG_PTR` and `KPRIORITY` typedefs already available to that +header. Ordinary SDK clients retain the shipped reserved-field declaration. +The metadata-only declaration preserves native size, alignment and corresponding +field offsets on x86, x64 and Arm64; it is not an emitter-owned record replacement. + Artifact identity determines preparation, not a stage directory or recipe order. Apply direct-header patches to private SDK header copies and IDL patches to the pinned raw source closure before the existing MIDL-to-SAL conversion and shared -`MidlHeaderUtils.ps1` flags regenerate only the admitted outputs. There are no -post-MIDL annotation patches or patches on generated headers. Scraping -and constants still consume one private root. Reject generated-header patches, -unpinned imports, changed tools/preimages, failed generation and modified caches; -never fall back to an old generated header. +`MidlHeaderUtils.ps1` flags regenerate only the admitted outputs. Never patch those +regenerated outputs or the SDK mirror directly. Consumed shipped headers that are +not regenerated use the direct-header patch phase. Scraping +and constants still consume one private root. Reject patches to headers that +preparation regenerates, unpinned imports, changed tools/preimages, failed +generation and modified caches; never fall back to an old generated header. Every admitted header whose source IDL participates in the MIDL input closure must have its own pinned output, including an unpatched IDL that includes a patched source. A shared declaration guard can otherwise make an unchanged diff --git a/generation/WinSDK/Partitions/DirectML/main.cpp b/generation/WinSDK/Partitions/DirectML/main.cpp index efa5d56bf..616db09a8 100644 --- a/generation/WinSDK/Partitions/DirectML/main.cpp +++ b/generation/WinSDK/Partitions/DirectML/main.cpp @@ -1,5 +1,6 @@ #define SECURITY_WIN32 // For sspi.h #define QCC_OS_GROUP_WINDOWS +#define DML_TARGET_VERSION_USE_LATEST #include "intrinfix.h" diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index 1ec9f5829..b60c8e999 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -4480,6 +4480,18 @@ "sdkPath": "c\\include\\10.0.28000.0\\shared\\minwindef.h", "sdkSha256": "A9CF08BE8407A196104124D5ADE2308E204E47D3252BCD2AD20D0F2137843D62" }, + { + "path": "um\\Iads.h", + "sourceSha256": "915F09878FC8F2F2361FB78FA4B3E448A2CC09AD97DC60DB4AFAD5FB6D81C4AA", + "sdkPath": "c\\include\\10.0.28000.0\\um\\Iads.h", + "sdkSha256": "915F09878FC8F2F2361FB78FA4B3E448A2CC09AD97DC60DB4AFAD5FB6D81C4AA" + }, + { + "path": "um\\alljoyn_c\\AboutDataListener.h", + "sourceKind": "retained", + "sourceSha256": "9D0A0C64E91B750BA90A06FC29E209286A2A7CB16BCD2A8335830DB78DE3DB34", + "retentionReason": "Retain the existing AllJoyn compatibility surface for this SDK update; removal is deferred." + }, { "path": "shared\\mswsockdef.h", "sourceSha256": "6555E8528263DE35DEFD45F80232C86DC36F3BBF1576AE261296250431A5D9CA", @@ -9013,6 +9025,8 @@ "shared\\fltUserStructures.h.patch", "shared\\ifdef.h.patch", "shared\\minwindef.h.patch", + "um\\Iads.h.patch", + "um\\alljoyn_c\\AboutDataListener.h.patch", "shared\\mswsockdef.h.patch", "shared\\usbioctl.h.patch", "um\\appnotify.h.patch", diff --git a/generation/WinSDK/patches/shared/minwindef.h.patch b/generation/WinSDK/patches/shared/minwindef.h.patch index f6797d611..05c349ae9 100644 --- a/generation/WinSDK/patches/shared/minwindef.h.patch +++ b/generation/WinSDK/patches/shared/minwindef.h.patch @@ -22,6 +22,15 @@ typedef HANDLE HLOCAL; typedef HANDLE GLOBALHANDLE; typedef HANDLE LOCALHANDLE; +@@ -219,7 +225,7 @@ + #endif + #ifndef _MAC +-#ifdef _WIN64 ++#if defined(_WIN64) || defined(WIN32METADATA) + typedef INT_PTR (FAR WINAPI *FARPROC)(); + typedef INT_PTR (NEAR WINAPI *NEARPROC)(); + typedef INT_PTR (WINAPI *PROC)(); + #else @@ -247,15 +253,30 @@ DECLARE_HANDLE(HKEY); typedef HKEY *PHKEY; diff --git a/generation/WinSDK/patches/um/Iads.h.patch b/generation/WinSDK/patches/um/Iads.h.patch new file mode 100644 index 000000000..45dce6559 --- /dev/null +++ b/generation/WinSDK/patches/um/Iads.h.patch @@ -0,0 +1,30 @@ +--- a/um/Iads.h ++++ b/um/Iads.h +@@ -1253,6 +1253,6 @@ + typedef HANDLE ADS_SEARCH_HANDLE; + +-typedef HANDLE *PADS_SEARCH_HANDLE; ++typedef ADS_SEARCH_HANDLE *PADS_SEARCH_HANDLE; + + typedef struct ads_search_column + { +@@ -13700,15 +13700,19 @@ + virtual HRESULT STDMETHODCALLTYPE AbandonSearch( + /* [in] */ __RPC__in ADS_SEARCH_HANDLE phSearchResult) = 0; + ++ _Win32_PreserveResult_ + virtual HRESULT STDMETHODCALLTYPE GetFirstRow( + /* [in] */ __RPC__in ADS_SEARCH_HANDLE hSearchResult) = 0; + ++ _Win32_PreserveResult_ + virtual HRESULT STDMETHODCALLTYPE GetNextRow( + /* [in] */ __RPC__in ADS_SEARCH_HANDLE hSearchResult) = 0; + ++ _Win32_PreserveResult_ + virtual HRESULT STDMETHODCALLTYPE GetPreviousRow( + /* [in] */ __RPC__in ADS_SEARCH_HANDLE hSearchResult) = 0; + ++ _Win32_PreserveResult_ + virtual HRESULT STDMETHODCALLTYPE GetNextColumnName( + /* [in] */ __RPC__in ADS_SEARCH_HANDLE hSearchHandle, + /* [out] */ __RPC__deref_out_opt LPWSTR *ppszColumnName) = 0; diff --git a/generation/WinSDK/patches/um/alljoyn_c/AboutDataListener.h.patch b/generation/WinSDK/patches/um/alljoyn_c/AboutDataListener.h.patch new file mode 100644 index 000000000..185c53f21 --- /dev/null +++ b/generation/WinSDK/patches/um/alljoyn_c/AboutDataListener.h.patch @@ -0,0 +1,26 @@ +--- a/um/alljoyn_c/AboutDataListener.h ++++ b/um/alljoyn_c/AboutDataListener.h +@@ -23,6 +23,7 @@ + #ifndef _ALLJOYN_ABOUTDATALISTENER_C_H + #define _ALLJOYN_ABOUTDATALISTENER_C_H + ++#include + #include + #include + +@@ -72,7 +73,7 @@ + * - other error indicating failure + */ + typedef QStatus (AJ_CALL * alljoyn_aboutdatalistener_getaboutdata_ptr)(const void* context, +- alljoyn_msgarg msgArg, ++ _In_ alljoyn_msgarg msgArg, + const char* language); + + /** +@@ -104,5 +105,5 @@ + * @return ER_OK if successful + */ + typedef QStatus (AJ_CALL * alljoyn_aboutdatalistener_getannouncedaboutdata_ptr)(const void* context, +- alljoyn_msgarg msgArg); ++ _In_ alljoyn_msgarg msgArg); + diff --git a/generation/WinSDK/patches/um/dbghelp.h.patch b/generation/WinSDK/patches/um/dbghelp.h.patch index d2e897cc8..0077d7d6a 100644 --- a/generation/WinSDK/patches/um/dbghelp.h.patch +++ b/generation/WinSDK/patches/um/dbghelp.h.patch @@ -1,5 +1,3 @@ -diff --git a/um/dbghelp.h b/um/dbghelp.h -index 09bb15cb..066f6257 100644 --- a/um/dbghelp.h +++ b/um/dbghelp.h @@ -26,6 +26,16 @@ Revision History: @@ -73,8 +71,14 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR FileName, _In_ PCWSTR SymbolPath, _Out_writes_(MAX_PATH + 1) PWSTR DebugFilePath, -@@ -201,14 +211,14 @@ typedef BOOL +@@ -199,20 +209,27 @@ typedef BOOL + _In_ PVOID context + ); ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymFindFileInPath( @@ -90,8 +94,21 @@ index 09bb15cb..066f6257 100644 _Out_writes_(MAX_PATH + 1) PSTR FoundFile, _In_opt_ PFINDFILEINPATHCALLBACK callback, _In_opt_ PVOID context -@@ -222,14 +232,14 @@ typedef BOOL + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + + typedef BOOL + (CALLBACK *PFINDFILEINPATHCALLBACKW)( +@@ -220,20 +237,27 @@ typedef BOOL + _In_ PVOID context + ); ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymFindFileInPathW( @@ -107,7 +124,14 @@ index 09bb15cb..066f6257 100644 _Out_writes_(MAX_PATH + 1) PWSTR FoundFile, _In_opt_ PFINDFILEINPATHCALLBACKW callback, _In_opt_ PVOID context -@@ -244,7 +254,7 @@ typedef BOOL + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + + typedef BOOL + (CALLBACK *PFIND_EXE_FILE_CALLBACK)( +@@ -244,7 +268,7 @@ typedef BOOL HANDLE IMAGEAPI @@ -116,7 +140,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCSTR FileName, _Out_writes_(MAX_PATH + 1) PSTR ImageFilePath, -@@ -261,7 +271,7 @@ typedef BOOL +@@ -261,7 +285,7 @@ typedef BOOL HANDLE IMAGEAPI @@ -125,7 +149,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCWSTR FileName, _Out_writes_(MAX_PATH + 1) PWSTR ImageFilePath, -@@ -271,7 +281,7 @@ SymFindExecutableImageW( +@@ -271,7 +295,7 @@ SymFindExecutableImageW( HANDLE IMAGEAPI @@ -134,7 +158,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR FileName, _In_ PCSTR SymbolPath, _Out_writes_(MAX_PATH + 1) PSTR ImageFilePath -@@ -279,7 +289,7 @@ FindExecutableImage( +@@ -279,7 +303,7 @@ FindExecutableImage( HANDLE IMAGEAPI @@ -143,7 +167,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR FileName, _In_ PCSTR SymbolPath, _Out_writes_(MAX_PATH + 1) PSTR ImageFilePath, -@@ -289,7 +299,7 @@ FindExecutableImageEx( +@@ -289,7 +313,7 @@ FindExecutableImageEx( HANDLE IMAGEAPI @@ -152,7 +176,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR FileName, _In_ PCWSTR SymbolPath, _Out_writes_(MAX_PATH + 1) PWSTR ImageFilePath, -@@ -299,32 +309,32 @@ FindExecutableImageExW( +@@ -299,32 +323,32 @@ FindExecutableImageExW( PIMAGE_NT_HEADERS IMAGEAPI @@ -191,7 +215,7 @@ index 09bb15cb..066f6257 100644 _In_ PIMAGE_NT_HEADERS NtHeaders, _In_ PVOID Base, _In_ ULONG Rva -@@ -332,7 +342,7 @@ ImageRvaToSection( +@@ -332,7 +356,7 @@ ImageRvaToSection( PVOID IMAGEAPI @@ -200,7 +224,7 @@ index 09bb15cb..066f6257 100644 _In_ PIMAGE_NT_HEADERS NtHeaders, _In_ PVOID Base, _In_ ULONG Rva, -@@ -391,7 +401,7 @@ typedef struct _IMAGE_DEBUG_INFORMATION { +@@ -391,7 +415,7 @@ typedef struct _IMAGE_DEBUG_INFORMATION { PIMAGE_DEBUG_INFORMATION IMAGEAPI @@ -209,7 +233,7 @@ index 09bb15cb..066f6257 100644 _In_opt_ HANDLE FileHandle, _In_ PCSTR FileName, _In_opt_ PCSTR SymbolPath, -@@ -400,7 +410,7 @@ MapDebugInformation( +@@ -400,7 +424,7 @@ MapDebugInformation( BOOL IMAGEAPI @@ -218,7 +242,7 @@ index 09bb15cb..066f6257 100644 _Out_writes_(_Inexpressible_(unknown)) PIMAGE_DEBUG_INFORMATION DebugInfo ); -@@ -408,7 +418,7 @@ UnmapDebugInformation( +@@ -408,7 +432,7 @@ UnmapDebugInformation( BOOL IMAGEAPI @@ -227,7 +251,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR RootPath, _In_ PCSTR InputPathName, _Out_writes_(MAX_PATH + 1) PSTR OutputPathBuffer -@@ -416,7 +426,7 @@ SearchTreeForFile( +@@ -416,7 +440,7 @@ SearchTreeForFile( BOOL IMAGEAPI @@ -236,7 +260,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR RootPath, _In_ PCWSTR InputPathName, _Out_writes_(MAX_PATH + 1) PWSTR OutputPathBuffer -@@ -430,7 +440,7 @@ typedef BOOL +@@ -430,7 +454,7 @@ typedef BOOL BOOL IMAGEAPI @@ -245,7 +269,7 @@ index 09bb15cb..066f6257 100644 _In_opt_ HANDLE hProcess, _In_ PCSTR RootPath, _In_ PCSTR InputPathName, -@@ -447,7 +457,7 @@ typedef BOOL +@@ -447,7 +471,7 @@ typedef BOOL BOOL IMAGEAPI @@ -254,7 +278,7 @@ index 09bb15cb..066f6257 100644 _In_opt_ HANDLE hProcess, _In_ PCWSTR RootPath, _In_ PCWSTR InputPathName, -@@ -458,7 +468,7 @@ EnumDirTreeW( +@@ -458,7 +482,7 @@ EnumDirTreeW( BOOL IMAGEAPI @@ -263,7 +287,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR DirPath ); -@@ -488,7 +498,7 @@ MakeSureDirectoryPathExists( +@@ -488,7 +512,7 @@ MakeSureDirectoryPathExists( DWORD IMAGEAPI WINAPI @@ -272,7 +296,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR name, _Out_writes_(maxStringLength) PSTR outputString, _In_ DWORD maxStringLength, -@@ -498,7 +508,7 @@ UnDecorateSymbolName( +@@ -498,7 +522,7 @@ UnDecorateSymbolName( DWORD IMAGEAPI WINAPI @@ -281,7 +305,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR name, _Out_writes_(maxStringLength) PWSTR outputString, _In_ DWORD maxStringLength, -@@ -513,6 +523,12 @@ UnDecorateSymbolNameW( +@@ -513,6 +537,12 @@ UnDecorateSymbolNameW( #define DBHHEADER_DEBUGDIRS 0x1 #define DBHHEADER_CVMISC 0x2 @@ -294,7 +318,7 @@ index 09bb15cb..066f6257 100644 #define DBHHEADER_PDBGUID 0x3 #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) */ -@@ -523,7 +539,7 @@ UnDecorateSymbolNameW( +@@ -523,7 +553,7 @@ UnDecorateSymbolNameW( typedef struct _MODLOAD_DATA { DWORD ssize; // size of this struct @@ -303,7 +327,7 @@ index 09bb15cb..066f6257 100644 PVOID data; // pointer to passed data DWORD size; // size of passed data DWORD flags; // options -@@ -1057,7 +1073,7 @@ ImagehlpApiVersionEx( +@@ -1057,7 +1087,7 @@ ImagehlpApiVersionEx( DWORD IMAGEAPI @@ -312,7 +336,7 @@ index 09bb15cb..066f6257 100644 _In_ HMODULE Module ); -@@ -1279,6 +1295,27 @@ enum SymTagEnum +@@ -1279,6 +1309,27 @@ enum SymTagEnum #define SYMFLAG_ILREL 0x00010000 #define SYMFLAG_METADATA 0x00020000 #define SYMFLAG_CLR_TOKEN 0x00040000 @@ -340,7 +364,7 @@ index 09bb15cb..066f6257 100644 #define SYMFLAG_NULL 0x00080000 #define SYMFLAG_FUNC_NO_RETURN 0x00100000 #define SYMFLAG_SYNTHETIC_ZEROBASE 0x00200000 -@@ -1618,19 +1655,27 @@ enum { +@@ -1619,19 +1670,27 @@ enum { sevMax // unused }; @@ -370,7 +394,7 @@ index 09bb15cb..066f6257 100644 DWORD code; // numerical code IDs the error PCWSTR desc; // may contain a text description of the error PVOID object; // value dependant upon the error code -@@ -1709,7 +1754,7 @@ typedef struct _IMAGEHLP_JIT_SYMBOL_MAP { +@@ -1710,7 +1769,7 @@ typedef struct _IMAGEHLP_JIT_SYMBOL_MAP { BOOL IMAGEAPI @@ -379,7 +403,7 @@ index 09bb15cb..066f6257 100644 _In_ HWND hwnd ); -@@ -1721,21 +1766,21 @@ SymGetParentWindow( +@@ -1722,21 +1781,21 @@ SymGetParentWindow( PCHAR IMAGEAPI @@ -404,7 +428,7 @@ index 09bb15cb..066f6257 100644 _In_ DWORD type, _Out_writes_(size) PSTR dir, _In_ size_t size -@@ -1743,7 +1788,7 @@ SymGetHomeDirectory( +@@ -1744,7 +1803,7 @@ SymGetHomeDirectory( PWSTR IMAGEAPI @@ -413,7 +437,7 @@ index 09bb15cb..066f6257 100644 _In_ DWORD type, _Out_writes_(size) PWSTR dir, _In_ size_t size -@@ -1763,7 +1808,7 @@ typedef struct _OMAP { +@@ -1764,7 +1823,7 @@ typedef struct _OMAP { BOOL IMAGEAPI @@ -422,7 +446,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 BaseOfDll, _Out_ POMAP *OmapTo, -@@ -1850,7 +1895,7 @@ SymGetOptions( +@@ -1852,7 +1911,7 @@ SymGetOptions( BOOL IMAGEAPI @@ -431,7 +455,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess ); -@@ -1878,7 +1923,7 @@ SymSetExtendedOption(_In_ IMAGEHLP_EXTENDED_OPTIONS option, _In_ BOOL value); +@@ -1880,7 +1939,7 @@ SymSetExtendedOption(_In_ IMAGEHLP_EXTENDED_OPTIONS option, _In_ BOOL value); BOOL IMAGEAPI @@ -440,7 +464,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR string, _In_ PCSTR expression, _In_ BOOL fCase -@@ -1894,7 +1939,7 @@ SymMatchStringA( +@@ -1896,7 +1955,7 @@ SymMatchStringA( BOOL IMAGEAPI @@ -449,7 +473,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR string, _In_ PCWSTR expression, _In_ BOOL fCase -@@ -1911,7 +1956,7 @@ typedef BOOL +@@ -1913,7 +1972,7 @@ typedef BOOL BOOL IMAGEAPI @@ -458,7 +482,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 ModBase, _In_opt_ PCSTR Mask, -@@ -1927,7 +1972,7 @@ typedef BOOL +@@ -1929,7 +1988,7 @@ typedef BOOL BOOL IMAGEAPI @@ -467,7 +491,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 ModBase, _In_opt_ PCWSTR Mask, -@@ -1937,7 +1982,7 @@ SymEnumSourceFilesW( +@@ -1939,7 +1998,7 @@ SymEnumSourceFilesW( BOOL IMAGEAPI @@ -476,7 +500,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback, _In_opt_ PVOID UserContext -@@ -1945,7 +1990,7 @@ SymEnumerateModules64( +@@ -1947,7 +2006,7 @@ SymEnumerateModules64( BOOL IMAGEAPI @@ -485,7 +509,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback, _In_opt_ PVOID UserContext -@@ -1956,7 +2001,7 @@ SymEnumerateModulesW64( +@@ -1958,7 +2017,7 @@ SymEnumerateModulesW64( #else BOOL IMAGEAPI @@ -494,7 +518,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYM_ENUMMODULES_CALLBACK EnumModulesCallback, _In_opt_ PVOID UserContext -@@ -1965,7 +2010,7 @@ SymEnumerateModules( +@@ -1967,7 +2026,7 @@ SymEnumerateModules( BOOL IMAGEAPI @@ -503,7 +527,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback, _In_opt_ PVOID UserContext -@@ -1973,7 +2018,7 @@ EnumerateLoadedModulesEx( +@@ -1975,7 +2034,7 @@ EnumerateLoadedModulesEx( BOOL IMAGEAPI @@ -512,7 +536,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback, _In_opt_ PVOID UserContext -@@ -1981,7 +2026,7 @@ EnumerateLoadedModulesExW( +@@ -1983,7 +2042,7 @@ EnumerateLoadedModulesExW( BOOL IMAGEAPI @@ -521,7 +545,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback, _In_opt_ PVOID UserContext -@@ -1989,7 +2034,7 @@ EnumerateLoadedModules64( +@@ -1991,7 +2050,7 @@ EnumerateLoadedModules64( BOOL IMAGEAPI @@ -530,7 +554,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback, _In_opt_ PVOID UserContext -@@ -2000,7 +2045,7 @@ EnumerateLoadedModulesW64( +@@ -2002,7 +2061,7 @@ EnumerateLoadedModulesW64( #else BOOL IMAGEAPI @@ -539,7 +563,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback, _In_opt_ PVOID UserContext -@@ -2009,7 +2054,7 @@ EnumerateLoadedModules( +@@ -2011,7 +2070,7 @@ EnumerateLoadedModules( PVOID IMAGEAPI @@ -548,7 +572,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 AddrBase ); -@@ -2034,7 +2079,7 @@ SymFunctionTableAccess64AccessRoutines( +@@ -2036,7 +2095,7 @@ SymFunctionTableAccess64AccessRoutines( #else PVOID IMAGEAPI @@ -557,7 +581,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD AddrBase ); -@@ -2057,7 +2102,7 @@ SymGetUnwindInfo( +@@ -2059,7 +2118,7 @@ SymGetUnwindInfo( BOOL IMAGEAPI @@ -566,7 +590,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr, _Out_ PIMAGEHLP_MODULE64 ModuleInfo -@@ -2065,7 +2110,7 @@ SymGetModuleInfo64( +@@ -2067,7 +2126,7 @@ SymGetModuleInfo64( BOOL IMAGEAPI @@ -575,7 +599,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr, _Out_ PIMAGEHLP_MODULEW64 ModuleInfo -@@ -2077,7 +2122,7 @@ SymGetModuleInfoW64( +@@ -2079,7 +2138,7 @@ SymGetModuleInfoW64( #else BOOL IMAGEAPI @@ -584,7 +608,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD dwAddr, _Out_ PIMAGEHLP_MODULE ModuleInfo -@@ -2085,7 +2130,7 @@ SymGetModuleInfo( +@@ -2087,7 +2146,7 @@ SymGetModuleInfo( BOOL IMAGEAPI @@ -593,7 +617,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD dwAddr, _Out_ PIMAGEHLP_MODULEW ModuleInfo -@@ -2094,7 +2139,7 @@ SymGetModuleInfoW( +@@ -2096,7 +2155,7 @@ SymGetModuleInfoW( DWORD64 IMAGEAPI @@ -602,7 +626,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr ); -@@ -2104,7 +2149,7 @@ SymGetModuleBase64( +@@ -2106,7 +2165,7 @@ SymGetModuleBase64( #else DWORD IMAGEAPI @@ -611,7 +635,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD dwAddr ); -@@ -2144,7 +2189,7 @@ typedef BOOL +@@ -2146,7 +2205,7 @@ typedef BOOL BOOL IMAGEAPI @@ -620,7 +644,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCSTR Obj, -@@ -2161,7 +2206,7 @@ typedef BOOL +@@ -2163,7 +2222,7 @@ typedef BOOL BOOL IMAGEAPI @@ -629,7 +653,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCWSTR Obj, -@@ -2178,7 +2223,7 @@ SymEnumLinesW( +@@ -2180,7 +2239,7 @@ SymEnumLinesW( BOOL IMAGEAPI @@ -638,7 +662,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr, _Out_ PDWORD pdwDisplacement, -@@ -2193,7 +2238,7 @@ SymGetLineFromAddr64( +@@ -2195,7 +2254,7 @@ SymGetLineFromAddr64( BOOL IMAGEAPI @@ -647,7 +671,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 dwAddr, _Out_ PDWORD pdwDisplacement, -@@ -2202,7 +2247,7 @@ SymGetLineFromAddrW64( +@@ -2204,7 +2263,7 @@ SymGetLineFromAddrW64( BOOL IMAGEAPI @@ -656,7 +680,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr, _In_ ULONG InlineContext, -@@ -2213,7 +2258,7 @@ SymGetLineFromInlineContext( +@@ -2215,7 +2274,7 @@ SymGetLineFromInlineContext( BOOL IMAGEAPI @@ -665,7 +689,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 dwAddr, _In_ ULONG InlineContext, -@@ -2224,7 +2269,7 @@ SymGetLineFromInlineContextW( +@@ -2226,7 +2285,7 @@ SymGetLineFromInlineContextW( BOOL IMAGEAPI @@ -674,7 +698,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCSTR Obj, -@@ -2237,7 +2282,7 @@ SymEnumSourceLines( +@@ -2239,7 +2298,7 @@ SymEnumSourceLines( BOOL IMAGEAPI @@ -683,7 +707,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCWSTR Obj, -@@ -2278,7 +2323,7 @@ SymCompareInlineTrace( +@@ -2280,7 +2339,7 @@ SymCompareInlineTrace( BOOL IMAGEAPI @@ -692,7 +716,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 StartAddress, _In_ DWORD StartContext, -@@ -2302,7 +2347,7 @@ SymQueryInlineTrace( +@@ -2304,7 +2363,7 @@ SymQueryInlineTrace( #else BOOL IMAGEAPI @@ -701,7 +725,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD dwAddr, _Out_ PDWORD pdwDisplacement, -@@ -2321,7 +2366,7 @@ SymGetLineFromAddrW( +@@ -2323,7 +2382,7 @@ SymGetLineFromAddrW( BOOL IMAGEAPI @@ -710,7 +734,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR ModuleName, _In_opt_ PCSTR FileName, -@@ -2332,7 +2377,7 @@ SymGetLineFromName64( +@@ -2334,7 +2393,7 @@ SymGetLineFromName64( BOOL IMAGEAPI @@ -719,7 +743,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR ModuleName, _In_opt_ PCWSTR FileName, -@@ -2346,7 +2391,7 @@ SymGetLineFromNameW64( +@@ -2348,7 +2407,7 @@ SymGetLineFromNameW64( #else BOOL IMAGEAPI @@ -728,7 +752,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR ModuleName, _In_opt_ PCSTR FileName, -@@ -2358,14 +2403,14 @@ SymGetLineFromName( +@@ -2360,14 +2419,14 @@ SymGetLineFromName( BOOL IMAGEAPI @@ -745,7 +769,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_LINEW64 Line ); -@@ -2375,7 +2420,7 @@ SymGetLineNextW64( +@@ -2377,7 +2436,7 @@ SymGetLineNextW64( #else BOOL IMAGEAPI @@ -754,7 +778,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_LINE Line ); -@@ -2390,14 +2435,14 @@ SymGetLineNextW( +@@ -2392,14 +2451,14 @@ SymGetLineNextW( BOOL IMAGEAPI @@ -771,7 +795,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_LINEW64 Line ); -@@ -2407,7 +2452,7 @@ SymGetLinePrevW64( +@@ -2409,7 +2468,7 @@ SymGetLinePrevW64( #else BOOL IMAGEAPI @@ -780,7 +804,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_LINE Line ); -@@ -2422,7 +2467,7 @@ SymGetLinePrevW( +@@ -2424,7 +2483,7 @@ SymGetLinePrevW( ULONG IMAGEAPI @@ -789,7 +813,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR ModuleName, _In_ PCSTR FileName, -@@ -2432,7 +2477,7 @@ SymGetFileLineOffsets64( +@@ -2434,7 +2493,7 @@ SymGetFileLineOffsets64( BOOL IMAGEAPI @@ -798,7 +822,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR FileName, _In_ PCSTR Match, _Outptr_opt_ PSTR *FileNameStop, -@@ -2441,7 +2486,7 @@ SymMatchFileName( +@@ -2443,7 +2502,7 @@ SymMatchFileName( BOOL IMAGEAPI @@ -807,7 +831,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR FileName, _In_ PCWSTR Match, _Outptr_opt_ PWSTR *FileNameStop, -@@ -2450,7 +2495,7 @@ SymMatchFileNameW( +@@ -2452,7 +2511,7 @@ SymMatchFileNameW( BOOL IMAGEAPI @@ -816,7 +840,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCSTR Params, -@@ -2461,7 +2506,7 @@ SymGetSourceFile( +@@ -2463,7 +2522,7 @@ SymGetSourceFile( BOOL IMAGEAPI @@ -825,7 +849,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCWSTR Params, -@@ -2472,7 +2517,7 @@ SymGetSourceFileW( +@@ -2474,7 +2533,7 @@ SymGetSourceFileW( BOOL IMAGEAPI @@ -834,7 +858,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_ PCSTR FileSpec, -@@ -2494,7 +2539,7 @@ SymGetSourceFileTokenByTokenName( +@@ -2496,7 +2555,7 @@ SymGetSourceFileTokenByTokenName( BOOL IMAGEAPI @@ -843,7 +867,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_ PCWSTR FileSpec, -@@ -2506,7 +2551,7 @@ SymGetSourceFileChecksumW( +@@ -2508,7 +2567,7 @@ SymGetSourceFileChecksumW( BOOL IMAGEAPI @@ -852,7 +876,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_ PCSTR FileSpec, -@@ -2518,7 +2563,7 @@ SymGetSourceFileChecksum( +@@ -2520,7 +2579,7 @@ SymGetSourceFileChecksum( BOOL IMAGEAPI @@ -861,7 +885,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_ PCWSTR FileSpec, -@@ -2540,7 +2585,7 @@ SymGetSourceFileTokenByTokenNameW( +@@ -2542,7 +2601,7 @@ SymGetSourceFileTokenByTokenNameW( BOOL IMAGEAPI @@ -870,7 +894,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PVOID Token, _In_opt_ PCSTR Params, -@@ -2561,7 +2606,7 @@ SymGetSourceFileFromTokenByTokenName( +@@ -2563,7 +2622,7 @@ SymGetSourceFileFromTokenByTokenName( BOOL IMAGEAPI @@ -879,7 +903,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PVOID Token, _In_opt_ PCWSTR Params, -@@ -2582,7 +2627,7 @@ SymGetSourceFileFromTokenByTokenNameW( +@@ -2584,7 +2643,7 @@ SymGetSourceFileFromTokenByTokenNameW( BOOL IMAGEAPI @@ -888,7 +912,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PVOID Token, _In_opt_ PCSTR Params, -@@ -2593,7 +2638,7 @@ SymGetSourceVarFromToken( +@@ -2595,7 +2654,7 @@ SymGetSourceVarFromToken( BOOL IMAGEAPI @@ -897,7 +921,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PVOID Token, _In_opt_ PCWSTR Params, -@@ -2606,7 +2651,7 @@ typedef BOOL (CALLBACK *PENUMSOURCEFILETOKENSCALLBACK)(_In_ PVOID token, _In_ s +@@ -2608,7 +2667,7 @@ typedef BOOL (CALLBACK *PENUMSOURCEFILETOKENSCALLBACK)(_In_ PVOID token, _In_ s BOOL IMAGEAPI @@ -906,7 +930,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_ PENUMSOURCEFILETOKENSCALLBACK Callback -@@ -2620,7 +2665,7 @@ SymEnumSourceFileTokens( +@@ -2622,7 +2681,7 @@ SymEnumSourceFileTokens( BOOL IMAGEAPI @@ -915,7 +939,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR UserSearchPath, _In_ BOOL fInvadeProcess -@@ -2628,7 +2673,7 @@ SymInitialize( +@@ -2630,7 +2689,7 @@ SymInitialize( BOOL IMAGEAPI @@ -924,8 +948,14 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR UserSearchPath, _In_ BOOL fInvadeProcess -@@ -2648,7 +2693,7 @@ SymInitializeW( +@@ -2648,28 +2707,49 @@ SymInitializeW( + #pragma region Desktop Family + #if WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymGetSearchPath( @@ -933,8 +963,15 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Out_writes_(SearchPathLength) PSTR SearchPath, _In_ DWORD SearchPathLength -@@ -2656,7 +2701,7 @@ SymGetSearchPath( + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymGetSearchPathW( @@ -942,8 +979,15 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Out_writes_(SearchPathLength) PWSTR SearchPath, _In_ DWORD SearchPathLength -@@ -2664,7 +2709,7 @@ SymGetSearchPathW( + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymSetSearchPath( @@ -951,8 +995,20 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR SearchPath ); -@@ -2677,7 +2722,7 @@ SymSetSearchPath( ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) */ + #pragma endregion +@@ -2677,12 +2757,19 @@ SymSetSearchPath( + #pragma region Desktop Family or Games Family + #if WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS | WINAPI_PARTITION_GAMES) + ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif BOOL IMAGEAPI -SymSetSearchPathW( @@ -960,7 +1016,13 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR SearchPath ); -@@ -2692,9 +2737,17 @@ SymSetSearchPathW( ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + + #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS | WINAPI_PARTITION_GAMES) */ + #pragma endregion +@@ -2694,9 +2781,17 @@ SymSetSearchPathW( #define SLMFLAG_ALT_INDEX 0x2 #define SLMFLAG_NO_SYMBOLS 0x4 @@ -979,7 +1041,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ HANDLE hFile, _In_opt_ PCSTR ImageName, -@@ -2702,7 +2755,7 @@ SymLoadModuleEx( +@@ -2704,7 +2799,7 @@ SymLoadModuleEx( _In_ DWORD64 BaseOfDll, _In_ DWORD DllSize, _In_opt_ PMODLOAD_DATA Data, @@ -988,7 +1050,7 @@ index 09bb15cb..066f6257 100644 ); #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) */ -@@ -2713,7 +2766,7 @@ SymLoadModuleEx( +@@ -2715,7 +2810,7 @@ SymLoadModuleEx( DWORD64 IMAGEAPI @@ -997,7 +1059,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ HANDLE hFile, _In_opt_ PCWSTR ImageName, -@@ -2721,7 +2774,7 @@ SymLoadModuleExW( +@@ -2723,7 +2818,7 @@ SymLoadModuleExW( _In_ DWORD64 BaseOfDll, _In_ DWORD DllSize, _In_opt_ PMODLOAD_DATA Data, @@ -1006,7 +1068,7 @@ index 09bb15cb..066f6257 100644 ); #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS | WINAPI_PARTITION_GAMES) */ -@@ -2732,7 +2785,7 @@ SymLoadModuleExW( +@@ -2734,7 +2829,7 @@ SymLoadModuleExW( BOOL IMAGEAPI @@ -1015,7 +1077,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 BaseOfDll ); -@@ -2742,7 +2795,7 @@ SymUnloadModule64( +@@ -2744,7 +2839,7 @@ SymUnloadModule64( #else BOOL IMAGEAPI @@ -1024,7 +1086,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD BaseOfDll ); -@@ -2750,7 +2803,7 @@ SymUnloadModule( +@@ -2752,7 +2847,7 @@ SymUnloadModule( BOOL IMAGEAPI @@ -1033,7 +1095,7 @@ index 09bb15cb..066f6257 100644 _In_ PIMAGEHLP_SYMBOL64 sym, // Symbol to undecorate _Out_writes_(UnDecNameLength) PSTR UnDecName, // Buffer to store undecorated name in _In_ DWORD UnDecNameLength // Size of the buffer -@@ -2761,7 +2814,7 @@ SymUnDName64( +@@ -2763,7 +2858,7 @@ SymUnDName64( #else BOOL IMAGEAPI @@ -1042,7 +1104,7 @@ index 09bb15cb..066f6257 100644 _In_ PIMAGEHLP_SYMBOL sym, // Symbol to undecorate _Out_writes_(UnDecNameLength) PSTR UnDecName, // Buffer to store undecorated name in _In_ DWORD UnDecNameLength // Size of the buffer -@@ -2770,7 +2823,7 @@ SymUnDName( +@@ -2772,7 +2867,7 @@ SymUnDName( BOOL IMAGEAPI @@ -1051,7 +1113,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, _In_ ULONG64 UserContext -@@ -2778,7 +2831,7 @@ SymRegisterCallback64( +@@ -2780,7 +2875,7 @@ SymRegisterCallback64( BOOL IMAGEAPI @@ -1060,7 +1122,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, _In_ ULONG64 UserContext -@@ -2786,7 +2839,7 @@ SymRegisterCallbackW64( +@@ -2788,7 +2883,7 @@ SymRegisterCallbackW64( BOOL IMAGEAPI @@ -1069,7 +1131,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction, _In_ ULONG64 UserContext -@@ -2798,7 +2851,7 @@ SymRegisterFunctionEntryCallback64( +@@ -2800,7 +2895,7 @@ SymRegisterFunctionEntryCallback64( #else BOOL IMAGEAPI @@ -1078,7 +1140,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYMBOL_REGISTERED_CALLBACK CallbackFunction, _In_opt_ PVOID UserContext -@@ -2806,7 +2859,7 @@ SymRegisterCallback( +@@ -2808,7 +2903,7 @@ SymRegisterCallback( BOOL IMAGEAPI @@ -1087,7 +1149,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction, _In_opt_ PVOID UserContext -@@ -2839,7 +2892,7 @@ typedef struct _SYMBOL_INFO { +@@ -2841,7 +2936,7 @@ typedef struct _SYMBOL_INFO { ULONG Index; ULONG Size; ULONG64 ModBase; // Base Address of module comtaining this symbol @@ -1096,7 +1158,7 @@ index 09bb15cb..066f6257 100644 ULONG64 Value; // Value of symbol, ValuePresent should be 1 ULONG64 Address; // Address of symbol including base address of module ULONG Register; // register holding value or pointer to value -@@ -2862,7 +2915,7 @@ typedef struct _SYMBOL_INFOW { +@@ -2864,7 +2959,7 @@ typedef struct _SYMBOL_INFOW { ULONG Index; ULONG Size; ULONG64 ModBase; // Base Address of module comtaining this symbol @@ -1105,7 +1167,7 @@ index 09bb15cb..066f6257 100644 ULONG64 Value; // Value of symbol, ValuePresent should be 1 ULONG64 Address; // Address of symbol including base address of module ULONG Register; // register holding value or pointer to value -@@ -2903,7 +2956,7 @@ typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; +@@ -2905,7 +3000,7 @@ typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; BOOL IMAGEAPI @@ -1114,7 +1176,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PIMAGEHLP_STACK_FRAME StackFrame, _In_opt_ PIMAGEHLP_CONTEXT Context -@@ -2911,14 +2964,14 @@ SymSetContext( +@@ -2913,14 +3008,14 @@ SymSetContext( BOOL IMAGEAPI @@ -1131,7 +1193,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Address, _In_ ULONG InlineContext -@@ -2926,7 +2979,7 @@ SymSetScopeFromInlineContext( +@@ -2928,7 +3023,7 @@ SymSetScopeFromInlineContext( BOOL IMAGEAPI @@ -1140,7 +1202,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ DWORD Index -@@ -2940,7 +2993,7 @@ typedef BOOL +@@ -2942,7 +3037,7 @@ typedef BOOL BOOL IMAGEAPI @@ -1149,7 +1211,7 @@ index 09bb15cb..066f6257 100644 _In_ PSYM_ENUMPROCESSES_CALLBACK EnumProcessesCallback, _In_ PVOID UserContext ); -@@ -2953,7 +3006,7 @@ SymEnumProcesses( +@@ -2955,7 +3050,7 @@ SymEnumProcesses( BOOL IMAGEAPI @@ -1158,7 +1220,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _Out_opt_ PDWORD64 Displacement, -@@ -2962,7 +3015,7 @@ SymFromAddr( +@@ -2964,7 +3059,7 @@ SymFromAddr( BOOL IMAGEAPI @@ -1167,7 +1229,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _Out_opt_ PDWORD64 Displacement, -@@ -2977,7 +3030,7 @@ SymFromAddrW( +@@ -2979,7 +3074,7 @@ SymFromAddrW( BOOL IMAGEAPI @@ -1176,7 +1238,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _In_ ULONG InlineContext, -@@ -2987,7 +3040,7 @@ SymFromInlineContext( +@@ -2989,7 +3084,7 @@ SymFromInlineContext( BOOL IMAGEAPI @@ -1185,7 +1247,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _In_ ULONG InlineContext, -@@ -2997,7 +3050,7 @@ SymFromInlineContextW( +@@ -2999,7 +3094,7 @@ SymFromInlineContextW( BOOL IMAGEAPI @@ -1194,7 +1256,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Base, _In_ DWORD Token, -@@ -3006,7 +3059,7 @@ SymFromToken( +@@ -3008,7 +3103,7 @@ SymFromToken( BOOL IMAGEAPI @@ -1203,7 +1265,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Base, _In_ DWORD Token, -@@ -3015,28 +3068,28 @@ SymFromTokenW( +@@ -3017,28 +3112,28 @@ SymFromTokenW( BOOL IMAGEAPI @@ -1236,7 +1298,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PSYMBOL_INFOW siw ); -@@ -3049,7 +3102,7 @@ SymPrevW( +@@ -3051,7 +3146,7 @@ SymPrevW( BOOL IMAGEAPI @@ -1245,7 +1307,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCSTR Name, _Inout_ PSYMBOL_INFO Symbol -@@ -3057,7 +3110,7 @@ SymFromName( +@@ -3059,7 +3154,7 @@ SymFromName( BOOL IMAGEAPI @@ -1254,7 +1316,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCWSTR Name, _Inout_ PSYMBOL_INFOW Symbol -@@ -3075,7 +3128,7 @@ typedef BOOL +@@ -3077,7 +3172,7 @@ typedef BOOL BOOL IMAGEAPI @@ -1263,7 +1325,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCSTR Mask, -@@ -3085,7 +3138,7 @@ SymEnumSymbols( +@@ -3087,7 +3182,7 @@ SymEnumSymbols( BOOL IMAGEAPI @@ -1272,7 +1334,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCSTR Mask, -@@ -3103,7 +3156,7 @@ typedef BOOL +@@ -3105,7 +3200,7 @@ typedef BOOL BOOL IMAGEAPI @@ -1281,7 +1343,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCWSTR Mask, -@@ -3113,7 +3166,7 @@ SymEnumSymbolsW( +@@ -3115,7 +3210,7 @@ SymEnumSymbolsW( BOOL IMAGEAPI @@ -1290,7 +1352,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCWSTR Mask, -@@ -3124,7 +3177,7 @@ SymEnumSymbolsExW( +@@ -3126,7 +3221,7 @@ SymEnumSymbolsExW( BOOL IMAGEAPI @@ -1299,7 +1361,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _In_ PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, -@@ -3133,7 +3186,7 @@ SymEnumSymbolsForAddr( +@@ -3135,7 +3230,7 @@ SymEnumSymbolsForAddr( BOOL IMAGEAPI @@ -1308,7 +1370,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 Address, _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, -@@ -3147,7 +3200,7 @@ SymEnumSymbolsForAddrW( +@@ -3149,7 +3244,7 @@ SymEnumSymbolsForAddrW( BOOL IMAGEAPI @@ -1317,7 +1379,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ DWORD Index, -@@ -3161,7 +3214,7 @@ SymSearch( +@@ -3163,7 +3258,7 @@ SymSearch( BOOL IMAGEAPI @@ -1326,7 +1388,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ DWORD Index, -@@ -3175,7 +3228,7 @@ SymSearchW( +@@ -3177,7 +3272,7 @@ SymSearchW( BOOL IMAGEAPI @@ -1335,7 +1397,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ DWORD Index, -@@ -3184,7 +3237,7 @@ SymGetScope( +@@ -3186,7 +3281,7 @@ SymGetScope( BOOL IMAGEAPI @@ -1344,7 +1406,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ DWORD Index, -@@ -3193,7 +3246,7 @@ SymGetScopeW( +@@ -3195,7 +3290,7 @@ SymGetScopeW( BOOL IMAGEAPI @@ -1353,7 +1415,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ DWORD Index, -@@ -3202,7 +3255,7 @@ SymFromIndex( +@@ -3204,7 +3299,7 @@ SymFromIndex( BOOL IMAGEAPI @@ -1362,7 +1424,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ DWORD Index, -@@ -3271,7 +3324,7 @@ typedef struct _TI_GET_DISCRIMINATEDUNION_TAG_RANGES_PARAMS { +@@ -3273,7 +3368,7 @@ typedef struct _TI_GET_DISCRIMINATEDUNION_TAG_RANGES_PARAMS { BOOL IMAGEAPI @@ -1371,7 +1433,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 ModBase, _In_ ULONG TypeId, -@@ -3282,9 +3335,15 @@ SymGetTypeInfo( +@@ -3284,9 +3379,15 @@ SymGetTypeInfo( #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 @@ -1388,7 +1450,7 @@ index 09bb15cb..066f6257 100644 IN ULONG NumIds; IN PULONG TypeIds; IN ULONG64 TagFilter; -@@ -3305,7 +3364,7 @@ typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { +@@ -3307,7 +3408,7 @@ typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { BOOL IMAGEAPI @@ -1397,7 +1459,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 ModBase, _Inout_ PIMAGEHLP_GET_TYPE_INFO_PARAMS Params -@@ -3313,7 +3372,7 @@ SymGetTypeInfoEx( +@@ -3315,7 +3416,7 @@ SymGetTypeInfoEx( BOOL IMAGEAPI @@ -1406,7 +1468,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, -@@ -3322,7 +3381,7 @@ SymEnumTypes( +@@ -3324,7 +3425,7 @@ SymEnumTypes( BOOL IMAGEAPI @@ -1415,7 +1477,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback, -@@ -3331,7 +3390,7 @@ SymEnumTypesW( +@@ -3333,7 +3434,7 @@ SymEnumTypesW( BOOL IMAGEAPI @@ -1424,7 +1486,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCSTR mask, -@@ -3341,7 +3400,7 @@ SymEnumTypesByName( +@@ -3343,7 +3444,7 @@ SymEnumTypesByName( BOOL IMAGEAPI @@ -1433,7 +1495,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCWSTR mask, -@@ -3351,7 +3410,7 @@ SymEnumTypesByNameW( +@@ -3353,7 +3454,7 @@ SymEnumTypesByNameW( BOOL IMAGEAPI @@ -1442,7 +1504,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PCSTR Name, -@@ -3360,7 +3419,7 @@ SymGetTypeFromName( +@@ -3362,7 +3463,7 @@ SymGetTypeFromName( BOOL IMAGEAPI @@ -1451,7 +1513,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PCWSTR Name, -@@ -3369,7 +3428,7 @@ SymGetTypeFromNameW( +@@ -3371,7 +3472,7 @@ SymGetTypeFromNameW( BOOL IMAGEAPI @@ -1460,7 +1522,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PCSTR Name, -@@ -3380,7 +3439,7 @@ SymAddSymbol( +@@ -3382,7 +3483,7 @@ SymAddSymbol( BOOL IMAGEAPI @@ -1469,7 +1531,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PCWSTR Name, -@@ -3391,7 +3450,7 @@ SymAddSymbolW( +@@ -3393,7 +3494,7 @@ SymAddSymbolW( BOOL IMAGEAPI @@ -1478,7 +1540,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCSTR Name, -@@ -3401,7 +3460,7 @@ SymDeleteSymbol( +@@ -3403,7 +3504,7 @@ SymDeleteSymbol( BOOL IMAGEAPI @@ -1487,7 +1549,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_opt_ PCWSTR Name, -@@ -3417,7 +3476,7 @@ SymDeleteSymbolW( +@@ -3419,7 +3520,7 @@ SymDeleteSymbolW( BOOL IMAGEAPI @@ -1496,7 +1558,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess ); -@@ -3429,7 +3488,7 @@ SymRefreshModuleList( +@@ -3431,7 +3532,7 @@ SymRefreshModuleList( BOOL IMAGEAPI @@ -1505,7 +1567,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCSTR StreamFile, -@@ -3453,7 +3512,7 @@ typedef BOOL (WINAPI *SYMADDSOURCESTREAMA)(HANDLE, ULONG64, PCSTR, PBYTE, size_t +@@ -3455,7 +3556,7 @@ typedef BOOL (WINAPI *SYMADDSOURCESTREAMA)(HANDLE, ULONG64, PCSTR, PBYTE, size_t BOOL IMAGEAPI @@ -1514,7 +1576,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 Base, _In_opt_ PCWSTR FileSpec, -@@ -3463,21 +3522,21 @@ SymAddSourceStreamW( +@@ -3465,21 +3566,21 @@ SymAddSourceStreamW( BOOL IMAGEAPI @@ -1539,7 +1601,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR SymPath, _In_ PCSTR Type, -@@ -3487,7 +3546,7 @@ SymSrvDeltaName( +@@ -3489,7 +3590,7 @@ SymSrvDeltaName( PCWSTR IMAGEAPI @@ -1548,7 +1610,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR SymPath, _In_ PCWSTR Type, -@@ -3497,7 +3556,7 @@ SymSrvDeltaNameW( +@@ -3499,7 +3600,7 @@ SymSrvDeltaNameW( PCSTR IMAGEAPI @@ -1557,7 +1619,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR SymPath, _In_ PCSTR Node, -@@ -3506,7 +3565,7 @@ SymSrvGetSupplement( +@@ -3508,7 +3609,7 @@ SymSrvGetSupplement( PCWSTR IMAGEAPI @@ -1566,7 +1628,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR SymPath, _In_ PCWSTR Node, -@@ -3515,7 +3574,7 @@ SymSrvGetSupplementW( +@@ -3517,7 +3618,7 @@ SymSrvGetSupplementW( BOOL IMAGEAPI @@ -1575,7 +1637,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR File, _Out_ GUID *Id, _Out_ PDWORD Val1, -@@ -3525,7 +3584,7 @@ SymSrvGetFileIndexes( +@@ -3527,7 +3628,7 @@ SymSrvGetFileIndexes( BOOL IMAGEAPI @@ -1584,7 +1646,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR File, _Out_ GUID *Id, _Out_ PDWORD Val1, -@@ -3535,7 +3594,7 @@ SymSrvGetFileIndexesW( +@@ -3537,7 +3638,7 @@ SymSrvGetFileIndexesW( BOOL IMAGEAPI @@ -1593,7 +1655,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR SrvPath, _In_ PCWSTR File, -@@ -3546,7 +3605,7 @@ SymSrvGetFileIndexStringW( +@@ -3548,7 +3649,7 @@ SymSrvGetFileIndexStringW( BOOL IMAGEAPI @@ -1602,7 +1664,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR SrvPath, _In_ PCSTR File, -@@ -3583,7 +3642,7 @@ typedef struct { +@@ -3585,7 +3686,7 @@ typedef struct { BOOL IMAGEAPI @@ -1611,7 +1673,7 @@ index 09bb15cb..066f6257 100644 _In_ PCSTR File, _Out_ PSYMSRV_INDEX_INFO Info, _In_ DWORD Flags -@@ -3591,7 +3650,7 @@ SymSrvGetFileIndexInfo( +@@ -3593,7 +3694,7 @@ SymSrvGetFileIndexInfo( BOOL IMAGEAPI @@ -1620,7 +1682,7 @@ index 09bb15cb..066f6257 100644 _In_ PCWSTR File, _Out_ PSYMSRV_INDEX_INFOW Info, _In_ DWORD Flags -@@ -3599,7 +3658,7 @@ SymSrvGetFileIndexInfoW( +@@ -3601,7 +3702,7 @@ SymSrvGetFileIndexInfoW( PCSTR IMAGEAPI @@ -1629,7 +1691,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCSTR SrvPath, _In_ PCSTR Node, -@@ -3609,7 +3668,7 @@ SymSrvStoreSupplement( +@@ -3611,7 +3712,7 @@ SymSrvStoreSupplement( PCWSTR IMAGEAPI @@ -1638,7 +1700,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ PCWSTR SymPath, _In_ PCWSTR Node, -@@ -3619,11 +3678,11 @@ SymSrvStoreSupplementW( +@@ -3621,11 +3722,11 @@ SymSrvStoreSupplementW( PCSTR IMAGEAPI @@ -1652,7 +1714,7 @@ index 09bb15cb..066f6257 100644 ); #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS) */ -@@ -3634,11 +3693,11 @@ SymSrvStoreFile( +@@ -3636,11 +3737,11 @@ SymSrvStoreFile( PCWSTR IMAGEAPI @@ -1666,7 +1728,7 @@ index 09bb15cb..066f6257 100644 ); #endif /* WINAPI_FAMILY_PARTITION(NONGAMESPARTITIONS | WINAPI_PARTITION_GAMES) */ -@@ -3659,11 +3718,11 @@ typedef enum { +@@ -3661,11 +3762,11 @@ typedef enum { BOOL IMAGEAPI @@ -1680,7 +1742,7 @@ index 09bb15cb..066f6257 100644 _Out_writes_(cSymbolFile) PSTR SymbolFile, _In_ size_t cSymbolFile, _Out_writes_(cDbgFile) PSTR DbgFile, -@@ -3672,11 +3731,11 @@ SymGetSymbolFile( +@@ -3674,11 +3775,11 @@ SymGetSymbolFile( BOOL IMAGEAPI @@ -1694,7 +1756,7 @@ index 09bb15cb..066f6257 100644 _Out_writes_(cSymbolFile) PWSTR SymbolFile, _In_ size_t cSymbolFile, _Out_writes_(cDbgFile) PWSTR DbgFile, -@@ -3723,7 +3782,7 @@ DbgHelpCreateUserDumpW( +@@ -3725,7 +3826,7 @@ DbgHelpCreateUserDumpW( BOOL IMAGEAPI @@ -1703,7 +1765,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD64 qwAddr, _Out_opt_ PDWORD64 pdwDisplacement, -@@ -3736,7 +3795,7 @@ SymGetSymFromAddr64( +@@ -3738,7 +3839,7 @@ SymGetSymFromAddr64( #else BOOL IMAGEAPI @@ -1712,7 +1774,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ DWORD dwAddr, _Out_opt_ PDWORD pdwDisplacement, -@@ -3758,7 +3817,7 @@ SymGetSymFromAddr( +@@ -3760,7 +3861,7 @@ SymGetSymFromAddr( BOOL IMAGEAPI @@ -1721,7 +1783,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCSTR Name, _Inout_ PIMAGEHLP_SYMBOL64 Symbol -@@ -3769,7 +3828,7 @@ SymGetSymFromName64( +@@ -3771,7 +3872,7 @@ SymGetSymFromName64( #else BOOL IMAGEAPI @@ -1730,7 +1792,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ PCSTR Name, _Inout_ PIMAGEHLP_SYMBOL Symbol -@@ -3831,6 +3890,13 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) +@@ -3833,6 +3934,13 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) #define SSRVOPT_DWORD 0x00000002 #define SSRVOPT_DWORDPTR 0x00000004 #define SSRVOPT_GUIDPTR 0x00000008 @@ -1744,7 +1806,7 @@ index 09bb15cb..066f6257 100644 #define SSRVOPT_OLDGUIDPTR 0x00000010 #define SSRVOPT_UNATTENDED 0x00000020 #define SSRVOPT_NOCOPY 0x00000040 -@@ -3907,6 +3973,15 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) +@@ -3914,6 +4022,15 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) #define SYMSTOREOPT_UNICODE 0x20 #define SYMSTOREOPT_PASS_IF_EXISTS 0x40 @@ -1760,7 +1822,47 @@ index 09bb15cb..066f6257 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -4064,7 +4139,7 @@ SymEnumSym( +@@ -4029,6 +4146,10 @@ typedef BOOL (WINAPI *PSYMBOLSERVERSETHTTPAUTHHEADER)(_In_ PCWSTR pszAuthHeader) + // future compatibility. + + DBHLP_DEPRECIATED ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif + BOOL + IMAGEAPI + FindFileInPath( +@@ -4041,11 +4162,18 @@ FindFileInPath( + _In_ DWORD flags, + _Out_writes_(MAX_PATH + 1) PSTR FilePath + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + + // You should use SymFindFileInPath if you want to maintain + // future compatibility. + + DBHLP_DEPRECIATED ++#if defined(WIN32METADATA) ++#pragma push_macro("SearchPath") ++#undef SearchPath ++#endif + BOOL + IMAGEAPI + FindFileInSearchPath( +@@ -4057,6 +4185,9 @@ FindFileInSearchPath( + _In_ DWORD three, + _Out_writes_(MAX_PATH + 1) PSTR FilePath + ); ++#if defined(WIN32METADATA) ++#pragma pop_macro("SearchPath") ++#endif + + DBHLP_DEPRECIATED + BOOL +@@ -4071,7 +4202,7 @@ SymEnumSym( DBHLP_DEPRECIATED BOOL IMAGEAPI @@ -1769,7 +1871,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback, -@@ -4074,7 +4149,7 @@ SymEnumerateSymbols64( +@@ -4081,7 +4212,7 @@ SymEnumerateSymbols64( DBHLP_DEPRECIATED BOOL IMAGEAPI @@ -1778,7 +1880,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG64 BaseOfDll, _In_ PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback, -@@ -4089,7 +4164,7 @@ SymEnumerateSymbolsW64( +@@ -4096,7 +4227,7 @@ SymEnumerateSymbolsW64( DBHLP_DEPRECIATED BOOL IMAGEAPI @@ -1787,7 +1889,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG BaseOfDll, _In_ PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, -@@ -4099,7 +4174,7 @@ SymEnumerateSymbols( +@@ -4106,7 +4237,7 @@ SymEnumerateSymbols( DBHLP_DEPRECIATED BOOL IMAGEAPI @@ -1796,7 +1898,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_ ULONG BaseOfDll, _In_ PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, -@@ -4111,7 +4186,7 @@ SymEnumerateSymbolsW( +@@ -4118,7 +4249,7 @@ SymEnumerateSymbolsW( DWORD64 IMAGEAPI @@ -1805,7 +1907,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ HANDLE hFile, _In_opt_ PCSTR ImageName, -@@ -4125,7 +4200,7 @@ SymLoadModule64( +@@ -4132,7 +4263,7 @@ SymLoadModule64( #else DWORD IMAGEAPI @@ -1814,7 +1916,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _In_opt_ HANDLE hFile, _In_opt_ PCSTR ImageName, -@@ -4137,7 +4212,7 @@ SymLoadModule( +@@ -4144,7 +4275,7 @@ SymLoadModule( BOOL IMAGEAPI @@ -1823,7 +1925,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_SYMBOL64 Symbol ); -@@ -4155,7 +4230,7 @@ SymGetSymNextW64( +@@ -4162,7 +4293,7 @@ SymGetSymNextW64( #else BOOL IMAGEAPI @@ -1832,7 +1934,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_SYMBOL Symbol ); -@@ -4170,7 +4245,7 @@ SymGetSymNextW( +@@ -4177,7 +4308,7 @@ SymGetSymNextW( BOOL IMAGEAPI @@ -1841,7 +1943,7 @@ index 09bb15cb..066f6257 100644 _In_ HANDLE hProcess, _Inout_ PIMAGEHLP_SYMBOL64 Symbol ); -@@ -4188,7 +4263,7 @@ SymGetSymPrevW64( +@@ -4195,7 +4326,7 @@ SymGetSymPrevW64( #else BOOL IMAGEAPI diff --git a/generation/WinSDK/patches/um/winternl.h.patch b/generation/WinSDK/patches/um/winternl.h.patch index 52117f4d8..ef7c67eb9 100644 --- a/generation/WinSDK/patches/um/winternl.h.patch +++ b/generation/WinSDK/patches/um/winternl.h.patch @@ -1,8 +1,27 @@ -diff --git a/um/winternl.h b/um/winternl.h -index 5734a93b..bf199793 100644 --- a/um/winternl.h +++ b/um/winternl.h -@@ -460,6 +460,7 @@ typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION { +@@ -241,11 +241,20 @@ VOID + ); + + typedef struct _PROCESS_BASIC_INFORMATION { ++#if defined(WIN32METADATA) ++ NTSTATUS ExitStatus; ++ PPEB PebBaseAddress; ++ ULONG_PTR AffinityMask; ++ KPRIORITY BasePriority; ++ ULONG_PTR UniqueProcessId; ++ ULONG_PTR InheritedFromUniqueProcessId; ++#else + PVOID Reserved1; + PPEB PebBaseAddress; + PVOID Reserved2[2]; + ULONG_PTR UniqueProcessId; + PVOID Reserved3; ++#endif + } PROCESS_BASIC_INFORMATION; + typedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION; + +@@ -460,6 +469,7 @@ typedef struct __PUBLIC_OBJECT_TYPE_INFORMATION { // use the Win32 API instead // CloseHandle // @@ -10,7 +29,7 @@ index 5734a93b..bf199793 100644 __kernel_entry NTSTATUS NTAPI NtClose ( -@@ -586,6 +587,7 @@ NtSetInformationKey ( +@@ -586,6 +596,7 @@ NtSetInformationKey ( // use the Win32 API instead // DeviceIoControl // @@ -18,7 +37,7 @@ index 5734a93b..bf199793 100644 __kernel_entry NTSTATUS NTAPI NtDeviceIoControlFile ( -@@ -605,6 +607,7 @@ NtDeviceIoControlFile ( +@@ -605,6 +616,7 @@ NtDeviceIoControlFile ( // use the Win32 API instead // WaitForSingleObjectEx // @@ -26,7 +45,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI NtWaitForSingleObject ( -@@ -629,6 +632,7 @@ RtlIsNameLegalDOS8Dot3 ( +@@ -629,6 +641,7 @@ RtlIsNameLegalDOS8Dot3 ( // This function might be needed for some of the internal Windows functions, // defined in this header file. // @@ -34,7 +53,7 @@ index 5734a93b..bf199793 100644 _When_(Status < 0, _Out_range_(>, 0)) _When_(Status >= 0, _Out_range_(==, 0)) ULONG -@@ -760,18 +764,21 @@ RtlTimeToSecondsSince1970 ( +@@ -760,18 +773,21 @@ RtlTimeToSecondsSince1970 ( // These APIs might be need for some of the internal Windows functions, // defined in this header file. // @@ -56,7 +75,7 @@ index 5734a93b..bf199793 100644 VOID NTAPI RtlFreeOemString( -@@ -806,6 +813,7 @@ RtlInitAnsiStringEx ( +@@ -806,6 +822,7 @@ RtlInitAnsiStringEx ( PCSZ SourceString ); @@ -64,7 +83,7 @@ index 5734a93b..bf199793 100644 VOID NTAPI RtlInitUnicodeString ( -@@ -813,6 +821,7 @@ RtlInitUnicodeString ( +@@ -813,6 +830,7 @@ RtlInitUnicodeString ( PCWSTR SourceString ); @@ -72,7 +91,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI RtlAnsiStringToUnicodeString ( -@@ -821,6 +830,7 @@ RtlAnsiStringToUnicodeString ( +@@ -821,6 +839,7 @@ RtlAnsiStringToUnicodeString ( BOOLEAN AllocateDestinationString ); @@ -80,7 +99,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI RtlUnicodeStringToAnsiString ( -@@ -829,6 +839,7 @@ RtlUnicodeStringToAnsiString ( +@@ -829,6 +848,7 @@ RtlUnicodeStringToAnsiString ( BOOLEAN AllocateDestinationString ); @@ -88,7 +107,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI RtlUnicodeStringToOemString( -@@ -843,6 +854,7 @@ RtlUnicodeStringToOemString( +@@ -843,6 +863,7 @@ RtlUnicodeStringToOemString( // set CodePage to CP_ACP // set cbMultiByte to 0 // @@ -96,7 +115,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI RtlUnicodeToMultiByteSize( -@@ -855,6 +867,7 @@ RtlUnicodeToMultiByteSize( +@@ -855,6 +876,7 @@ RtlUnicodeToMultiByteSize( // Use the C runtime function instead // strtol // @@ -104,7 +123,7 @@ index 5734a93b..bf199793 100644 NTSTATUS NTAPI RtlCharToInteger ( -@@ -867,6 +880,7 @@ RtlCharToInteger ( +@@ -867,6 +889,7 @@ RtlCharToInteger ( // use the Win32 API instead // ConvertSidToStringSid // diff --git a/generation/WinSDK/requiredNamespacesForNames.rsp b/generation/WinSDK/requiredNamespacesForNames.rsp index df44d5d2b..e5e03c805 100644 --- a/generation/WinSDK/requiredNamespacesForNames.rsp +++ b/generation/WinSDK/requiredNamespacesForNames.rsp @@ -6,6 +6,8 @@ BOOLEAN=Windows.Win32.Foundation BSTR=Windows.Win32.Foundation CHAR=Windows.Win32.Foundation HANDLE=Windows.Win32.Foundation +HDC=Windows.Win32.Graphics.Gdi +HDRVR=Windows.Win32.Media.Multimedia HRESULT=Windows.Win32.Foundation NTSTATUS=Windows.Win32.Foundation PSTR=Windows.Win32.Foundation @@ -20,6 +22,7 @@ PTP_TIMER=Windows.Win32.System.Threading PTP_WAIT=Windows.Win32.System.Threading PTP_WORK=Windows.Win32.System.Threading SECURITY_DESCRIPTOR_CONTROL=Windows.Win32.Security +VARIANT_BOOL=Windows.Win32.Foundation # Source-owned logical groups retain their established projection namespaces. ACE_FLAGS=Windows.Win32.Security ADVANCED_FEATURE_FLAGS=Windows.Win32.System.Com diff --git a/scripts/Prepare-SdkHeaders.ps1 b/scripts/Prepare-SdkHeaders.ps1 index 5e8240727..ca63904dc 100644 --- a/scripts/Prepare-SdkHeaders.ps1 +++ b/scripts/Prepare-SdkHeaders.ps1 @@ -282,14 +282,30 @@ if ($config.sourceGitTree) { } $recipeRoot = [IO.Path]::GetDirectoryName($Recipe) +$retainedHeaders = @() foreach ($header in $config.headers) { $source = Resolve-Child $SourceRoot $header.path if ((Get-Sha256 $source) -ne $header.sourceSha256) { throw "Post-MIDL preimage mismatch: $($header.path)" } - $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath - if ((Get-Sha256 $sdk) -ne $header.sdkSha256) { - throw "Selected SDK input mismatch: $($header.sdkPath)" + if ($null -ne $header.PSObject.Properties['sourceKind']) { + if ($header.sourceKind -cne 'retained' -or + [IO.Path]::GetExtension($header.path) -cne '.h' -or + $null -ne $header.PSObject.Properties['sdkPath'] -or + $null -ne $header.PSObject.Properties['sdkSha256'] -or + $null -eq $header.PSObject.Properties['retentionReason'] -or + [string]::IsNullOrWhiteSpace($header.retentionReason)) { + throw "A retained header requires an explicit reason and source hash, without a selected SDK binding: $($header.path)" + } + $retainedHeaders += [pscustomobject]@{ + path = $header.path; sourceSha256 = $header.sourceSha256; retentionReason = $header.retentionReason + } + } + else { + $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath + if ((Get-Sha256 $sdk) -ne $header.sdkSha256) { + throw "Selected SDK input mismatch: $($header.sdkPath)" + } } } $midlInputs = @() @@ -338,6 +354,7 @@ if ($hasMidl) { throw 'MIDL outputs must be nonempty and contain no duplicate headers.' } foreach ($header in $config.headers | Where-Object { + $null -eq $_.PSObject.Properties['sourceKind'] -and [IO.Path]::GetExtension($_.sdkPath) -eq '.idl' -and $_.sdkPath -in $midlInputs.sdkPath }) { if (@($config.midl.outputs | Where-Object path -eq $header.path).Count -ne 1) { @@ -409,19 +426,25 @@ $patches = @($config.patches | ForEach-Object { throw "A patch must target one admitted SDK artifact: $_" } $header = $headers[0] - $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath - $sdkIdl = [IO.Path]::ChangeExtension($sdk, '.idl') - if ([IO.Path]::GetExtension($header.sdkPath) -eq '.idl' -or - ([IO.File]::ReadAllText((Resolve-Child $SourceRoot $header.path)).Contains('File created by MIDL compiler') -and - (Test-Path -LiteralPath $sdkIdl -PathType Leaf))) { - throw "A shipped-IDL-backed annotation patch belongs before MIDL, on its SDK IDL artifact: $_" - } - if ($header.sourceSha256 -ne $header.sdkSha256) { - throw "A direct SDK header patch requires the pristine SDK preimage: $_" + if ($artifact -in @($retainedHeaders | ForEach-Object path)) { + $sdk = Resolve-Child $SourceRoot $header.path + if ($input.Count) { + throw "A retained compatibility header cannot substitute for a selected SDK MIDL input: $artifact" + } } - if ($input.Count -eq 1 -and ($input[0].sourceKind -ne 'sdk' -or - $input[0].fullPath -ne $sdk -or $input[0].sha256 -ne $header.sdkSha256)) { - throw "A patched header shared with MIDL must bind the same pristine SDK input: $artifact" + else { + $sdk = Resolve-Child $SdkPackageRoot $header.sdkPath + if ([IO.Path]::GetExtension($header.sdkPath) -eq '.idl' -or + ($hasMidl -and $artifact -in $config.midl.outputs.path)) { + throw "A regenerated header patch belongs before MIDL, on its admitted SDK IDL artifact: $_" + } + if ($header.sourceSha256 -ne $header.sdkSha256) { + throw "A direct SDK header patch requires the pristine SDK preimage: $_" + } + if ($input.Count -eq 1 -and ($input[0].sourceKind -ne 'sdk' -or + $input[0].fullPath -ne $sdk -or $input[0].sha256 -ne $header.sdkSha256)) { + throw "A patched header shared with MIDL must bind the same pristine SDK input: $artifact" + } } } if (!$sdk.EndsWith("\$artifact", [StringComparison]::OrdinalIgnoreCase)) { @@ -552,6 +575,7 @@ try { sourceStage = $config.sourceStage sourceGitTree = $config.sourceGitTree sourceSha256 = $sourceState.sha256 + retainedHeaders = $retainedHeaders recipeSha256 = $recipeSha256 preparationSha256 = $preparationSha256 patches = @($patches | Select-Object path, sha256) diff --git a/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs new file mode 100644 index 000000000..046baa339 --- /dev/null +++ b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs @@ -0,0 +1,308 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Reflection.Metadata; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text.Json; +using System.Text.RegularExpressions; +using Xunit; + +namespace Win32MetadataScraperTests +{ + public class HeaderCompatibilityPatchTests : HeaderAnnotationWinmdTests + { + [Fact] + public void CompatibilityPatchesPreserveResultsWidthsAndInputHandleDirections() + { + using var headers = new PatchedHeaders(); + string callbacks = CallbackDeclarations(headers.Read(@"shared\minwindef.h")); + string originalCallbacks = CallbackDeclarations(headers.ReadOriginal(@"shared\minwindef.h")); + string iads = headers.Read(@"um\Iads.h"); + string searchMethods = Between(iads, " _Win32_PreserveResult_\r\n", + " virtual HRESULT STDMETHODCALLTYPE GetColumn("); + string listener = headers.Read(@"um\alljoyn_c\AboutDataListener.h"); + string about = Callback(listener, "alljoyn_aboutdatalistener_getaboutdata_ptr"); + string announced = Callback(listener, "alljoyn_aboutdatalistener_getannouncedaboutdata_ptr"); + string dbghelp = headers.Read(@"um\dbghelp.h"); + var guards = Regex.Matches(dbghelp, + @"#if defined\(WIN32METADATA\)\r?\n#pragma push_macro\(""SearchPath""\)[\s\S]*?#pragma pop_macro\(""SearchPath""\)\r?\n#endif") + .Select(match => match.Value).ToArray(); + string[] names = { "SymFindFileInPath", "SymFindFileInPathW", "SymGetSearchPath", + "SymGetSearchPathW", "SymSetSearchPath", "SymSetSearchPathW", "FindFileInPath", "FindFileInSearchPath" }; + Assert.Equal(names.Length, guards.Length); + foreach (string name in names) + Assert.Single(guards, guard => Regex.IsMatch(guard, @"\b" + name + @"\(")); + string search = Assert.Single(guards, guard => guard.Contains("SymSetSearchPathW(")); + Assert.Contains("typedef ADS_SEARCH_HANDLE *PADS_SEARCH_HANDLE;", iads); + Assert.DoesNotContain("_Win32_NativeTypedef_", iads); + const string types = @" +#define FAR +#define NEAR +#define WINAPI __stdcall +#define CALLBACK __stdcall +#define IMAGEAPI __stdcall +#define STDMETHODCALLTYPE __stdcall +#define __RPC__in _In_ +#define __RPC__deref_out_opt _Out_ +typedef __INTPTR_TYPE__ INT_PTR; +typedef void* HANDLE; +typedef HANDLE ADS_SEARCH_HANDLE; +typedef ADS_SEARCH_HANDLE* PADS_SEARCH_HANDLE; +typedef long HRESULT; +typedef int BOOL; +typedef int QStatus; +typedef wchar_t* LPWSTR; +typedef const wchar_t* PCWSTR; +typedef struct _alljoyn_msgarg_handle* alljoyn_msgarg; +static_assert(sizeof(PADS_SEARCH_HANDLE) == sizeof(void*), ""Native pointer width must not change.""); +static_assert(__is_same(PADS_SEARCH_HANDLE, HANDLE*), ""The ADS alias refactor must preserve native type identity.""); +"; + string other = "\nstruct CallbackShape { PROC value; };\n" + + "struct __declspec(uuid(\"109ba8ec-92f0-11d0-a790-00c04fd8d5a8\")) IDirectorySearch {\n" + + searchMethods + "\n};\n" + about + "\n" + announced + @" +extern ""C"" { +int __stdcall CreateOutput(_Out_ alljoyn_msgarg* output); +#define SearchPath SearchPathW +" + search + @" +void __stdcall AfterSearch(PCWSTR SearchPath); +} +"; + foreach (var (architecture, target) in new[] + { + ("x86", "i686-pc-windows-msvc"), ("x64", "x86_64-pc-windows-msvc"), + }) + { + using var fixture = new HeaderAnnotationTests.NativeFixture(architecture, target, + types + callbacks + other, extraSettings: "-DWIN32METADATA\n-DUNICODE\n"); + fixture.AssertSuccess(); + using var image = Emit(fixture, architecture); + var reader = image.Reader; + foreach (string name in new[] { "FARPROC", "NEARPROC", "PROC" }) + { + var invoke = FindMethod(reader, name, "Invoke"); + Assert.Equal("IntPtr", invoke.DecodeSignature(new SignatureNames(), null).ReturnType); + var convention = reader.GetCustomAttribute(FindType(reader, name).GetCustomAttributes() + .Single(handle => AttributeName(reader, handle) == "UnmanagedFunctionPointerAttribute")); + var blob = reader.GetBlobReader(convention.Value); + Assert.Equal(1, blob.ReadUInt16()); + Assert.Equal((int)System.Runtime.InteropServices.CallingConvention.Winapi, blob.ReadInt32()); + Assert.Equal(0, blob.ReadUInt16()); + Assert.Equal(0, blob.RemainingBytes); + } + foreach (string name in new[] { "GetFirstRow", "GetNextRow", "GetPreviousRow", "GetNextColumnName" }) + { + var method = FindMethod(reader, "IDirectorySearch", name); + Assert.True(method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig), name); + Assert.Equal("Int32", method.DecodeSignature(new SignatureNames(), null).ReturnType); + } + foreach (string name in new[] { "alljoyn_aboutdatalistener_getaboutdata_ptr", + "alljoyn_aboutdatalistener_getannouncedaboutdata_ptr" }) + { + var parameter = FindMethod(reader, name, "Invoke").GetParameters().Select(reader.GetParameter) + .Single(value => reader.GetString(value.Name) == "msgArg"); + Assert.Equal(ParameterAttributes.In, parameter.Attributes); + } + var output = FindMethod(reader, "Apis", "CreateOutput").GetParameters() + .Select(reader.GetParameter).Single(value => value.SequenceNumber == 1); + Assert.Equal(ParameterAttributes.Out, output.Attributes); + var guarded = FindMethod(reader, "Apis", "SymSetSearchPathW").GetParameters() + .Select(reader.GetParameter).Single(value => value.SequenceNumber == 2); + Assert.Equal("SearchPath", reader.GetString(guarded.Name)); + var after = FindMethod(reader, "Apis", "AfterSearch").GetParameters() + .Select(reader.GetParameter).Single(value => value.SequenceNumber == 1); + Assert.Equal("SearchPathW", reader.GetString(after.Name)); + using var ordinary = new HeaderAnnotationTests.NativeFixture(architecture, target, + types + originalCallbacks + other, annotationsEnabled: false); + Assert.Equal(NativeSurface(ordinary, target, metadataEnabled: false), + NativeSurface(fixture, target, metadataEnabled: false)); + } + } + + [Fact] + public void DirectMlPartitionSelectsLatestForDeclarationsAndNativeConstants() + { + string root = RepositoryRoot(); + string partition = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "Partitions", "DirectML", "main.cpp")); + int define = partition.IndexOf("#define DML_TARGET_VERSION_USE_LATEST", StringComparison.Ordinal); + Assert.InRange(define, 0, partition.IndexOf("#include", StringComparison.Ordinal) - 1); + string header = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "RecompiledIdlHeaders", "um", "DirectML.h")); + string version = Between(header, "#ifndef DML_TARGET_VERSION", + "// ==================================================================================================================="); + string declarations = "#define DML_TARGET_VERSION_USE_LATEST\n#define NTDDI_VERSION 0x0A000012\n" + + "#define NTDDI_WIN11_ZN 0x0A00000E\n#define NTDDI_WIN10_NI 0x0A00000C\n" + version + + "\nenum DML_VERSION_CHECK { DmlVersionCheck = DML_TARGET_VERSION };\n"; + using var fixture = new HeaderAnnotationTests.NativeFixture("x64", "x86_64-pc-windows-msvc", + declarations, extraSettings: "--config\nnative-constant-values\n"); + string names = Path.Combine(fixture.DirectoryPath, "names.txt"); + File.WriteAllLines(names, new[] { "DML_TARGET_VERSION", "DML_TARGET_VERSION_USE_LATEST", + "NTDDI_VERSION", "NTDDI_WIN11_ZN", "NTDDI_WIN10_NI" }.OrderBy(name => name, StringComparer.Ordinal)); + File.AppendAllText(Path.Combine(fixture.DirectoryPath, "test.rsp"), "--constant-names-file\n" + names + "\n"); + fixture.AssertSuccess(); + using var image = Emit(fixture, "x64"); + var reader = image.Reader; + var field = FindType(reader, "DML_VERSION_CHECK").GetFields().Select(reader.GetFieldDefinition) + .Single(value => reader.GetString(value.Name) == "DmlVersionCheck"); + var value = reader.GetBlobReader(reader.GetConstant(field.GetDefaultValue()).Value); + Assert.Equal(0x6400, value.ReadInt32()); + var constants = JsonSerializer.Deserialize(File.ReadAllText( + Path.ChangeExtension(fixture.Output, ".native-constants.json"))); + var targetVersion = Assert.Single(constants.Constants, item => item.NativeName == "DML_TARGET_VERSION"); + Assert.Equal("25600", targetVersion.Value); + Assert.Equal("int", targetVersion.NativeType); + Assert.Contains(targetVersion.Evaluation, new[] { "Clang", "Scanner" }); + AssertMetadataClosure(reader); + } + + [Theory] + [InlineData("x86", "i686-pc-windows-msvc", 24, 4)] + [InlineData("x64", "x86_64-pc-windows-msvc", 48, 8)] + [InlineData("arm64", "aarch64-pc-windows-msvc", 48, 8)] + public void ProcessBasicInformationUsesDocumentedFieldsWithoutChangingNativeLayout( + string architecture, string target, int size, int alignment) + { + using var headers = new PatchedHeaders(); + string original = headers.ReadOriginal(@"um\winternl.h").Replace("\r\n", "\n"); + string patched = headers.Read(@"um\winternl.h").Replace("\r\n", "\n"); + string declaration = Between(patched, "typedef struct _PROCESS_BASIC_INFORMATION {", + "\ntypedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION;"); + string sdkDeclaration = Between(original, "typedef struct _PROCESS_BASIC_INFORMATION {", + "\ntypedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION;"); + string sdkRecord = sdkDeclaration.Replace("_PROCESS_BASIC_INFORMATION", "_SDK_PROCESS_BASIC_INFORMATION", + StringComparison.Ordinal).Replace("} PROCESS_BASIC_INFORMATION;", "} SDK_PROCESS_BASIC_INFORMATION;", + StringComparison.Ordinal); + Assert.Contains("#else\n" + Between(sdkDeclaration, " PVOID Reserved1;", "\n} PROCESS_BASIC_INFORMATION;") + + "\n#endif", declaration); + string root = Path.Combine(RepositoryRoot(), "generation", "WinSDK", "RecompiledIdlHeaders"); + string winnt = File.ReadAllText(Path.Combine(root, "um", "winnt.h")); + string basetsd = File.ReadAllText(Path.Combine(root, "shared", "basetsd.h")).Replace("\r\n", "\n"); + Assert.Contains("typedef long LONG;", winnt); + Assert.Contains("typedef void *PVOID;", winnt); + Assert.Contains("} PEB, *PPEB;", original); + string types = "typedef long LONG;\ntypedef void *PVOID;\ntypedef struct _PEB *PPEB;\n" + + Between(original, "typedef _Return_type_success_(return >= 0) LONG NTSTATUS;", "\n") + + "\n" + Between(original, "typedef LONG KPRIORITY;", "\n") + "\n" + + Between(basetsd, "#if !defined(_W64)", "\n//\n// HANDLE64 uses 64 bits") + "\n"; + const string assertions = @" +#ifdef __cplusplus +#define ABI_CHECK static_assert +#define ABI_ALIGNOF alignof +#else +#define ABI_CHECK _Static_assert +#define ABI_ALIGNOF _Alignof +#endif +ABI_CHECK(sizeof(NTSTATUS) == 4 && sizeof(KPRIORITY) == 4, ""Native signed scalar widths.""); +ABI_CHECK(sizeof(ULONG_PTR) == sizeof(PVOID), ""Native pointer-sized unsigned storage.""); +ABI_CHECK(sizeof(PROCESS_BASIC_INFORMATION) == sizeof(SDK_PROCESS_BASIC_INFORMATION), ""PBI size.""); +ABI_CHECK(ABI_ALIGNOF(PROCESS_BASIC_INFORMATION) == ABI_ALIGNOF(SDK_PROCESS_BASIC_INFORMATION), ""PBI alignment.""); +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, PebBaseAddress) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, PebBaseAddress), ""PEB pointer offset.""); +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, UniqueProcessId) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, UniqueProcessId), ""Process ID offset.""); +#if defined(WIN32METADATA) +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, ExitStatus) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, Reserved1), ""Exit status offset.""); +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, AffinityMask) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, Reserved2[0]), ""Affinity offset.""); +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, BasePriority) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, Reserved2[1]), ""Priority offset.""); +ABI_CHECK(__builtin_offsetof(PROCESS_BASIC_INFORMATION, InheritedFromUniqueProcessId) == + __builtin_offsetof(SDK_PROCESS_BASIC_INFORMATION, Reserved3), ""Parent process ID offset.""); +#ifdef __cplusplus +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::ExitStatus), NTSTATUS), ""Exit status type.""); +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::PebBaseAddress), PPEB), ""PEB pointer type.""); +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::AffinityMask), ULONG_PTR), ""Affinity type.""); +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::BasePriority), KPRIORITY), ""Priority type.""); +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::UniqueProcessId), ULONG_PTR), ""Process ID type.""); +ABI_CHECK(__is_same(decltype(PROCESS_BASIC_INFORMATION::InheritedFromUniqueProcessId), ULONG_PTR), ""Parent process ID type.""); +#endif +#endif +"; + using var fixture = new HeaderAnnotationTests.NativeFixture(architecture, target, + types + declaration + "\n" + sdkRecord + assertions, extraSettings: "-DWIN32METADATA\n"); + fixture.AssertSuccess(); + using var image = Emit(fixture, architecture); + var reader = image.Reader; + var fields = FindType(reader, "PROCESS_BASIC_INFORMATION").GetFields() + .Select(reader.GetFieldDefinition).Select(field => reader.GetString(field.Name)).ToArray(); + Assert.Equal(new[] { "ExitStatus", "PebBaseAddress", "AffinityMask", "BasePriority", + "UniqueProcessId", "InheritedFromUniqueProcessId" }, fields); + AssertMetadataClosure(reader); + var metadataSurface = NativeSurface(fixture, target, metadataEnabled: true); + Assert.Contains($"record _PROCESS_BASIC_INFORMATION {size} {alignment}", metadataSurface); + using var ordinary = new HeaderAnnotationTests.NativeFixture(architecture, target, + types + sdkDeclaration + "\n" + sdkRecord + assertions, annotationsEnabled: false); + foreach (string language in new[] { "c", "c++" }) + Assert.Equal(NativeSurface(ordinary, target, metadataEnabled: false, language), + NativeSurface(fixture, target, metadataEnabled: false, language)); + } + + private static string CallbackDeclarations(string header) + => Between(header, "#ifndef _MANAGED", "\ntypedef WORD"); + + private static string Callback(string header, string name) + => Assert.Single(Regex.Matches(header, @"typedef QStatus \(AJ_CALL \* " + name + @"\)[\s\S]*?;") + .Select(match => match.Value)).Replace("AJ_CALL", "__stdcall", StringComparison.Ordinal); + + private static string Between(string text, string start, string end) + { + int first = text.IndexOf(start, StringComparison.Ordinal); + Assert.True(first >= 0, start); + int last = text.IndexOf(end, first + start.Length, StringComparison.Ordinal); + Assert.True(last > first, end); + return text.Substring(first, last - first); + } + + private static string RepositoryRoot([CallerFilePath] string source = null) + => Path.GetFullPath(Path.Combine(Path.GetDirectoryName(source), "..", "..")); + + private sealed class PatchedHeaders : IDisposable + { + private readonly string root = Path.Combine(Path.GetTempPath(), "header-compatibility-" + Guid.NewGuid().ToString("N")); + private readonly string sdk = Path.Combine(RepositoryRoot(), "generation", "WinSDK"); + + internal PatchedHeaders() + { + using var recipe = JsonDocument.Parse(File.ReadAllText(Path.Combine(this.sdk, "patches", "SdkHeaders.json"))); + foreach (string header in new[] { @"shared\minwindef.h", @"um\winternl.h", @"um\Iads.h", + @"um\alljoyn_c\AboutDataListener.h", @"um\dbghelp.h" }) + { + string source = Path.Combine(this.sdk, "RecompiledIdlHeaders", header); + var entry = Assert.Single(recipe.RootElement.GetProperty("headers").EnumerateArray(), + item => item.GetProperty("path").GetString() == header); + Assert.Equal(entry.GetProperty("sourceSha256").GetString(), + Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(source)))); + string destination = Path.Combine(this.root, header); + Directory.CreateDirectory(Path.GetDirectoryName(destination)); + File.Copy(source, destination); + RunGit(header, check: true); + RunGit(header, check: false); + } + } + + internal string Read(string header) => File.ReadAllText(Path.Combine(this.root, header)); + internal string ReadOriginal(string header) => File.ReadAllText(Path.Combine(this.sdk, "RecompiledIdlHeaders", header)); + + private void RunGit(string header, bool check) + { + var start = new ProcessStartInfo("git") + { WorkingDirectory = RepositoryRoot(), UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true }; + foreach (string argument in new[] { "-c", "core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol", + "apply", "--unsafe-paths", "-p1", "--directory=" + this.root, "--whitespace=error-all" }) + start.ArgumentList.Add(argument); + if (check) + start.ArgumentList.Add("--check"); + start.ArgumentList.Add(Path.Combine(this.sdk, "patches", header + ".patch")); + using var process = Process.Start(start); + var output = process.StandardOutput.ReadToEndAsync(); + var error = process.StandardError.ReadToEndAsync(); + process.WaitForExit(); + Assert.True(process.ExitCode == 0, output.GetAwaiter().GetResult() + error.GetAwaiter().GetResult()); + } + + public void Dispose() => Directory.Delete(this.root, recursive: true); + } + } +} diff --git a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs index 181d69d41..3c86c3b36 100644 --- a/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs +++ b/tests/Win32MetadataScraperTests/PreparedSdkHeadersTests.cs @@ -94,6 +94,76 @@ public void DuplicatePatchesAndRecipePathEscapesAreRejected() Assert.Contains("escapes its root", escape.Error); } + [Fact] + public void ExplicitRetainedHeadersAreSourcePinnedAndReportedSeparatelyFromTheSdk() + { + using var fixture = new Fixture(); + File.Delete(fixture.SdkHeader); + fixture.MutateRecipe(recipe => + { + var header = recipe["headers"][0].AsObject(); + header.Remove("sdkPath"); + header.Remove("sdkSha256"); + header["sourceKind"] = "retained"; + header["retentionReason"] = "Temporary compatibility surface."; + }); + var prepared = fixture.Prepare(); + Assert.Contains("VALUE 2", File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", "sample.h"))); + using var manifest = JsonDocument.Parse(File.ReadAllText( + Path.Combine(Path.GetDirectoryName(prepared.IncludeRoot), "manifest.json"))); + var retained = Assert.Single(manifest.RootElement.GetProperty("retainedHeaders").EnumerateArray()); + Assert.Equal(@"um\sample.h", retained.GetProperty("path").GetString()); + Assert.Equal(Fixture.Hash(Encoding.ASCII.GetBytes(Fixture.Before)), + retained.GetProperty("sourceSha256").GetString()); + Assert.Equal("Temporary compatibility surface.", retained.GetProperty("retentionReason").GetString()); + } + + [Fact] + public void RetainedHeadersCannotOmitTheirReasonOrClaimASelectedSdkBinding() + { + foreach (bool keepSdkBinding in new[] { false, true }) + { + using var fixture = new Fixture(); + fixture.MutateRecipe(recipe => + { + var header = recipe["headers"][0].AsObject(); + header["sourceKind"] = "retained"; + if (keepSdkBinding) + header["retentionReason"] = "Temporary compatibility surface."; + else + { + header.Remove("sdkPath"); + header.Remove("sdkSha256"); + } + }); + var result = fixture.Run(); + Assert.NotEqual(0, result.ExitCode); + Assert.Contains("retained header requires an explicit reason", result.Error); + Assert.Equal(Fixture.Before, File.ReadAllText(fixture.Header)); + } + } + + [Fact] + public void GeneratedBannerAndUnusedIdlDoNotTurnAConsumedHeaderIntoAMidlOutput() + { + using var fixture = new Fixture(); + string original = "/* File created by MIDL compiler */\r\n" + Fixture.Before; + File.WriteAllText(fixture.Header, original, new UTF8Encoding(false)); + File.WriteAllText(fixture.SdkHeader, original, new UTF8Encoding(false)); + File.WriteAllText(Path.ChangeExtension(fixture.SdkHeader, ".idl"), "/* Not regenerated. */"); + fixture.WritePatch(2, leadingLine: "/* File created by MIDL compiler */"); + fixture.MutateRecipe(recipe => + { + string hash = Fixture.Hash(File.ReadAllBytes(fixture.Header)); + recipe["headers"][0]["sourceSha256"] = hash; + recipe["headers"][0]["sdkSha256"] = hash; + }); + var prepared = fixture.Prepare(); + Assert.Equal(original.Replace("VALUE 1", "VALUE 2"), + File.ReadAllText(Path.Combine(prepared.IncludeRoot, "um", "sample.h"))); + Assert.Equal(original, File.ReadAllText(fixture.Header)); + } + [Fact] public void RemoteMidlRegenerationPreservesSynthesizedDirectionsAndCounts() { @@ -205,10 +275,12 @@ internal Fixture() internal string MidlWarnings => Path.Combine(this.root, "midl-warnings.log"); internal string PreparationWarnings(string architecture) => Path.Combine(this.root, "obj", "prepared-sdk-provenance", architecture, "preparation.warnings.log"); internal string[] ScrapeMarkers => new[] { "scannedheaders.crossarch.txt", "scannedheaders.x86.txt", "scannedheaders.x64.txt", "scannedheaders.arm64.txt", "constants.scraped.txt" }.Select(name => Path.Combine(this.root, "obj", "generated", name)).ToArray(); - internal void WritePatch(int after, int before = 1, string path = "um/sample.h", string metadata = null, string originalPath = null) + internal void WritePatch(int after, int before = 1, string path = "um/sample.h", string metadata = null, string originalPath = null, string leadingLine = null) { string oldPath = originalPath ?? path; - string text = $"diff --git a/{oldPath} b/{path}\n{metadata}" + $"--- a/{oldPath}\n+++ b/{path}\n@@ -1,4 +1,4 @@\n #ifndef SAMPLE_H\r\n #define SAMPLE_H\r\n" + $"-#define VALUE {before}\r\n+#define VALUE {after}\r\n #endif\r\n"; + int count = leadingLine == null ? 4 : 5; + string prefix = leadingLine == null ? "" : " " + leadingLine + "\r\n"; + string text = $"diff --git a/{oldPath} b/{path}\n{metadata}" + $"--- a/{oldPath}\n+++ b/{path}\n@@ -1,{count} +1,{count} @@\n{prefix} #ifndef SAMPLE_H\r\n #define SAMPLE_H\r\n" + $"-#define VALUE {before}\r\n+#define VALUE {after}\r\n #endif\r\n"; File.WriteAllText(this.patch, text, new UTF8Encoding(false)); } From f0d40f203b2c0ffc00b8d041becc114e42619922 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Tue, 27 Oct 2026 22:13:51 -0700 Subject: [PATCH 55/57] Assert inferred HRESULT and documented PBI storage Keep exact callback and native ABI contracts while checking the nominal HRESULT and documented PBI alias-storage graphs. Document structural typedef inference and intrinsic projection boundaries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../header-annotation-migration-playbook.md | 17 +++--- .../plans/shift-left-annotation-spec.md | 58 +++++++------------ .../HeaderCompatibilityPatchTests.cs | 43 ++++++++++++-- 3 files changed, 67 insertions(+), 51 deletions(-) diff --git a/docs/copilot/plans/header-annotation-migration-playbook.md b/docs/copilot/plans/header-annotation-migration-playbook.md index 59d97d6c0..ef51a79f7 100644 --- a/docs/copilot/plans/header-annotation-migration-playbook.md +++ b/docs/copilot/plans/header-annotation-migration-playbook.md @@ -148,7 +148,7 @@ either output without claiming to have migrated their APIs. | Historical labels absent from native source | Require an exact qualification pin for an original-AST label/expression carrier compatible with the selected header/reader pair. If that pin is unavailable, retain the fact in the shared carrier-gap bucket. Do not invent a native alias or expose an ordinary-consumer symbol. | | Availability | Use the qualified Clang lexical OS scopes or explicit type carriers. Preserve actual floors and scope boundaries; do not invent floors for structs merely because a nearby interface has one. | | Cleanup and invalid values | Put resource ownership on producers' return values or output parameters. Resolve cleanup names against actual native function declarations after the complete translation-unit walk; declaration order must not require copied or moved prototypes. Preserve complete invalid sets. Do not create pseudo-handle types or move ownership onto an existing plain handle typedef. | -| Native typedef identity | Use valueless `_Win32_NativeTypedef_` on an existing scalar/data-pointer `typedef`, or `type ::Alias => NativeTypedef` through original-IDL `cpp_quote`. It creates identity only; never fabricate cleanup, compatibility, or availability to trigger a wrapper. Preserve native width, signedness, and pointer depth. Reject incomplete record values instead of pretending OLD `IntPtr` proves native pointer storage. | +| Native typedef identity | Infer supported scalar/data-pointer aliases from native declarations. Preserve width, signedness, pointer depth, and written pointee identity; do not author an identity marker or fabricate lifecycle/availability facts. Record and enum aliases keep their declarations, and incomplete record values remain opaque. | | Compiler intrinsics | Preserve the generator's actual native-Builtin exclusion. Do not invent DLL APIs or require metadata projection for those excluded declarations; still parse and validate their authored annotations. | | Direction, buffers, counts, and retval | Prefer native SAL/MIDL semantics, preserving count expressions and units. Do not replace or silently discard existing SAL, or add redundant scalar direction annotations. | | Exact results | `_Win32_PreserveResult_`, legacy `CanReturnMultipleSuccessValues`, and legacy `CanReturnErrorsAsSuccess` converge on CLR `PreserveSig`. Do not introduce a separate multiple-success annotation or preserve the legacy custom-attribute instances. | @@ -174,14 +174,13 @@ cleanup annotations. Assess independent typedef aliases against their own wrappe projection path; cleanup binding does not prove alias transport. Continue other source drafting while central coverage and output review remain pending. -The identity marker reuses the existing ABI-preserving wrapper path and native -redeclaration ownership. Annotate only the intended alias in a multi-alias native -statement. A metadata-only same-native-name redeclaration can carry the marker -for a macro-produced typedef without editing that declaration-producing macro. -It must still denote the actual native scalar or data pointer. Logical enums, -callbacks, record values, arrays, references, C++ `using` aliases, and unsupported -scalar representations are not identity-marker targets. Genuine pointers to -incomplete records are different from incomplete record **value** aliases. +Automatic native typedef discovery follows native redeclaration ownership. It +does not infer an alias relationship from a name or add same-name typedef bridges. +Independent compatibility annotations still belong to their native aliases. +Configured intrinsic integral projections retain their native width and +signedness; application aliases over them keep their own nominal identity. +Complete record pointees, including anonymous inline records, retain their actual +generated managed record identity and fields. Every data-pointer level must match the target's ordinary pointer width; non-default `__ptr32`/`__ptr64` widths, even beneath ordinary outer pointers or typedefs, fail with WMA001 before output. Do not strip those qualifiers or diff --git a/docs/copilot/plans/shift-left-annotation-spec.md b/docs/copilot/plans/shift-left-annotation-spec.md index c6cb78b2a..b132c5adb 100644 --- a/docs/copilot/plans/shift-left-annotation-spec.md +++ b/docs/copilot/plans/shift-left-annotation-spec.md @@ -69,7 +69,6 @@ permitted, and annotations on unsupported targets are errors. | Retained pointer | `_Win32_Retained_` | Pointer parameter retained by the API after the call. Follow the API's documented lifetime. | | Reserved parameter | `_Win32_Reserved_` | Reserved pointer or scalar parameter. Records `[Reserved]` while preserving existing native types, direction SAL, and optionality. Valueless and non-repeatable. | | Interior pointers | `_Win32_ContainsInteriorPointers_` | Caller-owned output/inout buffer parameter. Returned absolute pointers may borrow storage inside that same allocation; keep it alive and at a stable address until all pointer use or copying ends. Valueless and non-repeatable. | -| Native typedef identity | `_Win32_NativeTypedef_` | Genuine native `typedef` of a supported scalar or data pointer. Emits a nominal native-typedef wrapper without implying cleanup, invalid values, compatibility, or an OS floor. Valueless. | | Compatible native typedef | `_Win32_AlsoUsableFor_(TYPE)` | Genuine native typedef, not a logical enum group. | | Enum use | `_Win32_AssociatedEnum_(TYPE)` | Return, parameter, or field associated with a native enum or metadata-only group, including a later or cross-partition definition. Keep its native declaration type. | | Loose constant association | `_Win32_AssociatedConstant_(NAME)` | Enum. Associates an existing global constant without duplicating or renaming it. Repeatable. | @@ -218,22 +217,17 @@ enum class _Win32_SupportedOS_10240_ [[clang::flag_enum]] OPTION : unsigned long Type metadata precedes the typedef. -Use the neutral identity marker when an existing native scalar or data-pointer -alias needs its own metadata identity but has no other annotation: +Native typedef identity is inferred from native declarations in ordinary and +annotation-enabled scrapes. Supported scalar and data-pointer typedefs keep their +written alias chains and native storage. The existing `[NativeTypedef]` metadata +attribute and single `Value` field describe each inferred wrapper; no header +identity annotation is required or accepted. Do not add a marker, same-name +typedef bridge, lifecycle fact, or per-name allowlist to force wrapper emission. +Traversal, dependencies, and exclusions determine emitted scope. -```cpp -_Win32_NativeTypedef_ typedef int BOOL; -_Win32_NativeTypedef_ typedef long HRESULT; -_Win32_NativeTypedef_ typedef void* HANDLE; -``` - -The canonical payload is `Win32Metadata.NativeTypedef`, with no parentheses, -textual values, or compiler arguments. It uses the existing `[NativeTypedef]` -wrapper projection and produces one `Value` field and one attribute per native -identity, including repeated annotations/redeclarations. Distinct aliases remain -distinct, and references retain their written typedef identity rather than an -erasing primitive remap. Traversal and exclusion rules still decide which native -declarations are emitted; the marker does not wrap unannotated typedefs. +The generator's configured intrinsic pointer-sized integral projections remain +intrinsic when their native width and signedness match. Application typedefs +over those intrinsic types retain their own nominal identity. Supported storage preserves the target's native scalar width and signedness and every data-pointer level. Pointer-sized integral remaps must match that ABI. @@ -242,12 +236,13 @@ widths such as x64 `__ptr32` or x86 `__ptr64`, including beneath ordinary outer pointers or intervening typedefs, fail with WMA001 before output is committed. The reader does not erase the qualifier or substitute integer storage. Direct fixed-width integer storage is not made into a pointer because OLD used -`IntPtr`. Genuine pointers to complete or incomplete native records are allowed; -record **values**, including incomplete-record value aliases, are not. Native -enum values, logical enum groups, callbacks/function pointers, arrays, references, -C++ `using` declarations, and unsupported scalar representations fail explicitly. -Do not invent an OS floor or a self-compatibility annotation merely to force a -provider, and do not infer native pointer storage from historical metadata. +`IntPtr`. Genuine pointers to complete or incomplete native records preserve +their actual managed record pointees, including source-bound generated anonymous +record identities. Record and enum value aliases keep their native declarations; +incomplete record values stay opaque. Logical enum groups, callbacks/function +pointers, arrays, references, and C++ `using` declarations are not inferred +scalar/data-pointer wrappers. Unsupported scalar representations fail explicitly. +Do not infer native pointer storage from historical metadata. When a retained invalid-value record was authored as `DECLARE_HANDLE`, the tooling can preserve its existing `void* Value` only with independent, identity-bound @@ -276,18 +271,8 @@ levels from signatures: an `ALIAS*` parameter still projects as a pointer to the native typedef wrapper. The source-kind proofs are internal comments, distinct from `DECLARE_HANDLE` provenance and from public SDK annotation vocabulary. -For an IDL-owned typedef, use the existing selector-bound comment transport in -the original IDL, for example: - -```idl -cpp_quote("/* Win32Metadata: type ::BSTR => NativeTypedef */") -``` - -The same target and storage validation applies to that comment. Ordinary SDK -consumers see an empty identity macro and unchanged native declarations. - -Callback aliases continue to use their own existing projection, not the neutral -identity marker: +Callback aliases keep their existing callback projection. Independent API facts +still use the annotation or original-IDL comment transport: ```cpp _Win32_SupportedOS_10240_ @@ -1130,9 +1115,8 @@ is not an identity. Distinct typedef aliases remain distinct. The same canonical fact parser, validation, native cleanup resolution, projection and final emitter serve macros and comments. `return` accepts RAIIFree and -AssociatedEnum. A `type` selector can carry valueless `NativeTypedef` for a -supported native scalar/data-pointer typedef; it does not turn a record or enum -into a typedef wrapper. References use native lookup from the bound declaration. +AssociatedEnum. Native typedef identity is inferred from the native declaration; +it is not a selector-bound annotation. References use native lookup from the bound declaration. AssociatedEnum admits real enum declarations and already-compiled logical groups, including exact native `__MIDL_*` tags. AlsoUsableFor and AssociatedConstant must resolve actual native types/constants. ImportLibrary uses literal quoted strings. diff --git a/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs index 046baa339..c17546779 100644 --- a/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs +++ b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs @@ -9,10 +9,11 @@ using System.Text.Json; using System.Text.RegularExpressions; using Xunit; +using static Win32MetadataScraperTests.HeaderAnnotationWinmdTests; namespace Win32MetadataScraperTests { - public class HeaderCompatibilityPatchTests : HeaderAnnotationWinmdTests + public class HeaderCompatibilityPatchTests { [Fact] public void CompatibilityPatchesPreserveResultsWidthsAndInputHandleDirections() @@ -92,11 +93,17 @@ public void CompatibilityPatchesPreserveResultsWidthsAndInputHandleDirections() Assert.Equal(0, blob.ReadUInt16()); Assert.Equal(0, blob.RemainingBytes); } + var hresult = FindType(reader, "HRESULT"); + AssertHasAttribute(reader, hresult.GetCustomAttributes(), "NativeTypedefAttribute"); + var hresultValue = reader.GetFieldDefinition(Assert.Single(hresult.GetFields())); + Assert.Equal("Value", reader.GetString(hresultValue.Name)); + Assert.Equal("Int32", hresultValue.DecodeSignature(new SignatureNames(), null)); + string resultType = reader.GetString(hresult.Namespace) + "." + reader.GetString(hresult.Name); foreach (string name in new[] { "GetFirstRow", "GetNextRow", "GetPreviousRow", "GetNextColumnName" }) { var method = FindMethod(reader, "IDirectorySearch", name); Assert.True(method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig), name); - Assert.Equal("Int32", method.DecodeSignature(new SignatureNames(), null).ReturnType); + Assert.Equal(resultType, method.DecodeSignature(new SignatureNames(qualifiedNames: true), null).ReturnType); } foreach (string name in new[] { "alljoyn_aboutdatalistener_getaboutdata_ptr", "alljoyn_aboutdatalistener_getannouncedaboutdata_ptr" }) @@ -118,6 +125,7 @@ public void CompatibilityPatchesPreserveResultsWidthsAndInputHandleDirections() types + originalCallbacks + other, annotationsEnabled: false); Assert.Equal(NativeSurface(ordinary, target, metadataEnabled: false), NativeSurface(fixture, target, metadataEnabled: false)); + AssertMetadataClosure(reader); } } @@ -225,10 +233,35 @@ public void ProcessBasicInformationUsesDocumentedFieldsWithoutChangingNativeLayo fixture.AssertSuccess(); using var image = Emit(fixture, architecture); var reader = image.Reader; + var decoder = new SignatureNames(qualifiedNames: true); var fields = FindType(reader, "PROCESS_BASIC_INFORMATION").GetFields() - .Select(reader.GetFieldDefinition).Select(field => reader.GetString(field.Name)).ToArray(); - Assert.Equal(new[] { "ExitStatus", "PebBaseAddress", "AffinityMask", "BasePriority", - "UniqueProcessId", "InheritedFromUniqueProcessId" }, fields); + .Select(reader.GetFieldDefinition).Select(field => + (reader.GetString(field.Name), field.DecodeSignature(decoder, null))).ToArray(); + Assert.Equal(new[] + { + ("ExitStatus", "Test.NTSTATUS"), ("PebBaseAddress", "Test.PPEB"), + ("AffinityMask", "UIntPtr"), ("BasePriority", "Test.KPRIORITY"), + ("UniqueProcessId", "UIntPtr"), ("InheritedFromUniqueProcessId", "UIntPtr"), + }, fields); + foreach (var (name, storage) in new[] + { + ("NTSTATUS", "Test.LONG"), ("KPRIORITY", "Test.LONG"), + ("LONG", "Int32"), ("PPEB", "Test._PEB*"), + }) + { + var alias = FindType(reader, name); + Assert.Equal("Test", reader.GetString(alias.Namespace)); + AssertHasAttribute(reader, alias.GetCustomAttributes(), "NativeTypedefAttribute"); + var value = reader.GetFieldDefinition(Assert.Single(alias.GetFields())); + Assert.Equal("Value", reader.GetString(value.Name)); + Assert.Equal(storage, value.DecodeSignature(decoder, null)); + } + var peb = FindType(reader, "_PEB"); + Assert.Equal("Test", reader.GetString(peb.Namespace)); + Assert.Empty(peb.GetFields()); + AssertDoesNotHaveAttribute(reader, peb.GetCustomAttributes(), "NativeTypedefAttribute"); + Assert.DoesNotContain(reader.TypeDefinitions.Select(reader.GetTypeDefinition), + type => reader.GetString(type.Name) == "ULONG_PTR"); AssertMetadataClosure(reader); var metadataSurface = NativeSurface(fixture, target, metadataEnabled: true); Assert.Contains($"record _PROCESS_BASIC_INFORMATION {size} {alignment}", metadataSurface); From 531c22a401ddc898c668eff5c1d4c60242f83ea0 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Tue, 27 Oct 2026 22:30:02 -0700 Subject: [PATCH 56/57] Retire authored SDK typedef identity markers Use native declarations for typedef identity instead of header and IDL facts. Remove identity-only bridges and empty patches while preserving independent compatibility annotations and pinning the canonical helper input. Assert nominal DWORD result storage alongside the exact HRESULT and documented PBI graphs. Keep source-only compatibility checks outside the inherited native batch inventory. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- generation/WinSDK/patches/SdkHeaders.json | 27 +- .../WinSDK/patches/shared/basetsd.h.patch | 31 - .../WinSDK/patches/shared/bcrypt.h.patch | 104 +- .../WinSDK/patches/shared/devpropdef.h.patch | 94 +- .../WinSDK/patches/shared/evntprov.h.patch | 524 +- .../patches/shared/fltUserStructures.h.patch | 17 - .../WinSDK/patches/shared/hidpi.h.patch | 12 +- .../WinSDK/patches/shared/ifdef.h.patch | 13 - .../WinSDK/patches/shared/minwindef.h.patch | 40 +- .../WinSDK/patches/shared/mswsockdef.h.patch | 21 - .../WinSDK/patches/shared/ntdef.h.patch | 42 +- .../WinSDK/patches/shared/rpcndr.h.patch | 154 +- .../WinSDK/patches/shared/usbioctl.h.patch | 13 - .../WinSDK/patches/shared/windef.h.patch | 103 +- .../WinSDK/patches/shared/winerror.h.patch | 16 +- .../WinSDK/patches/shared/wtypes.idl.patch | 95 +- .../patches/shared/wtypesbase.idl.patch | 15 +- generation/WinSDK/patches/um/FhSvcCtl.h.patch | 7 +- generation/WinSDK/patches/um/HttpExt.h.patch | 13 - .../WinSDK/patches/um/ProcessSnapshot.h.patch | 30 +- generation/WinSDK/patches/um/SetupAPI.h.patch | 8114 ++++++++-------- .../patches/um/WinHvPlatformDefs.h.patch | 13 - generation/WinSDK/patches/um/amsi.idl.patch | 6 +- generation/WinSDK/patches/um/appmodel.h.patch | 26 +- .../WinSDK/patches/um/appnotify.h.patch | 23 - generation/WinSDK/patches/um/authz.h.patch | 110 +- generation/WinSDK/patches/um/cfgmgr32.h.patch | 261 +- generation/WinSDK/patches/um/clusapi.h.patch | 520 +- .../WinSDK/patches/um/combaseapi.h.patch | 97 +- generation/WinSDK/patches/um/commctrl.h.patch | 252 +- .../patches/um/commoncontrols.idl.patch | 12 +- .../WinSDK/patches/um/compressapi.h.patch | 324 +- .../WinSDK/patches/um/computedefs.h.patch | 31 - .../um/d3dshadercacheregistration.idl.patch | 12 - generation/WinSDK/patches/um/dbs.idl.patch | 40 +- generation/WinSDK/patches/um/dciman.h.patch | 7 +- generation/WinSDK/patches/um/ddeml.h.patch | 74 +- generation/WinSDK/patches/um/ddraw.h.patch | 13 - generation/WinSDK/patches/um/ddrawint.h.patch | 27 - generation/WinSDK/patches/um/devquery.h.patch | 13 - .../patches/um/diagnosticdataquery.h.patch | 30 +- generation/WinSDK/patches/um/dpa_dsa.h.patch | 28 +- generation/WinSDK/patches/um/esent.h.patch | 55 - .../patches/um/featurestagingapi.h.patch | 12 +- .../patches/um/gamingexperience.h.patch | 5 +- generation/WinSDK/patches/um/imessage.h.patch | 13 - generation/WinSDK/patches/um/imm.h.patch | 43 +- generation/WinSDK/patches/um/immdev.h.patch | 37 +- .../patches/um/interactioncontext.h.patch | 40 +- .../WinSDK/patches/um/ioringapi.h.patch | 14 +- generation/WinSDK/patches/um/iphlpapi.h.patch | 62 +- generation/WinSDK/patches/um/lmaccess.h.patch | 18 +- generation/WinSDK/patches/um/lpmapi.h.patch | 24 +- .../WinSDK/patches/um/mimeole.idl.patch | 12 - generation/WinSDK/patches/um/mmc.idl.patch | 67 +- generation/WinSDK/patches/um/mmeapi.h.patch | 244 +- generation/WinSDK/patches/um/mmiscapi.h.patch | 52 +- generation/WinSDK/patches/um/mmsyscom.h.patch | 12 +- generation/WinSDK/patches/um/msacm.h.patch | 111 +- generation/WinSDK/patches/um/msi.h.patch | 214 +- generation/WinSDK/patches/um/msports.h.patch | 12 +- generation/WinSDK/patches/um/mstask.idl.patch | 12 +- generation/WinSDK/patches/um/ncrypt.h.patch | 63 +- .../WinSDK/patches/um/ncryptprotect.h.patch | 44 +- generation/WinSDK/patches/um/ntlsa.h.patch | 396 +- generation/WinSDK/patches/um/ntsecapi.h.patch | 187 +- .../WinSDK/patches/um/objidlbase.idl.patch | 8 - generation/WinSDK/patches/um/ocidl.idl.patch | 45 +- .../um/packagevirtualizationcontext.h.patch | 13 - generation/WinSDK/patches/um/pdh.h.patch | 141 +- .../WinSDK/patches/um/powerbase.h.patch | 20 +- .../WinSDK/patches/um/powersetting.h.patch | 25 +- generation/WinSDK/patches/um/prntvpt.h.patch | 22 +- .../patches/um/processthreadsapi.h.patch | 1688 ++-- .../WinSDK/patches/um/projectedfslib.h.patch | 43 +- .../WinSDK/patches/um/propsys.idl.patch | 52 +- generation/WinSDK/patches/um/prsht.h.patch | 13 +- generation/WinSDK/patches/um/prsht.idl.patch | 12 - generation/WinSDK/patches/um/ras.h.patch | 54 +- generation/WinSDK/patches/um/recapis.h.patch | 88 +- generation/WinSDK/patches/um/resapi.h.patch | 15 +- generation/WinSDK/patches/um/sapi.idl.patch | 15 - .../WinSDK/patches/um/sapiddk.idl.patch | 39 - generation/WinSDK/patches/um/shellapi.h.patch | 79 +- .../WinSDK/patches/um/shlobj_core.h.patch | 55 +- .../WinSDK/patches/um/shobjidl_core.idl.patch | 258 +- generation/WinSDK/patches/um/swdevice.h.patch | 18 +- generation/WinSDK/patches/um/tdh.h.patch | 410 +- generation/WinSDK/patches/um/tspi.h.patch | 57 - .../WinSDK/patches/um/uianimation.idl.patch | 64 +- .../patches/um/uiautomationcoreapi.h.patch | 56 +- generation/WinSDK/patches/um/urlmon.idl.patch | 20 +- generation/WinSDK/patches/um/uxtheme.h.patch | 1890 ++-- generation/WinSDK/patches/um/vfw.h.patch | 146 +- generation/WinSDK/patches/um/wabapi.h.patch | 14 +- .../WinSDK/patches/um/websocket.h.patch | 20 +- .../WinSDK/patches/um/wincontypes.h.patch | 13 - generation/WinSDK/patches/um/wincrypt.h.patch | 8531 ++++++++--------- generation/WinSDK/patches/um/winddi.h.patch | 279 +- ...ui.xaml.hosting.referencetracker.idl.patch | 12 - generation/WinSDK/patches/um/winevt.h.patch | 806 +- generation/WinSDK/patches/um/winineti.h.patch | 46 +- generation/WinSDK/patches/um/winldap.h.patch | 92 +- generation/WinSDK/patches/um/winnls.h.patch | 82 +- generation/WinSDK/patches/um/winnt.h.patch | 464 +- generation/WinSDK/patches/um/winsafer.h.patch | 28 +- generation/WinSDK/patches/um/winsock.h.patch | 686 +- generation/WinSDK/patches/um/winsock2.h.patch | 247 +- generation/WinSDK/patches/um/winsvc.h.patch | 138 +- generation/WinSDK/patches/um/winusb.h.patch | 610 +- generation/WinSDK/patches/um/winuser.h.patch | 1413 ++- generation/WinSDK/patches/um/ws2tcpip.h.patch | 57 +- generation/WinSDK/patches/um/wsman.h.patch | 112 +- generation/WinSDK/patches/um/wtsapi32.h.patch | 7 +- .../WinSDK/patches/winrt/hstring.idl.patch | 17 - generation/WinSDK/patches/winrt/roapi.h.patch | 40 +- .../patches/winrt/roparameterizediid.h.patch | 12 +- .../HeaderCompatibilityPatchTests.cs | 38 + .../NativeContractBatchTests.cs | 73 +- 119 files changed, 15064 insertions(+), 17272 deletions(-) delete mode 100644 generation/WinSDK/patches/shared/basetsd.h.patch delete mode 100644 generation/WinSDK/patches/shared/fltUserStructures.h.patch delete mode 100644 generation/WinSDK/patches/shared/ifdef.h.patch delete mode 100644 generation/WinSDK/patches/shared/mswsockdef.h.patch delete mode 100644 generation/WinSDK/patches/shared/usbioctl.h.patch delete mode 100644 generation/WinSDK/patches/um/HttpExt.h.patch delete mode 100644 generation/WinSDK/patches/um/WinHvPlatformDefs.h.patch delete mode 100644 generation/WinSDK/patches/um/appnotify.h.patch delete mode 100644 generation/WinSDK/patches/um/computedefs.h.patch delete mode 100644 generation/WinSDK/patches/um/d3dshadercacheregistration.idl.patch delete mode 100644 generation/WinSDK/patches/um/ddraw.h.patch delete mode 100644 generation/WinSDK/patches/um/ddrawint.h.patch delete mode 100644 generation/WinSDK/patches/um/devquery.h.patch delete mode 100644 generation/WinSDK/patches/um/esent.h.patch delete mode 100644 generation/WinSDK/patches/um/imessage.h.patch delete mode 100644 generation/WinSDK/patches/um/mimeole.idl.patch delete mode 100644 generation/WinSDK/patches/um/packagevirtualizationcontext.h.patch delete mode 100644 generation/WinSDK/patches/um/prsht.idl.patch delete mode 100644 generation/WinSDK/patches/um/sapi.idl.patch delete mode 100644 generation/WinSDK/patches/um/sapiddk.idl.patch delete mode 100644 generation/WinSDK/patches/um/tspi.h.patch delete mode 100644 generation/WinSDK/patches/um/wincontypes.h.patch delete mode 100644 generation/WinSDK/patches/um/windows.ui.xaml.hosting.referencetracker.idl.patch delete mode 100644 generation/WinSDK/patches/winrt/hstring.idl.patch diff --git a/generation/WinSDK/patches/SdkHeaders.json b/generation/WinSDK/patches/SdkHeaders.json index b60c8e999..07fe0ec15 100644 --- a/generation/WinSDK/patches/SdkHeaders.json +++ b/generation/WinSDK/patches/SdkHeaders.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "sdkPackageVersion": "10.0.28000.2705", "sourceStage": "post-midl", - "sourceGitTree": "4dd741bb691ea30f83ac09d56c836201b63dd442", + "sourceGitTree": "114b05b4db93918a563294f2be0981d93766aaa4", "headers": [ { "path": "um\\winnt.h", @@ -6983,7 +6983,7 @@ }, { "path": "shared\\win32metadata_annotations.h", - "sourceSha256": "CCF58C367C6CA06844126D14FE6D0C478C26E5DF1191793082BC3358AFCAF959" + "sourceSha256": "700F626B86D825F32A5A76CA0A14011B57EABCB4DDFCA2468A0B5F4317B84A14" }, { "path": "um\\activdbg.idl", @@ -9022,30 +9022,9 @@ "shared\\rpcnterr.h.patch", "shared\\ntiologc.h.patch", "um\\activdbg.idl.patch", - "shared\\fltUserStructures.h.patch", - "shared\\ifdef.h.patch", "shared\\minwindef.h.patch", "um\\Iads.h.patch", "um\\alljoyn_c\\AboutDataListener.h.patch", - "shared\\mswsockdef.h.patch", - "shared\\usbioctl.h.patch", - "um\\appnotify.h.patch", - "um\\computedefs.h.patch", - "um\\ddraw.h.patch", - "um\\ddrawint.h.patch", - "um\\devquery.h.patch", - "um\\esent.h.patch", - "um\\HttpExt.h.patch", - "um\\imessage.h.patch", - "um\\packagevirtualizationcontext.h.patch", - "um\\tspi.h.patch", - "um\\wincontypes.h.patch", - "um\\WinHvPlatformDefs.h.patch", - "um\\kbd.h.patch", - "um\\prsht.idl.patch", - "um\\sapi.idl.patch", - "um\\sapiddk.idl.patch", - "um\\windows.ui.xaml.hosting.referencetracker.idl.patch", - "winrt\\hstring.idl.patch" + "um\\kbd.h.patch" ] } diff --git a/generation/WinSDK/patches/shared/basetsd.h.patch b/generation/WinSDK/patches/shared/basetsd.h.patch deleted file mode 100644 index f67e8ea93..000000000 --- a/generation/WinSDK/patches/shared/basetsd.h.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/shared/basetsd.h b/shared/basetsd.h ---- a/shared/basetsd.h -+++ b/shared/basetsd.h -@@ -167,7 +167,13 @@ - #define ADDRESS_TAG_BIT 0x40000000000UI64 - - typedef __int64 SHANDLE_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SHANDLE_PTR SHANDLE_PTR; -+#endif - typedef unsigned __int64 HANDLE_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HANDLE_PTR HANDLE_PTR; -+#endif - typedef unsigned int UHALF_PTR, *PUHALF_PTR; - typedef int HALF_PTR, *PHALF_PTR; - -@@ -347,7 +353,13 @@ - typedef unsigned short UHALF_PTR, *PUHALF_PTR; - typedef short HALF_PTR, *PHALF_PTR; - typedef _W64 long SHANDLE_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SHANDLE_PTR SHANDLE_PTR; -+#endif - typedef _W64 unsigned long HANDLE_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HANDLE_PTR HANDLE_PTR; -+#endif - - #define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) ) - #define HandleToLong( h ) ((LONG)(LONG_PTR) (h) ) diff --git a/generation/WinSDK/patches/shared/bcrypt.h.patch b/generation/WinSDK/patches/shared/bcrypt.h.patch index b3ee9fa30..cc324f351 100644 --- a/generation/WinSDK/patches/shared/bcrypt.h.patch +++ b/generation/WinSDK/patches/shared/bcrypt.h.patch @@ -10,12 +10,7 @@ index c05c9ae0..a3fd7c99 100644 #include -@@ -38,3 +39,4 @@ - #ifndef _NTDEF_ -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS; - typedef NTSTATUS *PNTSTATUS; -@@ -421,6 +423,15 @@ typedef struct _BCRYPT_PKCS11_RSA_AES_WRAP_BLOB { +@@ -421,6 +422,15 @@ typedef struct _BCRYPT_PKCS11_RSA_AES_WRAP_BLOB { #define BCRYPT_PAD_PKCS1 0x00000002 // BCryptEncrypt/Decrypt BCryptSignHash/VerifySignature #define BCRYPT_PAD_OAEP 0x00000004 // BCryptEncrypt/Decrypt #define BCRYPT_PAD_PSS 0x00000008 // BCryptSignHash/VerifySignature @@ -31,23 +26,18 @@ index c05c9ae0..a3fd7c99 100644 #if (NTDDI_VERSION >= NTDDI_WINBLUE) #define BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID 0x00000010 //BCryptVerifySignature #endif -@@ -450,6 +461,15 @@ typedef struct _BCryptBufferDesc { +@@ -450,6 +460,10 @@ typedef struct _BCryptBufferDesc { -+_Win32_NativeTypedef_ typedef PVOID BCRYPT_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(BCRYPT_HANDLE) typedef PVOID BCRYPT_ALG_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(BCRYPT_HANDLE) typedef PVOID BCRYPT_KEY_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(BCRYPT_HANDLE) typedef PVOID BCRYPT_HASH_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(BCRYPT_HANDLE) typedef PVOID BCRYPT_SECRET_HANDLE; -@@ -507,6 +527,13 @@ typedef struct _BCRYPT_RSAKEY_BLOB +@@ -507,6 +521,13 @@ typedef struct _BCRYPT_RSAKEY_BLOB #define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352 // RSA3 @@ -61,7 +51,7 @@ index c05c9ae0..a3fd7c99 100644 //Properties of secret agreement algorithms #if (NTDDI_VERSION >= NTDDI_WIN8) #define BCRYPT_GLOBAL_PARAMETERS L"SecretAgreementParam" -@@ -616,6 +643,12 @@ typedef struct _BCRYPT_ECCFULLKEY_BLOB +@@ -616,6 +637,12 @@ typedef struct _BCRYPT_ECCFULLKEY_BLOB #define BCRYPT_DH_PUBLIC_MAGIC 0x42504844 // DHPB #define BCRYPT_DH_PRIVATE_MAGIC 0x56504844 // DHPV @@ -74,7 +64,7 @@ index c05c9ae0..a3fd7c99 100644 typedef struct _BCRYPT_DH_KEY_BLOB { ULONG dwMagic; -@@ -648,6 +681,12 @@ typedef _Struct_size_bytes_(cbLength) struct _BCRYPT_DH_PARAMETER_HEADER +@@ -648,6 +675,12 @@ typedef _Struct_size_bytes_(cbLength) struct _BCRYPT_DH_PARAMETER_HEADER #define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344 // DSPB #define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344 // DSPV @@ -87,7 +77,7 @@ index c05c9ae0..a3fd7c99 100644 #if (NTDDI_VERSION >= NTDDI_WIN8) #define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044 // DPB2 #define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044 // DPV2 -@@ -1001,6 +1040,10 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT +@@ -1001,6 +1034,10 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT #define BCRYPT_SIGNATURE_INTERFACE 0x00000005 #define BCRYPT_RNG_INTERFACE 0x00000006 @@ -98,7 +88,7 @@ index c05c9ae0..a3fd7c99 100644 #if (NTDDI_VERSION >= NTDDI_WIN8) #define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007 #endif -@@ -1118,6 +1161,13 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT +@@ -1118,6 +1155,13 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT #define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008 #define BCRYPT_HASH_REUSABLE_FLAG 0x00000020 @@ -112,7 +102,7 @@ index c05c9ae0..a3fd7c99 100644 #if (NTDDI_VERSION >= NTDDI_WIN8) #define BCRYPT_CAPI_AES_FLAG 0x00000010 #endif -@@ -1207,14 +1257,15 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT +@@ -1207,14 +1251,15 @@ typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT #define BCRYPT_ENABLE_INCOMPATIBLE_FIPS_CHECKS 0x00000100 #endif @@ -130,7 +120,7 @@ index c05c9ae0..a3fd7c99 100644 -@@ -1234,6 +1285,37 @@ BCryptOpenAlgorithmProvider( +@@ -1234,6 +1279,37 @@ BCryptOpenAlgorithmProvider( #define BCRYPT_KEY_ENCAPSULATION_OPERATION 0x00000080 #endif @@ -168,7 +158,7 @@ index c05c9ae0..a3fd7c99 100644 // USE EXTREME CAUTION: editing comments that contain "certenrolls_*" tokens // could break building CertEnroll idl files: // certenrolls_begin -- BCRYPT_ALGORITHM_IDENTIFIER -@@ -1246,11 +1328,12 @@ typedef struct _BCRYPT_ALGORITHM_IDENTIFIER +@@ -1246,11 +1322,12 @@ typedef struct _BCRYPT_ALGORITHM_IDENTIFIER } BCRYPT_ALGORITHM_IDENTIFIER; // certenrolls_end @@ -182,7 +172,7 @@ index c05c9ae0..a3fd7c99 100644 _Out_ ULONG *pAlgCount, _Out_ BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList, _In_ ULONG dwFlags); -@@ -1260,6 +1343,7 @@ typedef struct _BCRYPT_PROVIDER_NAME +@@ -1260,6 +1337,7 @@ typedef struct _BCRYPT_PROVIDER_NAME LPWSTR pszProviderName; } BCRYPT_PROVIDER_NAME; @@ -190,7 +180,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1275,6 +1359,7 @@ BCryptEnumProviders( +@@ -1275,6 +1353,7 @@ BCryptEnumProviders( #define BCRYPT_PUBLIC_KEY_FLAG 0x00000001 #define BCRYPT_PRIVATE_KEY_FLAG 0x00000002 @@ -198,7 +188,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1287,6 +1372,7 @@ BCryptGetProperty( +@@ -1287,6 +1366,7 @@ BCryptGetProperty( _In_ ULONG dwFlags); @@ -206,7 +196,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1298,6 +1384,7 @@ BCryptSetProperty( +@@ -1298,6 +1378,7 @@ BCryptSetProperty( _In_ ULONG dwFlags); @@ -214,7 +204,7 @@ index c05c9ae0..a3fd7c99 100644 NTSTATUS WINAPI BCryptCloseAlgorithmProvider( -@@ -1305,6 +1392,7 @@ BCryptCloseAlgorithmProvider( +@@ -1305,6 +1386,7 @@ BCryptCloseAlgorithmProvider( _In_ ULONG dwFlags); @@ -222,7 +212,7 @@ index c05c9ae0..a3fd7c99 100644 VOID WINAPI BCryptFreeBuffer( -@@ -1314,12 +1402,13 @@ BCryptFreeBuffer( +@@ -1314,12 +1396,13 @@ BCryptFreeBuffer( // // Primitive encryption functions. // @@ -237,7 +227,7 @@ index c05c9ae0..a3fd7c99 100644 _Out_writes_bytes_all_opt_(cbKeyObject) PUCHAR pbKeyObject, _In_ ULONG cbKeyObject, _In_reads_bytes_(cbSecret) PUCHAR pbSecret, -@@ -1327,16 +1416,18 @@ BCryptGenerateSymmetricKey( +@@ -1327,16 +1410,18 @@ BCryptGenerateSymmetricKey( _In_ ULONG dwFlags); @@ -257,7 +247,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1350,9 +1441,10 @@ BCryptEncrypt( +@@ -1350,9 +1435,10 @@ BCryptEncrypt( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PUCHAR pbOutput, _In_ ULONG cbOutput, _Out_ ULONG *pcbResult, @@ -269,7 +259,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1366,9 +1458,10 @@ BCryptDecrypt( +@@ -1366,9 +1452,10 @@ BCryptDecrypt( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PUCHAR pbOutput, _In_ ULONG cbOutput, _Out_ ULONG *pcbResult, @@ -281,7 +271,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1382,6 +1475,7 @@ BCryptExportKey( +@@ -1382,6 +1469,7 @@ BCryptExportKey( _In_ ULONG dwFlags); @@ -289,7 +279,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1389,7 +1483,7 @@ BCryptImportKey( +@@ -1389,7 +1477,7 @@ BCryptImportKey( _In_ BCRYPT_ALG_HANDLE hAlgorithm, _In_opt_ BCRYPT_KEY_HANDLE hImportKey, _In_z_ LPCWSTR pszBlobType, @@ -298,7 +288,7 @@ index c05c9ae0..a3fd7c99 100644 _Out_writes_bytes_all_opt_(cbKeyObject) PUCHAR pbKeyObject, _In_ ULONG cbKeyObject, _In_reads_bytes_(cbInput) PUCHAR pbInput, -@@ -1405,6 +1499,7 @@ BCryptImportKey( +@@ -1405,6 +1493,7 @@ BCryptImportKey( #define BCRYPT_KEY_VALIDATION_REGENERATE 0x00000020 // BCryptImportKeyPair #endif @@ -306,7 +296,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1412,23 +1507,25 @@ BCryptImportKeyPair( +@@ -1412,23 +1501,25 @@ BCryptImportKeyPair( _In_ BCRYPT_ALG_HANDLE hAlgorithm, _In_opt_ BCRYPT_KEY_HANDLE hImportKey, _In_z_ LPCWSTR pszBlobType, @@ -334,7 +324,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1437,18 +1534,21 @@ BCryptFinalizeKeyPair( +@@ -1437,18 +1528,21 @@ BCryptFinalizeKeyPair( _In_ ULONG dwFlags); @@ -356,7 +346,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1460,9 +1560,10 @@ BCryptSignHash( +@@ -1460,9 +1554,10 @@ BCryptSignHash( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PUCHAR pbOutput, _In_ ULONG cbOutput, _Out_ ULONG *pcbResult, @@ -368,7 +358,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1473,9 +1574,10 @@ BCryptVerifySignature( +@@ -1473,9 +1568,10 @@ BCryptVerifySignature( _In_ ULONG cbHash, _In_reads_bytes_(cbSignature) PUCHAR pbSignature, _In_ ULONG cbSignature, @@ -380,7 +370,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1486,6 +1588,7 @@ BCryptSecretAgreement( +@@ -1486,6 +1582,7 @@ BCryptSecretAgreement( _In_ ULONG dwFlags); @@ -388,7 +378,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1500,6 +1603,7 @@ BCryptDeriveKey( +@@ -1500,6 +1597,7 @@ BCryptDeriveKey( #if (NTDDI_VERSION >= NTDDI_WIN8) @@ -396,7 +386,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1516,12 +1620,13 @@ BCryptKeyDerivation( +@@ -1516,12 +1614,13 @@ BCryptKeyDerivation( // // Primitive hashing functions. // @@ -411,7 +401,7 @@ index c05c9ae0..a3fd7c99 100644 _Out_writes_bytes_all_opt_(cbHashObject) PUCHAR pbHashObject, _In_ ULONG cbHashObject, _In_reads_bytes_opt_(cbSecret) PUCHAR pbSecret, // optional -@@ -1529,6 +1634,7 @@ BCryptCreateHash( +@@ -1529,6 +1628,7 @@ BCryptCreateHash( _In_ ULONG dwFlags); @@ -419,7 +409,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1539,6 +1645,7 @@ BCryptHashData( +@@ -1539,6 +1639,7 @@ BCryptHashData( _In_ ULONG dwFlags); @@ -427,7 +417,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1550,12 +1657,13 @@ BCryptFinishHash( +@@ -1550,12 +1651,13 @@ BCryptFinishHash( #if (NTDDI_VERSION > NTDDI_WINBLUE || (NTDDI_VERSION == NTDDI_WINBLUE && defined(WINBLUE_KBSPRING14))) @@ -442,7 +432,7 @@ index c05c9ae0..a3fd7c99 100644 _In_ ULONG nHashes, _Out_writes_bytes_all_opt_(cbHashObject) PUCHAR pbHashObject, _In_ ULONG cbHashObject, -@@ -1563,6 +1671,7 @@ BCryptCreateMultiHash( +@@ -1563,6 +1665,7 @@ BCryptCreateMultiHash( _In_ ULONG cbSecret, // optional _In_ ULONG dwFlags); @@ -450,7 +440,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1575,17 +1684,19 @@ BCryptProcessMultiOperations( +@@ -1575,17 +1678,19 @@ BCryptProcessMultiOperations( #endif @@ -471,7 +461,7 @@ index c05c9ae0..a3fd7c99 100644 NTSTATUS WINAPI BCryptDestroyHash( -@@ -1593,6 +1704,7 @@ BCryptDestroyHash( +@@ -1593,6 +1698,7 @@ BCryptDestroyHash( #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) @@ -479,7 +469,7 @@ index c05c9ae0..a3fd7c99 100644 NTSTATUS WINAPI BCryptHash( -@@ -1615,6 +1727,13 @@ BCryptHash( +@@ -1615,6 +1721,13 @@ BCryptHash( #define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001 #define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002 @@ -493,7 +483,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1622,13 +1741,14 @@ BCryptGenRandom( +@@ -1622,13 +1735,14 @@ BCryptGenRandom( _In_opt_ BCRYPT_ALG_HANDLE hAlgorithm, _Out_writes_bytes_(cbBuffer) PUCHAR pbBuffer, _In_ ULONG cbBuffer, @@ -509,7 +499,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1642,6 +1762,7 @@ BCryptDeriveKeyCapi( +@@ -1642,6 +1756,7 @@ BCryptDeriveKeyCapi( #if (NTDDI_VERSION >= NTDDI_WIN7) @@ -517,7 +507,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1746,6 +1867,12 @@ typedef struct _BCRYPT_INTERFACE_VERSION +@@ -1746,6 +1861,12 @@ typedef struct _BCRYPT_INTERFACE_VERSION #define CRYPT_MIN_DEPENDENCIES (0x00000001) #define CRYPT_PROCESS_ISOLATE (0x00010000) // User-mode only @@ -530,7 +520,7 @@ index c05c9ae0..a3fd7c99 100644 // Processor modes supported by a provider // // (Valid for BCryptQueryProviderRegistration and BCryptResolveProviders): -@@ -1758,6 +1885,14 @@ typedef struct _BCRYPT_INTERFACE_VERSION +@@ -1758,6 +1879,14 @@ typedef struct _BCRYPT_INTERFACE_VERSION // #define CRYPT_ANY (0x00000004) // Wildcard: Either UM, or KM, or both @@ -545,7 +535,7 @@ index c05c9ae0..a3fd7c99 100644 // Write behavior flags #define CRYPT_OVERWRITE (0x00000001) -@@ -1766,14 +1901,32 @@ typedef struct _BCRYPT_INTERFACE_VERSION +@@ -1766,14 +1895,32 @@ typedef struct _BCRYPT_INTERFACE_VERSION #define CRYPT_LOCAL (0x00000001) #define CRYPT_DOMAIN (0x00000002) @@ -578,7 +568,7 @@ index c05c9ae0..a3fd7c99 100644 // Priority list positions #define CRYPT_PRIORITY_TOP (0x00000000) #define CRYPT_PRIORITY_BOTTOM (0xFFFFFFFF) -@@ -1791,7 +1944,7 @@ typedef struct _BCRYPT_INTERFACE_VERSION +@@ -1791,7 +1938,7 @@ typedef struct _BCRYPT_INTERFACE_VERSION typedef struct _CRYPT_INTERFACE_REG { @@ -587,7 +577,7 @@ index c05c9ae0..a3fd7c99 100644 ULONG dwFlags; ULONG cFunctions; -@@ -1918,16 +2071,18 @@ CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS; +@@ -1918,16 +2065,18 @@ CRYPT_PROVIDER_REFS, *PCRYPT_PROVIDER_REFS; #ifndef KERNEL_MODE_CNG @@ -608,7 +598,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI -@@ -1938,127 +2093,140 @@ BCryptEnumRegisteredProviders( +@@ -1938,127 +2087,140 @@ BCryptEnumRegisteredProviders( // // Context Configuration Functions // @@ -770,7 +760,7 @@ index c05c9ae0..a3fd7c99 100644 _In_z_ LPCWSTR pszFunction, _In_z_ LPCWSTR pszProperty, _Inout_ ULONG* pcbValue, -@@ -2101,6 +2269,7 @@ BCryptUnregisterConfigChangeNotify( +@@ -2101,6 +2263,7 @@ BCryptUnregisterConfigChangeNotify( // // Provider Resolution Functions // @@ -778,7 +768,7 @@ index c05c9ae0..a3fd7c99 100644 _Must_inspect_result_ NTSTATUS WINAPI BCryptResolveProviders( -@@ -2108,8 +2277,8 @@ BCryptResolveProviders( +@@ -2108,8 +2271,8 @@ BCryptResolveProviders( _In_opt_ ULONG dwInterface, _In_opt_z_ LPCWSTR pszFunction, _In_opt_z_ LPCWSTR pszProvider, @@ -789,7 +779,7 @@ index c05c9ae0..a3fd7c99 100644 _Inout_ ULONG* pcbBuffer, _Outptr_opt_result_bytebuffer_all_maybenull_(*pcbBuffer) PCRYPT_PROVIDER_REFS *ppBuffer); -@@ -2122,6 +2291,7 @@ BCryptResolveProviders( +@@ -2122,6 +2285,7 @@ BCryptResolveProviders( // // Miscellaneous queries about the crypto environment // diff --git a/generation/WinSDK/patches/shared/devpropdef.h.patch b/generation/WinSDK/patches/shared/devpropdef.h.patch index 0fbf1fd09..820280684 100644 --- a/generation/WinSDK/patches/shared/devpropdef.h.patch +++ b/generation/WinSDK/patches/shared/devpropdef.h.patch @@ -1,55 +1,45 @@ diff --git a/shared/devpropdef.h b/shared/devpropdef.h --- a/shared/devpropdef.h +++ b/shared/devpropdef.h -@@ -90,6 +90,9 @@ - - // 8-bit boolean type definition for DEVPROP_TYPE_BOOLEAN (True=-1, False=0) - typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef DEVPROP_BOOLEAN DEVPROP_BOOLEAN; -+#endif - #define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1) - #define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0) - -@@ -206,5 +209,41 @@ - #define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name - #endif // INITGUID - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+#include -+_Win32_Enum_(DEVPROPTYPE, ULONG, -+ DEVPROP_TYPEMOD_ARRAY, -+ DEVPROP_TYPEMOD_LIST, -+ DEVPROP_TYPE_EMPTY, -+ DEVPROP_TYPE_NULL, -+ DEVPROP_TYPE_SBYTE, -+ DEVPROP_TYPE_BYTE, -+ DEVPROP_TYPE_INT16, -+ DEVPROP_TYPE_UINT16, -+ DEVPROP_TYPE_INT32, -+ DEVPROP_TYPE_UINT32, -+ DEVPROP_TYPE_INT64, -+ DEVPROP_TYPE_UINT64, -+ DEVPROP_TYPE_FLOAT, -+ DEVPROP_TYPE_DOUBLE, -+ DEVPROP_TYPE_DECIMAL, -+ DEVPROP_TYPE_GUID, -+ DEVPROP_TYPE_CURRENCY, -+ DEVPROP_TYPE_DATE, -+ DEVPROP_TYPE_FILETIME, -+ DEVPROP_TYPE_BOOLEAN, -+ DEVPROP_TYPE_STRING, -+ DEVPROP_TYPE_STRING_LIST, -+ DEVPROP_TYPE_SECURITY_DESCRIPTOR, -+ DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING, -+ DEVPROP_TYPE_DEVPROPKEY, -+ DEVPROP_TYPE_DEVPROPTYPE, -+ DEVPROP_TYPE_BINARY, -+ DEVPROP_TYPE_ERROR, -+ DEVPROP_TYPE_NTSTATUS, -+ DEVPROP_TYPE_STRING_INDIRECT); -+typedef _Win32_AlsoUsableFor_(PROPERTYKEY) struct _DEVPROPKEY DEVPROPKEY; -+#endif -+ - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion +@@ -206,5 +206,41 @@ + #define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name + #endif // INITGUID + ++#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) ++#include ++_Win32_Enum_(DEVPROPTYPE, ULONG, ++ DEVPROP_TYPEMOD_ARRAY, ++ DEVPROP_TYPEMOD_LIST, ++ DEVPROP_TYPE_EMPTY, ++ DEVPROP_TYPE_NULL, ++ DEVPROP_TYPE_SBYTE, ++ DEVPROP_TYPE_BYTE, ++ DEVPROP_TYPE_INT16, ++ DEVPROP_TYPE_UINT16, ++ DEVPROP_TYPE_INT32, ++ DEVPROP_TYPE_UINT32, ++ DEVPROP_TYPE_INT64, ++ DEVPROP_TYPE_UINT64, ++ DEVPROP_TYPE_FLOAT, ++ DEVPROP_TYPE_DOUBLE, ++ DEVPROP_TYPE_DECIMAL, ++ DEVPROP_TYPE_GUID, ++ DEVPROP_TYPE_CURRENCY, ++ DEVPROP_TYPE_DATE, ++ DEVPROP_TYPE_FILETIME, ++ DEVPROP_TYPE_BOOLEAN, ++ DEVPROP_TYPE_STRING, ++ DEVPROP_TYPE_STRING_LIST, ++ DEVPROP_TYPE_SECURITY_DESCRIPTOR, ++ DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING, ++ DEVPROP_TYPE_DEVPROPKEY, ++ DEVPROP_TYPE_DEVPROPTYPE, ++ DEVPROP_TYPE_BINARY, ++ DEVPROP_TYPE_ERROR, ++ DEVPROP_TYPE_NTSTATUS, ++ DEVPROP_TYPE_STRING_INDIRECT); ++typedef _Win32_AlsoUsableFor_(PROPERTYKEY) struct _DEVPROPKEY DEVPROPKEY; ++#endif ++ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ + #pragma endregion diff --git a/generation/WinSDK/patches/shared/evntprov.h.patch b/generation/WinSDK/patches/shared/evntprov.h.patch index 01156b0c3..fd2b4f8b2 100644 --- a/generation/WinSDK/patches/shared/evntprov.h.patch +++ b/generation/WinSDK/patches/shared/evntprov.h.patch @@ -2,270 +2,260 @@ diff --git a/shared/evntprov.h b/shared/evntprov.h --- a/shared/evntprov.h +++ b/shared/evntprov.h @@ -21,6 +21,7 @@ - #pragma once - - #include -+#include - - #if _MSC_VER >= 1200 - #pragma warning(push) -@@ -169,6 +170,9 @@ - A REGHANDLE is opened with EventRegister and closed with EventUnregister. - */ - typedef ULONGLONG REGHANDLE, *PREGHANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef REGHANDLE REGHANDLE; -+#endif - - #pragma warning(push) - #pragma warning(disable:4201) // Nonstandard extension: unnamed struct/union -@@ -537,13 +541,14 @@ - unloads without closing the handle, the process may crash when the ETW runtime - attempts to invoke the provider's callback after the has unloaded. - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventRegister( - _In_ LPCGUID ProviderId, - _In_opt_ PENABLECALLBACK EnableCallback, - _In_opt_ PVOID CallbackContext, -- _Out_ PREGHANDLE RegHandle -+ _Win32_RAIIFree_(EventUnregister, 0) _Out_ PREGHANDLE RegHandle - ); - #endif - -@@ -551,6 +556,7 @@ - /* - Closes the RegHandle that was opened by EventRegister. - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventUnregister( -@@ -564,6 +570,7 @@ - or to configure how the ETW runtime handles your provider's events. - Refer to the documentation of the EVENT_INFO_CLASS for more information. - */ -+_Win32_SupportedOS_Windows8_ - ULONG - EVNTAPI - EventSetInformation( -@@ -607,6 +614,7 @@ - EventWrite(regHandle, &myEventDesc, ...); - } - */ -+_Win32_SupportedOS_WindowsVista_ - BOOLEAN - EVNTAPI - EventEnabled( -@@ -648,6 +656,7 @@ - EventWrite(regHandle, &myEventDesc, ...); - } - */ -+_Win32_SupportedOS_WindowsVista_ - BOOLEAN - EVNTAPI - EventProviderEnabled( -@@ -673,6 +682,7 @@ - EventWrite(regHandle, &eventDesc, cData, pData) is equivalent to - EventWriteTransfer(regHandle, &eventDesc, NULL, NULL, cData, pData). - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventWrite( -@@ -698,6 +708,7 @@ - EventWriteTransfer(regHandle, &eventDesc, pAI, pRAI, cData, pData) is equivalent to - EventWriteEx(regHandle, &eventDesc, 0, 0, pAI, pRAI, cData, pData). - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventWriteTransfer( -@@ -732,6 +743,7 @@ - EventWriteTransfer(regHandle, &eventDesc, pAI, pRAI, cData, pData) is equivalent to - EventWriteEx(regHandle, &eventDesc, 0, 0, pAI, pRAI, cData, pData). - */ -+_Win32_SupportedOS_Windows7_ - ULONG - EVNTAPI - EventWriteEx( -@@ -750,6 +762,7 @@ - /* - Writes a simple event containing a string. - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventWriteString( -@@ -777,6 +790,7 @@ - guaranteed to be unique on the local machine and only during the current boot - session. - */ -+_Win32_SupportedOS_WindowsVista_ - ULONG - EVNTAPI - EventActivityIdControl( -@@ -799,7 +813,7 @@ - */ - EVNTPROV_PFORCEINLINE - VOID --EventDataDescCreate( -+_Win32_SupportedOS_WindowsVista_ EventDataDescCreate( - _Out_ PEVENT_DATA_DESCRIPTOR EventDataDescriptor, - _In_reads_bytes_(DataSize) const VOID* DataPtr, - _In_ ULONG DataSize -@@ -822,7 +836,7 @@ - */ - EVNTPROV_PFORCEINLINE - VOID --EventDescCreate( -+_Win32_SupportedOS_WindowsVista_ EventDescCreate( - _Out_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ USHORT Id, - _In_ UCHAR Version, -@@ -848,7 +862,7 @@ - */ - EVNTPROV_PFORCEINLINE - VOID --EventDescZero( -+_Win32_SupportedOS_WindowsVista_ EventDescZero( - _Out_ PEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -862,7 +876,7 @@ - - EVNTPROV_PFORCEINLINE - USHORT --EventDescGetId( -+_Win32_SupportedOS_WindowsVista_ EventDescGetId( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -871,7 +885,7 @@ - - EVNTPROV_PFORCEINLINE - UCHAR --EventDescGetVersion( -+_Win32_SupportedOS_WindowsVista_ EventDescGetVersion( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -880,7 +894,7 @@ - - EVNTPROV_PFORCEINLINE - USHORT --EventDescGetTask( -+_Win32_SupportedOS_WindowsVista_ EventDescGetTask( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -889,7 +903,7 @@ - - EVNTPROV_PFORCEINLINE - UCHAR --EventDescGetOpcode( -+_Win32_SupportedOS_WindowsVista_ EventDescGetOpcode( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -898,7 +912,7 @@ - - EVNTPROV_PFORCEINLINE - UCHAR --EventDescGetChannel( -+_Win32_SupportedOS_WindowsVista_ EventDescGetChannel( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -907,7 +921,7 @@ - - EVNTPROV_PFORCEINLINE - UCHAR --EventDescGetLevel( -+_Win32_SupportedOS_WindowsVista_ EventDescGetLevel( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -916,7 +930,7 @@ - - EVNTPROV_PFORCEINLINE - ULONGLONG --EventDescGetKeyword( -+_Win32_SupportedOS_WindowsVista_ EventDescGetKeyword( - _In_ PCEVENT_DESCRIPTOR EventDescriptor - ) - { -@@ -929,7 +943,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetId( -+_Win32_SupportedOS_WindowsVista_ EventDescSetId( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ USHORT Id - ) -@@ -940,7 +954,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetVersion( -+_Win32_SupportedOS_WindowsVista_ EventDescSetVersion( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ UCHAR Version - ) -@@ -951,7 +965,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetTask( -+_Win32_SupportedOS_WindowsVista_ EventDescSetTask( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ USHORT Task - ) -@@ -962,7 +976,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetOpcode( -+_Win32_SupportedOS_WindowsVista_ EventDescSetOpcode( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ UCHAR Opcode - ) -@@ -973,7 +987,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetLevel( -+_Win32_SupportedOS_WindowsVista_ EventDescSetLevel( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ UCHAR Level - ) -@@ -984,7 +998,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetChannel( -+_Win32_SupportedOS_WindowsVista_ EventDescSetChannel( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ UCHAR Channel - ) -@@ -995,7 +1009,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescSetKeyword( -+_Win32_SupportedOS_WindowsVista_ EventDescSetKeyword( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ ULONGLONG Keyword - ) -@@ -1007,7 +1021,7 @@ - - EVNTPROV_PFORCEINLINE - PEVENT_DESCRIPTOR --EventDescOrKeyword( -+_Win32_SupportedOS_WindowsVista_ EventDescOrKeyword( - _In_ PEVENT_DESCRIPTOR EventDescriptor, - _In_ ULONGLONG Keyword - ) + #pragma once + + #include ++#include + + #if _MSC_VER >= 1200 + #pragma warning(push) +@@ -537,13 +538,14 @@ + unloads without closing the handle, the process may crash when the ETW runtime + attempts to invoke the provider's callback after the has unloaded. + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventRegister( + _In_ LPCGUID ProviderId, + _In_opt_ PENABLECALLBACK EnableCallback, + _In_opt_ PVOID CallbackContext, +- _Out_ PREGHANDLE RegHandle ++ _Win32_RAIIFree_(EventUnregister, 0) _Out_ PREGHANDLE RegHandle + ); + #endif + +@@ -551,6 +553,7 @@ + /* + Closes the RegHandle that was opened by EventRegister. + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventUnregister( +@@ -564,6 +567,7 @@ + or to configure how the ETW runtime handles your provider's events. + Refer to the documentation of the EVENT_INFO_CLASS for more information. + */ ++_Win32_SupportedOS_Windows8_ + ULONG + EVNTAPI + EventSetInformation( +@@ -607,6 +611,7 @@ + EventWrite(regHandle, &myEventDesc, ...); + } + */ ++_Win32_SupportedOS_WindowsVista_ + BOOLEAN + EVNTAPI + EventEnabled( +@@ -648,6 +653,7 @@ + EventWrite(regHandle, &myEventDesc, ...); + } + */ ++_Win32_SupportedOS_WindowsVista_ + BOOLEAN + EVNTAPI + EventProviderEnabled( +@@ -673,6 +679,7 @@ + EventWrite(regHandle, &eventDesc, cData, pData) is equivalent to + EventWriteTransfer(regHandle, &eventDesc, NULL, NULL, cData, pData). + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventWrite( +@@ -698,6 +705,7 @@ + EventWriteTransfer(regHandle, &eventDesc, pAI, pRAI, cData, pData) is equivalent to + EventWriteEx(regHandle, &eventDesc, 0, 0, pAI, pRAI, cData, pData). + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventWriteTransfer( +@@ -732,6 +740,7 @@ + EventWriteTransfer(regHandle, &eventDesc, pAI, pRAI, cData, pData) is equivalent to + EventWriteEx(regHandle, &eventDesc, 0, 0, pAI, pRAI, cData, pData). + */ ++_Win32_SupportedOS_Windows7_ + ULONG + EVNTAPI + EventWriteEx( +@@ -750,6 +759,7 @@ + /* + Writes a simple event containing a string. + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventWriteString( +@@ -777,6 +787,7 @@ + guaranteed to be unique on the local machine and only during the current boot + session. + */ ++_Win32_SupportedOS_WindowsVista_ + ULONG + EVNTAPI + EventActivityIdControl( +@@ -799,7 +810,7 @@ + */ + EVNTPROV_PFORCEINLINE + VOID +-EventDataDescCreate( ++_Win32_SupportedOS_WindowsVista_ EventDataDescCreate( + _Out_ PEVENT_DATA_DESCRIPTOR EventDataDescriptor, + _In_reads_bytes_(DataSize) const VOID* DataPtr, + _In_ ULONG DataSize +@@ -822,7 +833,7 @@ + */ + EVNTPROV_PFORCEINLINE + VOID +-EventDescCreate( ++_Win32_SupportedOS_WindowsVista_ EventDescCreate( + _Out_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ USHORT Id, + _In_ UCHAR Version, +@@ -848,7 +859,7 @@ + */ + EVNTPROV_PFORCEINLINE + VOID +-EventDescZero( ++_Win32_SupportedOS_WindowsVista_ EventDescZero( + _Out_ PEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -862,7 +873,7 @@ + + EVNTPROV_PFORCEINLINE + USHORT +-EventDescGetId( ++_Win32_SupportedOS_WindowsVista_ EventDescGetId( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -871,7 +882,7 @@ + + EVNTPROV_PFORCEINLINE + UCHAR +-EventDescGetVersion( ++_Win32_SupportedOS_WindowsVista_ EventDescGetVersion( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -880,7 +891,7 @@ + + EVNTPROV_PFORCEINLINE + USHORT +-EventDescGetTask( ++_Win32_SupportedOS_WindowsVista_ EventDescGetTask( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -889,7 +900,7 @@ + + EVNTPROV_PFORCEINLINE + UCHAR +-EventDescGetOpcode( ++_Win32_SupportedOS_WindowsVista_ EventDescGetOpcode( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -898,7 +909,7 @@ + + EVNTPROV_PFORCEINLINE + UCHAR +-EventDescGetChannel( ++_Win32_SupportedOS_WindowsVista_ EventDescGetChannel( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -907,7 +918,7 @@ + + EVNTPROV_PFORCEINLINE + UCHAR +-EventDescGetLevel( ++_Win32_SupportedOS_WindowsVista_ EventDescGetLevel( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -916,7 +927,7 @@ + + EVNTPROV_PFORCEINLINE + ULONGLONG +-EventDescGetKeyword( ++_Win32_SupportedOS_WindowsVista_ EventDescGetKeyword( + _In_ PCEVENT_DESCRIPTOR EventDescriptor + ) + { +@@ -929,7 +940,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetId( ++_Win32_SupportedOS_WindowsVista_ EventDescSetId( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ USHORT Id + ) +@@ -940,7 +951,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetVersion( ++_Win32_SupportedOS_WindowsVista_ EventDescSetVersion( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ UCHAR Version + ) +@@ -951,7 +962,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetTask( ++_Win32_SupportedOS_WindowsVista_ EventDescSetTask( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ USHORT Task + ) +@@ -962,7 +973,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetOpcode( ++_Win32_SupportedOS_WindowsVista_ EventDescSetOpcode( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ UCHAR Opcode + ) +@@ -973,7 +984,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetLevel( ++_Win32_SupportedOS_WindowsVista_ EventDescSetLevel( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ UCHAR Level + ) +@@ -984,7 +995,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetChannel( ++_Win32_SupportedOS_WindowsVista_ EventDescSetChannel( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ UCHAR Channel + ) +@@ -995,7 +1006,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescSetKeyword( ++_Win32_SupportedOS_WindowsVista_ EventDescSetKeyword( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ ULONGLONG Keyword + ) +@@ -1007,7 +1018,7 @@ + + EVNTPROV_PFORCEINLINE + PEVENT_DESCRIPTOR +-EventDescOrKeyword( ++_Win32_SupportedOS_WindowsVista_ EventDescOrKeyword( + _In_ PEVENT_DESCRIPTOR EventDescriptor, + _In_ ULONGLONG Keyword + ) diff --git a/generation/WinSDK/patches/shared/fltUserStructures.h.patch b/generation/WinSDK/patches/shared/fltUserStructures.h.patch deleted file mode 100644 index 5bdbf560a..000000000 --- a/generation/WinSDK/patches/shared/fltUserStructures.h.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/shared/fltUserStructures.h b/shared/fltUserStructures.h ---- a/shared/fltUserStructures.h -+++ b/shared/fltUserStructures.h -@@ -42,7 +42,13 @@ - #define INSTANCE_NAME_MAX_BYTES (INSTANCE_NAME_MAX_CHARS * sizeof( WCHAR )) - - typedef HANDLE HFILTER; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HFILTER HFILTER; -+#endif - typedef HANDLE HFILTER_INSTANCE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HFILTER_INSTANCE HFILTER_INSTANCE; -+#endif - typedef HANDLE HFILTER_VOLUME; - - diff --git a/generation/WinSDK/patches/shared/hidpi.h.patch b/generation/WinSDK/patches/shared/hidpi.h.patch index 22b03b7de..ba1eb5d07 100644 --- a/generation/WinSDK/patches/shared/hidpi.h.patch +++ b/generation/WinSDK/patches/shared/hidpi.h.patch @@ -1,17 +1,7 @@ diff --git a/shared/hidpi.h b/shared/hidpi.h --- a/shared/hidpi.h +++ b/shared/hidpi.h -@@ -241,6 +241,9 @@ - - typedef PUCHAR PHIDP_REPORT_DESCRIPTOR; - typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PHIDP_PREPARSED_DATA PHIDP_PREPARSED_DATA; -+#endif - - typedef struct _HIDP_CAPS - { -@@ -2031,6 +2034,13 @@ +@@ -2031,6 +2031,13 @@ // #define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN diff --git a/generation/WinSDK/patches/shared/ifdef.h.patch b/generation/WinSDK/patches/shared/ifdef.h.patch deleted file mode 100644 index e50672f0c..000000000 --- a/generation/WinSDK/patches/shared/ifdef.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/shared/ifdef.h b/shared/ifdef.h ---- a/shared/ifdef.h -+++ b/shared/ifdef.h -@@ -21,6 +21,9 @@ - // Define compartment ID type: - // - typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef NET_IF_COMPARTMENT_ID NET_IF_COMPARTMENT_ID; -+#endif - - #define NET_IF_COMPARTMENT_ID_UNSPECIFIED (NET_IF_COMPARTMENT_ID)0 - #define NET_IF_COMPARTMENT_ID_PRIMARY (NET_IF_COMPARTMENT_ID)1 diff --git a/generation/WinSDK/patches/shared/minwindef.h.patch b/generation/WinSDK/patches/shared/minwindef.h.patch index 05c349ae9..b643e6c8e 100644 --- a/generation/WinSDK/patches/shared/minwindef.h.patch +++ b/generation/WinSDK/patches/shared/minwindef.h.patch @@ -1,28 +1,6 @@ --- a/shared/minwindef.h +++ b/shared/minwindef.h -@@ -156,4 +156,5 @@ - typedef unsigned long DWORD; -+_Win32_NativeTypedef_ - typedef int BOOL; - typedef unsigned char BYTE; - typedef unsigned short WORD; -@@ -186,3 +187,6 @@ -+_Win32_NativeTypedef_ - typedef UINT_PTR WPARAM; -+_Win32_NativeTypedef_ - typedef LONG_PTR LPARAM; -+_Win32_NativeTypedef_ - typedef LONG_PTR LRESULT; -@@ -209,6 +213,8 @@ - typedef HANDLE NEAR *SPHANDLE; - typedef HANDLE FAR *LPHANDLE; -+_Win32_NativeTypedef_ - typedef HANDLE HGLOBAL; -+_Win32_NativeTypedef_ - typedef HANDLE HLOCAL; - typedef HANDLE GLOBALHANDLE; - typedef HANDLE LOCALHANDLE; -@@ -219,7 +225,7 @@ +@@ -219,7 +219,7 @@ #endif #ifndef _MAC -#ifdef _WIN64 @@ -31,12 +9,11 @@ typedef INT_PTR (NEAR WINAPI *NEARPROC)(); typedef INT_PTR (WINAPI *PROC)(); #else -@@ -247,15 +253,30 @@ +@@ -247,15 +247,20 @@ DECLARE_HANDLE(HKEY); typedef HKEY *PHKEY; DECLARE_HANDLE(HMETAFILE); DECLARE_HANDLE(HINSTANCE); -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(HINSTANCE) typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */ DECLARE_HANDLE(HRGN); @@ -48,17 +25,8 @@ DECLARE_HANDLE(HWINSTA); DECLARE_HANDLE(HKL); +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HKEY HKEY; -+_Win32_NativeTypedef_ typedef HMETAFILE HMETAFILE; -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HMODULE) typedef HINSTANCE HINSTANCE; -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HRGN HRGN; -+_Win32_NativeTypedef_ typedef HRSRC HRSRC; -+_Win32_NativeTypedef_ typedef HSPRITE HSPRITE; -+_Win32_NativeTypedef_ typedef HLSURF HLSURF; -+_Win32_NativeTypedef_ typedef HSTR HSTR; -+_Win32_NativeTypedef_ typedef HTASK HTASK; -+_Win32_NativeTypedef_ typedef HWINSTA HWINSTA; -+_Win32_NativeTypedef_ typedef HKL HKL; ++_Win32_AlsoUsableFor_(HMODULE) typedef HINSTANCE HINSTANCE; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HRGN HRGN; +#endif #ifndef _MAC diff --git a/generation/WinSDK/patches/shared/mswsockdef.h.patch b/generation/WinSDK/patches/shared/mswsockdef.h.patch deleted file mode 100644 index 6d61f2a69..000000000 --- a/generation/WinSDK/patches/shared/mswsockdef.h.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/shared/mswsockdef.h b/shared/mswsockdef.h ---- a/shared/mswsockdef.h -+++ b/shared/mswsockdef.h -@@ -86,8 +86,17 @@ - #endif //(_WIN32_WINNT>=0x0600) - - typedef struct RIO_BUFFERID_t *RIO_BUFFERID, **PRIO_BUFFERID; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RIO_BUFFERID RIO_BUFFERID; -+#endif - typedef struct RIO_CQ_t *RIO_CQ, **PRIO_CQ; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RIO_CQ RIO_CQ; -+#endif - typedef struct RIO_RQ_t *RIO_RQ, **PRIO_RQ; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RIO_RQ RIO_RQ; -+#endif - - typedef struct _RIORESULT { - LONG Status; diff --git a/generation/WinSDK/patches/shared/ntdef.h.patch b/generation/WinSDK/patches/shared/ntdef.h.patch index 20d5cb831..f009a8dce 100644 --- a/generation/WinSDK/patches/shared/ntdef.h.patch +++ b/generation/WinSDK/patches/shared/ntdef.h.patch @@ -7,47 +7,7 @@ index 6c179890..d975c367 100644 #include // winnt +#include -@@ -553,5 +554,6 @@ - #ifndef VOID - #define VOID void -+_Win32_NativeTypedef_ - typedef char CHAR; - typedef short SHORT; - typedef long LONG; -@@ -577,3 +579,6 @@ - typedef _Null_terminated_ WCHAR *NWPSTR, *LPWSTR, *PWSTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PWSTR PWSTR; -+#endif - typedef _Null_terminated_ PWSTR *PZPWSTR; - typedef _Null_terminated_ CONST PWSTR *PCZPWSTR; -@@ -646,3 +651,6 @@ - typedef _Null_terminated_ CHAR *NPSTR, *LPSTR, *PSTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PSTR PSTR; -+#endif - typedef _Null_terminated_ PSTR *PZPSTR; - typedef _Null_terminated_ CONST PSTR *PCZPSTR; -@@ -852,1 +860,2 @@ -+_Win32_NativeTypedef_ - typedef void *HANDLE; -@@ -859,1 +868,2 @@ -+_Win32_NativeTypedef_ - typedef PVOID HANDLE; -@@ -881,1 +891,2 @@ -+_Win32_NativeTypedef_ - typedef LONG HRESULT; -@@ -883,1 +894,2 @@ -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) long HRESULT; -@@ -1062,1 +1074,2 @@ -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS; -@@ -1676,2 +1689,3 @@ -+_Win32_NativeTypedef_ - typedef UCHAR BOOLEAN; // winnt - typedef BOOLEAN *PBOOLEAN; // winnt -@@ -3452,5 +3466,199 @@ C_ASSERT(TYPE_ALIGNMENT(LARGE_INTEGER) == 8); +@@ -3452,5 +3453,199 @@ C_ASSERT(TYPE_ALIGNMENT(LARGE_INTEGER) == 8); #endif diff --git a/generation/WinSDK/patches/shared/rpcndr.h.patch b/generation/WinSDK/patches/shared/rpcndr.h.patch index 87e0521e6..7a2bc6ad6 100644 --- a/generation/WinSDK/patches/shared/rpcndr.h.patch +++ b/generation/WinSDK/patches/shared/rpcndr.h.patch @@ -9,21 +9,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -588,7 +589,13 @@ - - - typedef struct _NDR_ASYNC_MESSAGE * PNDR_ASYNC_MESSAGE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PNDR_ASYNC_MESSAGE PNDR_ASYNC_MESSAGE; -+#endif - typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PNDR_CORRELATION_INFO PNDR_CORRELATION_INFO; -+#endif - - /* - * MIDL Stub Message -@@ -1297,6 +1304,7 @@ +@@ -1297,6 +1298,7 @@ // SAL can't adequately express buffer sizes from rpc format strings #pragma warning(disable:28740) @@ -31,7 +17,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1306,6 +1314,7 @@ +@@ -1306,6 +1308,7 @@ unsigned char FormatChar ); @@ -39,7 +25,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1335,6 +1344,7 @@ +@@ -1335,6 +1338,7 @@ /* Structures */ @@ -47,7 +33,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1362,6 +1372,7 @@ +@@ -1362,6 +1366,7 @@ PFORMAT_STRING pFormat ); @@ -55,7 +41,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1409,6 +1420,7 @@ +@@ -1409,6 +1414,7 @@ PFORMAT_STRING pFormat ); @@ -63,7 +49,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1429,6 +1441,7 @@ +@@ -1429,6 +1435,7 @@ PFORMAT_STRING pFormat ); @@ -71,7 +57,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1482,6 +1495,7 @@ +@@ -1482,6 +1489,7 @@ /* User_marshal */ @@ -79,7 +65,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1493,6 +1507,7 @@ +@@ -1493,6 +1501,7 @@ /* Interface pointer */ @@ -87,7 +73,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1536,6 +1551,7 @@ +@@ -1536,6 +1545,7 @@ * Unmarshall routines */ @@ -95,7 +81,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1599,6 +1615,7 @@ +@@ -1599,6 +1609,7 @@ PMIDL_STUB_MESSAGE pStubMsg ); @@ -103,7 +89,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1611,6 +1628,7 @@ +@@ -1611,6 +1622,7 @@ /* Structures */ @@ -111,7 +97,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1641,6 +1659,7 @@ +@@ -1641,6 +1653,7 @@ unsigned char fMustAlloc ); @@ -119,7 +105,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1663,6 +1682,7 @@ +@@ -1663,6 +1676,7 @@ unsigned char fMustAlloc ); @@ -127,7 +113,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1693,6 +1713,7 @@ +@@ -1693,6 +1707,7 @@ unsigned char fMustAlloc ); @@ -135,7 +121,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1715,6 +1736,7 @@ +@@ -1715,6 +1730,7 @@ unsigned char fMustAlloc ); @@ -143,7 +129,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1773,6 +1795,7 @@ +@@ -1773,6 +1789,7 @@ /* User_marshal */ @@ -151,7 +137,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1785,6 +1808,7 @@ +@@ -1785,6 +1802,7 @@ /* Interface pointer */ @@ -159,7 +145,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned char * RPC_ENTRY -@@ -1815,6 +1839,7 @@ +@@ -1815,6 +1833,7 @@ /* New context handle flavors */ @@ -167,7 +153,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI NDR_SCONTEXT RPC_ENTRY -@@ -1835,6 +1860,7 @@ +@@ -1835,6 +1854,7 @@ * Buffer sizing routines */ @@ -175,7 +161,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1864,6 +1890,7 @@ +@@ -1864,6 +1884,7 @@ /* Structures */ @@ -183,7 +169,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1891,6 +1918,7 @@ +@@ -1891,6 +1912,7 @@ PFORMAT_STRING pFormat ); @@ -191,7 +177,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1938,6 +1966,7 @@ +@@ -1938,6 +1960,7 @@ PFORMAT_STRING pFormat ); @@ -199,7 +185,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -1949,6 +1978,7 @@ +@@ -1949,6 +1972,7 @@ /* Strings */ @@ -207,7 +193,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2011,6 +2041,7 @@ +@@ -2011,6 +2035,7 @@ /* User_marshal */ @@ -215,7 +201,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2022,6 +2053,7 @@ +@@ -2022,6 +2047,7 @@ /* Interface pointer */ @@ -223,7 +209,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2033,6 +2065,7 @@ +@@ -2033,6 +2059,7 @@ // Context Handle size // @@ -231,7 +217,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2054,6 +2087,7 @@ +@@ -2054,6 +2081,7 @@ PFORMAT_STRING pFormat ); @@ -239,7 +225,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI unsigned long RPC_ENTRY -@@ -2227,6 +2261,7 @@ +@@ -2227,6 +2255,7 @@ * Freeing routines */ @@ -247,7 +233,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2374,6 +2409,7 @@ +@@ -2374,6 +2403,7 @@ /* User_marshal */ @@ -255,7 +241,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2385,6 +2421,7 @@ +@@ -2385,6 +2415,7 @@ /* Interface pointer */ @@ -263,7 +249,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2407,6 +2444,7 @@ +@@ -2407,6 +2438,7 @@ long NumberParams ); @@ -271,7 +257,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2563,6 +2601,7 @@ +@@ -2563,6 +2595,7 @@ /* client */ @@ -279,7 +265,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall2( PMIDL_STUB_DESC pStubDescriptor, -@@ -2570,6 +2609,7 @@ +@@ -2570,6 +2603,7 @@ ... ); @@ -287,7 +273,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall( PMIDL_STUB_DESC pStubDescriptor, -@@ -2577,6 +2617,7 @@ +@@ -2577,6 +2611,7 @@ ... ); @@ -295,7 +281,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, -@@ -2586,6 +2627,7 @@ +@@ -2586,6 +2621,7 @@ #if ( !defined(_WIN64) && !defined(_ARM_) ) @@ -303,7 +289,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall4( PMIDL_STUB_DESC pStubDescriptor, -@@ -2593,6 +2635,7 @@ +@@ -2593,6 +2629,7 @@ ... ); @@ -311,7 +297,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrAsyncClientCall2( PMIDL_STUB_DESC pStubDescriptor, -@@ -2600,6 +2643,7 @@ +@@ -2600,6 +2637,7 @@ ... ); @@ -319,7 +305,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrMesProcEncodeDecode4( handle_t Handle, -@@ -2616,6 +2660,7 @@ +@@ -2616,6 +2654,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -327,7 +313,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrDcomAsyncClientCall( PMIDL_STUB_DESC pStubDescriptor, -@@ -2625,6 +2670,7 @@ +@@ -2625,6 +2664,7 @@ #if ( !defined(_WIN64) && !defined(_ARM_) ) @@ -335,7 +321,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrDcomAsyncClientCall2( PMIDL_STUB_DESC pStubDescriptor, -@@ -2660,6 +2706,7 @@ +@@ -2660,6 +2700,7 @@ // Raw RPC only @@ -343,7 +329,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2701,6 +2748,7 @@ +@@ -2701,6 +2742,7 @@ #pragma region Application Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -351,7 +337,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI long RPC_ENTRY -@@ -2711,6 +2759,7 @@ +@@ -2711,6 +2753,7 @@ unsigned long * pdwStubPhase ); @@ -359,7 +345,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2791,6 +2840,7 @@ +@@ -2791,6 +2834,7 @@ RpcSs* package --*/ @@ -367,7 +353,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void * RPC_ENTRY -@@ -2798,6 +2848,7 @@ +@@ -2798,6 +2842,7 @@ _In_ size_t Size ); @@ -375,7 +361,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2805,6 +2856,7 @@ +@@ -2805,6 +2850,7 @@ void ); @@ -383,7 +369,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2812,6 +2864,7 @@ +@@ -2812,6 +2858,7 @@ void ); @@ -391,7 +377,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2819,6 +2872,7 @@ +@@ -2819,6 +2866,7 @@ _In_ void * NodeToFree ); @@ -399,7 +385,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_SS_THREAD_HANDLE RPC_ENTRY -@@ -2826,6 +2880,7 @@ +@@ -2826,6 +2874,7 @@ void ); @@ -407,7 +393,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2834,6 +2889,7 @@ +@@ -2834,6 +2883,7 @@ _In_ RPC_CLIENT_FREE * ClientFree ); @@ -415,7 +401,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2841,6 +2897,7 @@ +@@ -2841,6 +2891,7 @@ _In_ RPC_SS_THREAD_HANDLE Id ); @@ -423,7 +409,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -2855,6 +2912,7 @@ +@@ -2855,6 +2906,7 @@ RpcSm* package --*/ @@ -431,7 +417,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void * RPC_ENTRY -@@ -2863,6 +2921,7 @@ +@@ -2863,6 +2915,7 @@ _Out_ RPC_STATUS * pStatus ); @@ -439,7 +425,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2870,6 +2929,7 @@ +@@ -2870,6 +2923,7 @@ _In_ void * pNodeToFree ); @@ -447,7 +433,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2877,6 +2937,7 @@ +@@ -2877,6 +2931,7 @@ _In_ void * * ContextHandle ); @@ -455,7 +441,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2884,6 +2945,7 @@ +@@ -2884,6 +2939,7 @@ void ); @@ -463,7 +449,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2891,6 +2953,7 @@ +@@ -2891,6 +2947,7 @@ void ); @@ -471,7 +457,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2898,6 +2961,7 @@ +@@ -2898,6 +2955,7 @@ _In_ void * NodeToFree ); @@ -479,7 +465,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_SS_THREAD_HANDLE RPC_ENTRY -@@ -2905,6 +2969,7 @@ +@@ -2905,6 +2963,7 @@ _Out_ RPC_STATUS * pStatus ); @@ -487,7 +473,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2913,6 +2978,7 @@ +@@ -2913,6 +2972,7 @@ _In_ RPC_CLIENT_FREE * ClientFree ); @@ -495,7 +481,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -2920,6 +2986,7 @@ +@@ -2920,6 +2980,7 @@ _In_ RPC_SS_THREAD_HANDLE Id ); @@ -503,7 +489,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI RPC_STATUS RPC_ENTRY -@@ -3012,6 +3079,7 @@ +@@ -3012,6 +3073,7 @@ size_t Len ); @@ -511,7 +497,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -3026,6 +3094,7 @@ +@@ -3026,6 +3088,7 @@ * Proxy APIs ****************************************************************************/ @@ -519,7 +505,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void * RPC_ENTRY -@@ -3033,6 +3102,7 @@ +@@ -3033,6 +3096,7 @@ _In_ size_t Size ); @@ -527,7 +513,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -3155,6 +3225,7 @@ +@@ -3155,6 +3219,7 @@ #endif @@ -535,7 +521,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPC_STATUS RPC_ENTRY NdrGetUserMarshalInfo ( -@@ -3174,6 +3245,7 @@ +@@ -3174,6 +3239,7 @@ /* * Interpreter calls */ @@ -543,7 +529,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY NdrClientCall3( MIDL_STUBLESS_PROXY_INFO *pProxyInfo, -@@ -3182,6 +3254,7 @@ +@@ -3182,6 +3248,7 @@ ... ); @@ -551,7 +537,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h CLIENT_CALL_RETURN RPC_VAR_ENTRY Ndr64AsyncClientCall( MIDL_STUBLESS_PROXY_INFO *pProxyInfo, -@@ -3226,6 +3299,7 @@ +@@ -3226,6 +3293,7 @@ PRPC_MESSAGE pRpcMsg ); @@ -559,7 +545,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -3266,6 +3340,7 @@ +@@ -3266,6 +3334,7 @@ #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -567,7 +553,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI long RPC_ENTRY -@@ -3276,6 +3351,7 @@ +@@ -3276,6 +3345,7 @@ unsigned long * pdwStubPhase ); @@ -575,7 +561,7 @@ diff --git a/shared/rpcndr.h b/shared/rpcndr.h RPCRTAPI void RPC_ENTRY -@@ -3334,6 +3410,7 @@ +@@ -3334,6 +3404,7 @@ ); diff --git a/generation/WinSDK/patches/shared/usbioctl.h.patch b/generation/WinSDK/patches/shared/usbioctl.h.patch deleted file mode 100644 index aee0cb818..000000000 --- a/generation/WinSDK/patches/shared/usbioctl.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/shared/usbioctl.h b/shared/usbioctl.h ---- a/shared/usbioctl.h -+++ b/shared/usbioctl.h -@@ -1799,6 +1799,9 @@ - #define USB_REGISTER_FOR_TRANSPORT_BANDWIDTH_CHANGE 0x2 - - DECLARE_HANDLE(USB_CHANGE_REGISTRATION_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef USB_CHANGE_REGISTRATION_HANDLE USB_CHANGE_REGISTRATION_HANDLE; -+#endif - - typedef struct _USB_TRANSPORT_CHARACTERISTICS_CHANGE_REGISTRATION { - ULONG ChangeNotificationInputFlags; diff --git a/generation/WinSDK/patches/shared/windef.h.patch b/generation/WinSDK/patches/shared/windef.h.patch index d55d6a792..3fc05e015 100644 --- a/generation/WinSDK/patches/shared/windef.h.patch +++ b/generation/WinSDK/patches/shared/windef.h.patch @@ -1,118 +1,39 @@ --- a/shared/windef.h +++ b/shared/windef.h -@@ -39,4 +39,8 @@ +@@ -39,4 +39,7 @@ DECLARE_HANDLE (HWND); DECLARE_HANDLE (HHOOK); +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HANDLE) typedef HWND HWND; -+_Win32_NativeTypedef_ typedef HHOOK HHOOK; ++_Win32_AlsoUsableFor_(HANDLE) typedef HWND HWND; +#endif #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ -@@ -62,6 +66,9 @@ - #ifdef STRICT - typedef void NEAR* HGDIOBJ; - #else - DECLARE_HANDLE(HGDIOBJ); - #endif -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGDIOBJ HGDIOBJ; -+#endif - #endif -@@ -70,2 +77,5 @@ - DECLARE_HANDLE(HACCEL); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HACCEL HACCEL; -+#endif - #endif -@@ -73,3 +83,7 @@ +@@ -73,3 +76,7 @@ DECLARE_HANDLE(HBITMAP); DECLARE_HANDLE(HBRUSH); +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HBITMAP HBITMAP; -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HBRUSH HBRUSH; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HBITMAP HBITMAP; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HBRUSH HBRUSH; +#endif #endif -@@ -77,2 +91,5 @@ - DECLARE_HANDLE(HCOLORSPACE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCOLORSPACE HCOLORSPACE; -+#endif - #endif /* WINVER >= 0x0400 */ -@@ -80,2 +97,5 @@ - DECLARE_HANDLE(HDC); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDC HDC; -+#endif - #endif -@@ -82,4 +102,9 @@ - DECLARE_HANDLE(HGLRC); // OpenGL - DECLARE_HANDLE(HDESK); - DECLARE_HANDLE(HENHMETAFILE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGLRC HGLRC; -+_Win32_NativeTypedef_ typedef HDESK HDESK; -+_Win32_NativeTypedef_ typedef HENHMETAFILE HENHMETAFILE; -+#endif - #if !defined(_MAC) || !defined(GDI_INTERNAL) -@@ -86,2 +111,5 @@ +@@ -86,2 +93,5 @@ DECLARE_HANDLE(HFONT); +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HFONT HFONT; -+#endif - #endif -@@ -88,2 +116,5 @@ - DECLARE_HANDLE(HICON); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HICON HICON; -+#endif - #if !defined(_MAC) || !defined(WIN_INTERNAL) -@@ -90,2 +121,5 @@ - DECLARE_HANDLE(HMENU); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMENU HMENU; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HFONT HFONT; +#endif #endif -@@ -93,3 +127,7 @@ +@@ -93,3 +103,7 @@ DECLARE_HANDLE(HPALETTE); DECLARE_HANDLE(HPEN); +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HPALETTE HPALETTE; -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HGDIOBJ) typedef HPEN HPEN; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HPALETTE HPALETTE; ++_Win32_AlsoUsableFor_(HGDIOBJ) typedef HPEN HPEN; +#endif #endif -@@ -98,2 +136,5 @@ - DECLARE_HANDLE(HWINEVENTHOOK); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HWINEVENTHOOK HWINEVENTHOOK; -+#endif - #endif /* WINVER >= 0x0400 */ -@@ -110,3 +151,6 @@ - DECLARE_HANDLE(HMONITOR); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMONITOR HMONITOR; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -120,3 +164,6 @@ - DECLARE_HANDLE(HUMPD); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HUMPD HUMPD; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -134,3 +181,7 @@ +@@ -134,3 +148,6 @@ #endif +#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ _Win32_AlsoUsableFor_(HICON) typedef HCURSOR HCURSOR; ++_Win32_AlsoUsableFor_(HICON) typedef HCURSOR HCURSOR; +#endif -+_Win32_NativeTypedef_ typedef DWORD COLORREF; -@@ -256,3 +307,6 @@ - DECLARE_HANDLE(DPI_AWARENESS_CONTEXT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT; -+#endif - - typedef enum DPI_AWARENESS { diff --git a/generation/WinSDK/patches/shared/winerror.h.patch b/generation/WinSDK/patches/shared/winerror.h.patch index 294188281..15f9ea032 100644 --- a/generation/WinSDK/patches/shared/winerror.h.patch +++ b/generation/WinSDK/patches/shared/winerror.h.patch @@ -182,13 +182,7 @@ // // HRESULT_FROM_WIN32(x) used to be a macro, however we now run it as an inline function // to prevent double evaluation of 'x'. If you still need the macro, you can use __HRESULT_FROM_WIN32(x) -@@ -30410,4 +30557,5 @@ - #if !defined(_HRESULT_DEFINED) && !defined(__midl) - #define _HRESULT_DEFINED -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) long HRESULT; - #endif -@@ -35934,6 +36082,111 @@ +@@ -35934,6 +36081,111 @@ // OLE is waiting before retrying a request. // #define RPC_S_WAITONTIMER _HRESULT_TYPEDEF_(0x80010116L) @@ -300,13 +294,7 @@ // // MessageId: RPC_E_CALL_COMPLETE -@@ -40019,4 +40272,5 @@ - #if !defined(_HRESULT_DEFINED) && !defined(__midl) - #define _HRESULT_DEFINED -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) long HRESULT; - #endif -@@ -67494,4 +67748,3295 @@ +@@ -67494,4 +67746,3295 @@ // #define PPF_E_JSONTX_EVENT_TYPE_ERROR _HRESULT_TYPEDEF_(0xC928000DL) diff --git a/generation/WinSDK/patches/shared/wtypes.idl.patch b/generation/WinSDK/patches/shared/wtypes.idl.patch index 5192929fe..78bade9c4 100644 --- a/generation/WinSDK/patches/shared/wtypes.idl.patch +++ b/generation/WinSDK/patches/shared/wtypes.idl.patch @@ -2,62 +2,39 @@ diff --git a/shared/wtypes.idl b/shared/wtypes.idl index 7f4a102f3..6cc54ff1e 100644 --- a/shared/wtypes.idl +++ b/shared/wtypes.idl -@@ -153,7 +153,8 @@ - DECLARE_HANDLE(HKL); - DECLARE_HANDLE(HGDIOBJ); - - typedef HANDLE HDWP; -+cpp_quote("/* Win32Metadata: type ::HDWP => NativeTypedef */") - - cpp_quote("#ifndef _HFILE_DEFINED") - cpp_quote("#define _HFILE_DEFINED") -@@ -314,6 +315,9 @@ cpp_quote("#define _ROTFLAGS_DEFINED") - cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") - cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") - cpp_quote("#endif // !_ROTFLAGS_DEFINED") -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") -+cpp_quote("_Win32_FlagsEnum_(ROT_FLAGS, DWORD, ROTFLAGS_REGISTRATIONKEEPSALIVE, ROTFLAGS_ALLOWANYCLIENT);") -+cpp_quote("#endif") - // Maximum size of comparison buffer for IROTData::GetComparisonData - cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") - cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") -@@ -334,11 +338,17 @@ typedef enum tagDVASPECT - DVASPECT_ICON = 4, - DVASPECT_DOCPRINT = 8 - } DVASPECT; -+cpp_quote("#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS)") -+cpp_quote("namespace Win32Metadata {") -+cpp_quote("_Win32_Enum_(DVASPECT, unsigned long, DVASPECT_CONTENT, DVASPECT_THUMBNAIL, DVASPECT_ICON, DVASPECT_DOCPRINT);") -+cpp_quote("}") -+cpp_quote("#endif") - - /****** Storage types *************************************************/ - - - /* Storage commit types */ -+cpp_quote("/* Win32Metadata: enum ::tagSTGC => Flags */") - typedef enum tagSTGC - { - STGC_DEFAULT = 0, -@@ -724,11 +734,13 @@ - cpp_quote("#else // _PREFAST_") - cpp_quote("typedef _Null_terminated_ OLECHAR *BSTR;") - cpp_quote("#endif") -+cpp_quote("/* Win32Metadata: type ::BSTR => NativeTypedef */") - typedef BSTR * LPBSTR; - - cpp_quote("/* 0 == FALSE, -1 == TRUE */") - typedef short VARIANT_BOOL; -+cpp_quote("/* Win32Metadata: type ::VARIANT_BOOL => NativeTypedef */") - - cpp_quote("/* The BSTRBLOB structure is used by some implementations */") - cpp_quote("/* of the IPropertyStorage interface when marshaling BSTRs */") - cpp_quote("/* on systems which don't support BSTR marshaling. */") -@@ -824,6 +836,7 @@ cpp_quote(" * VT_BYREF [V] void* for local use") - cpp_quote(" * VT_BSTR_BLOB Reserved for system use") - cpp_quote(" */") - -+cpp_quote("/* Win32Metadata: enum ::VARENUM => Flags */") - enum VARENUM - { - VT_EMPTY = 0, +@@ -314,6 +314,9 @@ cpp_quote("#define _ROTFLAGS_DEFINED") + cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1") + cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2") + cpp_quote("#endif // !_ROTFLAGS_DEFINED") ++cpp_quote("#if defined(WIN32METADATA) && defined(__clang__)") ++cpp_quote("_Win32_FlagsEnum_(ROT_FLAGS, DWORD, ROTFLAGS_REGISTRATIONKEEPSALIVE, ROTFLAGS_ALLOWANYCLIENT);") ++cpp_quote("#endif") + // Maximum size of comparison buffer for IROTData::GetComparisonData + cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED") + cpp_quote("#define _ROT_COMPARE_MAX_DEFINED") +@@ -334,11 +337,17 @@ typedef enum tagDVASPECT + DVASPECT_ICON = 4, + DVASPECT_DOCPRINT = 8 + } DVASPECT; ++cpp_quote("#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS)") ++cpp_quote("namespace Win32Metadata {") ++cpp_quote("_Win32_Enum_(DVASPECT, unsigned long, DVASPECT_CONTENT, DVASPECT_THUMBNAIL, DVASPECT_ICON, DVASPECT_DOCPRINT);") ++cpp_quote("}") ++cpp_quote("#endif") + + /****** Storage types *************************************************/ + + + /* Storage commit types */ ++cpp_quote("/* Win32Metadata: enum ::tagSTGC => Flags */") + typedef enum tagSTGC + { + STGC_DEFAULT = 0, +@@ -824,6 +833,7 @@ cpp_quote(" * VT_BYREF [V] void* for local use") + cpp_quote(" * VT_BSTR_BLOB Reserved for system use") + cpp_quote(" */") + ++cpp_quote("/* Win32Metadata: enum ::VARENUM => Flags */") + enum VARENUM + { + VT_EMPTY = 0, diff --git a/generation/WinSDK/patches/shared/wtypesbase.idl.patch b/generation/WinSDK/patches/shared/wtypesbase.idl.patch index b581ac549..7ee9cf746 100644 --- a/generation/WinSDK/patches/shared/wtypesbase.idl.patch +++ b/generation/WinSDK/patches/shared/wtypesbase.idl.patch @@ -1,12 +1,6 @@ --- a/shared/wtypesbase.idl +++ b/shared/wtypesbase.idl -@@ -260,4 +260,5 @@ - cpp_quote("typedef _Return_type_success_(return >= 0) LONG HRESULT;") - cpp_quote("#endif // __midl") - #endif // defined(_STRICT_HRESULT) -+cpp_quote("/* Win32Metadata: type ::HRESULT => NativeTypedef */") - cpp_quote("#endif // !_HRESULT_DEFINED") -@@ -337,6 +338,9 @@ +@@ -337,6 +337,9 @@ // class context: used to determine what scope and kind of class object to use // NOTE: this is a bitwise enum @@ -16,7 +10,7 @@ typedef enum tagCLSCTX { CLSCTX_INPROC_SERVER = 0x01, // server dll (runs in same process as caller) -@@ -372,6 +376,10 @@ +@@ -372,6 +375,10 @@ CLSCTX_DO_NOT_ELEVATE_SERVER = 0x10000000, // do not propagate the caller’s elevated privilege to the server CLSCTX_PS_DLL = 0x80000000, // Internal CLSCTX used for loading Proxy/Stub DLLs } CLSCTX; @@ -27,8 +21,3 @@ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(CLSCTX);") -@@ -506,3 +514,4 @@ - typedef boolean BOOLEAN; -+cpp_quote("/* Win32Metadata: type ::BOOLEAN => NativeTypedef */") - - cpp_quote("#ifndef _tagBLOB_DEFINED") diff --git a/generation/WinSDK/patches/um/FhSvcCtl.h.patch b/generation/WinSDK/patches/um/FhSvcCtl.h.patch index f2ad72adc..115c70520 100644 --- a/generation/WinSDK/patches/um/FhSvcCtl.h.patch +++ b/generation/WinSDK/patches/um/FhSvcCtl.h.patch @@ -1,13 +1,10 @@ diff --git a/um/fhsvcctl.h b/um/fhsvcctl.h --- a/um/fhsvcctl.h +++ b/um/fhsvcctl.h -@@ -48,20 +48,25 @@ +@@ -48,20 +48,22 @@ } FhBackupStopReason; DECLARE_HANDLE (FH_SERVICE_PIPE_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef FH_SERVICE_PIPE_HANDLE FH_SERVICE_PIPE_HANDLE; -+#endif + +_Win32_SupportedOS_BEGIN_(Windows8) + @@ -35,7 +32,7 @@ diff --git a/um/fhsvcctl.h b/um/fhsvcctl.h ); __declspec(deprecated("FhServiceStartBackup is deprecated and might not work on all platforms. For more info, see MSDN.")) -@@ -101,6 +106,7 @@ +@@ -101,6 +103,7 @@ _In_ FH_SERVICE_PIPE_HANDLE Pipe ); diff --git a/generation/WinSDK/patches/um/HttpExt.h.patch b/generation/WinSDK/patches/um/HttpExt.h.patch deleted file mode 100644 index 7be7b7594..000000000 --- a/generation/WinSDK/patches/um/HttpExt.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/HttpExt.h b/um/HttpExt.h ---- a/um/HttpExt.h -+++ b/um/HttpExt.h -@@ -143,6 +143,9 @@ - ************************************************************/ - - typedef LPVOID HCONN; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCONN HCONN; -+#endif - - // - // structure passed to GetExtensionVersion() diff --git a/generation/WinSDK/patches/um/ProcessSnapshot.h.patch b/generation/WinSDK/patches/um/ProcessSnapshot.h.patch index daaba97b7..682fda03a 100644 --- a/generation/WinSDK/patches/um/ProcessSnapshot.h.patch +++ b/generation/WinSDK/patches/um/ProcessSnapshot.h.patch @@ -1,21 +1,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h --- a/um/processsnapshot.h +++ b/um/processsnapshot.h -@@ -106,7 +106,13 @@ - - - DECLARE_HANDLE(HPSS); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPSS HPSS; -+#endif - DECLARE_HANDLE(HPSSWALK); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPSSWALK HPSSWALK; -+#endif - - // PssQuerySnapshot/PssWalkSnapshot information structures. - -@@ -370,6 +376,7 @@ +@@ -370,6 +370,7 @@ #if (NTDDI_VERSION >= NTDDI_WINBLUE) // Win32 APIs. @@ -23,7 +9,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssCaptureSnapshot( -@@ -379,6 +386,7 @@ +@@ -379,6 +380,7 @@ _Out_ HPSS* SnapshotHandle ); @@ -31,7 +17,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssFreeSnapshot( -@@ -386,6 +394,7 @@ +@@ -386,6 +388,7 @@ _In_ HPSS SnapshotHandle ); @@ -39,7 +25,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssQuerySnapshot( -@@ -395,6 +404,7 @@ +@@ -395,6 +398,7 @@ _In_ DWORD BufferLength ); @@ -47,7 +33,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssWalkSnapshot( -@@ -405,6 +415,7 @@ +@@ -405,6 +409,7 @@ _In_ DWORD BufferLength ); @@ -55,7 +41,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssDuplicateSnapshot( -@@ -416,19 +427,22 @@ +@@ -416,19 +421,22 @@ ); // Win32 walk marker management. @@ -87,7 +73,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssWalkMarkerGetPosition( -@@ -436,6 +450,7 @@ +@@ -436,6 +444,7 @@ _Out_ ULONG_PTR *Position ); @@ -95,7 +81,7 @@ diff --git a/um/processsnapshot.h b/um/processsnapshot.h _Success_(return == ERROR_SUCCESS) STDAPI_(DWORD) PssWalkMarkerSetPosition( -@@ -443,6 +458,7 @@ +@@ -443,6 +452,7 @@ _In_ ULONG_PTR Position ); diff --git a/generation/WinSDK/patches/um/SetupAPI.h.patch b/generation/WinSDK/patches/um/SetupAPI.h.patch index 4f1279b1b..3c85f7980 100644 --- a/generation/WinSDK/patches/um/SetupAPI.h.patch +++ b/generation/WinSDK/patches/um/SetupAPI.h.patch @@ -2,4071 +2,4061 @@ diff --git a/um/SetupAPI.h b/um/SetupAPI.h --- a/um/SetupAPI.h +++ b/um/SetupAPI.h @@ -1,3 +1,6 @@ -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+typedef unsigned short PROCESSOR_ARCHITECTURE; -+#endif - /*++ - - Copyright (c) Microsoft Corporation. All rights reserved. ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++typedef unsigned short PROCESSOR_ARCHITECTURE; ++#endif + /*++ + + Copyright (c) Microsoft Corporation. All rights reserved. @@ -14,6 +17,8 @@ - - #ifndef _INC_SETUPAPI - #define _INC_SETUPAPI -+#include -+#include - - #if _MSC_VER > 1000 - #pragma once + + #ifndef _INC_SETUPAPI + #define _INC_SETUPAPI ++#include ++#include + + #if _MSC_VER > 1000 + #pragma once @@ -90,6 +95,26 @@ - extern "C" { - #endif - -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+typedef unsigned long SP_COPY_STYLE; -+typedef unsigned long INF_STYLE; -+typedef unsigned long SETUPSCANFILEQUEUE_FLAGS; -+typedef unsigned long SPSVCINST_FLAGS; -+typedef unsigned long SETUP_DI_REGISTRY_PROPERTY; -+typedef unsigned long SETUP_DI_DEVICE_CREATION_FLAGS; -+typedef unsigned long SETUP_DI_DRIVER_INSTALL_FLAGS; -+typedef unsigned long SETUP_DI_STATE_CHANGE; -+typedef unsigned long SETUP_DI_PROPERTY_CHANGE_SCOPE; -+typedef unsigned long SETUP_DI_REMOVE_DEVICE_SCOPE; -+typedef unsigned long SETUP_DI_GET_CLASS_DEVS_FLAGS; -+typedef unsigned long SETUP_DI_DEVICE_INSTALL_FLAGS; -+typedef unsigned long SETUP_DI_DEVICE_INSTALL_FLAGS_EX; -+typedef unsigned long FILE_COMPRESSION_TYPE; -+typedef unsigned long SETUP_FILE_OPERATION; -+typedef unsigned long OEM_SOURCE_MEDIA_TYPE; -+typedef unsigned long SETUP_DI_DRIVER_TYPE; -+#endif -+ - // - // Define maximum string length constants - // + extern "C" { + #endif + ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++typedef unsigned long SP_COPY_STYLE; ++typedef unsigned long INF_STYLE; ++typedef unsigned long SETUPSCANFILEQUEUE_FLAGS; ++typedef unsigned long SPSVCINST_FLAGS; ++typedef unsigned long SETUP_DI_REGISTRY_PROPERTY; ++typedef unsigned long SETUP_DI_DEVICE_CREATION_FLAGS; ++typedef unsigned long SETUP_DI_DRIVER_INSTALL_FLAGS; ++typedef unsigned long SETUP_DI_STATE_CHANGE; ++typedef unsigned long SETUP_DI_PROPERTY_CHANGE_SCOPE; ++typedef unsigned long SETUP_DI_REMOVE_DEVICE_SCOPE; ++typedef unsigned long SETUP_DI_GET_CLASS_DEVS_FLAGS; ++typedef unsigned long SETUP_DI_DEVICE_INSTALL_FLAGS; ++typedef unsigned long SETUP_DI_DEVICE_INSTALL_FLAGS_EX; ++typedef unsigned long FILE_COMPRESSION_TYPE; ++typedef unsigned long SETUP_FILE_OPERATION; ++typedef unsigned long OEM_SOURCE_MEDIA_TYPE; ++typedef unsigned long SETUP_DI_DRIVER_TYPE; ++#endif ++ + // + // Define maximum string length constants + // @@ -134,7 +159,7 @@ - // Inf file information structure. - // - typedef struct _SP_INF_INFORMATION { -- DWORD InfStyle; -+ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle; - DWORD InfCount; - BYTE VersionData[ANYSIZE_ARRAY]; - } SP_INF_INFORMATION, *PSP_INF_INFORMATION; + // Inf file information structure. + // + typedef struct _SP_INF_INFORMATION { +- DWORD InfStyle; ++ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle; + DWORD InfCount; + BYTE VersionData[ANYSIZE_ARRAY]; + } SP_INF_INFORMATION, *PSP_INF_INFORMATION; @@ -214,10 +239,10 @@ - - typedef struct _SP_ALTPLATFORM_INFO_V2 { - DWORD cbSize; -- DWORD Platform; -+ _Win32_AssociatedEnum_(VER_PLATFORM) DWORD Platform; - DWORD MajorVersion; - DWORD MinorVersion; -- WORD ProcessorArchitecture; -+ _Win32_AssociatedEnum_(PROCESSOR_ARCHITECTURE) WORD ProcessorArchitecture; - union { - WORD Reserved; - WORD Flags; + + typedef struct _SP_ALTPLATFORM_INFO_V2 { + DWORD cbSize; +- DWORD Platform; ++ _Win32_AssociatedEnum_(VER_PLATFORM) DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; +- WORD ProcessorArchitecture; ++ _Win32_AssociatedEnum_(PROCESSOR_ARCHITECTURE) WORD ProcessorArchitecture; + union { + WORD Reserved; + WORD Flags; @@ -228,7 +253,7 @@ - - typedef struct _SP_ALTPLATFORM_INFO_V1 { - DWORD cbSize; -- DWORD Platform; -+ _Win32_AssociatedEnum_(VER_PLATFORM) DWORD Platform; - DWORD MajorVersion; - DWORD MinorVersion; - WORD ProcessorArchitecture; + + typedef struct _SP_ALTPLATFORM_INFO_V1 { + DWORD cbSize; +- DWORD Platform; ++ _Win32_AssociatedEnum_(VER_PLATFORM) DWORD Platform; + DWORD MajorVersion; + DWORD MinorVersion; + WORD ProcessorArchitecture; @@ -506,7 +531,7 @@ - PCWSTR Target; - PCWSTR Source; // not used for delete operations - UINT Win32Error; -- DWORD Flags; // such as SP_COPY_NOSKIP for copy errors -+ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD Flags; // such as SP_COPY_NOSKIP for copy errors - } FILEPATHS_W, *PFILEPATHS_W; - - #ifdef UNICODE -@@ -741,6 +766,9 @@ - // Define type for reference to device information set - // - typedef PVOID HDEVINFO; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDEVINFO HDEVINFO; -+#endif - - // - // Device information structure (references a device instance -@@ -905,8 +933,8 @@ - // - typedef struct _SP_DEVINSTALL_PARAMS_A { - DWORD cbSize; -- DWORD Flags; -- DWORD FlagsEx; -+ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS) DWORD Flags; -+ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX) DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK InstallMsgHandler; - PVOID InstallMsgHandlerContext; -@@ -918,8 +946,8 @@ - - typedef struct _SP_DEVINSTALL_PARAMS_W { - DWORD cbSize; -- DWORD Flags; -- DWORD FlagsEx; -+ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS) DWORD Flags; -+ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX) DWORD FlagsEx; - HWND hwndParent; - PSP_FILE_CALLBACK InstallMsgHandler; - PVOID InstallMsgHandlerContext; -@@ -1097,7 +1125,7 @@ - // - typedef struct _SP_CLASSINSTALL_HEADER { - DWORD cbSize; -- DI_FUNCTION InstallFunction; -+ _Win32_AssociatedEnum_(DI_FUNCTION) DI_FUNCTION InstallFunction; - } SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER; - - -@@ -1135,8 +1163,8 @@ - // - typedef struct _SP_PROPCHANGE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; -- DWORD StateChange; -- DWORD Scope; -+ _Win32_AssociatedEnum_(SETUP_DI_STATE_CHANGE) DWORD StateChange; -+ _Win32_AssociatedEnum_(SETUP_DI_PROPERTY_CHANGE_SCOPE) DWORD Scope; - DWORD HwProfile; - } SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS; - -@@ -1146,7 +1174,7 @@ - // - typedef struct _SP_REMOVEDEVICE_PARAMS { - SP_CLASSINSTALL_HEADER ClassInstallHeader; -- DWORD Scope; -+ _Win32_AssociatedEnum_(SETUP_DI_REMOVE_DEVICE_SCOPE) DWORD Scope; - DWORD HwProfile; - } SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS; - -@@ -1573,7 +1601,7 @@ - typedef struct _SP_DRVINSTALL_PARAMS { - DWORD cbSize; - DWORD Rank; -- DWORD Flags; -+ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_INSTALL_FLAGS) DWORD Flags; - DWORD_PTR PrivateData; - DWORD Reserved; - } SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS; -@@ -1954,7 +1982,101 @@ - #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000) - - #endif // _SPAPI_ERRORS -- -+_Win32_Enum_(WIN32_ERROR, unsigned long, -+ ERROR_EXPECTED_SECTION_NAME, -+ ERROR_BAD_SECTION_NAME_LINE, -+ ERROR_SECTION_NAME_TOO_LONG, -+ ERROR_GENERAL_SYNTAX, -+ ERROR_WRONG_INF_STYLE, -+ ERROR_SECTION_NOT_FOUND, -+ ERROR_LINE_NOT_FOUND, -+ ERROR_NO_BACKUP, -+ ERROR_NO_ASSOCIATED_CLASS, -+ ERROR_CLASS_MISMATCH, -+ ERROR_DUPLICATE_FOUND, -+ ERROR_NO_DRIVER_SELECTED, -+ ERROR_KEY_DOES_NOT_EXIST, -+ ERROR_INVALID_DEVINST_NAME, -+ ERROR_INVALID_CLASS, -+ ERROR_DEVINST_ALREADY_EXISTS, -+ ERROR_DEVINFO_NOT_REGISTERED, -+ ERROR_INVALID_REG_PROPERTY, -+ ERROR_NO_INF, -+ ERROR_NO_SUCH_DEVINST, -+ ERROR_CANT_LOAD_CLASS_ICON, -+ ERROR_INVALID_CLASS_INSTALLER, -+ ERROR_DI_DO_DEFAULT, -+ ERROR_DI_NOFILECOPY, -+ ERROR_INVALID_HWPROFILE, -+ ERROR_NO_DEVICE_SELECTED, -+ ERROR_DEVINFO_LIST_LOCKED, -+ ERROR_DEVINFO_DATA_LOCKED, -+ ERROR_DI_BAD_PATH, -+ ERROR_NO_CLASSINSTALL_PARAMS, -+ ERROR_FILEQUEUE_LOCKED, -+ ERROR_BAD_SERVICE_INSTALLSECT, -+ ERROR_NO_CLASS_DRIVER_LIST, -+ ERROR_NO_ASSOCIATED_SERVICE, -+ ERROR_NO_DEFAULT_DEVICE_INTERFACE, -+ ERROR_DEVICE_INTERFACE_ACTIVE, -+ ERROR_DEVICE_INTERFACE_REMOVED, -+ ERROR_BAD_INTERFACE_INSTALLSECT, -+ ERROR_NO_SUCH_INTERFACE_CLASS, -+ ERROR_INVALID_REFERENCE_STRING, -+ ERROR_INVALID_MACHINENAME, -+ ERROR_REMOTE_COMM_FAILURE, -+ ERROR_MACHINE_UNAVAILABLE, -+ ERROR_NO_CONFIGMGR_SERVICES, -+ ERROR_INVALID_PROPPAGE_PROVIDER, -+ ERROR_NO_SUCH_DEVICE_INTERFACE, -+ ERROR_DI_POSTPROCESSING_REQUIRED, -+ ERROR_INVALID_COINSTALLER, -+ ERROR_NO_COMPAT_DRIVERS, -+ ERROR_NO_DEVICE_ICON, -+ ERROR_INVALID_INF_LOGCONFIG, -+ ERROR_DI_DONT_INSTALL, -+ ERROR_INVALID_FILTER_DRIVER, -+ ERROR_NON_WINDOWS_NT_DRIVER, -+ ERROR_NON_WINDOWS_DRIVER, -+ ERROR_NO_CATALOG_FOR_OEM_INF, -+ ERROR_DEVINSTALL_QUEUE_NONNATIVE, -+ ERROR_NOT_DISABLEABLE, -+ ERROR_CANT_REMOVE_DEVINST, -+ ERROR_INVALID_TARGET, -+ ERROR_DRIVER_NONNATIVE, -+ ERROR_IN_WOW64, -+ ERROR_SET_SYSTEM_RESTORE_POINT, -+ ERROR_SCE_DISABLED, -+ ERROR_UNKNOWN_EXCEPTION, -+ ERROR_PNP_REGISTRY_ERROR, -+ ERROR_REMOTE_REQUEST_UNSUPPORTED, -+ ERROR_NOT_AN_INSTALLED_OEM_INF, -+ ERROR_INF_IN_USE_BY_DEVICES, -+ ERROR_DI_FUNCTION_OBSOLETE, -+ ERROR_NO_AUTHENTICODE_CATALOG, -+ ERROR_AUTHENTICODE_DISALLOWED, -+ ERROR_AUTHENTICODE_TRUSTED_PUBLISHER, -+ ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED, -+ ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED, -+ ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH, -+ ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE, -+ ERROR_DEVICE_INSTALLER_NOT_READY, -+ ERROR_DRIVER_STORE_ADD_FAILED, -+ ERROR_DEVICE_INSTALL_BLOCKED, -+ ERROR_DRIVER_INSTALL_BLOCKED, -+ ERROR_WRONG_INF_TYPE, -+ ERROR_FILE_HASH_NOT_IN_CATALOG, -+ ERROR_DRIVER_STORE_DELETE_FAILED, -+ ERROR_UNRECOVERABLE_STACK_OVERFLOW, -+ ERROR_NO_DEFAULT_INTERFACE_DEVICE, -+ ERROR_INTERFACE_DEVICE_ACTIVE, -+ ERROR_INTERFACE_DEVICE_REMOVED, -+ ERROR_NO_SUCH_INTERFACE_DEVICE, -+ ERROR_NOT_INSTALLED); -+ -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -1967,6 +2089,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -1995,6 +2119,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2006,6 +2132,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2024,6 +2152,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2034,6 +2164,8 @@ - _Out_ PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2051,6 +2183,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2063,6 +2197,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2084,6 +2220,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -2096,6 +2234,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -2114,6 +2254,8 @@ - #define SetupGetInfDriverStoreLocation SetupGetInfDriverStoreLocationA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -2124,6 +2266,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -2143,23 +2287,27 @@ - #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupGetInfFileListA( - _In_opt_ PCSTR DirectoryPath, -- _In_ DWORD InfStyle, -+ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, - _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer, - _In_ DWORD ReturnBufferSize, - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupGetInfFileListW( - _In_opt_ PCWSTR DirectoryPath, -- _In_ DWORD InfStyle, -+ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, - _Out_writes_(ReturnBufferSize) PWSTR ReturnBuffer, - _In_ DWORD ReturnBufferSize, - _Out_opt_ PDWORD RequiredSize -@@ -2172,23 +2320,27 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HINF - WINAPI - SetupOpenInfFileW( - _In_ PCWSTR FileName, - _In_opt_ PCWSTR InfClass, -- _In_ DWORD InfStyle, -+ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, - _Out_opt_ PUINT ErrorLine - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HINF - WINAPI - SetupOpenInfFileA( - _In_ PCSTR FileName, - _In_opt_ PCSTR InfClass, -- _In_ DWORD InfStyle, -+ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, - _Out_opt_ PUINT ErrorLine - ); - -@@ -2199,6 +2351,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HINF - WINAPI -@@ -2207,6 +2361,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2216,6 +2372,8 @@ - _Out_opt_ PUINT ErrorLine - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2232,6 +2390,7 @@ - #endif - - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - VOID - WINAPI -@@ -2240,6 +2399,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2250,6 +2411,8 @@ - _Out_ PINFCONTEXT Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2267,6 +2430,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2276,6 +2441,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2285,6 +2452,8 @@ - _Out_ PINFCONTEXT ContextOut - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2301,6 +2470,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2311,6 +2482,8 @@ - _Out_ PINFCONTEXT Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2328,6 +2501,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - LONG - WINAPI -@@ -2336,6 +2511,8 @@ - _In_ PCSTR Section - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - LONG - WINAPI -@@ -2351,6 +2528,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2364,6 +2543,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2384,6 +2565,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - DWORD - WINAPI -@@ -2392,6 +2575,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2403,6 +2588,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2421,6 +2608,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2431,6 +2620,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2442,6 +2633,8 @@ - _Out_opt_ LPDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2459,6 +2652,8 @@ - #define SetupGetMultiSzField SetupGetMultiSzFieldA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -2479,6 +2674,8 @@ - // must be freed by the export setupapi!MyFree (NT4+ Win95+) - // or LocalFree (Win2k+) - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - DWORD - WINAPI -@@ -2487,9 +2684,11 @@ - _Out_ PSTR *ActualSourceFileName, - _Out_ PDWORD SourceFileSize, - _Out_ PDWORD TargetFileSize, -- _Out_ PUINT CompressionType -- ); -- -+ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - DWORD - WINAPI -@@ -2498,7 +2697,7 @@ - _Out_ PWSTR *ActualSourceFileName, - _Out_ PDWORD SourceFileSize, - _Out_ PDWORD TargetFileSize, -- _Out_ PUINT CompressionType -+ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType - ); - - #ifdef UNICODE -@@ -2516,6 +2715,8 @@ - // buffer. - // - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2526,9 +2727,11 @@ - _Out_opt_ PDWORD RequiredBufferLen, - _Out_ PDWORD SourceFileSize, - _Out_ PDWORD TargetFileSize, -- _Out_ PUINT CompressionType -- ); -- -+ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2539,7 +2742,7 @@ - _Out_opt_ PDWORD RequiredBufferLen, - _Out_ PDWORD SourceFileSize, - _Out_ PDWORD TargetFileSize, -- _Out_ PUINT CompressionType -+ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType - ); - - #ifdef UNICODE -@@ -2559,22 +2762,26 @@ - #define FILE_COMPRESSION_NTCAB 3 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - DWORD - WINAPI - SetupDecompressOrCopyFileA( - _In_ PCSTR SourceFileName, - _In_ PCSTR TargetFileName, -- _In_opt_ PUINT CompressionType -- ); -- -+ _In_opt_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - DWORD - WINAPI - SetupDecompressOrCopyFileW( - _In_ PCWSTR SourceFileName, - _In_ PCWSTR TargetFileName, -- _In_opt_ PUINT CompressionType -+ _In_opt_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType - ); - - #ifdef UNICODE -@@ -2584,6 +2791,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2597,6 +2806,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2617,6 +2828,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2629,6 +2842,8 @@ - _In_ UINT RoundingFactor - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2648,6 +2863,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2660,6 +2877,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2692,6 +2911,8 @@ - #define SRCLIST_NOSTRIPPLATFORM 0x00000400 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2701,6 +2922,8 @@ - _In_ UINT SourceCount - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2717,6 +2940,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2725,6 +2950,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2733,6 +2960,8 @@ - _In_ PCSTR Source - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2748,6 +2977,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2756,6 +2987,8 @@ - _In_ PCSTR Source - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2771,6 +3004,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2780,6 +3015,8 @@ - _Out_ PUINT Count - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2796,6 +3033,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2804,6 +3043,8 @@ - _In_ UINT Count - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -2819,6 +3060,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2835,6 +3078,8 @@ - _Out_opt_ PDWORD PathRequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2858,6 +3103,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2875,6 +3122,8 @@ - _Out_opt_ PDWORD PathRequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2899,6 +3148,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2911,6 +3162,8 @@ - _In_ DWORD Style - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2930,6 +3183,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2941,6 +3196,8 @@ - _In_ DWORD Style - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2958,6 +3215,8 @@ - #define SetupDeleteError SetupDeleteErrorA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -2970,6 +3229,8 @@ - _In_ DWORD Style - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -3021,6 +3282,8 @@ - #define DPROMPT_OUTOFMEMORY 4 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3030,6 +3293,8 @@ - _In_opt_ PCSTR Directory - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3046,6 +3311,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3058,6 +3325,8 @@ - _Reserved_ PVOID Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3082,6 +3351,8 @@ - #define SETDIRID_NOT_FULL_PATH 0x00000001 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3094,6 +3365,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3133,6 +3406,8 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3142,11 +3417,13 @@ - _In_opt_ PCSTR SourceFile, - _In_opt_ PCSTR SourcePathRoot, - _In_opt_ PCSTR DestinationName, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _In_opt_ PSP_FILE_CALLBACK_A CopyMsgHandler, - _In_opt_ PVOID Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3156,7 +3433,7 @@ - _In_opt_ PCWSTR SourceFile, - _In_opt_ PCWSTR SourcePathRoot, - _In_opt_ PCWSTR DestinationName, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _In_opt_ PSP_FILE_CALLBACK_W CopyMsgHandler, - _In_opt_ PVOID Context - ); -@@ -3167,6 +3444,8 @@ - #define SetupInstallFile SetupInstallFileA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3176,12 +3455,14 @@ - _In_opt_ PCSTR SourceFile, - _In_opt_ PCSTR SourcePathRoot, - _In_opt_ PCSTR DestinationName, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _In_opt_ PSP_FILE_CALLBACK_A CopyMsgHandler, - _In_opt_ PVOID Context, - _Out_ PBOOL FileWasInUse - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3191,7 +3472,7 @@ - _In_opt_ PCWSTR SourceFile, - _In_opt_ PCWSTR SourcePathRoot, - _In_opt_ PCWSTR DestinationName, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _In_opt_ PSP_FILE_CALLBACK_W CopyMsgHandler, - _In_opt_ PVOID Context, - _Out_ PBOOL FileWasInUse -@@ -3271,6 +3552,8 @@ - #endif //_SETUPAPI_VER >= _WIN32_WINNT_WINXP - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HSPFILEQ - WINAPI -@@ -3278,6 +3561,7 @@ - VOID - ); - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3285,6 +3569,8 @@ - _In_ HSPFILEQ QueueHandle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3294,6 +3580,8 @@ - _In_opt_ PCSTR AlternateDefaultCatalogFile - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3310,6 +3598,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3317,6 +3607,8 @@ - _In_opt_ PCSTR Override - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3331,6 +3623,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3346,6 +3640,8 @@ - _In_ DWORD CopyStyle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3368,6 +3664,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3375,6 +3673,8 @@ - _In_ PSP_FILE_COPY_PARAMS_A CopyParams - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3389,6 +3689,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3401,6 +3703,8 @@ - _In_ DWORD CopyStyle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3420,6 +3724,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3432,6 +3738,8 @@ - _In_ DWORD CopyStyle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3451,6 +3759,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3460,6 +3770,8 @@ - _In_opt_ PCSTR PathPart2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3476,6 +3788,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3486,6 +3800,8 @@ - _In_ PCSTR Section - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3503,6 +3819,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3514,6 +3832,8 @@ - _In_ PCSTR TargetFilename - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3532,6 +3852,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3542,6 +3864,8 @@ - _In_ PCSTR Section - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3559,6 +3883,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3569,6 +3895,8 @@ - _In_ PVOID Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3586,24 +3914,28 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupScanFileQueueA( - _In_ HSPFILEQ FileQueue, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SETUPSCANFILEQUEUE_FLAGS) DWORD Flags, - _In_opt_ HWND Window, - _In_opt_ PSP_FILE_CALLBACK_A CallbackRoutine, - _In_opt_ PVOID CallbackContext, - _Out_ PDWORD Result - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupScanFileQueueW( - _In_ HSPFILEQ FileQueue, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SETUPSCANFILEQUEUE_FLAGS) DWORD Flags, - _In_opt_ HWND Window, - _In_opt_ PSP_FILE_CALLBACK_W CallbackRoutine, - _In_opt_ PVOID CallbackContext, -@@ -3655,6 +3987,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3664,6 +3998,8 @@ - _Out_ PUINT NumOperations - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3672,6 +4008,8 @@ - _Out_ PDWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3719,28 +4057,32 @@ - #define SPOST_URL 2 - #define SPOST_MAX 3 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupCopyOEMInfA( - _In_ PCSTR SourceInfFileName, - _In_opt_ PCSTR OEMSourceMediaLocation, -- _In_ DWORD OEMSourceMediaType, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(OEM_SOURCE_MEDIA_TYPE) DWORD OEMSourceMediaType, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _Out_writes_opt_(DestinationInfFileNameSize) PSTR DestinationInfFileName, - _In_ DWORD DestinationInfFileNameSize, - _Out_opt_ PDWORD RequiredSize, - _Out_opt_ PSTR *DestinationInfFileNameComponent - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupCopyOEMInfW( - _In_ PCWSTR SourceInfFileName, - _In_opt_ PCWSTR OEMSourceMediaLocation, -- _In_ DWORD OEMSourceMediaType, -- _In_ DWORD CopyStyle, -+ _In_ _Win32_AssociatedEnum_(OEM_SOURCE_MEDIA_TYPE) DWORD OEMSourceMediaType, -+ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, - _Out_writes_opt_(DestinationInfFileNameSize) PWSTR DestinationInfFileName, - _In_ DWORD DestinationInfFileNameSize, - _Out_opt_ PDWORD RequiredSize, -@@ -3770,6 +4112,7 @@ - - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3779,6 +4122,7 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3795,6 +4139,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3810,6 +4156,8 @@ - // - // Disk space list APIs - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HDSKSPC - WINAPI -@@ -3819,6 +4167,8 @@ - _In_ UINT Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HDSKSPC - WINAPI -@@ -3841,6 +4191,8 @@ - #define SPDSL_DISALLOW_NEGATIVE_ADJUST 0x00000002 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HDSKSPC - WINAPI -@@ -3851,6 +4203,8 @@ - _In_ UINT Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HDSKSPC - WINAPI -@@ -3868,6 +4222,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3876,6 +4232,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3886,6 +4244,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3903,6 +4263,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3914,6 +4276,8 @@ - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3932,6 +4296,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3943,6 +4309,8 @@ - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3961,6 +4329,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3968,11 +4338,13 @@ - _In_ HDSKSPC DiskSpace, - _In_ PCSTR TargetFilespec, - _In_ LONGLONG FileSize, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -3980,7 +4352,7 @@ - _In_ HDSKSPC DiskSpace, - _In_ PCWSTR TargetFilespec, - _In_ LONGLONG FileSize, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); -@@ -3992,6 +4364,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4000,11 +4374,13 @@ - _In_ HINF InfHandle, - _In_opt_ HINF ListInfHandle, - _In_ PCSTR SectionName, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4013,7 +4389,7 @@ - _In_ HINF InfHandle, - _In_opt_ HINF ListInfHandle, - _In_ PCWSTR SectionName, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); -@@ -4025,6 +4401,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4037,6 +4415,8 @@ - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4056,24 +4436,28 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupRemoveFromDiskSpaceListA( - _In_ HDSKSPC DiskSpace, - _In_ PCSTR TargetFilespec, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupRemoveFromDiskSpaceListW( - _In_ HDSKSPC DiskSpace, - _In_ PCWSTR TargetFilespec, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); -@@ -4085,6 +4469,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4093,11 +4479,13 @@ - _In_ HINF InfHandle, - _In_opt_ HINF ListInfHandle, - _In_ PCSTR SectionName, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4106,7 +4494,7 @@ - _In_ HINF InfHandle, - _In_opt_ HINF ListInfHandle, - _In_ PCWSTR SectionName, -- _In_ UINT Operation, -+ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, - _Reserved_ PVOID Reserved1, - _Reserved_ UINT Reserved2 - ); -@@ -4118,6 +4506,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4130,6 +4520,8 @@ - _Reserved_ UINT Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4153,6 +4545,8 @@ - // Cabinet APIs - // - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4163,6 +4557,8 @@ - _In_ PVOID Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4180,6 +4576,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - INT - WINAPI -@@ -4197,6 +4595,8 @@ - #define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - PVOID - WINAPI -@@ -4204,6 +4604,7 @@ - _In_opt_ HWND OwnerWindow - ); - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - PVOID - WINAPI -@@ -4215,6 +4616,8 @@ - _Reserved_ PVOID Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - VOID - WINAPI -@@ -4222,6 +4625,8 @@ - _In_ PVOID Context - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -4232,6 +4637,8 @@ - _In_ UINT_PTR Param2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - UINT - WINAPI -@@ -4409,6 +4816,8 @@ - #define FLG_DELPROPERTY_MULTI_SZ_DELSTRING ( 0x00000001 ) - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4426,6 +4835,8 @@ - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4499,6 +4910,8 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4511,6 +4924,8 @@ - _In_ UINT CopyFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4646,22 +5061,26 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WIN10 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupInstallServicesFromInfSectionA( - _In_ HINF InfHandle, - _In_ PCSTR SectionName, -- _In_ DWORD Flags -- ); -- -+ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupInstallServicesFromInfSectionW( - _In_ HINF InfHandle, - _In_ PCWSTR SectionName, -- _In_ DWORD Flags -+ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags - ); - - #ifdef UNICODE -@@ -4671,26 +5090,30 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupInstallServicesFromInfSectionExA( - _In_ HINF InfHandle, - _In_ PCSTR SectionName, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags, - _In_opt_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, - _Reserved_ PVOID Reserved1, - _Reserved_ PVOID Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI - SetupInstallServicesFromInfSectionExW( - _In_ HINF InfHandle, - _In_ PCWSTR SectionName, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags, - _In_opt_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, - _Reserved_ PVOID Reserved1, -@@ -4713,6 +5136,7 @@ - // wsprintf(CmdLineBuffer,TEXT("DefaultInstall 132 %s"),InfPath); - // InstallHinfSection(NULL,NULL,CmdLineBuffer,0); - // -+_Win32_SupportedOS_WindowsXP_ - VOID - WINAPI - InstallHinfSectionA( -@@ -4722,6 +5146,7 @@ - _In_ INT ShowCommand - ); - -+_Win32_SupportedOS_WindowsXP_ - VOID - WINAPI - InstallHinfSectionW( -@@ -4746,6 +5171,8 @@ - // - typedef PVOID HSPFILELOG; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HSPFILELOG - WINAPI -@@ -4754,6 +5181,8 @@ - _In_ DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - HSPFILELOG - WINAPI -@@ -4776,6 +5205,8 @@ - #define SPFILELOG_QUERYONLY 0x00000004 // allows non-administrators to read system log - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4784,6 +5215,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4799,6 +5232,8 @@ - _In_ DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4826,6 +5261,8 @@ - #define SPFILELOG_OEMFILE 0x00000001 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4835,6 +5272,8 @@ - _In_opt_ PCSTR TargetFilename - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4863,6 +5302,8 @@ - SetupFileLogMax - } SetupFileLogInfo; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4876,6 +5317,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4905,6 +5348,8 @@ - #define LogSevFatalError 0x00000003 - #define LogSevMaximum 0x00000004 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4912,6 +5357,8 @@ - _In_ BOOL Erase - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4920,6 +5367,8 @@ - _In_ LogSeverity Severity - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -4934,6 +5383,7 @@ - #define SetupLogError SetupLogErrorA - #endif - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - VOID - WINAPI -@@ -4948,6 +5398,7 @@ - #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - - -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - SP_LOG_TOKEN - WINAPI -@@ -4955,6 +5406,7 @@ - VOID - ); - -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - VOID - WINAPI -@@ -4962,6 +5414,7 @@ - _In_ SP_LOG_TOKEN LogToken - ); - -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - VOID - WINAPI -@@ -4973,6 +5426,7 @@ - ... - ); - -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - VOID - WINAPI -@@ -4985,6 +5439,7 @@ - ... - ); - -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - VOID - WINAPI -@@ -5059,6 +5514,7 @@ - // Overriden if SetupAPI is run in non-interactive window session - // - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -5066,6 +5522,7 @@ - _In_ BOOL NonInteractiveFlag - ); - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -5079,9 +5536,11 @@ - // Device Installer APIs - // - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HDEVINFO -+_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO - WINAPI - SetupDiCreateDeviceInfoList( - _In_opt_ CONST GUID *ClassGuid, -@@ -5089,9 +5548,11 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HDEVINFO -+_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO - WINAPI - SetupDiCreateDeviceInfoListExA( - _In_opt_ CONST GUID *ClassGuid, -@@ -5100,9 +5561,11 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HDEVINFO -+_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO - WINAPI - SetupDiCreateDeviceInfoListExW( - _In_opt_ CONST GUID *ClassGuid, -@@ -5118,6 +5581,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5126,20 +5591,24 @@ - _Out_ LPGUID ClassGuid - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetDeviceInfoListDetailA( - _In_ HDEVINFO DeviceInfoSet, -- _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData -- ); -- -+ _Inout_ PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetDeviceInfoListDetailW( - _In_ HDEVINFO DeviceInfoSet, -- _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData -+ _Inout_ PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData - ); - - #ifdef UNICODE -@@ -5155,6 +5624,8 @@ - #define DICD_GENERATE_ID 0x00000001 - #define DICD_INHERIT_CLASSDRVS 0x00000002 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5164,10 +5635,12 @@ - _In_ CONST GUID *ClassGuid, - _In_opt_ PCSTR DeviceDescription, - _In_opt_ HWND hwndParent, -- _In_ DWORD CreationFlags, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -- ); -- -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_CREATION_FLAGS) DWORD CreationFlags, -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5177,8 +5650,8 @@ - _In_ CONST GUID *ClassGuid, - _In_opt_ PCWSTR DeviceDescription, - _In_opt_ HWND hwndParent, -- _In_ DWORD CreationFlags, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_CREATION_FLAGS) DWORD CreationFlags, -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData - ); - - #ifdef UNICODE -@@ -5194,6 +5667,8 @@ - #define DIOD_INHERIT_CLASSDRVS 0x00000002 - #define DIOD_CANCEL_REMOVE 0x00000004 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5202,9 +5677,11 @@ - _In_ PCSTR DeviceInstanceId, - _In_opt_ HWND hwndParent, - _In_ DWORD OpenFlags, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -- ); -- -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5213,7 +5690,7 @@ - _In_ PCWSTR DeviceInstanceId, - _In_opt_ HWND hwndParent, - _In_ DWORD OpenFlags, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData - ); - - #ifdef UNICODE -@@ -5223,6 +5700,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5234,6 +5713,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5252,6 +5733,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5261,16 +5744,20 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiEnumDeviceInfo( - _In_ HDEVINFO DeviceInfoSet, - _In_ DWORD MemberIndex, -- _Out_ PSP_DEVINFO_DATA DeviceInfoData -- ); -- -- -+ _Inout_ PSP_DEVINFO_DATA DeviceInfoData -+ ); -+ -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5279,6 +5766,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5287,7 +5776,7 @@ - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, - _In_ CONST GUID *InterfaceClassGuid, - _In_ DWORD MemberIndex, -- _Out_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -+ _Inout_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData - ); - - // -@@ -5296,6 +5785,8 @@ - #define SetupDiEnumInterfaceDevice SetupDiEnumDeviceInterfaces - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5305,9 +5796,11 @@ - _In_ CONST GUID *InterfaceClassGuid, - _In_opt_ PCSTR ReferenceString, - _In_ DWORD CreationFlags, -- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -- ); -- -+ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5317,7 +5810,7 @@ - _In_ CONST GUID *InterfaceClassGuid, - _In_opt_ PCWSTR ReferenceString, - _In_ DWORD CreationFlags, -- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -+ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData - ); - - #ifdef UNICODE -@@ -5343,6 +5836,8 @@ - // - #define DIODI_NO_ADD 0x00000001 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5350,9 +5845,11 @@ - _In_ HDEVINFO DeviceInfoSet, - _In_ PCSTR DevicePath, - _In_ DWORD OpenFlags, -- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -- ); -- -+ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5360,7 +5857,7 @@ - _In_ HDEVINFO DeviceInfoSet, - _In_ PCWSTR DevicePath, - _In_ DWORD OpenFlags, -- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData -+ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData - ); - - #ifdef UNICODE -@@ -5381,6 +5878,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5388,7 +5887,7 @@ - _In_ HDEVINFO DeviceInfoSet, - _In_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, - _In_ CONST GUID *AliasInterfaceClassGuid, -- _Out_ PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData -+ _Inout_ PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData - ); - - // -@@ -5397,6 +5896,8 @@ - #define SetupDiGetInterfaceDeviceAlias SetupDiGetDeviceInterfaceAlias - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5411,6 +5912,8 @@ - #define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5424,6 +5927,8 @@ - // - #define SetupDiRemoveInterfaceDevice SetupDiRemoveDeviceInterface - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - _At_((LPSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_) - WINSETUPAPI -@@ -5435,9 +5940,11 @@ - _Inout_updates_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData, - _In_ DWORD DeviceInterfaceDetailDataSize, - _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A)) PDWORD RequiredSize, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -- ); -- -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - _At_((LPWSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_) - WINSETUPAPI -@@ -5449,7 +5956,7 @@ - _Out_writes_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, - _In_ DWORD DeviceInterfaceDetailDataSize, - _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W)) PDWORD RequiredSize, -- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData -+ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData - ); - - #ifdef UNICODE -@@ -5473,6 +5980,8 @@ - // - // Default install handler for DIF_INSTALLINTERFACES. - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5489,6 +5998,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -5511,6 +6022,8 @@ - // - #define SPRDI_FIND_DUPS 0x00000001 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5520,7 +6033,7 @@ - _In_ DWORD Flags, - _In_opt_ PSP_DETSIG_CMPPROC CompareProc, - _In_opt_ PVOID CompareContext, -- _Out_opt_ PSP_DEVINFO_DATA DupDeviceInfoData -+ _Inout_opt_ PSP_DEVINFO_DATA DupDeviceInfoData - ); - - -@@ -5533,16 +6046,20 @@ - #define SPDIT_CLASSDRIVER 0x00000001 - #define SPDIT_COMPATDRIVER 0x00000002 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiBuildDriverInfoList( - _In_ HDEVINFO DeviceInfoSet, - _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD DriverType -- ); -- -- -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType -+ ); -+ -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5551,26 +6068,30 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiEnumDriverInfoA( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD DriverType, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType, - _In_ DWORD MemberIndex, -- _Out_ PSP_DRVINFO_DATA_A DriverInfoData -- ); -- -+ _Inout_ PSP_DRVINFO_DATA_A DriverInfoData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiEnumDriverInfoW( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD DriverType, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType, - _In_ DWORD MemberIndex, -- _Out_ PSP_DRVINFO_DATA_W DriverInfoData -+ _Inout_ PSP_DRVINFO_DATA_W DriverInfoData - ); - - #ifdef UNICODE -@@ -5580,22 +6101,26 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetSelectedDriverA( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _Out_ PSP_DRVINFO_DATA_A DriverInfoData -- ); -- -+ _Inout_ PSP_DRVINFO_DATA_A DriverInfoData -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetSelectedDriverW( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _Out_ PSP_DRVINFO_DATA_W DriverInfoData -+ _Inout_ PSP_DRVINFO_DATA_W DriverInfoData - ); - - #ifdef UNICODE -@@ -5605,6 +6130,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5614,6 +6141,8 @@ - _Inout_opt_ PSP_DRVINFO_DATA_A DriverInfoData - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5629,6 +6158,8 @@ - #define SetupDiSetSelectedDriver SetupDiSetSelectedDriverA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5641,6 +6172,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5660,13 +6193,15 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiDestroyDriverInfoList( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD DriverType -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType - ); - - -@@ -5686,26 +6221,30 @@ - #define DIGCF_INTERFACEDEVICE DIGCF_DEVICEINTERFACE - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HDEVINFO -+_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO - WINAPI - SetupDiGetClassDevsA( - _In_opt_ CONST GUID *ClassGuid, - _In_opt_ PCSTR Enumerator, - _In_opt_ HWND hwndParent, -- _In_ DWORD Flags -- ); -- -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HDEVINFO -+_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO - WINAPI - SetupDiGetClassDevsW( - _In_opt_ CONST GUID *ClassGuid, - _In_opt_ PCWSTR Enumerator, - _In_opt_ HWND hwndParent, -- _In_ DWORD Flags -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags - ); - - #ifdef UNICODE -@@ -5715,6 +6254,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI - HDEVINFO -@@ -5723,12 +6264,14 @@ - _In_opt_ CONST GUID *ClassGuid, - _In_opt_ PCSTR Enumerator, - _In_opt_ HWND hwndParent, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags, - _In_opt_ HDEVINFO DeviceInfoSet, - _In_opt_ PCSTR MachineName, - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI - HDEVINFO -@@ -5737,7 +6280,7 @@ - _In_opt_ CONST GUID *ClassGuid, - _In_opt_ PCWSTR Enumerator, - _In_opt_ HWND hwndParent, -- _In_ DWORD Flags, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags, - _In_opt_ HDEVINFO DeviceInfoSet, - _In_opt_ PCWSTR MachineName, - _Reserved_ PVOID Reserved -@@ -5750,6 +6293,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5761,6 +6306,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5786,6 +6333,8 @@ - #define DIBCI_NOINSTALLCLASS 0x00000001 - #define DIBCI_NODISPLAYCLASS 0x00000002 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -5797,6 +6346,8 @@ - _Out_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -5810,6 +6361,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -5830,6 +6383,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5840,6 +6395,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5857,6 +6414,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5869,6 +6428,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5888,11 +6449,13 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiCallClassInstaller( -- _In_ DI_FUNCTION InstallFunction, -+ _In_ _Win32_AssociatedEnum_(DI_FUNCTION) DI_FUNCTION InstallFunction, - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData - ); -@@ -5901,6 +6464,8 @@ - // - // Default install handler for DIF_SELECTDEVICE - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5913,6 +6478,8 @@ - // - // Default install handler for DIF_SELECTBESTCOMPATDRV - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5925,6 +6492,8 @@ - // - // Default install handler for DIF_INSTALLDEVICE - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5937,6 +6506,8 @@ - // - // Default install handler for DIF_INSTALLDEVICEFILES - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5949,6 +6520,8 @@ - // - // Default install handler for DIF_REGISTER_COINSTALLERS - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5961,6 +6534,7 @@ - // - // Default install handler for DIF_REMOVE - // -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5973,6 +6547,8 @@ - // - // Default install handler for DIF_UNREMOVE - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -5983,6 +6559,7 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WS03 - -+_Win32_SetLastError_ - WINSETUPAPI - BOOL - WINAPI -@@ -5996,6 +6573,8 @@ - // - // Default install handler for DIF_PROPERTYCHANGE - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6005,6 +6584,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6015,6 +6596,8 @@ - _In_opt_ HSPFILEQ FileQueue - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6032,6 +6615,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6045,6 +6630,8 @@ - _Reserved_ PVOID Reserved2 - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6065,9 +6652,11 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiOpenClassRegKey( - _In_opt_ CONST GUID *ClassGuid, -@@ -6081,9 +6670,11 @@ - #define DIOCR_INSTALLER 0x00000001 // class installer registry branch - #define DIOCR_INTERFACE 0x00000002 // interface class registry branch - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiOpenClassRegKeyExA( - _In_opt_ CONST GUID *ClassGuid, -@@ -6093,9 +6684,11 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiOpenClassRegKeyExW( - _In_opt_ CONST GUID *ClassGuid, -@@ -6112,9 +6705,11 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiCreateDeviceInterfaceRegKeyA( - _In_ HDEVINFO DeviceInfoSet, -@@ -6125,9 +6720,11 @@ - _In_opt_ PCSTR InfSectionName - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiCreateDeviceInterfaceRegKeyW( - _In_ HDEVINFO DeviceInfoSet, -@@ -6156,9 +6753,11 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiOpenDeviceInterfaceRegKey( - _In_ HDEVINFO DeviceInfoSet, -@@ -6173,6 +6772,8 @@ - #define SetupDiOpenInterfaceDeviceRegKey SetupDiOpenDeviceInterfaceRegKey - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6196,9 +6797,11 @@ - #define DIREG_DRV 0x00000002 // Open/Create/Delete driver key - #define DIREG_BOTH 0x00000004 // Delete both driver and Device key - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiCreateDevRegKeyA( - _In_ HDEVINFO DeviceInfoSet, -@@ -6210,9 +6813,11 @@ - _In_opt_ PCSTR InfSectionName - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiCreateDevRegKeyW( - _In_ HDEVINFO DeviceInfoSet, -@@ -6231,9 +6836,11 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Check_return_ - WINSETUPAPI --HKEY -+_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY - WINAPI - SetupDiOpenDevRegKey( - _In_ HDEVINFO DeviceInfoSet, -@@ -6245,6 +6852,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6256,6 +6865,8 @@ - _In_ DWORD KeyType - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6267,6 +6878,8 @@ - _Out_opt_ PDWORD CurrentlyActiveIndex - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6280,6 +6893,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6301,6 +6916,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6313,6 +6930,8 @@ - _In_ DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != FALSE) - _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) - _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) -@@ -6335,6 +6954,8 @@ - #define SetupDiGetDeviceProperty SetupDiGetDevicePropertyW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6352,6 +6973,8 @@ - #define SetupDiSetDeviceProperty SetupDiSetDevicePropertyW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6364,6 +6987,8 @@ - _In_ DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != FALSE) - _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) - _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) -@@ -6386,6 +7011,8 @@ - #define SetupDiGetDeviceInterfaceProperty SetupDiGetDeviceInterfacePropertyW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6410,6 +7037,8 @@ - #define DICLASSPROP_INSTALLER 0x00000001 // device setup class property - #define DICLASSPROP_INTERFACE 0x00000002 // device interface class property - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6421,6 +7050,8 @@ - _In_ DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6438,6 +7069,8 @@ - #define SetupDiGetClassPropertyKeysEx SetupDiGetClassPropertyKeysExW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != FALSE) - _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) - _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) -@@ -6459,6 +7092,8 @@ - #define SetupDiGetClassProperty SetupDiGetClassPropertyW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != FALSE) - _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) - _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) -@@ -6482,6 +7117,8 @@ - #define SetupDiGetClassPropertyEx SetupDiGetClassPropertyExW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6498,6 +7135,8 @@ - #define SetupDiSetClassProperty SetupDiSetClassPropertyW - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6588,6 +7227,8 @@ - #define SPCRP_CHARACTERISTICS (0x0000001B) // Device Characteristics (R/W) - #define SPCRP_MAXIMUM_PROPERTY (0x0000001C) // Upper bound on ordinals - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - _When_((*PropertyRegDataType == REG_SZ), _At_((PSTR) PropertyBuffer, _Post_valid_)) - _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZSTR) PropertyBuffer, _Post_valid_)) -@@ -6597,13 +7238,15 @@ - SetupDiGetDeviceRegistryPropertyA( - _In_ HDEVINFO DeviceInfoSet, - _In_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD Property, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, - _Out_opt_ PDWORD PropertyRegDataType, - _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer, - _In_ DWORD PropertyBufferSize, - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - _When_((*PropertyRegDataType == REG_SZ), _At_((PWSTR) PropertyBuffer, _Post_valid_)) - _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZWSTR) PropertyBuffer, _Post_valid_)) -@@ -6613,7 +7256,7 @@ - SetupDiGetDeviceRegistryPropertyW( - _In_ HDEVINFO DeviceInfoSet, - _In_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD Property, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, - _Out_opt_ PDWORD PropertyRegDataType, - _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer, - _In_ DWORD PropertyBufferSize, -@@ -6628,6 +7271,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6643,6 +7288,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6666,24 +7313,28 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiSetDeviceRegistryPropertyA( - _In_ HDEVINFO DeviceInfoSet, - _Inout_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD Property, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, - _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer, - _In_ DWORD PropertyBufferSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiSetDeviceRegistryPropertyW( - _In_ HDEVINFO DeviceInfoSet, - _Inout_ PSP_DEVINFO_DATA DeviceInfoData, -- _In_ DWORD Property, -+ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, - _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer, - _In_ DWORD PropertyBufferSize - ); -@@ -6696,6 +7347,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -6708,6 +7361,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -6728,22 +7383,26 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetDeviceInstallParamsA( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _Out_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams -- ); -- -+ _Inout_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetDeviceInstallParamsW( - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, -- _Out_ PSP_DEVINSTALL_PARAMS_W DeviceInstallParams -+ _Inout_ PSP_DEVINSTALL_PARAMS_W DeviceInstallParams - ); - - #ifdef UNICODE -@@ -6752,6 +7411,8 @@ - #define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6764,6 +7425,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -6783,6 +7446,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6792,6 +7457,8 @@ - _In_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6808,6 +7475,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6818,6 +7487,8 @@ - _In_ DWORD ClassInstallParamsSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6835,6 +7506,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6842,9 +7515,11 @@ - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, - _In_ PSP_DRVINFO_DATA_A DriverInfoData, -- _Out_ PSP_DRVINSTALL_PARAMS DriverInstallParams -- ); -- -+ _Inout_ PSP_DRVINSTALL_PARAMS DriverInstallParams -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6852,7 +7527,7 @@ - _In_ HDEVINFO DeviceInfoSet, - _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, - _In_ PSP_DRVINFO_DATA_W DriverInfoData, -- _Out_ PSP_DRVINSTALL_PARAMS DriverInstallParams -+ _Inout_ PSP_DRVINSTALL_PARAMS DriverInstallParams - ); - - #ifdef UNICODE -@@ -6862,6 +7537,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6872,6 +7549,8 @@ - _In_ PSP_DRVINSTALL_PARAMS DriverInstallParams - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6889,17 +7568,21 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiLoadClassIcon( - _In_ CONST GUID *ClassGuid, -- _Out_opt_ HICON *LargeIcon, -+ _Out_opt_ _Win32_RAIIFree_(DestroyIcon, -1, 0) HICON *LargeIcon, - _Out_opt_ PINT MiniIconIndex - ); - - #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINSETUPAPI - BOOL - WINAPI -@@ -6909,7 +7592,7 @@ - _In_ UINT cxIcon, - _In_ UINT cyIcon, - _In_ DWORD Flags, -- _Out_ HICON *hIcon -+ _Out_ _Win32_RAIIFree_(DestroyIcon, -1, 0) HICON *hIcon - ); - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN -@@ -6922,6 +7605,7 @@ - #define DMI_BKCOLOR 0x00000002 - #define DMI_USERECT 0x00000004 - -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - INT - WINAPI -@@ -6933,6 +7617,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6942,28 +7628,34 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetClassImageList( -- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData -- ); -- -- -+ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData -+ ); -+ -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetClassImageListExA( -- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData, -+ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData, - _In_opt_ PCSTR MachineName, - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetClassImageListExW( -- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData, -+ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData, - _In_opt_ PCWSTR MachineName, - _Reserved_ PVOID Reserved - ); -@@ -6975,6 +7667,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -6985,6 +7679,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7006,6 +7702,8 @@ - - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7018,6 +7716,8 @@ - _In_ DWORD PropertySheetType - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7054,6 +7754,8 @@ - #define IDI_FORCED_OVL 502 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7063,6 +7765,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7073,6 +7777,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7083,6 +7789,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7100,6 +7808,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7112,6 +7822,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7130,6 +7842,8 @@ - #define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7141,6 +7855,8 @@ - _Out_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7159,6 +7875,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7172,6 +7890,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7192,6 +7912,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7202,6 +7924,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7219,6 +7943,8 @@ - #endif - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7231,6 +7957,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7272,15 +8000,19 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI - SetupDiGetSelectedDevice( - _In_ HDEVINFO DeviceInfoSet, -- _Out_ PSP_DEVINFO_DATA DeviceInfoData -- ); -- -- -+ _Inout_ PSP_DEVINFO_DATA DeviceInfoData -+ ); -+ -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7292,6 +8024,7 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WS03 - -+_Win32_SetLastError_ - WINSETUPAPI - BOOL - WINAPI -@@ -7304,6 +8037,7 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ - WINSETUPAPI - BOOL - WINAPI -@@ -7325,6 +8059,8 @@ - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WS03 - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7337,6 +8073,8 @@ - _Out_opt_ PSTR *Extension - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - WINSETUPAPI - BOOL - WINAPI -@@ -7358,6 +8096,8 @@ - - #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7372,6 +8112,8 @@ - _Reserved_ PVOID Reserved - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7400,6 +8142,8 @@ - // - // SetupEnumInfSections is for low-level parsing of an INF - // -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7411,6 +8155,8 @@ - _Out_opt_ UINT *SizeNeeded - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7519,6 +8265,7 @@ - #endif // use current version of signer info structure - - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7528,6 +8275,7 @@ - _Inout_ PSP_INF_SIGNER_INFO_A InfSignerInfo - ); - -+_Win32_SupportedOS_WindowsXP_ - WINSETUPAPI - BOOL - WINAPI -@@ -7552,6 +8300,8 @@ - // - #define DICUSTOMDEVPROP_MERGE_MULTISZ 0x00000001 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7567,6 +8317,8 @@ - _Out_opt_ PDWORD RequiredSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return != FALSE) - WINSETUPAPI - BOOL -@@ -7604,6 +8356,7 @@ - // - #define SCWMI_CLOBBER_SECURITY 0x00000001 - -+_Win32_SupportedOS_Server2003_ - WINSETUPAPI - BOOL - WINAPI -@@ -7613,6 +8366,7 @@ - _In_ DWORD Flags - ); - -+_Win32_SupportedOS_Server2003_ - WINSETUPAPI - BOOL - WINAPI -@@ -7632,6 +8386,316 @@ - #endif // _SETUPAPI_VER >= _WIN32_WINNT_WS03 - - -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(SP_COPY_STYLE, unsigned long, -+ SP_COPY_DELETESOURCE, -+ SP_COPY_REPLACEONLY, -+ SP_COPY_NEWER, -+ SP_COPY_NEWER_OR_SAME, -+ SP_COPY_NOOVERWRITE, -+ SP_COPY_NODECOMP, -+ SP_COPY_LANGUAGEAWARE, -+ SP_COPY_SOURCE_ABSOLUTE, -+ SP_COPY_SOURCEPATH_ABSOLUTE, -+ SP_COPY_IN_USE_NEEDS_REBOOT, -+ SP_COPY_FORCE_IN_USE, -+ SP_COPY_NOSKIP, -+ SP_COPY_FORCE_NOOVERWRITE, -+ SP_COPY_FORCE_NEWER, -+ SP_COPY_WARNIFSKIP, -+ SP_COPY_NOBROWSE, -+ SP_COPY_NEWER_ONLY, -+ SP_COPY_RESERVED, -+ SP_COPY_OEMINF_CATALOG_ONLY, -+ SP_COPY_REPLACE_BOOT_FILE, -+ SP_COPY_NOPRUNE, -+ SP_COPY_OEM_F6_INF, -+ SP_COPY_ALREADYDECOMP, -+ SP_COPY_WINDOWS_SIGNED, -+ SP_COPY_PNPLOCKED, -+ SP_COPY_IN_USE_TRY_RENAME, -+ SP_COPY_INBOX_INF, -+ SP_COPY_HARDLINK); -+ -+_Win32_FlagsEnum_(INF_STYLE, unsigned long, -+ INF_STYLE_NONE, -+ INF_STYLE_OLDNT, -+ INF_STYLE_WIN4, -+ INF_STYLE_CACHE_ENABLE, -+ INF_STYLE_CACHE_DISABLE, -+ INF_STYLE_CACHE_IGNORE); -+ -+_Win32_FlagsEnum_(SETUPSCANFILEQUEUE_FLAGS, unsigned long, -+ SPQ_SCAN_FILE_PRESENCE, -+ SPQ_SCAN_FILE_VALIDITY, -+ SPQ_SCAN_USE_CALLBACK, -+ SPQ_SCAN_USE_CALLBACKEX, -+ SPQ_SCAN_INFORM_USER, -+ SPQ_SCAN_PRUNE_COPY_QUEUE, -+ SPQ_SCAN_USE_CALLBACK_SIGNERINFO, -+ SPQ_SCAN_PRUNE_DELREN, -+ SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE, -+ SPQ_SCAN_FILE_COMPARISON, -+ SPQ_SCAN_ACTIVATE_DRP, -+ SPQ_SCAN_USE_OEM_CATALOGS); -+ -+_Win32_FlagsEnum_(SPSVCINST_FLAGS, unsigned long, -+ SPSVCINST_TAGTOFRONT, -+ SPSVCINST_ASSOCSERVICE, -+ SPSVCINST_DELETEEVENTLOGENTRY, -+ SPSVCINST_NOCLOBBER_DISPLAYNAME, -+ SPSVCINST_NOCLOBBER_STARTTYPE, -+ SPSVCINST_NOCLOBBER_ERRORCONTROL, -+ SPSVCINST_NOCLOBBER_LOADORDERGROUP, -+ SPSVCINST_NOCLOBBER_DEPENDENCIES, -+ SPSVCINST_NOCLOBBER_DESCRIPTION, -+ SPSVCINST_STOPSERVICE, -+ SPSVCINST_CLOBBER_SECURITY, -+ SPSVCINST_STARTSERVICE, -+ SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES, -+ SPSVCINST_NOCLOBBER_TRIGGERS, -+ SPSVCINST_NOCLOBBER_SERVICESIDTYPE, -+ SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART, -+ SPSVCINST_UNIQUE_NAME, -+ SPSVCINST_NOCLOBBER_FAILUREACTIONS, -+ SPSVCINST_NOCLOBBER_BOOTFLAGS); -+ -+_Win32_Enum_(SETUP_DI_REGISTRY_PROPERTY, unsigned long, -+ SPDRP_DEVICEDESC, -+ SPDRP_HARDWAREID, -+ SPDRP_COMPATIBLEIDS, -+ SPDRP_UNUSED0, -+ SPDRP_SERVICE, -+ SPDRP_UNUSED1, -+ SPDRP_UNUSED2, -+ SPDRP_CLASS, -+ SPDRP_CLASSGUID, -+ SPDRP_DRIVER, -+ SPDRP_CONFIGFLAGS, -+ SPDRP_MFG, -+ SPDRP_FRIENDLYNAME, -+ SPDRP_LOCATION_INFORMATION, -+ SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, -+ SPDRP_CAPABILITIES, -+ SPDRP_UI_NUMBER, -+ SPDRP_UPPERFILTERS, -+ SPDRP_LOWERFILTERS, -+ SPDRP_BUSTYPEGUID, -+ SPDRP_LEGACYBUSTYPE, -+ SPDRP_BUSNUMBER, -+ SPDRP_ENUMERATOR_NAME, -+ SPDRP_SECURITY, -+ SPDRP_SECURITY_SDS, -+ SPDRP_DEVTYPE, -+ SPDRP_EXCLUSIVE, -+ SPDRP_CHARACTERISTICS, -+ SPDRP_ADDRESS, -+ SPDRP_UI_NUMBER_DESC_FORMAT, -+ SPDRP_DEVICE_POWER_DATA, -+ SPDRP_REMOVAL_POLICY, -+ SPDRP_REMOVAL_POLICY_HW_DEFAULT, -+ SPDRP_REMOVAL_POLICY_OVERRIDE, -+ SPDRP_INSTALL_STATE, -+ SPDRP_LOCATION_PATHS, -+ SPDRP_BASE_CONTAINERID, -+ SPDRP_MAXIMUM_PROPERTY); -+ -+_Win32_FlagsEnum_(SETUP_DI_DEVICE_CREATION_FLAGS, unsigned long, -+ DICD_GENERATE_ID, -+ DICD_INHERIT_CLASSDRVS); -+ -+_Win32_FlagsEnum_(SETUP_DI_DRIVER_INSTALL_FLAGS, unsigned long, -+ DNF_DUPDESC, -+ DNF_OLDDRIVER, -+ DNF_EXCLUDEFROMLIST, -+ DNF_NODRIVER, -+ DNF_LEGACYINF, -+ DNF_CLASS_DRIVER, -+ DNF_COMPATIBLE_DRIVER, -+ DNF_INET_DRIVER, -+ DNF_UNUSED1, -+ DNF_UNUSED2, -+ DNF_OLD_INET_DRIVER, -+ DNF_BAD_DRIVER, -+ DNF_DUPPROVIDER, -+ DNF_INF_IS_SIGNED, -+ DNF_OEM_F6_INF, -+ DNF_DUPDRIVERVER, -+ DNF_BASIC_DRIVER, -+ DNF_AUTHENTICODE_SIGNED, -+ DNF_INSTALLEDDRIVER, -+ DNF_ALWAYSEXCLUDEFROMLIST, -+ DNF_INBOX_DRIVER, -+ DNF_REQUESTADDITIONALSOFTWARE, -+ DNF_UNUSED_22, -+ DNF_UNUSED_23, -+ DNF_UNUSED_24, -+ DNF_UNUSED_25, -+ DNF_UNUSED_26, -+ DNF_UNUSED_27, -+ DNF_UNUSED_28, -+ DNF_UNUSED_29, -+ DNF_UNUSED_30, -+ DNF_UNUSED_31); -+ -+_Win32_Enum_(SETUP_DI_STATE_CHANGE, unsigned long, -+ DICS_ENABLE, -+ DICS_DISABLE, -+ DICS_PROPCHANGE, -+ DICS_START, -+ DICS_STOP); -+ -+_Win32_Enum_(SETUP_DI_PROPERTY_CHANGE_SCOPE, unsigned long, -+ DICS_FLAG_GLOBAL, -+ DICS_FLAG_CONFIGSPECIFIC, -+ DICS_FLAG_CONFIGGENERAL); -+ -+_Win32_Enum_(SETUP_DI_REMOVE_DEVICE_SCOPE, unsigned long, -+ DI_REMOVEDEVICE_GLOBAL, -+ DI_REMOVEDEVICE_CONFIGSPECIFIC); -+ -+_Win32_FlagsEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS, unsigned long, -+ DIGCF_DEFAULT, -+ DIGCF_PRESENT, -+ DIGCF_ALLCLASSES, -+ DIGCF_PROFILE, -+ DIGCF_DEVICEINTERFACE, -+ DIGCF_INTERFACEDEVICE); -+ -+_Win32_Enum_(DI_FUNCTION, UINT, -+ DIF_SELECTDEVICE, -+ DIF_INSTALLDEVICE, -+ DIF_ASSIGNRESOURCES, -+ DIF_PROPERTIES, -+ DIF_REMOVE, -+ DIF_FIRSTTIMESETUP, -+ DIF_FOUNDDEVICE, -+ DIF_SELECTCLASSDRIVERS, -+ DIF_VALIDATECLASSDRIVERS, -+ DIF_INSTALLCLASSDRIVERS, -+ DIF_CALCDISKSPACE, -+ DIF_DESTROYPRIVATEDATA, -+ DIF_VALIDATEDRIVER, -+ DIF_DETECT, -+ DIF_INSTALLWIZARD, -+ DIF_DESTROYWIZARDDATA, -+ DIF_PROPERTYCHANGE, -+ DIF_ENABLECLASS, -+ DIF_DETECTVERIFY, -+ DIF_INSTALLDEVICEFILES, -+ DIF_UNREMOVE, -+ DIF_SELECTBESTCOMPATDRV, -+ DIF_ALLOW_INSTALL, -+ DIF_REGISTERDEVICE, -+ DIF_NEWDEVICEWIZARD_PRESELECT, -+ DIF_NEWDEVICEWIZARD_SELECT, -+ DIF_NEWDEVICEWIZARD_PREANALYZE, -+ DIF_NEWDEVICEWIZARD_POSTANALYZE, -+ DIF_NEWDEVICEWIZARD_FINISHINSTALL, -+ DIF_UNUSED1, -+ DIF_INSTALLINTERFACES, -+ DIF_DETECTCANCEL, -+ DIF_REGISTER_COINSTALLERS, -+ DIF_ADDPROPERTYPAGE_ADVANCED, -+ DIF_ADDPROPERTYPAGE_BASIC, -+ DIF_RESERVED1, -+ DIF_TROUBLESHOOTER, -+ DIF_POWERMESSAGEWAKE, -+ DIF_ADDREMOTEPROPERTYPAGE_ADVANCED, -+ DIF_UPDATEDRIVER_UI, -+ DIF_FINISHINSTALL_ACTION, -+ DIF_RESERVED2, -+ DIF_MOVEDEVICE); -+ -+_Win32_FlagsEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS, unsigned long, -+ DI_SHOWOEM, -+ DI_SHOWCOMPAT, -+ DI_SHOWCLASS, -+ DI_SHOWALL, -+ DI_NOVCP, -+ DI_DIDCOMPAT, -+ DI_DIDCLASS, -+ DI_AUTOASSIGNRES, -+ DI_NEEDRESTART, -+ DI_NEEDREBOOT, -+ DI_NOBROWSE, -+ DI_MULTMFGS, -+ DI_DISABLED, -+ DI_GENERALPAGE_ADDED, -+ DI_RESOURCEPAGE_ADDED, -+ DI_PROPERTIES_CHANGE, -+ DI_INF_IS_SORTED, -+ DI_ENUMSINGLEINF, -+ DI_DONOTCALLCONFIGMG, -+ DI_INSTALLDISABLED, -+ DI_COMPAT_FROM_CLASS, -+ DI_CLASSINSTALLPARAMS, -+ DI_NODI_DEFAULTACTION, -+ DI_QUIETINSTALL, -+ DI_NOFILECOPY, -+ DI_FORCECOPY, -+ DI_DRIVERPAGE_ADDED, -+ DI_USECI_SELECTSTRINGS, -+ DI_OVERRIDE_INFFLAGS, -+ DI_PROPS_NOCHANGEUSAGE, -+ DI_NOSELECTICONS, -+ DI_NOWRITE_IDS, -+ DI_UNREMOVEDEVICE_CONFIGSPECIFIC); -+ -+_Win32_FlagsEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX, unsigned long, -+ DI_FLAGSEX_RESERVED2, -+ DI_FLAGSEX_RESERVED3, -+ DI_FLAGSEX_CI_FAILED, -+ DI_FLAGSEX_FINISHINSTALL_ACTION, -+ DI_FLAGSEX_DIDINFOLIST, -+ DI_FLAGSEX_DIDCOMPATINFO, -+ DI_FLAGSEX_FILTERCLASSES, -+ DI_FLAGSEX_SETFAILEDINSTALL, -+ DI_FLAGSEX_DEVICECHANGE, -+ DI_FLAGSEX_ALWAYSWRITEIDS, -+ DI_FLAGSEX_PROPCHANGE_PENDING, -+ DI_FLAGSEX_ALLOWEXCLUDEDDRVS, -+ DI_FLAGSEX_NOUIONQUERYREMOVE, -+ DI_FLAGSEX_USECLASSFORCOMPAT, -+ DI_FLAGSEX_RESERVED4, -+ DI_FLAGSEX_NO_DRVREG_MODIFY, -+ DI_FLAGSEX_IN_SYSTEM_SETUP, -+ DI_FLAGSEX_INET_DRIVER, -+ DI_FLAGSEX_APPENDDRIVERLIST, -+ DI_FLAGSEX_PREINSTALLBACKUP, -+ DI_FLAGSEX_BACKUPONREPLACE, -+ DI_FLAGSEX_DRIVERLIST_FROM_URL, -+ DI_FLAGSEX_RESERVED1, -+ DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS, -+ DI_FLAGSEX_POWERPAGE_ADDED, -+ DI_FLAGSEX_FILTERSIMILARDRIVERS, -+ DI_FLAGSEX_INSTALLEDDRIVER, -+ DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE, -+ DI_FLAGSEX_ALTPLATFORM_DRVSEARCH, -+ DI_FLAGSEX_RESTART_DEVICE_ONLY, -+ DI_FLAGSEX_RECURSIVESEARCH, -+ DI_FLAGSEX_SEARCH_PUBLISHED_INFS); -+ -+_Win32_FlagsEnum_(FILE_COMPRESSION_TYPE, unsigned long, -+ FILE_COMPRESSION_NONE, -+ FILE_COMPRESSION_WINLZA, -+ FILE_COMPRESSION_MSZIP, -+ FILE_COMPRESSION_NTCAB); -+ -+_Win32_Enum_(SETUP_FILE_OPERATION, unsigned long, -+ FILEOP_DELETE, -+ FILEOP_COPY); -+ -+_Win32_Enum_(OEM_SOURCE_MEDIA_TYPE, unsigned long, -+ SPOST_NONE, -+ SPOST_PATH, -+ SPOST_URL); -+ -+_Win32_Enum_(SETUP_DI_DRIVER_TYPE, unsigned long, -+ SPDIT_CLASSDRIVER, -+ SPDIT_COMPATDRIVER); -+#endif -+ - - #ifdef __cplusplus - } + PCWSTR Target; + PCWSTR Source; // not used for delete operations + UINT Win32Error; +- DWORD Flags; // such as SP_COPY_NOSKIP for copy errors ++ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD Flags; // such as SP_COPY_NOSKIP for copy errors + } FILEPATHS_W, *PFILEPATHS_W; + + #ifdef UNICODE +@@ -905,8 +930,8 @@ + // + typedef struct _SP_DEVINSTALL_PARAMS_A { + DWORD cbSize; +- DWORD Flags; +- DWORD FlagsEx; ++ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS) DWORD Flags; ++ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX) DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK InstallMsgHandler; + PVOID InstallMsgHandlerContext; +@@ -918,8 +943,8 @@ + + typedef struct _SP_DEVINSTALL_PARAMS_W { + DWORD cbSize; +- DWORD Flags; +- DWORD FlagsEx; ++ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS) DWORD Flags; ++ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX) DWORD FlagsEx; + HWND hwndParent; + PSP_FILE_CALLBACK InstallMsgHandler; + PVOID InstallMsgHandlerContext; +@@ -1097,7 +1122,7 @@ + // + typedef struct _SP_CLASSINSTALL_HEADER { + DWORD cbSize; +- DI_FUNCTION InstallFunction; ++ _Win32_AssociatedEnum_(DI_FUNCTION) DI_FUNCTION InstallFunction; + } SP_CLASSINSTALL_HEADER, *PSP_CLASSINSTALL_HEADER; + + +@@ -1135,8 +1160,8 @@ + // + typedef struct _SP_PROPCHANGE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; +- DWORD StateChange; +- DWORD Scope; ++ _Win32_AssociatedEnum_(SETUP_DI_STATE_CHANGE) DWORD StateChange; ++ _Win32_AssociatedEnum_(SETUP_DI_PROPERTY_CHANGE_SCOPE) DWORD Scope; + DWORD HwProfile; + } SP_PROPCHANGE_PARAMS, *PSP_PROPCHANGE_PARAMS; + +@@ -1146,7 +1171,7 @@ + // + typedef struct _SP_REMOVEDEVICE_PARAMS { + SP_CLASSINSTALL_HEADER ClassInstallHeader; +- DWORD Scope; ++ _Win32_AssociatedEnum_(SETUP_DI_REMOVE_DEVICE_SCOPE) DWORD Scope; + DWORD HwProfile; + } SP_REMOVEDEVICE_PARAMS, *PSP_REMOVEDEVICE_PARAMS; + +@@ -1573,7 +1598,7 @@ + typedef struct _SP_DRVINSTALL_PARAMS { + DWORD cbSize; + DWORD Rank; +- DWORD Flags; ++ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_INSTALL_FLAGS) DWORD Flags; + DWORD_PTR PrivateData; + DWORD Reserved; + } SP_DRVINSTALL_PARAMS, *PSP_DRVINSTALL_PARAMS; +@@ -1954,7 +1979,101 @@ + #define ERROR_NOT_INSTALLED (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR|0x1000) + + #endif // _SPAPI_ERRORS +- ++_Win32_Enum_(WIN32_ERROR, unsigned long, ++ ERROR_EXPECTED_SECTION_NAME, ++ ERROR_BAD_SECTION_NAME_LINE, ++ ERROR_SECTION_NAME_TOO_LONG, ++ ERROR_GENERAL_SYNTAX, ++ ERROR_WRONG_INF_STYLE, ++ ERROR_SECTION_NOT_FOUND, ++ ERROR_LINE_NOT_FOUND, ++ ERROR_NO_BACKUP, ++ ERROR_NO_ASSOCIATED_CLASS, ++ ERROR_CLASS_MISMATCH, ++ ERROR_DUPLICATE_FOUND, ++ ERROR_NO_DRIVER_SELECTED, ++ ERROR_KEY_DOES_NOT_EXIST, ++ ERROR_INVALID_DEVINST_NAME, ++ ERROR_INVALID_CLASS, ++ ERROR_DEVINST_ALREADY_EXISTS, ++ ERROR_DEVINFO_NOT_REGISTERED, ++ ERROR_INVALID_REG_PROPERTY, ++ ERROR_NO_INF, ++ ERROR_NO_SUCH_DEVINST, ++ ERROR_CANT_LOAD_CLASS_ICON, ++ ERROR_INVALID_CLASS_INSTALLER, ++ ERROR_DI_DO_DEFAULT, ++ ERROR_DI_NOFILECOPY, ++ ERROR_INVALID_HWPROFILE, ++ ERROR_NO_DEVICE_SELECTED, ++ ERROR_DEVINFO_LIST_LOCKED, ++ ERROR_DEVINFO_DATA_LOCKED, ++ ERROR_DI_BAD_PATH, ++ ERROR_NO_CLASSINSTALL_PARAMS, ++ ERROR_FILEQUEUE_LOCKED, ++ ERROR_BAD_SERVICE_INSTALLSECT, ++ ERROR_NO_CLASS_DRIVER_LIST, ++ ERROR_NO_ASSOCIATED_SERVICE, ++ ERROR_NO_DEFAULT_DEVICE_INTERFACE, ++ ERROR_DEVICE_INTERFACE_ACTIVE, ++ ERROR_DEVICE_INTERFACE_REMOVED, ++ ERROR_BAD_INTERFACE_INSTALLSECT, ++ ERROR_NO_SUCH_INTERFACE_CLASS, ++ ERROR_INVALID_REFERENCE_STRING, ++ ERROR_INVALID_MACHINENAME, ++ ERROR_REMOTE_COMM_FAILURE, ++ ERROR_MACHINE_UNAVAILABLE, ++ ERROR_NO_CONFIGMGR_SERVICES, ++ ERROR_INVALID_PROPPAGE_PROVIDER, ++ ERROR_NO_SUCH_DEVICE_INTERFACE, ++ ERROR_DI_POSTPROCESSING_REQUIRED, ++ ERROR_INVALID_COINSTALLER, ++ ERROR_NO_COMPAT_DRIVERS, ++ ERROR_NO_DEVICE_ICON, ++ ERROR_INVALID_INF_LOGCONFIG, ++ ERROR_DI_DONT_INSTALL, ++ ERROR_INVALID_FILTER_DRIVER, ++ ERROR_NON_WINDOWS_NT_DRIVER, ++ ERROR_NON_WINDOWS_DRIVER, ++ ERROR_NO_CATALOG_FOR_OEM_INF, ++ ERROR_DEVINSTALL_QUEUE_NONNATIVE, ++ ERROR_NOT_DISABLEABLE, ++ ERROR_CANT_REMOVE_DEVINST, ++ ERROR_INVALID_TARGET, ++ ERROR_DRIVER_NONNATIVE, ++ ERROR_IN_WOW64, ++ ERROR_SET_SYSTEM_RESTORE_POINT, ++ ERROR_SCE_DISABLED, ++ ERROR_UNKNOWN_EXCEPTION, ++ ERROR_PNP_REGISTRY_ERROR, ++ ERROR_REMOTE_REQUEST_UNSUPPORTED, ++ ERROR_NOT_AN_INSTALLED_OEM_INF, ++ ERROR_INF_IN_USE_BY_DEVICES, ++ ERROR_DI_FUNCTION_OBSOLETE, ++ ERROR_NO_AUTHENTICODE_CATALOG, ++ ERROR_AUTHENTICODE_DISALLOWED, ++ ERROR_AUTHENTICODE_TRUSTED_PUBLISHER, ++ ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED, ++ ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED, ++ ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH, ++ ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE, ++ ERROR_DEVICE_INSTALLER_NOT_READY, ++ ERROR_DRIVER_STORE_ADD_FAILED, ++ ERROR_DEVICE_INSTALL_BLOCKED, ++ ERROR_DRIVER_INSTALL_BLOCKED, ++ ERROR_WRONG_INF_TYPE, ++ ERROR_FILE_HASH_NOT_IN_CATALOG, ++ ERROR_DRIVER_STORE_DELETE_FAILED, ++ ERROR_UNRECOVERABLE_STACK_OVERFLOW, ++ ERROR_NO_DEFAULT_INTERFACE_DEVICE, ++ ERROR_INTERFACE_DEVICE_ACTIVE, ++ ERROR_INTERFACE_DEVICE_REMOVED, ++ ERROR_NO_SUCH_INTERFACE_DEVICE, ++ ERROR_NOT_INSTALLED); ++ ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -1967,6 +2086,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -1995,6 +2116,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2006,6 +2129,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2024,6 +2149,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2034,6 +2161,8 @@ + _Out_ PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2051,6 +2180,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2063,6 +2194,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2084,6 +2217,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -2096,6 +2231,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -2114,6 +2251,8 @@ + #define SetupGetInfDriverStoreLocation SetupGetInfDriverStoreLocationA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -2124,6 +2263,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -2143,23 +2284,27 @@ + #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupGetInfFileListA( + _In_opt_ PCSTR DirectoryPath, +- _In_ DWORD InfStyle, ++ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, + _Out_writes_opt_(ReturnBufferSize) PSTR ReturnBuffer, + _In_ DWORD ReturnBufferSize, + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupGetInfFileListW( + _In_opt_ PCWSTR DirectoryPath, +- _In_ DWORD InfStyle, ++ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, + _Out_writes_(ReturnBufferSize) PWSTR ReturnBuffer, + _In_ DWORD ReturnBufferSize, + _Out_opt_ PDWORD RequiredSize +@@ -2172,23 +2317,27 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HINF + WINAPI + SetupOpenInfFileW( + _In_ PCWSTR FileName, + _In_opt_ PCWSTR InfClass, +- _In_ DWORD InfStyle, ++ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, + _Out_opt_ PUINT ErrorLine + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HINF + WINAPI + SetupOpenInfFileA( + _In_ PCSTR FileName, + _In_opt_ PCSTR InfClass, +- _In_ DWORD InfStyle, ++ _In_ _Win32_AssociatedEnum_(INF_STYLE) DWORD InfStyle, + _Out_opt_ PUINT ErrorLine + ); + +@@ -2199,6 +2348,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HINF + WINAPI +@@ -2207,6 +2358,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2216,6 +2369,8 @@ + _Out_opt_ PUINT ErrorLine + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2232,6 +2387,7 @@ + #endif + + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + VOID + WINAPI +@@ -2240,6 +2396,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2250,6 +2408,8 @@ + _Out_ PINFCONTEXT Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2267,6 +2427,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2276,6 +2438,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2285,6 +2449,8 @@ + _Out_ PINFCONTEXT ContextOut + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2301,6 +2467,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2311,6 +2479,8 @@ + _Out_ PINFCONTEXT Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2328,6 +2498,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + LONG + WINAPI +@@ -2336,6 +2508,8 @@ + _In_ PCSTR Section + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + LONG + WINAPI +@@ -2351,6 +2525,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2364,6 +2540,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2384,6 +2562,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + DWORD + WINAPI +@@ -2392,6 +2572,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2403,6 +2585,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2421,6 +2605,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2431,6 +2617,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2442,6 +2630,8 @@ + _Out_opt_ LPDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2459,6 +2649,8 @@ + #define SetupGetMultiSzField SetupGetMultiSzFieldA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -2479,6 +2671,8 @@ + // must be freed by the export setupapi!MyFree (NT4+ Win95+) + // or LocalFree (Win2k+) + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + DWORD + WINAPI +@@ -2487,9 +2681,11 @@ + _Out_ PSTR *ActualSourceFileName, + _Out_ PDWORD SourceFileSize, + _Out_ PDWORD TargetFileSize, +- _Out_ PUINT CompressionType +- ); +- ++ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + DWORD + WINAPI +@@ -2498,7 +2694,7 @@ + _Out_ PWSTR *ActualSourceFileName, + _Out_ PDWORD SourceFileSize, + _Out_ PDWORD TargetFileSize, +- _Out_ PUINT CompressionType ++ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType + ); + + #ifdef UNICODE +@@ -2516,6 +2712,8 @@ + // buffer. + // + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2526,9 +2724,11 @@ + _Out_opt_ PDWORD RequiredBufferLen, + _Out_ PDWORD SourceFileSize, + _Out_ PDWORD TargetFileSize, +- _Out_ PUINT CompressionType +- ); +- ++ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2539,7 +2739,7 @@ + _Out_opt_ PDWORD RequiredBufferLen, + _Out_ PDWORD SourceFileSize, + _Out_ PDWORD TargetFileSize, +- _Out_ PUINT CompressionType ++ _Out_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType + ); + + #ifdef UNICODE +@@ -2559,22 +2759,26 @@ + #define FILE_COMPRESSION_NTCAB 3 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + DWORD + WINAPI + SetupDecompressOrCopyFileA( + _In_ PCSTR SourceFileName, + _In_ PCSTR TargetFileName, +- _In_opt_ PUINT CompressionType +- ); +- ++ _In_opt_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + DWORD + WINAPI + SetupDecompressOrCopyFileW( + _In_ PCWSTR SourceFileName, + _In_ PCWSTR TargetFileName, +- _In_opt_ PUINT CompressionType ++ _In_opt_ _Win32_AssociatedEnum_(FILE_COMPRESSION_TYPE) PUINT CompressionType + ); + + #ifdef UNICODE +@@ -2584,6 +2788,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2597,6 +2803,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2617,6 +2825,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2629,6 +2839,8 @@ + _In_ UINT RoundingFactor + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2648,6 +2860,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2660,6 +2874,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2692,6 +2908,8 @@ + #define SRCLIST_NOSTRIPPLATFORM 0x00000400 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2701,6 +2919,8 @@ + _In_ UINT SourceCount + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2717,6 +2937,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2725,6 +2947,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2733,6 +2957,8 @@ + _In_ PCSTR Source + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2748,6 +2974,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2756,6 +2984,8 @@ + _In_ PCSTR Source + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2771,6 +3001,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2780,6 +3012,8 @@ + _Out_ PUINT Count + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2796,6 +3030,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2804,6 +3040,8 @@ + _In_ UINT Count + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -2819,6 +3057,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2835,6 +3075,8 @@ + _Out_opt_ PDWORD PathRequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2858,6 +3100,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2875,6 +3119,8 @@ + _Out_opt_ PDWORD PathRequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2899,6 +3145,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2911,6 +3159,8 @@ + _In_ DWORD Style + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2930,6 +3180,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2941,6 +3193,8 @@ + _In_ DWORD Style + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2958,6 +3212,8 @@ + #define SetupDeleteError SetupDeleteErrorA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -2970,6 +3226,8 @@ + _In_ DWORD Style + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -3021,6 +3279,8 @@ + #define DPROMPT_OUTOFMEMORY 4 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3030,6 +3290,8 @@ + _In_opt_ PCSTR Directory + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3046,6 +3308,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3058,6 +3322,8 @@ + _Reserved_ PVOID Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3082,6 +3348,8 @@ + #define SETDIRID_NOT_FULL_PATH 0x00000001 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3094,6 +3362,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3133,6 +3403,8 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3142,11 +3414,13 @@ + _In_opt_ PCSTR SourceFile, + _In_opt_ PCSTR SourcePathRoot, + _In_opt_ PCSTR DestinationName, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _In_opt_ PSP_FILE_CALLBACK_A CopyMsgHandler, + _In_opt_ PVOID Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3156,7 +3430,7 @@ + _In_opt_ PCWSTR SourceFile, + _In_opt_ PCWSTR SourcePathRoot, + _In_opt_ PCWSTR DestinationName, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _In_opt_ PSP_FILE_CALLBACK_W CopyMsgHandler, + _In_opt_ PVOID Context + ); +@@ -3167,6 +3441,8 @@ + #define SetupInstallFile SetupInstallFileA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3176,12 +3452,14 @@ + _In_opt_ PCSTR SourceFile, + _In_opt_ PCSTR SourcePathRoot, + _In_opt_ PCSTR DestinationName, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _In_opt_ PSP_FILE_CALLBACK_A CopyMsgHandler, + _In_opt_ PVOID Context, + _Out_ PBOOL FileWasInUse + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3191,7 +3469,7 @@ + _In_opt_ PCWSTR SourceFile, + _In_opt_ PCWSTR SourcePathRoot, + _In_opt_ PCWSTR DestinationName, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _In_opt_ PSP_FILE_CALLBACK_W CopyMsgHandler, + _In_opt_ PVOID Context, + _Out_ PBOOL FileWasInUse +@@ -3271,6 +3549,8 @@ + #endif //_SETUPAPI_VER >= _WIN32_WINNT_WINXP + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HSPFILEQ + WINAPI +@@ -3278,6 +3558,7 @@ + VOID + ); + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3285,6 +3566,8 @@ + _In_ HSPFILEQ QueueHandle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3294,6 +3577,8 @@ + _In_opt_ PCSTR AlternateDefaultCatalogFile + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3310,6 +3595,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3317,6 +3604,8 @@ + _In_opt_ PCSTR Override + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3331,6 +3620,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3346,6 +3637,8 @@ + _In_ DWORD CopyStyle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3368,6 +3661,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3375,6 +3670,8 @@ + _In_ PSP_FILE_COPY_PARAMS_A CopyParams + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3389,6 +3686,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3401,6 +3700,8 @@ + _In_ DWORD CopyStyle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3420,6 +3721,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3432,6 +3735,8 @@ + _In_ DWORD CopyStyle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3451,6 +3756,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3460,6 +3767,8 @@ + _In_opt_ PCSTR PathPart2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3476,6 +3785,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3486,6 +3797,8 @@ + _In_ PCSTR Section + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3503,6 +3816,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3514,6 +3829,8 @@ + _In_ PCSTR TargetFilename + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3532,6 +3849,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3542,6 +3861,8 @@ + _In_ PCSTR Section + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3559,6 +3880,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3569,6 +3892,8 @@ + _In_ PVOID Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3586,24 +3911,28 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupScanFileQueueA( + _In_ HSPFILEQ FileQueue, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SETUPSCANFILEQUEUE_FLAGS) DWORD Flags, + _In_opt_ HWND Window, + _In_opt_ PSP_FILE_CALLBACK_A CallbackRoutine, + _In_opt_ PVOID CallbackContext, + _Out_ PDWORD Result + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupScanFileQueueW( + _In_ HSPFILEQ FileQueue, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SETUPSCANFILEQUEUE_FLAGS) DWORD Flags, + _In_opt_ HWND Window, + _In_opt_ PSP_FILE_CALLBACK_W CallbackRoutine, + _In_opt_ PVOID CallbackContext, +@@ -3655,6 +3984,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3664,6 +3995,8 @@ + _Out_ PUINT NumOperations + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3672,6 +4005,8 @@ + _Out_ PDWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3719,28 +4054,32 @@ + #define SPOST_URL 2 + #define SPOST_MAX 3 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupCopyOEMInfA( + _In_ PCSTR SourceInfFileName, + _In_opt_ PCSTR OEMSourceMediaLocation, +- _In_ DWORD OEMSourceMediaType, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(OEM_SOURCE_MEDIA_TYPE) DWORD OEMSourceMediaType, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _Out_writes_opt_(DestinationInfFileNameSize) PSTR DestinationInfFileName, + _In_ DWORD DestinationInfFileNameSize, + _Out_opt_ PDWORD RequiredSize, + _Out_opt_ PSTR *DestinationInfFileNameComponent + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupCopyOEMInfW( + _In_ PCWSTR SourceInfFileName, + _In_opt_ PCWSTR OEMSourceMediaLocation, +- _In_ DWORD OEMSourceMediaType, +- _In_ DWORD CopyStyle, ++ _In_ _Win32_AssociatedEnum_(OEM_SOURCE_MEDIA_TYPE) DWORD OEMSourceMediaType, ++ _In_ _Win32_AssociatedEnum_(SP_COPY_STYLE) DWORD CopyStyle, + _Out_writes_opt_(DestinationInfFileNameSize) PWSTR DestinationInfFileName, + _In_ DWORD DestinationInfFileNameSize, + _Out_opt_ PDWORD RequiredSize, +@@ -3770,6 +4109,7 @@ + + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3779,6 +4119,7 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3795,6 +4136,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3810,6 +4153,8 @@ + // + // Disk space list APIs + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HDSKSPC + WINAPI +@@ -3819,6 +4164,8 @@ + _In_ UINT Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HDSKSPC + WINAPI +@@ -3841,6 +4188,8 @@ + #define SPDSL_DISALLOW_NEGATIVE_ADJUST 0x00000002 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HDSKSPC + WINAPI +@@ -3851,6 +4200,8 @@ + _In_ UINT Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HDSKSPC + WINAPI +@@ -3868,6 +4219,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3876,6 +4229,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3886,6 +4241,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3903,6 +4260,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3914,6 +4273,8 @@ + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3932,6 +4293,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3943,6 +4306,8 @@ + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3961,6 +4326,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3968,11 +4335,13 @@ + _In_ HDSKSPC DiskSpace, + _In_ PCSTR TargetFilespec, + _In_ LONGLONG FileSize, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -3980,7 +4349,7 @@ + _In_ HDSKSPC DiskSpace, + _In_ PCWSTR TargetFilespec, + _In_ LONGLONG FileSize, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); +@@ -3992,6 +4361,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4000,11 +4371,13 @@ + _In_ HINF InfHandle, + _In_opt_ HINF ListInfHandle, + _In_ PCSTR SectionName, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4013,7 +4386,7 @@ + _In_ HINF InfHandle, + _In_opt_ HINF ListInfHandle, + _In_ PCWSTR SectionName, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); +@@ -4025,6 +4398,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4037,6 +4412,8 @@ + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4056,24 +4433,28 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupRemoveFromDiskSpaceListA( + _In_ HDSKSPC DiskSpace, + _In_ PCSTR TargetFilespec, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupRemoveFromDiskSpaceListW( + _In_ HDSKSPC DiskSpace, + _In_ PCWSTR TargetFilespec, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); +@@ -4085,6 +4466,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4093,11 +4476,13 @@ + _In_ HINF InfHandle, + _In_opt_ HINF ListInfHandle, + _In_ PCSTR SectionName, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4106,7 +4491,7 @@ + _In_ HINF InfHandle, + _In_opt_ HINF ListInfHandle, + _In_ PCWSTR SectionName, +- _In_ UINT Operation, ++ _In_ _Win32_AssociatedEnum_(SETUP_FILE_OPERATION) UINT Operation, + _Reserved_ PVOID Reserved1, + _Reserved_ UINT Reserved2 + ); +@@ -4118,6 +4503,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4130,6 +4517,8 @@ + _Reserved_ UINT Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4153,6 +4542,8 @@ + // Cabinet APIs + // + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4163,6 +4554,8 @@ + _In_ PVOID Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4180,6 +4573,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + INT + WINAPI +@@ -4197,6 +4592,8 @@ + #define SPFILEQ_REBOOT_IN_PROGRESS 0x00000004 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + PVOID + WINAPI +@@ -4204,6 +4601,7 @@ + _In_opt_ HWND OwnerWindow + ); + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + PVOID + WINAPI +@@ -4215,6 +4613,8 @@ + _Reserved_ PVOID Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + VOID + WINAPI +@@ -4222,6 +4622,8 @@ + _In_ PVOID Context + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -4232,6 +4634,8 @@ + _In_ UINT_PTR Param2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + UINT + WINAPI +@@ -4409,6 +4813,8 @@ + #define FLG_DELPROPERTY_MULTI_SZ_DELSTRING ( 0x00000001 ) + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4426,6 +4832,8 @@ + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4499,6 +4907,8 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4511,6 +4921,8 @@ + _In_ UINT CopyFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4646,22 +5058,26 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WIN10 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupInstallServicesFromInfSectionA( + _In_ HINF InfHandle, + _In_ PCSTR SectionName, +- _In_ DWORD Flags +- ); +- ++ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupInstallServicesFromInfSectionW( + _In_ HINF InfHandle, + _In_ PCWSTR SectionName, +- _In_ DWORD Flags ++ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags + ); + + #ifdef UNICODE +@@ -4671,26 +5087,30 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupInstallServicesFromInfSectionExA( + _In_ HINF InfHandle, + _In_ PCSTR SectionName, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags, + _In_opt_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, + _Reserved_ PVOID Reserved1, + _Reserved_ PVOID Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI + SetupInstallServicesFromInfSectionExW( + _In_ HINF InfHandle, + _In_ PCWSTR SectionName, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SPSVCINST_FLAGS) DWORD Flags, + _In_opt_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, + _Reserved_ PVOID Reserved1, +@@ -4713,6 +5133,7 @@ + // wsprintf(CmdLineBuffer,TEXT("DefaultInstall 132 %s"),InfPath); + // InstallHinfSection(NULL,NULL,CmdLineBuffer,0); + // ++_Win32_SupportedOS_WindowsXP_ + VOID + WINAPI + InstallHinfSectionA( +@@ -4722,6 +5143,7 @@ + _In_ INT ShowCommand + ); + ++_Win32_SupportedOS_WindowsXP_ + VOID + WINAPI + InstallHinfSectionW( +@@ -4746,6 +5168,8 @@ + // + typedef PVOID HSPFILELOG; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HSPFILELOG + WINAPI +@@ -4754,6 +5178,8 @@ + _In_ DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + HSPFILELOG + WINAPI +@@ -4776,6 +5202,8 @@ + #define SPFILELOG_QUERYONLY 0x00000004 // allows non-administrators to read system log + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4784,6 +5212,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4799,6 +5229,8 @@ + _In_ DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4826,6 +5258,8 @@ + #define SPFILELOG_OEMFILE 0x00000001 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4835,6 +5269,8 @@ + _In_opt_ PCSTR TargetFilename + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4863,6 +5299,8 @@ + SetupFileLogMax + } SetupFileLogInfo; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4876,6 +5314,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4905,6 +5345,8 @@ + #define LogSevFatalError 0x00000003 + #define LogSevMaximum 0x00000004 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4912,6 +5354,8 @@ + _In_ BOOL Erase + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4920,6 +5364,8 @@ + _In_ LogSeverity Severity + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -4934,6 +5380,7 @@ + #define SetupLogError SetupLogErrorA + #endif + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + VOID + WINAPI +@@ -4948,6 +5395,7 @@ + #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + + ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + SP_LOG_TOKEN + WINAPI +@@ -4955,6 +5403,7 @@ + VOID + ); + ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + VOID + WINAPI +@@ -4962,6 +5411,7 @@ + _In_ SP_LOG_TOKEN LogToken + ); + ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + VOID + WINAPI +@@ -4973,6 +5423,7 @@ + ... + ); + ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + VOID + WINAPI +@@ -4985,6 +5436,7 @@ + ... + ); + ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + VOID + WINAPI +@@ -5059,6 +5511,7 @@ + // Overriden if SetupAPI is run in non-interactive window session + // + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -5066,6 +5519,7 @@ + _In_ BOOL NonInteractiveFlag + ); + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -5079,9 +5533,11 @@ + // Device Installer APIs + // + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HDEVINFO ++_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO + WINAPI + SetupDiCreateDeviceInfoList( + _In_opt_ CONST GUID *ClassGuid, +@@ -5089,9 +5545,11 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HDEVINFO ++_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO + WINAPI + SetupDiCreateDeviceInfoListExA( + _In_opt_ CONST GUID *ClassGuid, +@@ -5100,9 +5558,11 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HDEVINFO ++_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO + WINAPI + SetupDiCreateDeviceInfoListExW( + _In_opt_ CONST GUID *ClassGuid, +@@ -5118,6 +5578,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5126,20 +5588,24 @@ + _Out_ LPGUID ClassGuid + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetDeviceInfoListDetailA( + _In_ HDEVINFO DeviceInfoSet, +- _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData +- ); +- ++ _Inout_ PSP_DEVINFO_LIST_DETAIL_DATA_A DeviceInfoSetDetailData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetDeviceInfoListDetailW( + _In_ HDEVINFO DeviceInfoSet, +- _Out_ PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData ++ _Inout_ PSP_DEVINFO_LIST_DETAIL_DATA_W DeviceInfoSetDetailData + ); + + #ifdef UNICODE +@@ -5155,6 +5621,8 @@ + #define DICD_GENERATE_ID 0x00000001 + #define DICD_INHERIT_CLASSDRVS 0x00000002 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5164,10 +5632,12 @@ + _In_ CONST GUID *ClassGuid, + _In_opt_ PCSTR DeviceDescription, + _In_opt_ HWND hwndParent, +- _In_ DWORD CreationFlags, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData +- ); +- ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_CREATION_FLAGS) DWORD CreationFlags, ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5177,8 +5647,8 @@ + _In_ CONST GUID *ClassGuid, + _In_opt_ PCWSTR DeviceDescription, + _In_opt_ HWND hwndParent, +- _In_ DWORD CreationFlags, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DEVICE_CREATION_FLAGS) DWORD CreationFlags, ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData + ); + + #ifdef UNICODE +@@ -5194,6 +5664,8 @@ + #define DIOD_INHERIT_CLASSDRVS 0x00000002 + #define DIOD_CANCEL_REMOVE 0x00000004 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5202,9 +5674,11 @@ + _In_ PCSTR DeviceInstanceId, + _In_opt_ HWND hwndParent, + _In_ DWORD OpenFlags, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData +- ); +- ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5213,7 +5687,7 @@ + _In_ PCWSTR DeviceInstanceId, + _In_opt_ HWND hwndParent, + _In_ DWORD OpenFlags, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData + ); + + #ifdef UNICODE +@@ -5223,6 +5697,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5234,6 +5710,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5252,6 +5730,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5261,16 +5741,20 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiEnumDeviceInfo( + _In_ HDEVINFO DeviceInfoSet, + _In_ DWORD MemberIndex, +- _Out_ PSP_DEVINFO_DATA DeviceInfoData +- ); +- +- ++ _Inout_ PSP_DEVINFO_DATA DeviceInfoData ++ ); ++ ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5279,6 +5763,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5287,7 +5773,7 @@ + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, + _In_ CONST GUID *InterfaceClassGuid, + _In_ DWORD MemberIndex, +- _Out_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData ++ _Inout_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData + ); + + // +@@ -5296,6 +5782,8 @@ + #define SetupDiEnumInterfaceDevice SetupDiEnumDeviceInterfaces + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5305,9 +5793,11 @@ + _In_ CONST GUID *InterfaceClassGuid, + _In_opt_ PCSTR ReferenceString, + _In_ DWORD CreationFlags, +- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData +- ); +- ++ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5317,7 +5807,7 @@ + _In_ CONST GUID *InterfaceClassGuid, + _In_opt_ PCWSTR ReferenceString, + _In_ DWORD CreationFlags, +- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData ++ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData + ); + + #ifdef UNICODE +@@ -5343,6 +5833,8 @@ + // + #define DIODI_NO_ADD 0x00000001 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5350,9 +5842,11 @@ + _In_ HDEVINFO DeviceInfoSet, + _In_ PCSTR DevicePath, + _In_ DWORD OpenFlags, +- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData +- ); +- ++ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5360,7 +5854,7 @@ + _In_ HDEVINFO DeviceInfoSet, + _In_ PCWSTR DevicePath, + _In_ DWORD OpenFlags, +- _Out_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData ++ _Inout_opt_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData + ); + + #ifdef UNICODE +@@ -5381,6 +5875,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5388,7 +5884,7 @@ + _In_ HDEVINFO DeviceInfoSet, + _In_ PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData, + _In_ CONST GUID *AliasInterfaceClassGuid, +- _Out_ PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData ++ _Inout_ PSP_DEVICE_INTERFACE_DATA AliasDeviceInterfaceData + ); + + // +@@ -5397,6 +5893,8 @@ + #define SetupDiGetInterfaceDeviceAlias SetupDiGetDeviceInterfaceAlias + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5411,6 +5909,8 @@ + #define SetupDiDeleteInterfaceDeviceData SetupDiDeleteDeviceInterfaceData + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5424,6 +5924,8 @@ + // + #define SetupDiRemoveInterfaceDevice SetupDiRemoveDeviceInterface + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + _At_((LPSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_) + WINSETUPAPI +@@ -5435,9 +5937,11 @@ + _Inout_updates_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_A DeviceInterfaceDetailData, + _In_ DWORD DeviceInterfaceDetailDataSize, + _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_A)) PDWORD RequiredSize, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData +- ); +- ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + _At_((LPWSTR)DeviceInterfaceDetailData->DevicePath, _Post_z_) + WINSETUPAPI +@@ -5449,7 +5953,7 @@ + _Out_writes_bytes_to_opt_(DeviceInterfaceDetailDataSize, *RequiredSize) PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData, + _In_ DWORD DeviceInterfaceDetailDataSize, + _Out_opt_ _Out_range_(>=, sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W)) PDWORD RequiredSize, +- _Out_opt_ PSP_DEVINFO_DATA DeviceInfoData ++ _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData + ); + + #ifdef UNICODE +@@ -5473,6 +5977,8 @@ + // + // Default install handler for DIF_INSTALLINTERFACES. + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5489,6 +5995,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -5511,6 +6019,8 @@ + // + #define SPRDI_FIND_DUPS 0x00000001 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5520,7 +6030,7 @@ + _In_ DWORD Flags, + _In_opt_ PSP_DETSIG_CMPPROC CompareProc, + _In_opt_ PVOID CompareContext, +- _Out_opt_ PSP_DEVINFO_DATA DupDeviceInfoData ++ _Inout_opt_ PSP_DEVINFO_DATA DupDeviceInfoData + ); + + +@@ -5533,16 +6043,20 @@ + #define SPDIT_CLASSDRIVER 0x00000001 + #define SPDIT_COMPATDRIVER 0x00000002 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiBuildDriverInfoList( + _In_ HDEVINFO DeviceInfoSet, + _Inout_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD DriverType +- ); +- +- ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType ++ ); ++ ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5551,26 +6065,30 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiEnumDriverInfoA( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD DriverType, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType, + _In_ DWORD MemberIndex, +- _Out_ PSP_DRVINFO_DATA_A DriverInfoData +- ); +- ++ _Inout_ PSP_DRVINFO_DATA_A DriverInfoData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiEnumDriverInfoW( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD DriverType, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType, + _In_ DWORD MemberIndex, +- _Out_ PSP_DRVINFO_DATA_W DriverInfoData ++ _Inout_ PSP_DRVINFO_DATA_W DriverInfoData + ); + + #ifdef UNICODE +@@ -5580,22 +6098,26 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetSelectedDriverA( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _Out_ PSP_DRVINFO_DATA_A DriverInfoData +- ); +- ++ _Inout_ PSP_DRVINFO_DATA_A DriverInfoData ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetSelectedDriverW( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _Out_ PSP_DRVINFO_DATA_W DriverInfoData ++ _Inout_ PSP_DRVINFO_DATA_W DriverInfoData + ); + + #ifdef UNICODE +@@ -5605,6 +6127,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5614,6 +6138,8 @@ + _Inout_opt_ PSP_DRVINFO_DATA_A DriverInfoData + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5629,6 +6155,8 @@ + #define SetupDiSetSelectedDriver SetupDiSetSelectedDriverA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5641,6 +6169,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5660,13 +6190,15 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiDestroyDriverInfoList( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD DriverType ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_DRIVER_TYPE) DWORD DriverType + ); + + +@@ -5686,26 +6218,30 @@ + #define DIGCF_INTERFACEDEVICE DIGCF_DEVICEINTERFACE + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HDEVINFO ++_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO + WINAPI + SetupDiGetClassDevsA( + _In_opt_ CONST GUID *ClassGuid, + _In_opt_ PCSTR Enumerator, + _In_opt_ HWND hwndParent, +- _In_ DWORD Flags +- ); +- ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HDEVINFO ++_Win32_RAIIFree_(SetupDiDestroyDeviceInfoList, -1, 0) HDEVINFO + WINAPI + SetupDiGetClassDevsW( + _In_opt_ CONST GUID *ClassGuid, + _In_opt_ PCWSTR Enumerator, + _In_opt_ HWND hwndParent, +- _In_ DWORD Flags ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags + ); + + #ifdef UNICODE +@@ -5715,6 +6251,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI + HDEVINFO +@@ -5723,12 +6261,14 @@ + _In_opt_ CONST GUID *ClassGuid, + _In_opt_ PCSTR Enumerator, + _In_opt_ HWND hwndParent, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags, + _In_opt_ HDEVINFO DeviceInfoSet, + _In_opt_ PCSTR MachineName, + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI + HDEVINFO +@@ -5737,7 +6277,7 @@ + _In_opt_ CONST GUID *ClassGuid, + _In_opt_ PCWSTR Enumerator, + _In_opt_ HWND hwndParent, +- _In_ DWORD Flags, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS) DWORD Flags, + _In_opt_ HDEVINFO DeviceInfoSet, + _In_opt_ PCWSTR MachineName, + _Reserved_ PVOID Reserved +@@ -5750,6 +6290,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5761,6 +6303,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5786,6 +6330,8 @@ + #define DIBCI_NOINSTALLCLASS 0x00000001 + #define DIBCI_NODISPLAYCLASS 0x00000002 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -5797,6 +6343,8 @@ + _Out_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -5810,6 +6358,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -5830,6 +6380,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5840,6 +6392,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5857,6 +6411,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5869,6 +6425,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5888,11 +6446,13 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiCallClassInstaller( +- _In_ DI_FUNCTION InstallFunction, ++ _In_ _Win32_AssociatedEnum_(DI_FUNCTION) DI_FUNCTION InstallFunction, + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData + ); +@@ -5901,6 +6461,8 @@ + // + // Default install handler for DIF_SELECTDEVICE + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5913,6 +6475,8 @@ + // + // Default install handler for DIF_SELECTBESTCOMPATDRV + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5925,6 +6489,8 @@ + // + // Default install handler for DIF_INSTALLDEVICE + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5937,6 +6503,8 @@ + // + // Default install handler for DIF_INSTALLDEVICEFILES + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5949,6 +6517,8 @@ + // + // Default install handler for DIF_REGISTER_COINSTALLERS + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5961,6 +6531,7 @@ + // + // Default install handler for DIF_REMOVE + // ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5973,6 +6544,8 @@ + // + // Default install handler for DIF_UNREMOVE + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -5983,6 +6556,7 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WS03 + ++_Win32_SetLastError_ + WINSETUPAPI + BOOL + WINAPI +@@ -5996,6 +6570,8 @@ + // + // Default install handler for DIF_PROPERTYCHANGE + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6005,6 +6581,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6015,6 +6593,8 @@ + _In_opt_ HSPFILEQ FileQueue + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6032,6 +6612,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6045,6 +6627,8 @@ + _Reserved_ PVOID Reserved2 + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6065,9 +6649,11 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiOpenClassRegKey( + _In_opt_ CONST GUID *ClassGuid, +@@ -6081,9 +6667,11 @@ + #define DIOCR_INSTALLER 0x00000001 // class installer registry branch + #define DIOCR_INTERFACE 0x00000002 // interface class registry branch + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiOpenClassRegKeyExA( + _In_opt_ CONST GUID *ClassGuid, +@@ -6093,9 +6681,11 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiOpenClassRegKeyExW( + _In_opt_ CONST GUID *ClassGuid, +@@ -6112,9 +6702,11 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiCreateDeviceInterfaceRegKeyA( + _In_ HDEVINFO DeviceInfoSet, +@@ -6125,9 +6717,11 @@ + _In_opt_ PCSTR InfSectionName + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiCreateDeviceInterfaceRegKeyW( + _In_ HDEVINFO DeviceInfoSet, +@@ -6156,9 +6750,11 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiOpenDeviceInterfaceRegKey( + _In_ HDEVINFO DeviceInfoSet, +@@ -6173,6 +6769,8 @@ + #define SetupDiOpenInterfaceDeviceRegKey SetupDiOpenDeviceInterfaceRegKey + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6196,9 +6794,11 @@ + #define DIREG_DRV 0x00000002 // Open/Create/Delete driver key + #define DIREG_BOTH 0x00000004 // Delete both driver and Device key + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiCreateDevRegKeyA( + _In_ HDEVINFO DeviceInfoSet, +@@ -6210,9 +6810,11 @@ + _In_opt_ PCSTR InfSectionName + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiCreateDevRegKeyW( + _In_ HDEVINFO DeviceInfoSet, +@@ -6231,9 +6833,11 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Check_return_ + WINSETUPAPI +-HKEY ++_Win32_RAIIFree_(RegCloseKey, -1, 0) HKEY + WINAPI + SetupDiOpenDevRegKey( + _In_ HDEVINFO DeviceInfoSet, +@@ -6245,6 +6849,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6256,6 +6862,8 @@ + _In_ DWORD KeyType + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6267,6 +6875,8 @@ + _Out_opt_ PDWORD CurrentlyActiveIndex + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6280,6 +6890,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6301,6 +6913,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6313,6 +6927,8 @@ + _In_ DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != FALSE) + _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) + _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) +@@ -6335,6 +6951,8 @@ + #define SetupDiGetDeviceProperty SetupDiGetDevicePropertyW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6352,6 +6970,8 @@ + #define SetupDiSetDeviceProperty SetupDiSetDevicePropertyW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6364,6 +6984,8 @@ + _In_ DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != FALSE) + _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) + _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) +@@ -6386,6 +7008,8 @@ + #define SetupDiGetDeviceInterfaceProperty SetupDiGetDeviceInterfacePropertyW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6410,6 +7034,8 @@ + #define DICLASSPROP_INSTALLER 0x00000001 // device setup class property + #define DICLASSPROP_INTERFACE 0x00000002 // device interface class property + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6421,6 +7047,8 @@ + _In_ DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6438,6 +7066,8 @@ + #define SetupDiGetClassPropertyKeysEx SetupDiGetClassPropertyKeysExW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != FALSE) + _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) + _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) +@@ -6459,6 +7089,8 @@ + #define SetupDiGetClassProperty SetupDiGetClassPropertyW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != FALSE) + _When_(*PropertyType == DEVPROP_TYPE_STRING, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) + _When_(*PropertyType == DEVPROP_TYPE_STRING_INDIRECT, _At_((PWSTR) PropertyBuffer, _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize))) +@@ -6482,6 +7114,8 @@ + #define SetupDiGetClassPropertyEx SetupDiGetClassPropertyExW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6498,6 +7132,8 @@ + #define SetupDiSetClassProperty SetupDiSetClassPropertyW + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6588,6 +7224,8 @@ + #define SPCRP_CHARACTERISTICS (0x0000001B) // Device Characteristics (R/W) + #define SPCRP_MAXIMUM_PROPERTY (0x0000001C) // Upper bound on ordinals + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + _When_((*PropertyRegDataType == REG_SZ), _At_((PSTR) PropertyBuffer, _Post_valid_)) + _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZSTR) PropertyBuffer, _Post_valid_)) +@@ -6597,13 +7235,15 @@ + SetupDiGetDeviceRegistryPropertyA( + _In_ HDEVINFO DeviceInfoSet, + _In_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD Property, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, + _Out_opt_ PDWORD PropertyRegDataType, + _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer, + _In_ DWORD PropertyBufferSize, + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + _When_((*PropertyRegDataType == REG_SZ), _At_((PWSTR) PropertyBuffer, _Post_valid_)) + _When_((*PropertyRegDataType == REG_MULTI_SZ), _At_((PZZWSTR) PropertyBuffer, _Post_valid_)) +@@ -6613,7 +7253,7 @@ + SetupDiGetDeviceRegistryPropertyW( + _In_ HDEVINFO DeviceInfoSet, + _In_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD Property, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, + _Out_opt_ PDWORD PropertyRegDataType, + _Out_writes_bytes_to_opt_(PropertyBufferSize, *RequiredSize) PBYTE PropertyBuffer, + _In_ DWORD PropertyBufferSize, +@@ -6628,6 +7268,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6643,6 +7285,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6666,24 +7310,28 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiSetDeviceRegistryPropertyA( + _In_ HDEVINFO DeviceInfoSet, + _Inout_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD Property, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, + _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer, + _In_ DWORD PropertyBufferSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiSetDeviceRegistryPropertyW( + _In_ HDEVINFO DeviceInfoSet, + _Inout_ PSP_DEVINFO_DATA DeviceInfoData, +- _In_ DWORD Property, ++ _In_ _Win32_AssociatedEnum_(SETUP_DI_REGISTRY_PROPERTY) DWORD Property, + _In_reads_bytes_opt_(PropertyBufferSize) CONST BYTE *PropertyBuffer, + _In_ DWORD PropertyBufferSize + ); +@@ -6696,6 +7344,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -6708,6 +7358,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -6728,22 +7380,26 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetDeviceInstallParamsA( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _Out_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams +- ); +- ++ _Inout_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetDeviceInstallParamsW( + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, +- _Out_ PSP_DEVINSTALL_PARAMS_W DeviceInstallParams ++ _Inout_ PSP_DEVINSTALL_PARAMS_W DeviceInstallParams + ); + + #ifdef UNICODE +@@ -6752,6 +7408,8 @@ + #define SetupDiGetDeviceInstallParams SetupDiGetDeviceInstallParamsA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6764,6 +7422,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -6783,6 +7443,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6792,6 +7454,8 @@ + _In_ PSP_DEVINSTALL_PARAMS_A DeviceInstallParams + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6808,6 +7472,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6818,6 +7484,8 @@ + _In_ DWORD ClassInstallParamsSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6835,6 +7503,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6842,9 +7512,11 @@ + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, + _In_ PSP_DRVINFO_DATA_A DriverInfoData, +- _Out_ PSP_DRVINSTALL_PARAMS DriverInstallParams +- ); +- ++ _Inout_ PSP_DRVINSTALL_PARAMS DriverInstallParams ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6852,7 +7524,7 @@ + _In_ HDEVINFO DeviceInfoSet, + _In_opt_ PSP_DEVINFO_DATA DeviceInfoData, + _In_ PSP_DRVINFO_DATA_W DriverInfoData, +- _Out_ PSP_DRVINSTALL_PARAMS DriverInstallParams ++ _Inout_ PSP_DRVINSTALL_PARAMS DriverInstallParams + ); + + #ifdef UNICODE +@@ -6862,6 +7534,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6872,6 +7546,8 @@ + _In_ PSP_DRVINSTALL_PARAMS DriverInstallParams + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6889,17 +7565,21 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiLoadClassIcon( + _In_ CONST GUID *ClassGuid, +- _Out_opt_ HICON *LargeIcon, ++ _Out_opt_ _Win32_RAIIFree_(DestroyIcon, -1, 0) HICON *LargeIcon, + _Out_opt_ PINT MiniIconIndex + ); + + #if _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINSETUPAPI + BOOL + WINAPI +@@ -6909,7 +7589,7 @@ + _In_ UINT cxIcon, + _In_ UINT cyIcon, + _In_ DWORD Flags, +- _Out_ HICON *hIcon ++ _Out_ _Win32_RAIIFree_(DestroyIcon, -1, 0) HICON *hIcon + ); + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_LONGHORN +@@ -6922,6 +7602,7 @@ + #define DMI_BKCOLOR 0x00000002 + #define DMI_USERECT 0x00000004 + ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + INT + WINAPI +@@ -6933,6 +7614,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6942,28 +7625,34 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetClassImageList( +- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData +- ); +- +- ++ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData ++ ); ++ ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetClassImageListExA( +- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData, ++ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData, + _In_opt_ PCSTR MachineName, + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetClassImageListExW( +- _Out_ PSP_CLASSIMAGELIST_DATA ClassImageListData, ++ _Inout_ PSP_CLASSIMAGELIST_DATA ClassImageListData, + _In_opt_ PCWSTR MachineName, + _Reserved_ PVOID Reserved + ); +@@ -6975,6 +7664,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -6985,6 +7676,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7006,6 +7699,8 @@ + + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7018,6 +7713,8 @@ + _In_ DWORD PropertySheetType + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7054,6 +7751,8 @@ + #define IDI_FORCED_OVL 502 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7063,6 +7762,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7073,6 +7774,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7083,6 +7786,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7100,6 +7805,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7112,6 +7819,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7130,6 +7839,8 @@ + #define SetupDiClassNameFromGuidEx SetupDiClassNameFromGuidExA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7141,6 +7852,8 @@ + _Out_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7159,6 +7872,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7172,6 +7887,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7192,6 +7909,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7202,6 +7921,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7219,6 +7940,8 @@ + #endif + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7231,6 +7954,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7272,15 +7997,19 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI + SetupDiGetSelectedDevice( + _In_ HDEVINFO DeviceInfoSet, +- _Out_ PSP_DEVINFO_DATA DeviceInfoData +- ); +- +- ++ _Inout_ PSP_DEVINFO_DATA DeviceInfoData ++ ); ++ ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7292,6 +8021,7 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WS03 + ++_Win32_SetLastError_ + WINSETUPAPI + BOOL + WINAPI +@@ -7304,6 +8034,7 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ + WINSETUPAPI + BOOL + WINAPI +@@ -7325,6 +8056,8 @@ + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WS03 + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7337,6 +8070,8 @@ + _Out_opt_ PSTR *Extension + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + WINSETUPAPI + BOOL + WINAPI +@@ -7358,6 +8093,8 @@ + + #if _SETUPAPI_VER >= _WIN32_WINNT_WINXP + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7372,6 +8109,8 @@ + _Reserved_ PVOID Reserved + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7400,6 +8139,8 @@ + // + // SetupEnumInfSections is for low-level parsing of an INF + // ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7411,6 +8152,8 @@ + _Out_opt_ UINT *SizeNeeded + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7519,6 +8262,7 @@ + #endif // use current version of signer info structure + + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7528,6 +8272,7 @@ + _Inout_ PSP_INF_SIGNER_INFO_A InfSignerInfo + ); + ++_Win32_SupportedOS_WindowsXP_ + WINSETUPAPI + BOOL + WINAPI +@@ -7552,6 +8297,8 @@ + // + #define DICUSTOMDEVPROP_MERGE_MULTISZ 0x00000001 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7567,6 +8314,8 @@ + _Out_opt_ PDWORD RequiredSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return != FALSE) + WINSETUPAPI + BOOL +@@ -7604,6 +8353,7 @@ + // + #define SCWMI_CLOBBER_SECURITY 0x00000001 + ++_Win32_SupportedOS_Server2003_ + WINSETUPAPI + BOOL + WINAPI +@@ -7613,6 +8363,7 @@ + _In_ DWORD Flags + ); + ++_Win32_SupportedOS_Server2003_ + WINSETUPAPI + BOOL + WINAPI +@@ -7632,6 +8383,316 @@ + #endif // _SETUPAPI_VER >= _WIN32_WINNT_WS03 + + ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(SP_COPY_STYLE, unsigned long, ++ SP_COPY_DELETESOURCE, ++ SP_COPY_REPLACEONLY, ++ SP_COPY_NEWER, ++ SP_COPY_NEWER_OR_SAME, ++ SP_COPY_NOOVERWRITE, ++ SP_COPY_NODECOMP, ++ SP_COPY_LANGUAGEAWARE, ++ SP_COPY_SOURCE_ABSOLUTE, ++ SP_COPY_SOURCEPATH_ABSOLUTE, ++ SP_COPY_IN_USE_NEEDS_REBOOT, ++ SP_COPY_FORCE_IN_USE, ++ SP_COPY_NOSKIP, ++ SP_COPY_FORCE_NOOVERWRITE, ++ SP_COPY_FORCE_NEWER, ++ SP_COPY_WARNIFSKIP, ++ SP_COPY_NOBROWSE, ++ SP_COPY_NEWER_ONLY, ++ SP_COPY_RESERVED, ++ SP_COPY_OEMINF_CATALOG_ONLY, ++ SP_COPY_REPLACE_BOOT_FILE, ++ SP_COPY_NOPRUNE, ++ SP_COPY_OEM_F6_INF, ++ SP_COPY_ALREADYDECOMP, ++ SP_COPY_WINDOWS_SIGNED, ++ SP_COPY_PNPLOCKED, ++ SP_COPY_IN_USE_TRY_RENAME, ++ SP_COPY_INBOX_INF, ++ SP_COPY_HARDLINK); ++ ++_Win32_FlagsEnum_(INF_STYLE, unsigned long, ++ INF_STYLE_NONE, ++ INF_STYLE_OLDNT, ++ INF_STYLE_WIN4, ++ INF_STYLE_CACHE_ENABLE, ++ INF_STYLE_CACHE_DISABLE, ++ INF_STYLE_CACHE_IGNORE); ++ ++_Win32_FlagsEnum_(SETUPSCANFILEQUEUE_FLAGS, unsigned long, ++ SPQ_SCAN_FILE_PRESENCE, ++ SPQ_SCAN_FILE_VALIDITY, ++ SPQ_SCAN_USE_CALLBACK, ++ SPQ_SCAN_USE_CALLBACKEX, ++ SPQ_SCAN_INFORM_USER, ++ SPQ_SCAN_PRUNE_COPY_QUEUE, ++ SPQ_SCAN_USE_CALLBACK_SIGNERINFO, ++ SPQ_SCAN_PRUNE_DELREN, ++ SPQ_SCAN_FILE_PRESENCE_WITHOUT_SOURCE, ++ SPQ_SCAN_FILE_COMPARISON, ++ SPQ_SCAN_ACTIVATE_DRP, ++ SPQ_SCAN_USE_OEM_CATALOGS); ++ ++_Win32_FlagsEnum_(SPSVCINST_FLAGS, unsigned long, ++ SPSVCINST_TAGTOFRONT, ++ SPSVCINST_ASSOCSERVICE, ++ SPSVCINST_DELETEEVENTLOGENTRY, ++ SPSVCINST_NOCLOBBER_DISPLAYNAME, ++ SPSVCINST_NOCLOBBER_STARTTYPE, ++ SPSVCINST_NOCLOBBER_ERRORCONTROL, ++ SPSVCINST_NOCLOBBER_LOADORDERGROUP, ++ SPSVCINST_NOCLOBBER_DEPENDENCIES, ++ SPSVCINST_NOCLOBBER_DESCRIPTION, ++ SPSVCINST_STOPSERVICE, ++ SPSVCINST_CLOBBER_SECURITY, ++ SPSVCINST_STARTSERVICE, ++ SPSVCINST_NOCLOBBER_REQUIREDPRIVILEGES, ++ SPSVCINST_NOCLOBBER_TRIGGERS, ++ SPSVCINST_NOCLOBBER_SERVICESIDTYPE, ++ SPSVCINST_NOCLOBBER_DELAYEDAUTOSTART, ++ SPSVCINST_UNIQUE_NAME, ++ SPSVCINST_NOCLOBBER_FAILUREACTIONS, ++ SPSVCINST_NOCLOBBER_BOOTFLAGS); ++ ++_Win32_Enum_(SETUP_DI_REGISTRY_PROPERTY, unsigned long, ++ SPDRP_DEVICEDESC, ++ SPDRP_HARDWAREID, ++ SPDRP_COMPATIBLEIDS, ++ SPDRP_UNUSED0, ++ SPDRP_SERVICE, ++ SPDRP_UNUSED1, ++ SPDRP_UNUSED2, ++ SPDRP_CLASS, ++ SPDRP_CLASSGUID, ++ SPDRP_DRIVER, ++ SPDRP_CONFIGFLAGS, ++ SPDRP_MFG, ++ SPDRP_FRIENDLYNAME, ++ SPDRP_LOCATION_INFORMATION, ++ SPDRP_PHYSICAL_DEVICE_OBJECT_NAME, ++ SPDRP_CAPABILITIES, ++ SPDRP_UI_NUMBER, ++ SPDRP_UPPERFILTERS, ++ SPDRP_LOWERFILTERS, ++ SPDRP_BUSTYPEGUID, ++ SPDRP_LEGACYBUSTYPE, ++ SPDRP_BUSNUMBER, ++ SPDRP_ENUMERATOR_NAME, ++ SPDRP_SECURITY, ++ SPDRP_SECURITY_SDS, ++ SPDRP_DEVTYPE, ++ SPDRP_EXCLUSIVE, ++ SPDRP_CHARACTERISTICS, ++ SPDRP_ADDRESS, ++ SPDRP_UI_NUMBER_DESC_FORMAT, ++ SPDRP_DEVICE_POWER_DATA, ++ SPDRP_REMOVAL_POLICY, ++ SPDRP_REMOVAL_POLICY_HW_DEFAULT, ++ SPDRP_REMOVAL_POLICY_OVERRIDE, ++ SPDRP_INSTALL_STATE, ++ SPDRP_LOCATION_PATHS, ++ SPDRP_BASE_CONTAINERID, ++ SPDRP_MAXIMUM_PROPERTY); ++ ++_Win32_FlagsEnum_(SETUP_DI_DEVICE_CREATION_FLAGS, unsigned long, ++ DICD_GENERATE_ID, ++ DICD_INHERIT_CLASSDRVS); ++ ++_Win32_FlagsEnum_(SETUP_DI_DRIVER_INSTALL_FLAGS, unsigned long, ++ DNF_DUPDESC, ++ DNF_OLDDRIVER, ++ DNF_EXCLUDEFROMLIST, ++ DNF_NODRIVER, ++ DNF_LEGACYINF, ++ DNF_CLASS_DRIVER, ++ DNF_COMPATIBLE_DRIVER, ++ DNF_INET_DRIVER, ++ DNF_UNUSED1, ++ DNF_UNUSED2, ++ DNF_OLD_INET_DRIVER, ++ DNF_BAD_DRIVER, ++ DNF_DUPPROVIDER, ++ DNF_INF_IS_SIGNED, ++ DNF_OEM_F6_INF, ++ DNF_DUPDRIVERVER, ++ DNF_BASIC_DRIVER, ++ DNF_AUTHENTICODE_SIGNED, ++ DNF_INSTALLEDDRIVER, ++ DNF_ALWAYSEXCLUDEFROMLIST, ++ DNF_INBOX_DRIVER, ++ DNF_REQUESTADDITIONALSOFTWARE, ++ DNF_UNUSED_22, ++ DNF_UNUSED_23, ++ DNF_UNUSED_24, ++ DNF_UNUSED_25, ++ DNF_UNUSED_26, ++ DNF_UNUSED_27, ++ DNF_UNUSED_28, ++ DNF_UNUSED_29, ++ DNF_UNUSED_30, ++ DNF_UNUSED_31); ++ ++_Win32_Enum_(SETUP_DI_STATE_CHANGE, unsigned long, ++ DICS_ENABLE, ++ DICS_DISABLE, ++ DICS_PROPCHANGE, ++ DICS_START, ++ DICS_STOP); ++ ++_Win32_Enum_(SETUP_DI_PROPERTY_CHANGE_SCOPE, unsigned long, ++ DICS_FLAG_GLOBAL, ++ DICS_FLAG_CONFIGSPECIFIC, ++ DICS_FLAG_CONFIGGENERAL); ++ ++_Win32_Enum_(SETUP_DI_REMOVE_DEVICE_SCOPE, unsigned long, ++ DI_REMOVEDEVICE_GLOBAL, ++ DI_REMOVEDEVICE_CONFIGSPECIFIC); ++ ++_Win32_FlagsEnum_(SETUP_DI_GET_CLASS_DEVS_FLAGS, unsigned long, ++ DIGCF_DEFAULT, ++ DIGCF_PRESENT, ++ DIGCF_ALLCLASSES, ++ DIGCF_PROFILE, ++ DIGCF_DEVICEINTERFACE, ++ DIGCF_INTERFACEDEVICE); ++ ++_Win32_Enum_(DI_FUNCTION, UINT, ++ DIF_SELECTDEVICE, ++ DIF_INSTALLDEVICE, ++ DIF_ASSIGNRESOURCES, ++ DIF_PROPERTIES, ++ DIF_REMOVE, ++ DIF_FIRSTTIMESETUP, ++ DIF_FOUNDDEVICE, ++ DIF_SELECTCLASSDRIVERS, ++ DIF_VALIDATECLASSDRIVERS, ++ DIF_INSTALLCLASSDRIVERS, ++ DIF_CALCDISKSPACE, ++ DIF_DESTROYPRIVATEDATA, ++ DIF_VALIDATEDRIVER, ++ DIF_DETECT, ++ DIF_INSTALLWIZARD, ++ DIF_DESTROYWIZARDDATA, ++ DIF_PROPERTYCHANGE, ++ DIF_ENABLECLASS, ++ DIF_DETECTVERIFY, ++ DIF_INSTALLDEVICEFILES, ++ DIF_UNREMOVE, ++ DIF_SELECTBESTCOMPATDRV, ++ DIF_ALLOW_INSTALL, ++ DIF_REGISTERDEVICE, ++ DIF_NEWDEVICEWIZARD_PRESELECT, ++ DIF_NEWDEVICEWIZARD_SELECT, ++ DIF_NEWDEVICEWIZARD_PREANALYZE, ++ DIF_NEWDEVICEWIZARD_POSTANALYZE, ++ DIF_NEWDEVICEWIZARD_FINISHINSTALL, ++ DIF_UNUSED1, ++ DIF_INSTALLINTERFACES, ++ DIF_DETECTCANCEL, ++ DIF_REGISTER_COINSTALLERS, ++ DIF_ADDPROPERTYPAGE_ADVANCED, ++ DIF_ADDPROPERTYPAGE_BASIC, ++ DIF_RESERVED1, ++ DIF_TROUBLESHOOTER, ++ DIF_POWERMESSAGEWAKE, ++ DIF_ADDREMOTEPROPERTYPAGE_ADVANCED, ++ DIF_UPDATEDRIVER_UI, ++ DIF_FINISHINSTALL_ACTION, ++ DIF_RESERVED2, ++ DIF_MOVEDEVICE); ++ ++_Win32_FlagsEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS, unsigned long, ++ DI_SHOWOEM, ++ DI_SHOWCOMPAT, ++ DI_SHOWCLASS, ++ DI_SHOWALL, ++ DI_NOVCP, ++ DI_DIDCOMPAT, ++ DI_DIDCLASS, ++ DI_AUTOASSIGNRES, ++ DI_NEEDRESTART, ++ DI_NEEDREBOOT, ++ DI_NOBROWSE, ++ DI_MULTMFGS, ++ DI_DISABLED, ++ DI_GENERALPAGE_ADDED, ++ DI_RESOURCEPAGE_ADDED, ++ DI_PROPERTIES_CHANGE, ++ DI_INF_IS_SORTED, ++ DI_ENUMSINGLEINF, ++ DI_DONOTCALLCONFIGMG, ++ DI_INSTALLDISABLED, ++ DI_COMPAT_FROM_CLASS, ++ DI_CLASSINSTALLPARAMS, ++ DI_NODI_DEFAULTACTION, ++ DI_QUIETINSTALL, ++ DI_NOFILECOPY, ++ DI_FORCECOPY, ++ DI_DRIVERPAGE_ADDED, ++ DI_USECI_SELECTSTRINGS, ++ DI_OVERRIDE_INFFLAGS, ++ DI_PROPS_NOCHANGEUSAGE, ++ DI_NOSELECTICONS, ++ DI_NOWRITE_IDS, ++ DI_UNREMOVEDEVICE_CONFIGSPECIFIC); ++ ++_Win32_FlagsEnum_(SETUP_DI_DEVICE_INSTALL_FLAGS_EX, unsigned long, ++ DI_FLAGSEX_RESERVED2, ++ DI_FLAGSEX_RESERVED3, ++ DI_FLAGSEX_CI_FAILED, ++ DI_FLAGSEX_FINISHINSTALL_ACTION, ++ DI_FLAGSEX_DIDINFOLIST, ++ DI_FLAGSEX_DIDCOMPATINFO, ++ DI_FLAGSEX_FILTERCLASSES, ++ DI_FLAGSEX_SETFAILEDINSTALL, ++ DI_FLAGSEX_DEVICECHANGE, ++ DI_FLAGSEX_ALWAYSWRITEIDS, ++ DI_FLAGSEX_PROPCHANGE_PENDING, ++ DI_FLAGSEX_ALLOWEXCLUDEDDRVS, ++ DI_FLAGSEX_NOUIONQUERYREMOVE, ++ DI_FLAGSEX_USECLASSFORCOMPAT, ++ DI_FLAGSEX_RESERVED4, ++ DI_FLAGSEX_NO_DRVREG_MODIFY, ++ DI_FLAGSEX_IN_SYSTEM_SETUP, ++ DI_FLAGSEX_INET_DRIVER, ++ DI_FLAGSEX_APPENDDRIVERLIST, ++ DI_FLAGSEX_PREINSTALLBACKUP, ++ DI_FLAGSEX_BACKUPONREPLACE, ++ DI_FLAGSEX_DRIVERLIST_FROM_URL, ++ DI_FLAGSEX_RESERVED1, ++ DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS, ++ DI_FLAGSEX_POWERPAGE_ADDED, ++ DI_FLAGSEX_FILTERSIMILARDRIVERS, ++ DI_FLAGSEX_INSTALLEDDRIVER, ++ DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE, ++ DI_FLAGSEX_ALTPLATFORM_DRVSEARCH, ++ DI_FLAGSEX_RESTART_DEVICE_ONLY, ++ DI_FLAGSEX_RECURSIVESEARCH, ++ DI_FLAGSEX_SEARCH_PUBLISHED_INFS); ++ ++_Win32_FlagsEnum_(FILE_COMPRESSION_TYPE, unsigned long, ++ FILE_COMPRESSION_NONE, ++ FILE_COMPRESSION_WINLZA, ++ FILE_COMPRESSION_MSZIP, ++ FILE_COMPRESSION_NTCAB); ++ ++_Win32_Enum_(SETUP_FILE_OPERATION, unsigned long, ++ FILEOP_DELETE, ++ FILEOP_COPY); ++ ++_Win32_Enum_(OEM_SOURCE_MEDIA_TYPE, unsigned long, ++ SPOST_NONE, ++ SPOST_PATH, ++ SPOST_URL); ++ ++_Win32_Enum_(SETUP_DI_DRIVER_TYPE, unsigned long, ++ SPDIT_CLASSDRIVER, ++ SPDIT_COMPATDRIVER); ++#endif ++ + + #ifdef __cplusplus + } diff --git a/generation/WinSDK/patches/um/WinHvPlatformDefs.h.patch b/generation/WinSDK/patches/um/WinHvPlatformDefs.h.patch deleted file mode 100644 index dc6fc2b9b..000000000 --- a/generation/WinSDK/patches/um/WinHvPlatformDefs.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/WinHvPlatformDefs.h b/um/WinHvPlatformDefs.h ---- a/um/WinHvPlatformDefs.h -+++ b/um/WinHvPlatformDefs.h -@@ -2199,6 +2199,9 @@ - // - - typedef VOID* WHV_PARTITION_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WHV_PARTITION_HANDLE WHV_PARTITION_HANDLE; -+#endif - - typedef enum WHV_PARTITION_PROPERTY_CODE - { diff --git a/generation/WinSDK/patches/um/amsi.idl.patch b/generation/WinSDK/patches/um/amsi.idl.patch index e2c9570f6..001698cb9 100644 --- a/generation/WinSDK/patches/um/amsi.idl.patch +++ b/generation/WinSDK/patches/um/amsi.idl.patch @@ -19,14 +19,12 @@ index f072bc93..b9c518f1 100644 import "oaidl.idl"; import "ocidl.idl"; -@@ -311,23 +316,35 @@ +@@ -311,23 +316,33 @@ cpp_quote("EXTERN_C const CLSID CLSID_Antimalware;") cpp_quote("") cpp_quote("DECLARE_HANDLE(HAMSICONTEXT);") -+cpp_quote("/* Win32Metadata: type ::HAMSICONTEXT => NativeTypedef */") cpp_quote("DECLARE_HANDLE(HAMSISESSION);") -cpp_quote("") -+cpp_quote("/* Win32Metadata: type ::HAMSISESSION => NativeTypedef */") +cpp_quote("") +cpp_quote("") +cpp_quote("/* Win32Metadata: function ::AmsiInitialize => SupportedOSPlatform(\"windows10.0.10240\") */") @@ -56,7 +54,7 @@ index f072bc93..b9c518f1 100644 cpp_quote("STDAPI AmsiScanBuffer(") cpp_quote(" _In_ HAMSICONTEXT amsiContext,") cpp_quote(" _In_reads_bytes_(length) PVOID buffer,") -@@ -343,6 +360,8 @@ +@@ -343,6 +358,8 @@ cpp_quote(" _In_opt_ LPCWSTR contentName,") cpp_quote(" _Out_ AMSI_RESULT* result);") cpp_quote("") diff --git a/generation/WinSDK/patches/um/appmodel.h.patch b/generation/WinSDK/patches/um/appmodel.h.patch index ee15089e9..58b5329f3 100644 --- a/generation/WinSDK/patches/um/appmodel.h.patch +++ b/generation/WinSDK/patches/um/appmodel.h.patch @@ -583,17 +583,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h _Out_opt_ UINT32* count ); -@@ -704,6 +739,9 @@ - #if !defined(__PACKAGEDEPENDENCY_CONTEXT_DEFINED__) - #define __PACKAGEDEPENDENCY_CONTEXT_DEFINED__ - DECLARE_HANDLE(PACKAGEDEPENDENCY_CONTEXT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PACKAGEDEPENDENCY_CONTEXT PACKAGEDEPENDENCY_CONTEXT; -+#endif - #endif // !defined(__PACKAGEDEPENDENCY_CONTEXT_DEFINED__) - - /// Define a package dependency. The criteria for a PackageDependency -@@ -1090,7 +1128,7 @@ +@@ -1090,7 +1125,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -602,7 +592,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetLifecycleManagement( _In_ HANDLE processToken, -@@ -1108,7 +1146,7 @@ +@@ -1108,7 +1143,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -611,7 +601,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetWindowingModel( _In_ HANDLE processToken, -@@ -1124,7 +1162,7 @@ +@@ -1124,7 +1159,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -620,7 +610,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetMediaFoundationCodecLoading( _In_ HANDLE processToken, -@@ -1142,7 +1180,7 @@ +@@ -1142,7 +1177,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -629,7 +619,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetClrCompat( _In_ HANDLE processToken, -@@ -1158,7 +1196,7 @@ +@@ -1158,7 +1193,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -638,7 +628,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetThreadInitializationType( _In_ HANDLE processToken, -@@ -1174,7 +1212,7 @@ +@@ -1174,7 +1209,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -647,7 +637,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetShowDeveloperDiagnostic( _In_ HANDLE processToken, -@@ -1190,7 +1228,7 @@ +@@ -1190,7 +1225,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) @@ -656,7 +646,7 @@ diff --git a/um/appmodel.h b/um/appmodel.h WINAPI AppPolicyGetProcessTerminationMethod( _In_ HANDLE processToken, -@@ -1206,7 +1244,7 @@ +@@ -1206,7 +1241,7 @@ WINBASEAPI _Check_return_ _Success_(return == ERROR_SUCCESS) diff --git a/generation/WinSDK/patches/um/appnotify.h.patch b/generation/WinSDK/patches/um/appnotify.h.patch deleted file mode 100644 index 74a86264d..000000000 --- a/generation/WinSDK/patches/um/appnotify.h.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/um/appnotify.h b/um/appnotify.h ---- a/um/appnotify.h -+++ b/um/appnotify.h -@@ -40,6 +40,9 @@ - ); - - typedef struct _APPSTATE_REGISTRATION *PAPPSTATE_REGISTRATION; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PAPPSTATE_REGISTRATION PAPPSTATE_REGISTRATION; -+#endif - - APICONTRACT - ULONG -@@ -65,6 +68,9 @@ - ); - - typedef struct _APPCONSTRAIN_REGISTRATION *PAPPCONSTRAIN_REGISTRATION; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PAPPCONSTRAIN_REGISTRATION PAPPCONSTRAIN_REGISTRATION; -+#endif - - APICONTRACT - ULONG diff --git a/generation/WinSDK/patches/um/authz.h.patch b/generation/WinSDK/patches/um/authz.h.patch index a96c496f8..d7332a628 100644 --- a/generation/WinSDK/patches/um/authz.h.patch +++ b/generation/WinSDK/patches/um/authz.h.patch @@ -9,43 +9,7 @@ diff --git a/um/authz.h b/um/authz.h #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -@@ -59,14 +60,35 @@ - #define AUTHZ_COMPUTE_PRIVILEGES 0x8 - - DECLARE_HANDLE(AUTHZ_ACCESS_CHECK_RESULTS_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_ACCESS_CHECK_RESULTS_HANDLE AUTHZ_ACCESS_CHECK_RESULTS_HANDLE; -+#endif - DECLARE_HANDLE(AUTHZ_CLIENT_CONTEXT_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_CLIENT_CONTEXT_HANDLE AUTHZ_CLIENT_CONTEXT_HANDLE; -+#endif - DECLARE_HANDLE(AUTHZ_RESOURCE_MANAGER_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_RESOURCE_MANAGER_HANDLE AUTHZ_RESOURCE_MANAGER_HANDLE; -+#endif - DECLARE_HANDLE(AUTHZ_AUDIT_EVENT_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_AUDIT_EVENT_HANDLE AUTHZ_AUDIT_EVENT_HANDLE; -+#endif - DECLARE_HANDLE(AUTHZ_AUDIT_EVENT_TYPE_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_AUDIT_EVENT_TYPE_HANDLE AUTHZ_AUDIT_EVENT_TYPE_HANDLE; -+#endif - DECLARE_HANDLE(AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE AUTHZ_SECURITY_EVENT_PROVIDER_HANDLE; -+#endif - - #if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) - DECLARE_HANDLE(AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE; -+#endif - #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) - - typedef AUTHZ_ACCESS_CHECK_RESULTS_HANDLE *PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE; -@@ -119,6 +141,10 @@ +@@ -119,6 +120,10 @@ // Structure to return the results of the access check call. // @@ -56,7 +20,7 @@ diff --git a/um/authz.h b/um/authz.h typedef struct _AUTHZ_ACCESS_REPLY { // -@@ -147,7 +173,7 @@ +@@ -147,7 +152,7 @@ #define AUTHZ_GENERATE_SUCCESS_AUDIT 0x1 #define AUTHZ_GENERATE_FAILURE_AUDIT 0x2 @@ -65,7 +29,7 @@ diff --git a/um/authz.h b/um/authz.h // // Array of results for each element of the array. This memory is allocated -@@ -157,6 +183,12 @@ +@@ -157,6 +162,12 @@ _Field_size_(ResultListLength) PDWORD Error; } AUTHZ_ACCESS_REPLY, *PAUTHZ_ACCESS_REPLY; @@ -78,7 +42,7 @@ diff --git a/um/authz.h b/um/authz.h // // Typedefs for callback functions to be provided by the resource manager. -@@ -472,7 +504,7 @@ +@@ -472,7 +483,7 @@ AUTHZ_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE \ ) @@ -87,7 +51,7 @@ diff --git a/um/authz.h b/um/authz.h // // Number of values. -@@ -492,6 +524,12 @@ +@@ -492,6 +503,12 @@ } Values; } AUTHZ_SECURITY_ATTRIBUTE_V1, *PAUTHZ_SECURITY_ATTRIBUTE_V1; @@ -100,7 +64,7 @@ diff --git a/um/authz.h b/um/authz.h // // Set of security attributes. -@@ -541,11 +579,18 @@ +@@ -541,11 +558,18 @@ #define AUTHZ_ACCESS_CHECK_NO_DEEP_COPY_SD 0x00000001 @@ -120,7 +84,7 @@ diff --git a/um/authz.h b/um/authz.h _In_ AUTHZ_CLIENT_CONTEXT_HANDLE hAuthzClientContext, _In_ PAUTHZ_ACCESS_REQUEST pRequest, _In_opt_ AUTHZ_AUDIT_EVENT_HANDLE hAuditEvent, -@@ -557,6 +602,8 @@ +@@ -557,6 +581,8 @@ _Out_opt_ PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE phAccessCheckResults ); @@ -129,7 +93,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -568,6 +615,8 @@ +@@ -568,6 +594,8 @@ _Inout_ PAUTHZ_ACCESS_REPLY pReply ); @@ -138,7 +102,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -583,6 +632,8 @@ +@@ -583,6 +611,8 @@ _In_ PAUTHZ_ACCESS_REPLY pReply ); @@ -147,7 +111,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -597,10 +648,19 @@ +@@ -597,10 +627,19 @@ #define AUTHZ_RM_FLAG_NO_AUDIT 0x1 #define AUTHZ_RM_FLAG_INITIALIZE_UNDER_IMPERSONATION 0x2 #define AUTHZ_RM_FLAG_NO_CENTRAL_ACCESS_POLICIES 0x4 @@ -167,7 +131,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -668,17 +728,21 @@ +@@ -668,17 +707,21 @@ PFN_AUTHZ_FREE_CENTRAL_ACCESS_POLICY pfnFreeCentralAccessPolicy; } AUTHZ_INIT_INFO, *PAUTHZ_INIT_INFO; @@ -190,7 +154,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -689,6 +753,8 @@ +@@ -689,6 +732,8 @@ #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -199,7 +163,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -696,6 +762,8 @@ +@@ -696,6 +741,8 @@ _In_ AUTHZ_RESOURCE_MANAGER_HANDLE hAuthzResourceManager ); @@ -208,7 +172,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -709,6 +777,8 @@ +@@ -709,6 +756,8 @@ _Out_ PAUTHZ_CLIENT_CONTEXT_HANDLE phAuthzClientContext ); @@ -217,7 +181,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -722,6 +792,8 @@ +@@ -722,6 +771,8 @@ _Out_ PAUTHZ_CLIENT_CONTEXT_HANDLE phAuthzClientContext ); @@ -226,7 +190,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -737,6 +809,8 @@ +@@ -737,6 +788,8 @@ #if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -235,7 +199,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -748,6 +822,8 @@ +@@ -748,6 +801,8 @@ #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -244,7 +208,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -764,6 +840,8 @@ +@@ -764,6 +819,8 @@ // API to modify security attributes in AUTHZ client context. // @@ -253,7 +217,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -801,6 +879,8 @@ +@@ -801,6 +858,8 @@ } AUTHZ_CONTEXT_INFORMATION_CLASS; #if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -262,7 +226,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -813,6 +893,8 @@ +@@ -813,6 +872,8 @@ _In_opt_ PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pClaims ); @@ -271,7 +235,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -825,6 +907,8 @@ +@@ -825,6 +886,8 @@ _In_opt_ PTOKEN_GROUPS pSids ); @@ -280,7 +244,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -838,6 +922,8 @@ +@@ -838,6 +901,8 @@ #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -289,7 +253,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -849,6 +935,8 @@ +@@ -849,6 +914,8 @@ _Out_ PVOID Buffer ); @@ -298,7 +262,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -864,6 +952,13 @@ +@@ -864,6 +931,13 @@ #define AUTHZ_NO_SUCCESS_AUDIT 0x00000001 #define AUTHZ_NO_FAILURE_AUDIT 0x00000002 #define AUTHZ_NO_ALLOC_STRINGS 0x00000004 @@ -312,7 +276,7 @@ diff --git a/um/authz.h b/um/authz.h #define AUTHZ_WPD_CATEGORY_FLAG 0x00000010 -@@ -872,11 +967,13 @@ +@@ -872,11 +946,13 @@ AUTHZ_NO_ALLOC_STRINGS | \ AUTHZ_WPD_CATEGORY_FLAG) @@ -327,7 +291,7 @@ diff --git a/um/authz.h b/um/authz.h _In_ AUTHZ_AUDIT_EVENT_TYPE_HANDLE hAuditEventType, _In_ PWSTR szOperationType, _In_ PWSTR szObjectType, -@@ -887,6 +984,8 @@ +@@ -887,6 +963,8 @@ ... ); @@ -336,7 +300,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -917,6 +1016,8 @@ +@@ -917,6 +995,8 @@ AuthzAuditEventInfoAdditionalInfo, } AUTHZ_AUDIT_EVENT_INFORMATION_CLASS; @@ -345,7 +309,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -991,6 +1092,8 @@ +@@ -991,6 +1071,8 @@ #define AUTHZ_FLAG_ALLOW_MULTIPLE_SOURCE_INSTANCES 0x1 @@ -354,7 +318,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -999,6 +1102,8 @@ +@@ -999,6 +1081,8 @@ _In_ PAUTHZ_SOURCE_SCHEMA_REGISTRATION pRegistration ); @@ -363,7 +327,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1008,6 +1113,8 @@ +@@ -1008,6 +1092,8 @@ ); @@ -372,7 +336,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1018,6 +1125,8 @@ +@@ -1018,6 +1104,8 @@ _Inout_ PDWORD pdwLength ); @@ -381,7 +345,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1027,6 +1136,8 @@ +@@ -1027,6 +1115,8 @@ _Out_ PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE phEventProvider ); @@ -390,7 +354,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1035,6 +1146,8 @@ +@@ -1035,6 +1125,8 @@ _Inout_ PAUTHZ_SECURITY_EVENT_PROVIDER_HANDLE phEventProvider ); @@ -399,7 +363,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1047,6 +1160,8 @@ +@@ -1047,6 +1139,8 @@ ... ); @@ -408,7 +372,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1059,6 +1174,8 @@ +@@ -1059,6 +1153,8 @@ ); #if(_WIN32_WINNT >= _WIN32_WINNT_WIN8) @@ -417,7 +381,7 @@ diff --git a/um/authz.h b/um/authz.h _Success_(return != FALSE) AUTHZAPI BOOL -@@ -1069,6 +1186,8 @@ +@@ -1069,6 +1165,8 @@ _In_opt_ PVOID pCallbackContext ); @@ -426,7 +390,7 @@ diff --git a/um/authz.h b/um/authz.h AUTHZAPI BOOL WINAPI -@@ -1076,6 +1195,8 @@ +@@ -1076,6 +1174,8 @@ _In_ AUTHZ_CAP_CHANGE_SUBSCRIPTION_HANDLE hCapChangeSubscription ); diff --git a/generation/WinSDK/patches/um/cfgmgr32.h.patch b/generation/WinSDK/patches/um/cfgmgr32.h.patch index a7227ee0d..10be24920 100644 --- a/generation/WinSDK/patches/um/cfgmgr32.h.patch +++ b/generation/WinSDK/patches/um/cfgmgr32.h.patch @@ -465,16 +465,7 @@ // // Flags for CM_Register_Device_Driver -@@ -1255,5 +1458,8 @@ - // - - DECLARE_HANDLE(HCMNOTIFICATION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCMNOTIFICATION HCMNOTIFICATION; -+#endif - typedef HCMNOTIFICATION *PHCMNOTIFICATION; - -@@ -1388,6 +1594,7 @@ +@@ -1388,6 +1591,7 @@ // Function prototypes //-------------------------------------------------------------- @@ -482,7 +473,7 @@ CMAPI CONFIGRET WINAPI -@@ -1398,6 +1605,7 @@ +@@ -1398,6 +1602,7 @@ _In_ ULONG ulFlags ); @@ -490,7 +481,7 @@ CMAPI CONFIGRET WINAPI -@@ -1418,6 +1626,7 @@ +@@ -1418,6 +1623,7 @@ _In_ ULONG ulFlags ); @@ -498,7 +489,7 @@ CMAPI CONFIGRET WINAPI -@@ -1437,6 +1646,7 @@ +@@ -1437,6 +1643,7 @@ _In_opt_ HMACHINE hMachine ); @@ -506,7 +497,7 @@ CMAPI CONFIGRET WINAPI -@@ -1465,6 +1675,7 @@ +@@ -1465,6 +1672,7 @@ _In_ ULONG ulFlags ); @@ -514,7 +505,7 @@ CMAPI CONFIGRET WINAPI -@@ -1477,6 +1688,7 @@ +@@ -1477,6 +1685,7 @@ _In_ ULONG ulFlags ); @@ -522,7 +513,7 @@ CMAPI CONFIGRET WINAPI -@@ -1498,6 +1710,7 @@ +@@ -1498,6 +1707,7 @@ _Out_ PHMACHINE phMachine ); @@ -530,7 +521,7 @@ CMAPI CONFIGRET WINAPI -@@ -1583,6 +1796,7 @@ +@@ -1583,6 +1793,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -538,7 +529,7 @@ CMAPI CONFIGRET WINAPI -@@ -1612,6 +1826,7 @@ +@@ -1612,6 +1823,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -546,7 +537,7 @@ CMAPI CONFIGRET WINAPI -@@ -1684,6 +1899,7 @@ +@@ -1684,6 +1896,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -554,7 +545,7 @@ CMAPI CONFIGRET WINAPI -@@ -1711,6 +1927,7 @@ +@@ -1711,6 +1924,7 @@ #define CM_Disable_DevInst_Ex CM_Disable_DevNode_Ex @@ -562,7 +553,7 @@ CMAPI CONFIGRET WINAPI -@@ -1733,6 +1950,7 @@ +@@ -1733,6 +1947,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -570,7 +561,7 @@ CMAPI CONFIGRET WINAPI -@@ -1760,22 +1978,24 @@ +@@ -1760,22 +1975,24 @@ #define CM_Enable_DevInst_Ex CM_Enable_DevNode_Ex @@ -599,7 +590,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -1789,6 +2009,7 @@ +@@ -1789,6 +2006,7 @@ _In_ ULONG ulFlags ); @@ -607,7 +598,7 @@ CMAPI CONFIGRET WINAPI -@@ -1810,6 +2031,7 @@ +@@ -1810,6 +2028,7 @@ _In_opt_ HMACHINE hMachine ); @@ -615,7 +606,7 @@ CMAPI CONFIGRET WINAPI -@@ -1853,6 +2075,7 @@ +@@ -1853,6 +2072,7 @@ _In_ ULONG ulFlags ); @@ -623,7 +614,7 @@ CMAPI CONFIGRET WINAPI -@@ -1861,6 +2084,7 @@ +@@ -1861,6 +2081,7 @@ _In_ ULONG ulFlags ); @@ -631,7 +622,7 @@ CMAPI CONFIGRET WINAPI -@@ -1870,6 +2094,7 @@ +@@ -1870,6 +2091,7 @@ _In_opt_ HMACHINE hMachine ); @@ -639,7 +630,7 @@ CMAPI CONFIGRET WINAPI -@@ -1885,6 +2110,7 @@ +@@ -1885,6 +2107,7 @@ _In_ ULONG ulFlags ); @@ -647,7 +638,7 @@ CMAPI CONFIGRET WINAPI -@@ -1894,6 +2120,7 @@ +@@ -1894,6 +2117,7 @@ _In_ ULONG ulFlags ); @@ -655,7 +646,7 @@ CMAPI CONFIGRET WINAPI -@@ -1904,6 +2131,7 @@ +@@ -1904,6 +2128,7 @@ _In_opt_ HMACHINE hMachine ); @@ -663,7 +654,7 @@ CMAPI CONFIGRET WINAPI -@@ -1917,6 +2145,7 @@ +@@ -1917,6 +2142,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -671,7 +662,7 @@ CMAPI CONFIGRET WINAPI -@@ -1932,6 +2161,7 @@ +@@ -1932,6 +2158,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -679,7 +670,7 @@ CMAPI CONFIGRET WINAPI -@@ -2048,6 +2278,7 @@ +@@ -2048,6 +2275,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -687,7 +678,7 @@ CMAPI CONFIGRET WINAPI -@@ -2063,6 +2294,7 @@ +@@ -2063,6 +2291,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -695,7 +686,7 @@ CMAPI CONFIGRET WINAPI -@@ -2089,6 +2321,7 @@ +@@ -2089,6 +2318,7 @@ _In_ ULONG ulFlags ); @@ -703,7 +694,7 @@ CMAPI CONFIGRET WINAPI -@@ -2122,6 +2355,7 @@ +@@ -2122,6 +2352,7 @@ _In_opt_ HMACHINE hMachine ); @@ -711,7 +702,7 @@ CMAPI CONFIGRET WINAPI -@@ -2145,6 +2379,7 @@ +@@ -2145,6 +2376,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -719,7 +710,7 @@ CMAPI CONFIGRET WINAPI -@@ -2155,6 +2390,7 @@ +@@ -2155,6 +2387,7 @@ _In_ ULONG ulFlags ); @@ -727,7 +718,7 @@ CMAPI CONFIGRET WINAPI -@@ -2188,6 +2424,7 @@ +@@ -2188,6 +2421,7 @@ _In_opt_ HMACHINE hMachine ); @@ -735,7 +726,7 @@ CMAPI CONFIGRET WINAPI -@@ -2211,6 +2448,7 @@ +@@ -2211,6 +2445,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -743,7 +734,7 @@ CMAPI CONFIGRET WINAPI -@@ -2220,6 +2458,7 @@ +@@ -2220,6 +2455,7 @@ _In_ ULONG ulFlags ); @@ -751,7 +742,7 @@ CMAPI CONFIGRET WINAPI -@@ -2251,6 +2490,7 @@ +@@ -2251,6 +2487,7 @@ _In_opt_ HMACHINE hMachine ); @@ -759,7 +750,7 @@ CMAPI CONFIGRET WINAPI -@@ -2273,6 +2513,7 @@ +@@ -2273,6 +2510,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -767,7 +758,7 @@ CMAPI CONFIGRET WINAPI -@@ -2288,6 +2529,7 @@ +@@ -2288,6 +2526,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -775,7 +766,7 @@ CMAPI CONFIGRET WINAPI -@@ -2306,6 +2548,7 @@ +@@ -2306,6 +2545,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -783,7 +774,7 @@ CMAPI CONFIGRET WINAPI -@@ -2328,6 +2571,7 @@ +@@ -2328,6 +2568,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -791,7 +782,7 @@ CMAPI CONFIGRET WINAPI -@@ -2351,6 +2595,7 @@ +@@ -2351,6 +2592,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -799,7 +790,7 @@ CMAPI CONFIGRET WINAPI -@@ -2367,6 +2612,7 @@ +@@ -2367,6 +2609,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -807,7 +798,7 @@ CMAPI CONFIGRET WINAPI -@@ -2398,6 +2644,7 @@ +@@ -2398,6 +2641,7 @@ _In_ ULONG ulFlags ); @@ -815,7 +806,7 @@ CMAPI CONFIGRET WINAPI -@@ -2536,12 +2783,13 @@ +@@ -2536,12 +2780,13 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -831,7 +822,7 @@ _In_ DEVINST dnDevInst, _In_ ULONG ulFlags ); -@@ -2554,12 +2802,13 @@ +@@ -2554,12 +2799,13 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -847,7 +838,7 @@ _In_ DEVINST dnDevInst, _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine -@@ -2567,22 +2816,24 @@ +@@ -2567,22 +2813,24 @@ #define CM_Get_DevInst_Status_Ex CM_Get_DevNode_Status_Ex @@ -876,7 +867,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -2657,6 +2908,7 @@ +@@ -2657,6 +2905,7 @@ #define CM_Get_Hardware_Profile_Info_Ex CM_Get_Hardware_Profile_Info_ExA #endif // UNICODE @@ -884,7 +875,7 @@ CMAPI CONFIGRET WINAPI -@@ -2667,6 +2919,7 @@ +@@ -2667,6 +2916,7 @@ _In_ ULONG ulFlags ); @@ -892,7 +883,7 @@ CMAPI CONFIGRET WINAPI -@@ -2677,6 +2930,7 @@ +@@ -2677,6 +2927,7 @@ _In_ ULONG ulFlags ); @@ -900,7 +891,7 @@ CMAPI CONFIGRET WINAPI -@@ -2688,6 +2942,7 @@ +@@ -2688,6 +2939,7 @@ _In_opt_ HMACHINE hMachine ); @@ -908,7 +899,7 @@ CMAPI CONFIGRET WINAPI -@@ -2718,6 +2973,7 @@ +@@ -2718,6 +2970,7 @@ _In_ ULONG ulFlags ); @@ -916,7 +907,7 @@ CMAPI CONFIGRET WINAPI -@@ -2767,6 +3023,7 @@ +@@ -2767,6 +3020,7 @@ #pragma region Desktop Family, OneCore Family, or App Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_APP) @@ -924,7 +915,7 @@ CMAPI CONFIGRET WINAPI -@@ -2775,9 +3032,10 @@ +@@ -2775,9 +3029,10 @@ _In_opt_ DEVINSTID_A pDeviceID, _Out_writes_(BufferLen) PZZSTR Buffer, _In_ ULONG BufferLen, @@ -938,7 +929,7 @@ CMAPI CONFIGRET WINAPI -@@ -2786,7 +3044,7 @@ +@@ -2786,7 +3041,7 @@ _In_opt_ DEVINSTID_W pDeviceID, _Out_writes_(BufferLen) PZZWSTR Buffer, _In_ ULONG BufferLen, @@ -947,7 +938,7 @@ ); #ifdef UNICODE -@@ -2809,7 +3067,7 @@ +@@ -2809,7 +3064,7 @@ _In_opt_ DEVINSTID_A pDeviceID, _Out_writes_(BufferLen) PZZSTR Buffer, _In_ ULONG BufferLen, @@ -956,7 +947,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -2821,7 +3079,7 @@ +@@ -2821,7 +3076,7 @@ _In_opt_ DEVINSTID_W pDeviceID, _Out_writes_(BufferLen) PZZWSTR Buffer, _In_ ULONG BufferLen, @@ -965,7 +956,7 @@ _In_opt_ HMACHINE hMachine ); #ifdef UNICODE -@@ -2836,6 +3094,7 @@ +@@ -2836,6 +3091,7 @@ #pragma region Desktop Family, OneCore Family, or App Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_APP) @@ -973,7 +964,7 @@ CMAPI CONFIGRET WINAPI -@@ -2843,9 +3102,10 @@ +@@ -2843,9 +3099,10 @@ _Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, @@ -987,7 +978,7 @@ CMAPI CONFIGRET WINAPI -@@ -2853,7 +3113,7 @@ +@@ -2853,7 +3110,7 @@ _Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, @@ -996,7 +987,7 @@ ); #ifdef UNICODE -@@ -2875,7 +3135,7 @@ +@@ -2875,7 +3132,7 @@ _Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_A pDeviceID, @@ -1005,7 +996,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -2886,7 +3146,7 @@ +@@ -2886,7 +3143,7 @@ _Out_ PULONG pulLen, _In_ LPGUID InterfaceClassGuid, _In_opt_ DEVINSTID_W pDeviceID, @@ -1014,7 +1005,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -2904,6 +3164,7 @@ +@@ -2904,6 +3161,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1022,7 +1013,7 @@ CMAPI CONFIGRET WINAPI -@@ -2926,6 +3187,7 @@ +@@ -2926,6 +3184,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1030,7 +1021,7 @@ CMAPI CONFIGRET WINAPI -@@ -2949,6 +3211,7 @@ +@@ -2949,6 +3208,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1038,7 +1029,7 @@ CMAPI CONFIGRET WINAPI -@@ -2969,6 +3232,7 @@ +@@ -2969,6 +3229,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1046,7 +1037,7 @@ CMAPI CONFIGRET WINAPI -@@ -2992,6 +3256,7 @@ +@@ -2992,6 +3253,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1054,7 +1045,7 @@ CMAPI CONFIGRET WINAPI -@@ -3001,6 +3266,7 @@ +@@ -3001,6 +3263,7 @@ _In_ ULONG ulFlags ); @@ -1062,7 +1053,7 @@ CMAPI CONFIGRET WINAPI -@@ -3011,22 +3277,24 @@ +@@ -3011,22 +3274,24 @@ _In_opt_ HMACHINE hMachine ); @@ -1091,7 +1082,7 @@ _In_opt_ HMACHINE hMachine ); -@@ -3036,6 +3304,7 @@ +@@ -3036,6 +3301,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1099,7 +1090,7 @@ CMAPI CONFIGRET WINAPI -@@ -3051,6 +3320,7 @@ +@@ -3051,6 +3317,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1107,7 +1098,7 @@ CMAPI CONFIGRET WINAPI -@@ -3061,6 +3331,7 @@ +@@ -3061,6 +3328,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1115,7 +1106,7 @@ CMAPI CONFIGRET WINAPI -@@ -3071,6 +3342,7 @@ +@@ -3071,6 +3339,7 @@ _In_ ULONG ulFlags ); @@ -1123,7 +1114,7 @@ CMAPI CONFIGRET WINAPI -@@ -3082,6 +3354,7 @@ +@@ -3082,6 +3351,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1131,7 +1122,7 @@ CMAPI CONFIGRET WINAPI -@@ -3091,6 +3364,7 @@ +@@ -3091,6 +3361,7 @@ _In_ ULONG ulFlags ); @@ -1139,7 +1130,7 @@ CMAPI CONFIGRET WINAPI -@@ -3107,6 +3381,7 @@ +@@ -3107,6 +3378,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1147,7 +1138,7 @@ CMAPI CONFIGRET WINAPI -@@ -3122,6 +3397,7 @@ +@@ -3122,6 +3394,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1155,7 +1146,7 @@ CMAPI CONFIGRET WINAPI -@@ -3132,6 +3408,8 @@ +@@ -3132,6 +3405,8 @@ _In_opt_ HMACHINE hMachine ); @@ -1164,7 +1155,7 @@ CMAPI WORD WINAPI -@@ -3139,6 +3417,8 @@ +@@ -3139,6 +3414,8 @@ VOID ); @@ -1173,7 +1164,7 @@ CMAPI WORD WINAPI -@@ -3147,6 +3427,7 @@ +@@ -3147,6 +3424,7 @@ ); #if (WINVER >= _WIN32_WINNT_WINXP) @@ -1181,7 +1172,7 @@ CMAPI BOOL WINAPI -@@ -3154,6 +3435,7 @@ +@@ -3154,6 +3432,7 @@ _In_ WORD wVersion ); @@ -1189,7 +1180,7 @@ CMAPI BOOL WINAPI -@@ -3189,22 +3471,24 @@ +@@ -3189,22 +3468,24 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1218,7 +1209,7 @@ ); #define CM_Locate_DevInstA CM_Locate_DevNodeA -@@ -3232,6 +3516,7 @@ +@@ -3232,6 +3513,7 @@ _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine ); @@ -1226,7 +1217,7 @@ CMAPI CONFIGRET WINAPI -@@ -3262,6 +3547,7 @@ +@@ -3262,6 +3544,7 @@ _In_ ULONG ulFlags ); @@ -1234,7 +1225,7 @@ CMAPI CONFIGRET WINAPI -@@ -3274,6 +3560,7 @@ +@@ -3274,6 +3557,7 @@ _In_ ULONG ulFlags ); @@ -1242,7 +1233,7 @@ CMAPI CONFIGRET WINAPI -@@ -3319,25 +3606,27 @@ +@@ -3319,25 +3603,27 @@ _In_ ULONG ulFlags ); @@ -1277,7 +1268,7 @@ _In_ ULONG ulFlags, _In_opt_ HMACHINE hMachine ); -@@ -3360,6 +3649,7 @@ +@@ -3360,6 +3646,7 @@ _In_ ULONG ulFlags ); @@ -1285,7 +1276,7 @@ CMAPI CONFIGRET WINAPI -@@ -3422,6 +3712,7 @@ +@@ -3422,6 +3709,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1293,7 +1284,7 @@ CMAPI CONFIGRET WINAPI -@@ -3465,6 +3756,7 @@ +@@ -3465,6 +3753,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1301,7 +1292,7 @@ CMAPI CONFIGRET WINAPI -@@ -3476,6 +3768,7 @@ +@@ -3476,6 +3765,7 @@ _In_ ULONG ulFlags ); @@ -1309,7 +1300,7 @@ CMAPI CONFIGRET WINAPI -@@ -3499,6 +3792,7 @@ +@@ -3499,6 +3789,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1317,7 +1308,7 @@ CMAPI CONFIGRET WINAPI -@@ -3511,6 +3805,7 @@ +@@ -3511,6 +3802,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1325,7 +1316,7 @@ CMAPI CONFIGRET WINAPI -@@ -3543,6 +3838,7 @@ +@@ -3543,6 +3835,7 @@ _In_ ULONG ulFlags ); @@ -1333,7 +1324,7 @@ CMAPI CONFIGRET WINAPI -@@ -3563,6 +3859,7 @@ +@@ -3563,6 +3856,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1341,7 +1332,7 @@ CMAPI CONFIGRET WINAPI -@@ -3572,6 +3869,7 @@ +@@ -3572,6 +3866,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1349,7 +1340,7 @@ CMAPI CONFIGRET WINAPI -@@ -3673,6 +3971,7 @@ +@@ -3673,6 +3968,7 @@ _In_ ULONG ulFlags ); @@ -1357,7 +1348,7 @@ CMAPI CONFIGRET WINAPI -@@ -3708,6 +4007,7 @@ +@@ -3708,6 +4004,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1365,7 +1356,7 @@ CMAPI CONFIGRET WINAPI -@@ -3749,6 +4049,7 @@ +@@ -3749,6 +4046,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1373,7 +1364,7 @@ CMAPI CONFIGRET WINAPI -@@ -3760,6 +4061,7 @@ +@@ -3760,6 +4058,7 @@ _In_ ULONG ulFlags ); @@ -1381,7 +1372,7 @@ CMAPI CONFIGRET WINAPI -@@ -3780,14 +4082,16 @@ +@@ -3780,14 +4079,16 @@ #define CM_Request_Device_Eject_Ex CM_Request_Device_Eject_ExA #endif // UNICODE @@ -1401,7 +1392,7 @@ CMAPI CONFIGRET WINAPI -@@ -3857,6 +4161,7 @@ +@@ -3857,6 +4158,7 @@ #define CM_Register_Device_Interface_Ex CM_Register_Device_Interface_ExA #endif // UNICODE @@ -1409,7 +1400,7 @@ CMAPI CONFIGRET WINAPI -@@ -3867,6 +4172,7 @@ +@@ -3867,6 +4169,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1417,7 +1408,7 @@ CMAPI CONFIGRET WINAPI -@@ -3965,6 +4271,7 @@ +@@ -3965,6 +4268,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1425,7 +1416,7 @@ CMAPI CONFIGRET WINAPI -@@ -3987,6 +4294,7 @@ +@@ -3987,6 +4291,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1433,7 +1424,7 @@ CMAPI CONFIGRET WINAPI -@@ -4023,6 +4331,7 @@ +@@ -4023,6 +4328,7 @@ _In_ ULONG ulFlags ); @@ -1441,7 +1432,7 @@ CMAPI CONFIGRET WINAPI -@@ -4092,6 +4401,7 @@ +@@ -4092,6 +4398,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1449,7 +1440,7 @@ CMAPI CONFIGRET WINAPI -@@ -4114,6 +4424,7 @@ +@@ -4114,6 +4421,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1457,7 +1448,7 @@ CMAPI CONFIGRET WINAPI -@@ -4139,6 +4450,7 @@ +@@ -4139,6 +4447,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1465,7 +1456,7 @@ CMAPI CONFIGRET WINAPI -@@ -4146,6 +4458,7 @@ +@@ -4146,6 +4455,7 @@ _Out_ PBOOL pbPresent ); @@ -1473,7 +1464,7 @@ CMAPI CONFIGRET WINAPI -@@ -4154,6 +4467,7 @@ +@@ -4154,6 +4464,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1481,7 +1472,7 @@ CMAPI CONFIGRET WINAPI -@@ -4161,6 +4475,7 @@ +@@ -4161,6 +4472,7 @@ VOID ); @@ -1489,7 +1480,7 @@ CMAPI CONFIGRET WINAPI -@@ -4224,6 +4539,7 @@ +@@ -4224,6 +4536,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1497,7 +1488,7 @@ CMAPI CONFIGRET WINAPI -@@ -4267,6 +4583,7 @@ +@@ -4267,6 +4580,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1505,7 +1496,7 @@ CMAPI CONFIGRET WINAPI -@@ -4383,19 +4700,21 @@ +@@ -4383,19 +4697,21 @@ _In_opt_ HMACHINE hMachine ); @@ -1528,7 +1519,7 @@ CMAPI CONFIGRET WINAPI -@@ -4403,6 +4722,7 @@ +@@ -4403,6 +4719,7 @@ _In_ CONFLICT_LIST clConflictList ); @@ -1536,7 +1527,7 @@ CMAPI CONFIGRET WINAPI -@@ -4420,6 +4740,7 @@ +@@ -4420,6 +4737,7 @@ _Inout_ PCONFLICT_DETAILS_A pConflictDetails ); @@ -1544,7 +1535,7 @@ CMAPI CONFIGRET WINAPI -@@ -4443,6 +4764,7 @@ +@@ -4443,6 +4761,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1552,7 +1543,7 @@ CMAPI CONFIGRET WINAPI -@@ -4465,6 +4787,7 @@ +@@ -4465,6 +4784,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1560,7 +1551,7 @@ CMAPI CONFIGRET WINAPI -@@ -4488,6 +4811,7 @@ +@@ -4488,6 +4808,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1568,7 +1559,7 @@ CMAPI CONFIGRET WINAPI -@@ -4504,6 +4828,7 @@ +@@ -4504,6 +4825,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1576,7 +1567,7 @@ CMAPI CONFIGRET WINAPI -@@ -4521,6 +4846,7 @@ +@@ -4521,6 +4843,7 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1584,7 +1575,7 @@ CMAPI CONFIGRET WINAPI -@@ -4543,6 +4869,7 @@ +@@ -4543,6 +4866,7 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1592,7 +1583,7 @@ CMAPI CONFIGRET WINAPI -@@ -4582,6 +4909,7 @@ +@@ -4582,6 +4906,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1600,7 +1591,7 @@ CMAPI CONFIGRET WINAPI -@@ -4607,6 +4935,7 @@ +@@ -4607,6 +4932,7 @@ _In_opt_ HMACHINE hMachine ); @@ -1608,7 +1599,7 @@ CMAPI CONFIGRET WINAPI -@@ -4636,6 +4965,8 @@ +@@ -4636,6 +4962,8 @@ #if (WINVER >= _WIN32_WINNT_WIN2K) #define CM_WaitNoPendingInstallEvents CMP_WaitNoPendingInstallEvents @@ -1617,7 +1608,7 @@ DWORD WINAPI CM_WaitNoPendingInstallEvents( -@@ -4651,6 +4982,15 @@ +@@ -4651,6 +4979,15 @@ #if (WINVER >= _WIN32_WINNT_WIN8) @@ -1633,7 +1624,7 @@ CMAPI CONFIGRET WINAPI -@@ -4658,14 +4998,8 @@ +@@ -4658,14 +4995,8 @@ _In_ PCM_NOTIFY_FILTER pFilter, _In_opt_ PVOID pContext, _In_ PCM_NOTIFY_CALLBACK pCallback, @@ -1650,7 +1641,7 @@ ); #endif // (WINVER >= _WIN32_WINNT_WIN8) -@@ -4676,6 +5010,7 @@ +@@ -4676,6 +5007,7 @@ // CONFIGRET to Win32 error mapping routine // @@ -1658,7 +1649,7 @@ CMAPI DWORD WINAPI -@@ -4754,7 +5089,27 @@ +@@ -4754,7 +5086,27 @@ #define CR_INVALID_CONFLICT_LIST (0x00000039) #define CR_INVALID_INDEX (0x0000003A) #define CR_INVALID_STRUCTURE_SIZE (0x0000003B) @@ -1686,7 +1677,7 @@ #ifdef __cplusplus -@@ -4765,4 +5120,3 @@ +@@ -4765,4 +5117,3 @@ #pragma endregion #endif // _CFGMGR32_H_ diff --git a/generation/WinSDK/patches/um/clusapi.h.patch b/generation/WinSDK/patches/um/clusapi.h.patch index 62a354415..345d76052 100644 --- a/generation/WinSDK/patches/um/clusapi.h.patch +++ b/generation/WinSDK/patches/um/clusapi.h.patch @@ -9,125 +9,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h -@@ -146,24 +147,81 @@ - // Defined cluster handle types. - // - typedef struct _HCLUSTER *HCLUSTER; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCLUSTER HCLUSTER; -+#endif - typedef struct _HNODE *HNODE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNODE HNODE; -+#endif - typedef struct _HRESOURCE *HRESOURCE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRESOURCE HRESOURCE; -+#endif - typedef struct _HGROUP *HGROUP; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGROUP HGROUP; -+#endif - typedef struct _HNETWORK *HNETWORK; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNETWORK HNETWORK; -+#endif - typedef struct _HNETINTERFACE *HNETINTERFACE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNETINTERFACE HNETINTERFACE; -+#endif - typedef struct _HCHANGE *HCHANGE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCHANGE HCHANGE; -+#endif - typedef struct _HCLUSENUM *HCLUSENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCLUSENUM HCLUSENUM; -+#endif - typedef struct _HGROUPENUM *HGROUPENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGROUPENUM HGROUPENUM; -+#endif - typedef struct _HRESENUM *HRESENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRESENUM HRESENUM; -+#endif - typedef struct _HNETWORKENUM *HNETWORKENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNETWORKENUM HNETWORKENUM; -+#endif - typedef struct _HNODEENUM *HNODEENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNODEENUM HNODEENUM; -+#endif - typedef struct _HNETINTERFACEENUM *HNETINTERFACEENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNETINTERFACEENUM HNETINTERFACEENUM; -+#endif - typedef struct _HRESTYPEENUM *HRESTYPEENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRESTYPEENUM HRESTYPEENUM; -+#endif - typedef struct _HREGBATCH *HREGBATCH; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HREGBATCH HREGBATCH; -+#endif - typedef struct _HREGBATCHPORT *HREGBATCHPORT; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HREGBATCHPORT HREGBATCHPORT; -+#endif - typedef struct _HREGBATCHNOTIFICATION *HREGBATCHNOTIFICATION; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HREGBATCHNOTIFICATION HREGBATCHNOTIFICATION; -+#endif - typedef struct _HREGREADBATCH *HREGREADBATCH; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HREGREADBATCH HREGREADBATCH; -+#endif - typedef struct _HREGREADBATCHREPLY *HREGREADBATCHREPLY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HREGREADBATCHREPLY HREGREADBATCHREPLY; -+#endif - typedef struct _HKEYVALUEBATCH *HKEYVALUEBATCH; - typedef struct _HKEYVALUEBATCHNOTIFICATION *HKEYVALUEBATCHNOTIFICATION; - typedef struct _HKEYVALUEREADBATCH *HKEYVALUEREADBATCH; -@@ -172,17 +230,35 @@ - - #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) - typedef struct _HNODEENUMEX *HNODEENUMEX; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HNODEENUMEX HNODEENUMEX; -+#endif - typedef struct _HCLUSENUMEX *HCLUSENUMEX; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCLUSENUMEX HCLUSENUMEX; -+#endif - #endif - - #if(CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8) - typedef struct _HGROUPENUMEX *HGROUPENUMEX; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGROUPENUMEX HGROUPENUMEX; -+#endif - typedef struct _HRESENUMEX *HRESENUMEX; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRESENUMEX HRESENUMEX; -+#endif - #endif - - #if(CLUSAPI_VERSION >= CLUSAPI_VERSION_WINTHRESHOLD) - typedef struct _HGROUPSET *HGROUPSET; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGROUPSET HGROUPSET; -+#endif - typedef struct _HGROUPSETENUM *HGROUPSETENUM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGROUPSETENUM HGROUPSETENUM; -+#endif - #endif - - #endif // _CLUSTER_API_TYPES_ -@@ -645,6 +721,7 @@ +@@ -645,6 +646,7 @@ #endif @@ -135,7 +17,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI GetNodeClusterState( -@@ -658,6 +735,8 @@ +@@ -658,6 +660,8 @@ _Out_ LPDWORD pdwClusterState ); @@ -144,7 +26,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI OpenCluster( -@@ -670,6 +749,8 @@ +@@ -670,6 +674,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -153,7 +35,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI OpenClusterEx( -@@ -686,6 +767,7 @@ +@@ -686,6 +692,7 @@ ); #endif @@ -161,7 +43,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseCluster( -@@ -697,6 +779,7 @@ +@@ -697,6 +704,7 @@ _In_ HCLUSTER hCluster ); @@ -169,7 +51,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterName( -@@ -730,6 +813,7 @@ +@@ -730,6 +738,7 @@ #endif @@ -177,7 +59,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -748,6 +832,7 @@ +@@ -748,6 +757,7 @@ _Out_opt_ LPCLUSTERVERSIONINFO lpClusterInfo ); @@ -185,7 +67,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -770,6 +855,7 @@ +@@ -770,6 +780,7 @@ _Out_ LPDWORD lpdwMaxQuorumLogSize ); @@ -193,7 +75,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterQuorumResource( -@@ -807,6 +893,7 @@ +@@ -807,6 +818,7 @@ #endif @@ -201,7 +83,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI BackupClusterDatabase( -@@ -820,6 +907,7 @@ +@@ -820,6 +832,7 @@ _In_ LPCWSTR lpszPathName ); @@ -209,7 +91,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RestoreClusterDatabase( -@@ -835,6 +923,7 @@ +@@ -835,6 +848,7 @@ _In_opt_ LPCWSTR lpszQuorumDriveLetter ); @@ -217,7 +99,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterNetworkPriorityOrder( -@@ -850,6 +939,7 @@ +@@ -850,6 +864,7 @@ _In_reads_( NetworkCount ) HNETWORK NetworkList[] ); @@ -225,7 +107,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterServiceAccountPassword( -@@ -869,6 +959,7 @@ +@@ -869,6 +884,7 @@ _Inout_ LPDWORD lpcbReturnStatusBufferSize ); @@ -233,7 +115,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterControl( -@@ -939,6 +1030,7 @@ +@@ -939,6 +955,7 @@ CLUSTER_UPGRADE_PHASE eUpgradePhase ); @@ -241,7 +123,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterUpgradeFunctionalLevel( -@@ -1304,6 +1396,8 @@ +@@ -1304,6 +1321,8 @@ // // V2 Notifications DLL Functions // @@ -250,7 +132,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCHANGE WINAPI CreateClusterNotifyPortV2( -@@ -1323,6 +1417,7 @@ +@@ -1323,6 +1342,7 @@ _In_ DWORD_PTR dwNotifyKey ); @@ -258,7 +140,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RegisterClusterNotifyV2( -@@ -1340,6 +1435,7 @@ +@@ -1340,6 +1360,7 @@ _In_ DWORD_PTR dwNotifyKey ); @@ -266,7 +148,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI GetNotifyEventHandle( -@@ -1353,6 +1449,7 @@ +@@ -1353,6 +1374,7 @@ _Out_ LPHANDLE lphTargetEvent ); @@ -274,7 +156,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -1397,6 +1494,8 @@ +@@ -1397,6 +1419,8 @@ // // Begin original notification DLL function defs // @@ -283,7 +165,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCHANGE WINAPI CreateClusterNotifyPort( -@@ -1414,6 +1513,7 @@ +@@ -1414,6 +1438,7 @@ _In_ DWORD_PTR dwNotifyKey ); @@ -291,7 +173,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RegisterClusterNotify( -@@ -1431,6 +1531,7 @@ +@@ -1431,6 +1456,7 @@ _In_ DWORD_PTR dwNotifyKey ); @@ -299,7 +181,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -1453,6 +1554,7 @@ +@@ -1453,6 +1479,7 @@ _In_ DWORD dwMilliseconds ); @@ -307,7 +189,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterNotifyPort( -@@ -1500,6 +1602,8 @@ +@@ -1500,6 +1527,8 @@ #endif // _CLUSTER_API_TYPES_ #if ( !MIDL_PASS && !__midl ) @@ -316,7 +198,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSENUM WINAPI ClusterOpenEnum( -@@ -1513,6 +1617,7 @@ +@@ -1513,6 +1542,7 @@ _In_ DWORD dwType ); @@ -324,7 +206,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGetEnumCount( -@@ -1524,6 +1629,7 @@ +@@ -1524,6 +1554,7 @@ _In_ HCLUSENUM hEnum ); @@ -332,7 +214,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -1544,6 +1650,7 @@ +@@ -1544,6 +1575,7 @@ _Inout_ LPDWORD lpcchName ); @@ -340,7 +222,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterCloseEnum( -@@ -1557,6 +1664,8 @@ +@@ -1557,6 +1589,8 @@ #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -349,7 +231,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSENUMEX WINAPI ClusterOpenEnumEx( -@@ -1572,6 +1681,7 @@ +@@ -1572,6 +1606,7 @@ _In_opt_ PVOID pOptions ); @@ -357,7 +239,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGetEnumCountEx( -@@ -1583,6 +1693,7 @@ +@@ -1583,6 +1618,7 @@ _In_ HCLUSENUMEX hClusterEnum ); @@ -365,7 +247,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterEnumEx( -@@ -1600,6 +1711,7 @@ +@@ -1600,6 +1636,7 @@ _Inout_ LPDWORD cbItem ); @@ -373,7 +255,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterCloseEnumEx( -@@ -1622,6 +1734,8 @@ +@@ -1622,6 +1659,8 @@ #define CLUSGROUPSET_STATUS_OS_HEARTBEAT 0x0000000000000004 #define CLUSGROUPSET_STATUS_APPLICATION_READY 0x0000000000000008 @@ -382,7 +264,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUPSET WINAPI CreateClusterGroupSet( -@@ -1635,6 +1749,8 @@ +@@ -1635,6 +1674,8 @@ _In_ LPCWSTR lpszGroupSetName ); @@ -391,7 +273,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUPSET WINAPI OpenClusterGroupSet( -@@ -1648,6 +1764,8 @@ +@@ -1648,6 +1689,8 @@ _In_ LPCWSTR lpszGroupSetName ); @@ -400,7 +282,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterGroupSet( -@@ -1659,6 +1777,7 @@ +@@ -1659,6 +1702,7 @@ _In_ HGROUPSET hGroupSet ); @@ -408,7 +290,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI DeleteClusterGroupSet( -@@ -1687,6 +1806,7 @@ +@@ -1687,6 +1731,7 @@ #endif @@ -416,7 +298,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterAddGroupToGroupSet( -@@ -1733,6 +1853,7 @@ +@@ -1733,6 +1778,7 @@ #endif @@ -424,7 +306,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterRemoveGroupFromGroupSet( -@@ -1761,6 +1882,7 @@ +@@ -1761,6 +1807,7 @@ #endif @@ -432,7 +314,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupSetControl( -@@ -1818,6 +1940,7 @@ +@@ -1818,6 +1865,7 @@ #endif @@ -440,7 +322,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddClusterGroupDependency( -@@ -1850,6 +1973,7 @@ +@@ -1850,6 +1898,7 @@ #endif @@ -448,7 +330,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetGroupDependencyExpression( -@@ -1882,6 +2006,7 @@ +@@ -1882,6 +1931,7 @@ #endif @@ -456,7 +338,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveClusterGroupDependency( -@@ -1914,6 +2039,7 @@ +@@ -1914,6 +1964,7 @@ #endif @@ -464,7 +346,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddClusterGroupSetDependency( -@@ -1946,6 +2072,7 @@ +@@ -1946,6 +1997,7 @@ #endif @@ -472,7 +354,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterGroupSetDependencyExpression( -@@ -1978,6 +2105,7 @@ +@@ -1978,6 +2030,7 @@ #endif @@ -480,7 +362,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveClusterGroupSetDependency( -@@ -2010,6 +2138,7 @@ +@@ -2010,6 +2063,7 @@ #endif @@ -488,7 +370,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddClusterGroupToGroupSetDependency( -@@ -2042,6 +2171,7 @@ +@@ -2042,6 +2096,7 @@ #endif @@ -496,7 +378,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveClusterGroupToGroupSetDependency( -@@ -2075,18 +2205,22 @@ +@@ -2075,18 +2130,22 @@ #endif @@ -519,7 +401,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h __success(return == ERROR_SUCCESS) DWORD WINAPI -@@ -2097,12 +2231,15 @@ +@@ -2097,12 +2156,15 @@ _Inout_ LPDWORD lpcchName ); @@ -535,7 +417,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromGroupSet( -@@ -2371,6 +2508,8 @@ +@@ -2371,6 +2433,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -544,7 +426,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNODE WINAPI OpenClusterNode( -@@ -2385,6 +2524,8 @@ +@@ -2385,6 +2449,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -553,7 +435,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNODE WINAPI OpenClusterNodeEx( -@@ -2418,6 +2559,8 @@ +@@ -2418,6 +2484,8 @@ ); #endif @@ -562,7 +444,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterNode( -@@ -2429,6 +2572,8 @@ +@@ -2429,6 +2497,8 @@ _In_ HNODE hNode ); @@ -571,7 +453,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h CLUSTER_NODE_STATE WINAPI GetClusterNodeState( -@@ -2459,6 +2604,8 @@ +@@ -2459,6 +2529,8 @@ #define GetCurrentClusterNodeId(_lpszNodeId_, _lpcchName_) \ GetClusterNodeId(NULL, (_lpszNodeId_), (_lpcchName_)) @@ -580,7 +462,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromNode( -@@ -2470,6 +2617,7 @@ +@@ -2470,6 +2542,7 @@ _In_ HNODE hNode ); @@ -588,7 +470,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI PauseClusterNode( -@@ -2481,6 +2629,7 @@ +@@ -2481,6 +2554,7 @@ _In_ HNODE hNode ); @@ -596,7 +478,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ResumeClusterNode( -@@ -2492,6 +2641,7 @@ +@@ -2492,6 +2566,7 @@ _In_ HNODE hNode ); @@ -604,7 +486,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI EvictClusterNode( -@@ -2503,6 +2653,8 @@ +@@ -2503,6 +2578,8 @@ _In_ HNODE hNode ); @@ -613,7 +495,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETINTERFACEENUM WINAPI ClusterNetInterfaceOpenEnum( -@@ -2511,6 +2663,7 @@ +@@ -2511,6 +2588,7 @@ _In_opt_ LPCWSTR lpszNetworkName ); @@ -621,7 +503,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h __success(return == ERROR_SUCCESS) DWORD WINAPI -@@ -2521,12 +2674,15 @@ +@@ -2521,12 +2599,15 @@ _Inout_ LPDWORD lpcchName ); @@ -637,7 +519,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNODEENUM WINAPI ClusterNodeOpenEnum( -@@ -2542,6 +2698,8 @@ +@@ -2542,6 +2623,8 @@ #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -646,7 +528,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNODEENUMEX WINAPI ClusterNodeOpenEnumEx( -@@ -2557,6 +2715,7 @@ +@@ -2557,6 +2640,7 @@ _In_opt_ PVOID pOptions ); @@ -654,7 +536,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNodeGetEnumCountEx( -@@ -2568,6 +2727,7 @@ +@@ -2568,6 +2652,7 @@ _In_ HNODEENUMEX hNodeEnum ); @@ -662,7 +544,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNodeEnumEx( -@@ -2585,6 +2745,7 @@ +@@ -2585,6 +2670,7 @@ _Inout_ LPDWORD cbItem ); @@ -670,7 +552,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNodeCloseEnumEx( -@@ -2598,6 +2759,7 @@ +@@ -2598,6 +2684,7 @@ #endif @@ -678,7 +560,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNodeGetEnumCount( -@@ -2609,6 +2771,7 @@ +@@ -2609,6 +2696,7 @@ _In_ HNODEENUM hNodeEnum ); @@ -686,7 +568,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNodeCloseEnum( -@@ -2620,6 +2783,7 @@ +@@ -2620,6 +2708,7 @@ _In_ HNODEENUM hNodeEnum ); @@ -694,7 +576,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -2640,6 +2804,7 @@ +@@ -2640,6 +2729,7 @@ _Inout_ LPDWORD lpcchName ); @@ -702,7 +584,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI EvictClusterNodeEx( -@@ -2684,6 +2849,8 @@ +@@ -2684,6 +2774,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -711,7 +593,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterResourceTypeKey( -@@ -2786,6 +2953,8 @@ +@@ -2786,6 +2878,8 @@ #endif // _CLUSTER_API_TYPES_ #if ( !MIDL_PASS && !__midl ) @@ -720,7 +602,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUP WINAPI CreateClusterGroup( -@@ -2799,6 +2968,8 @@ +@@ -2799,6 +2893,8 @@ _In_ LPCWSTR lpszGroupName ); @@ -729,7 +611,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUP WINAPI OpenClusterGroup( -@@ -2813,6 +2984,8 @@ +@@ -2813,6 +2909,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -738,7 +620,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUP WINAPI OpenClusterGroupEx( -@@ -2840,6 +3013,7 @@ +@@ -2840,6 +2938,7 @@ #define CLUSAPI_NODE_PAUSE_RETRY_DRAIN_ON_FAILURE 0x00000004 @@ -746,7 +628,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI PauseClusterNodeEx( -@@ -2895,6 +3069,7 @@ +@@ -2895,6 +2994,7 @@ #define CLUSAPI_NODE_RESUME_FAILBACK_VMS_FORCEFULLY 0x00000008 @@ -754,7 +636,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ResumeClusterNodeEx( -@@ -2946,6 +3121,7 @@ +@@ -2946,6 +3046,7 @@ #define CLUSGRP_STATUS_OFFLINE_NOT_LOCAL_DISK_OWNER 0x0000000000000800 #define CLUSGRP_STATUS_WAITING_FOR_DEPENDENCIES 0x0000000000001000 @@ -762,7 +644,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUP WINAPI CreateClusterGroupEx( -@@ -2961,6 +3137,7 @@ +@@ -2961,6 +3062,7 @@ _In_opt_ PCLUSTER_CREATE_GROUP_INFO pGroupInfo ); @@ -770,7 +652,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUPENUMEX WINAPI ClusterGroupOpenEnumEx( -@@ -2982,6 +3159,7 @@ +@@ -2982,6 +3084,7 @@ _In_ DWORD dwFlags ); @@ -778,7 +660,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupGetEnumCountEx( -@@ -2993,6 +3171,7 @@ +@@ -2993,6 +3096,7 @@ _In_ HGROUPENUMEX hGroupEnumEx ); @@ -786,7 +668,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupEnumEx( -@@ -3010,6 +3189,7 @@ +@@ -3010,6 +3114,7 @@ _Inout_ LPDWORD cbItem ); @@ -794,7 +676,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupCloseEnumEx( -@@ -3033,6 +3213,8 @@ +@@ -3033,6 +3138,8 @@ #define CLUSRES_STATUS_APPLICATION_READY 0x0000000000000100 #define CLUSRES_STATUS_OFFLINE_NOT_LOCAL_DISK_OWNER 0x0000000000000200 @@ -803,7 +685,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESENUMEX WINAPI ClusterResourceOpenEnumEx( -@@ -3054,6 +3236,7 @@ +@@ -3054,6 +3161,7 @@ _In_ DWORD dwFlags ); @@ -811,7 +693,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceGetEnumCountEx( -@@ -3065,6 +3248,7 @@ +@@ -3065,6 +3173,7 @@ _In_ HRESENUMEX hResourceEnumEx ); @@ -819,7 +701,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceEnumEx( -@@ -3082,6 +3266,7 @@ +@@ -3082,6 +3191,7 @@ _Inout_ LPDWORD cbItem ); @@ -827,7 +709,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceCloseEnumEx( -@@ -3098,6 +3283,7 @@ +@@ -3098,6 +3208,7 @@ #define CLUSAPI_GROUP_ONLINE_BEST_POSSIBLE_NODE 0x00000004 #define CLUSAPI_GROUP_ONLINE_IGNORE_AFFINITY_RULE 0x00000008 @@ -835,7 +717,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OnlineClusterGroupEx( _In_ HGROUP hGroup, _In_opt_ HNODE hDestinationNode, -@@ -3109,6 +3295,7 @@ +@@ -3109,6 +3220,7 @@ #define CLUSAPI_GROUP_OFFLINE_IGNORE_RESOURCE_STATUS 0x00000001 @@ -843,7 +725,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OfflineClusterGroupEx( _In_ HGROUP hGroup, _In_ DWORD dwOfflineFlags, -@@ -3151,6 +3338,7 @@ +@@ -3151,6 +3263,7 @@ #define CLUSAPI_RESOURCE_ONLINE_IGNORE_AFFINITY_RULE 0x00000020 @@ -851,7 +733,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OnlineClusterResourceEx( _In_ HRESOURCE hResource, _In_ DWORD dwOnlineFlags, -@@ -3186,6 +3374,7 @@ +@@ -3186,6 +3299,7 @@ #define CLUSAPI_RESOURCE_OFFLINE_REASON_PREEMPTED 0x00000020 #define CLUSAPI_RESOURCE_OFFLINE_REASON_SHUTTING_DOWN 0x00000040 @@ -859,7 +741,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OfflineClusterResourceEx( _In_ HRESOURCE hResource, _In_ DWORD dwOfflineFlags, -@@ -3218,6 +3407,7 @@ +@@ -3218,6 +3332,7 @@ #define CLUSAPI_CHANGE_RESOURCE_GROUP_FORCE_MOVE_TO_CSV 0x0000000000000001 #define CLUSAPI_VALID_CHANGE_RESOURCE_GROUP_FLAGS (CLUSAPI_CHANGE_RESOURCE_GROUP_FORCE_MOVE_TO_CSV) @@ -867,7 +749,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI MoveClusterGroupEx( -@@ -3244,11 +3434,13 @@ +@@ -3244,11 +3359,13 @@ #endif @@ -881,7 +763,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RestartClusterResource( _In_ HRESOURCE hResource, _In_ DWORD dwFlags -@@ -3280,6 +3472,8 @@ +@@ -3280,6 +3397,8 @@ #endif // (CLUSAPI_VERSION >= CLUSAPI_VERSION_WINDOWS8) @@ -890,7 +772,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterGroup( -@@ -3291,6 +3485,8 @@ +@@ -3291,6 +3410,8 @@ _In_ HGROUP hGroup ); @@ -899,7 +781,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromGroup( -@@ -3302,6 +3498,8 @@ +@@ -3302,6 +3423,8 @@ _In_ HGROUP hGroup ); @@ -908,7 +790,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return >= 0) //!= ClusterGroupStateUnknown CLUSTER_GROUP_STATE WINAPI -@@ -3318,6 +3516,7 @@ +@@ -3318,6 +3441,7 @@ _Inout_opt_ LPDWORD lpcchNodeName ); @@ -916,7 +798,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterGroupName( -@@ -3331,6 +3530,7 @@ +@@ -3331,6 +3455,7 @@ LPCWSTR lpszGroupName ); @@ -924,7 +806,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterGroupNodeList( -@@ -3382,6 +3582,7 @@ +@@ -3382,6 +3507,7 @@ #endif @@ -932,7 +814,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OnlineClusterGroup( -@@ -3395,6 +3596,7 @@ +@@ -3395,6 +3521,7 @@ _In_opt_ HNODE hDestinationNode ); @@ -940,7 +822,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI MoveClusterGroup( -@@ -3408,6 +3610,7 @@ +@@ -3408,6 +3535,7 @@ _In_opt_ HNODE hDestinationNode ); @@ -948,7 +830,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OfflineClusterGroup( -@@ -3419,6 +3622,7 @@ +@@ -3419,6 +3547,7 @@ HGROUP hGroup ); @@ -956,7 +838,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI DeleteClusterGroup( -@@ -3430,6 +3634,7 @@ +@@ -3430,6 +3559,7 @@ HGROUP hGroup ); @@ -964,7 +846,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI DestroyClusterGroup( -@@ -3471,6 +3676,8 @@ +@@ -3471,6 +3601,8 @@ #endif @@ -973,7 +855,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HGROUPENUM WINAPI ClusterGroupOpenEnum( -@@ -3484,6 +3691,7 @@ +@@ -3484,6 +3616,7 @@ DWORD dwType ); @@ -981,7 +863,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupGetEnumCount( -@@ -3495,6 +3703,7 @@ +@@ -3495,6 +3628,7 @@ _In_ HGROUPENUM hGroupEnum ); @@ -989,7 +871,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -3515,6 +3724,7 @@ +@@ -3515,6 +3649,7 @@ _Inout_ LPDWORD lpcchName ); @@ -997,7 +879,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterGroupCloseEnum( -@@ -3585,6 +3795,8 @@ +@@ -3585,6 +3720,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -1006,7 +888,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESOURCE WINAPI CreateClusterResource( -@@ -3625,6 +3837,8 @@ +@@ -3625,6 +3762,8 @@ #endif @@ -1015,7 +897,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESOURCE WINAPI OpenClusterResource( -@@ -3639,6 +3853,8 @@ +@@ -3639,6 +3778,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1024,7 +906,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESOURCE WINAPI OpenClusterResourceEx( -@@ -3657,6 +3873,8 @@ +@@ -3657,6 +3798,8 @@ ); #endif @@ -1033,7 +915,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterResource( -@@ -3668,6 +3886,8 @@ +@@ -3668,6 +3811,8 @@ HRESOURCE hResource ); @@ -1042,7 +924,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromResource( -@@ -3679,6 +3899,7 @@ +@@ -3679,6 +3824,7 @@ _In_ HRESOURCE hResource ); @@ -1050,7 +932,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI DeleteClusterResource( -@@ -3707,6 +3928,8 @@ +@@ -3707,6 +3853,8 @@ #endif @@ -1059,7 +941,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return >= 0) // != ClusterResourceStateUnknown CLUSTER_RESOURCE_STATE WINAPI -@@ -3727,6 +3950,7 @@ +@@ -3727,6 +3875,7 @@ _Inout_opt_ LPDWORD lpcchGroupName ); @@ -1067,7 +949,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterResourceName( -@@ -3759,6 +3983,7 @@ +@@ -3759,6 +3908,7 @@ #endif @@ -1075,7 +957,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI FailClusterResource( -@@ -3787,6 +4012,7 @@ +@@ -3787,6 +3937,7 @@ #endif @@ -1083,7 +965,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OnlineClusterResource( -@@ -3798,6 +4024,7 @@ +@@ -3798,6 +3949,7 @@ HRESOURCE hResource ); @@ -1091,7 +973,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI OfflineClusterResource( -@@ -3809,6 +4036,7 @@ +@@ -3809,6 +3961,7 @@ HRESOURCE hResource ); @@ -1099,7 +981,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ChangeClusterResourceGroup( -@@ -3858,6 +4086,7 @@ +@@ -3858,6 +4011,7 @@ #endif @@ -1107,7 +989,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddClusterResourceNode( -@@ -3871,6 +4100,7 @@ +@@ -3871,6 +4025,7 @@ HNODE hNode ); @@ -1115,7 +997,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveClusterResourceNode( -@@ -3918,6 +4148,7 @@ +@@ -3918,6 +4073,7 @@ #endif @@ -1123,7 +1005,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddClusterResourceDependency( -@@ -3931,6 +4162,7 @@ +@@ -3931,6 +4087,7 @@ HRESOURCE hDependsOn ); @@ -1131,7 +1013,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveClusterResourceDependency( -@@ -3978,6 +4210,7 @@ +@@ -3978,6 +4135,7 @@ #endif @@ -1139,7 +1021,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterResourceDependencyExpression( -@@ -3991,6 +4224,7 @@ +@@ -3991,6 +4149,7 @@ _In_ LPCWSTR lpszDependencyExpression ); @@ -1147,7 +1029,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4010,6 +4244,7 @@ +@@ -4010,6 +4169,7 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1155,7 +1037,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI AddResourceToClusterSharedVolumes( -@@ -4024,6 +4259,7 @@ +@@ -4024,6 +4184,7 @@ #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1163,7 +1045,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RemoveResourceFromClusterSharedVolumes( -@@ -4037,6 +4273,7 @@ +@@ -4037,6 +4198,7 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1171,7 +1053,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI IsFileOnClusterSharedVolume( -@@ -4052,6 +4289,8 @@ +@@ -4052,6 +4214,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1180,7 +1062,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterSharedVolumeSetSnapshotState( -@@ -4068,6 +4307,7 @@ +@@ -4068,6 +4232,7 @@ _In_ CLUSTER_SHARED_VOLUME_SNAPSHOT_STATE state ); @@ -1188,7 +1070,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CanResourceBeDependent( -@@ -4081,6 +4321,7 @@ +@@ -4081,6 +4246,7 @@ HRESOURCE hResourceDependent ); @@ -1196,7 +1078,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4107,6 +4348,7 @@ +@@ -4107,6 +4273,7 @@ _Out_opt_ LPDWORD lpBytesReturned ); @@ -1204,7 +1086,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4121,6 +4363,7 @@ +@@ -4121,6 +4288,7 @@ _Out_opt_ LPDWORD lpBytesReturned ); @@ -1212,7 +1094,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4149,6 +4392,7 @@ +@@ -4149,6 +4317,7 @@ _Out_opt_ LPDWORD lpBytesReturned ); @@ -1220,7 +1102,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4164,6 +4408,7 @@ +@@ -4164,6 +4333,7 @@ _Out_opt_ LPDWORD lpBytesReturned ); @@ -1228,7 +1110,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4338,6 +4583,7 @@ +@@ -4338,6 +4508,7 @@ #endif @@ -1236,7 +1118,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -4396,6 +4642,8 @@ +@@ -4396,6 +4567,8 @@ #endif @@ -1245,7 +1127,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return != FALSE) BOOL WINAPI -@@ -6863,6 +7111,8 @@ +@@ -6863,6 +7036,8 @@ #endif // _CLUSTER_API_TYPES_ #if ( !MIDL_PASS && !__midl ) @@ -1254,7 +1136,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESENUM WINAPI ClusterResourceOpenEnum( -@@ -6876,6 +7126,7 @@ +@@ -6876,6 +7051,7 @@ DWORD dwType ); @@ -1262,7 +1144,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceGetEnumCount( -@@ -6887,6 +7138,7 @@ +@@ -6887,6 +7063,7 @@ _In_ HRESENUM hResEnum ); @@ -1270,7 +1152,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -6907,6 +7159,7 @@ +@@ -6907,6 +7084,7 @@ _Inout_ LPDWORD lpcchName ); @@ -1278,7 +1160,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceCloseEnum( -@@ -6918,6 +7171,7 @@ +@@ -6918,6 +7096,7 @@ HRESENUM hResEnum ); @@ -1286,7 +1168,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI CreateClusterResourceType( -@@ -6939,6 +7193,7 @@ +@@ -6939,6 +7118,7 @@ _In_ DWORD dwIsAlivePollInterval ); @@ -1294,7 +1176,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI DeleteClusterResourceType( -@@ -6994,6 +7249,8 @@ +@@ -6994,6 +7174,8 @@ #endif @@ -1303,7 +1185,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HRESTYPEENUM WINAPI ClusterResourceTypeOpenEnum( -@@ -7009,6 +7266,7 @@ +@@ -7009,6 +7191,7 @@ _In_ DWORD dwType ); @@ -1311,7 +1193,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceTypeGetEnumCount( -@@ -7020,6 +7278,7 @@ +@@ -7020,6 +7203,7 @@ _In_ HRESTYPEENUM hResTypeEnum ); @@ -1319,7 +1201,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -7040,6 +7299,7 @@ +@@ -7040,6 +7224,7 @@ _Inout_ LPDWORD lpcchName ); @@ -1327,7 +1209,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterResourceTypeCloseEnum( -@@ -7092,6 +7352,8 @@ +@@ -7092,6 +7277,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -1336,7 +1218,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETWORK WINAPI OpenClusterNetwork( -@@ -7106,6 +7368,8 @@ +@@ -7106,6 +7293,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1345,7 +1227,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETWORK WINAPI OpenClusterNetworkEx( -@@ -7124,6 +7388,8 @@ +@@ -7124,6 +7313,8 @@ ); #endif @@ -1354,7 +1236,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterNetwork( -@@ -7135,6 +7401,8 @@ +@@ -7135,6 +7326,8 @@ _In_ HNETWORK hNetwork ); @@ -1363,7 +1245,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromNetwork( -@@ -7146,6 +7414,8 @@ +@@ -7146,6 +7339,8 @@ _In_ HNETWORK hNetwork ); @@ -1372,7 +1254,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETWORKENUM WINAPI ClusterNetworkOpenEnum( -@@ -7159,6 +7429,7 @@ +@@ -7159,6 +7354,7 @@ _In_ DWORD dwType ); @@ -1380,7 +1262,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNetworkGetEnumCount( -@@ -7170,6 +7441,7 @@ +@@ -7170,6 +7366,7 @@ _In_ HNETWORKENUM hNetworkEnum ); @@ -1388,7 +1270,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_ (return == ERROR_SUCCESS) DWORD WINAPI -@@ -7190,6 +7462,7 @@ +@@ -7190,6 +7387,7 @@ _Inout_ LPDWORD lpcchName ); @@ -1396,7 +1278,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNetworkCloseEnum( -@@ -7201,6 +7474,8 @@ +@@ -7201,6 +7399,8 @@ _In_ HNETWORKENUM hNetworkEnum ); @@ -1405,7 +1287,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h CLUSTER_NETWORK_STATE WINAPI GetClusterNetworkState( -@@ -7212,6 +7487,7 @@ +@@ -7212,6 +7412,7 @@ _In_ HNETWORK hNetwork ); @@ -1413,7 +1295,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI SetClusterNetworkName( -@@ -7244,6 +7520,7 @@ +@@ -7244,6 +7445,7 @@ #endif @@ -1421,7 +1303,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -7260,6 +7537,7 @@ +@@ -7260,6 +7462,7 @@ _Inout_ LPDWORD lpcchName ); @@ -1429,7 +1311,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNetworkControl( -@@ -7338,6 +7616,8 @@ +@@ -7338,6 +7541,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -1438,7 +1320,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETINTERFACE WINAPI OpenClusterNetInterface( -@@ -7352,6 +7632,8 @@ +@@ -7352,6 +7557,8 @@ ); #if (CLUSAPI_VERSION >= CLUSAPI_VERSION_SERVER2008R2) @@ -1447,7 +1329,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNETINTERFACE WINAPI OpenClusterNetInterfaceEx( -@@ -7370,6 +7652,7 @@ +@@ -7370,6 +7577,7 @@ ); #endif @@ -1455,7 +1337,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -7401,6 +7684,8 @@ +@@ -7401,6 +7609,8 @@ _Inout_ LPDWORD lpcchInterfaceName ); @@ -1464,7 +1346,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h BOOL WINAPI CloseClusterNetInterface( -@@ -7412,6 +7697,8 @@ +@@ -7412,6 +7622,8 @@ _In_ HNETINTERFACE hNetInterface ); @@ -1473,7 +1355,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI GetClusterFromNetInterface( -@@ -7423,6 +7710,8 @@ +@@ -7423,6 +7635,8 @@ _In_ HNETINTERFACE hNetInterface ); @@ -1482,7 +1364,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h CLUSTER_NETINTERFACE_STATE WINAPI GetClusterNetInterfaceState( -@@ -7434,6 +7723,7 @@ +@@ -7434,6 +7648,7 @@ _In_ HNETINTERFACE hNetInterface ); @@ -1490,7 +1372,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterNetInterfaceControl( -@@ -7498,6 +7788,8 @@ +@@ -7498,6 +7713,8 @@ // #if ( !MIDL_PASS && !__midl ) @@ -1499,7 +1381,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterKey( -@@ -7511,6 +7803,8 @@ +@@ -7511,6 +7728,8 @@ REGSAM samDesired ); @@ -1508,7 +1390,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterGroupKey( -@@ -7524,6 +7818,8 @@ +@@ -7524,6 +7743,8 @@ REGSAM samDesired ); @@ -1517,7 +1399,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterResourceKey( -@@ -7537,6 +7833,8 @@ +@@ -7537,6 +7758,8 @@ REGSAM samDesired ); @@ -1526,7 +1408,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterNodeKey( -@@ -7550,6 +7848,8 @@ +@@ -7550,6 +7773,8 @@ REGSAM samDesired ); @@ -1535,7 +1417,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterNetworkKey( -@@ -7563,6 +7863,8 @@ +@@ -7563,6 +7788,8 @@ _In_ REGSAM samDesired ); @@ -1544,7 +1426,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HKEY WINAPI GetClusterNetInterfaceKey( -@@ -7576,6 +7878,7 @@ +@@ -7576,6 +7803,7 @@ _In_ REGSAM samDesired ); @@ -1552,7 +1434,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCreateKey( -@@ -7628,6 +7931,7 @@ +@@ -7628,6 +7856,7 @@ #endif @@ -1560,7 +1442,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegOpenKey( -@@ -7645,6 +7949,7 @@ +@@ -7645,6 +7874,7 @@ PHKEY phkResult ); @@ -1568,7 +1450,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegDeleteKey( -@@ -7677,6 +7982,7 @@ +@@ -7677,6 +7907,7 @@ #endif @@ -1576,7 +1458,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseKey( -@@ -7688,6 +7994,7 @@ +@@ -7688,6 +7919,7 @@ HKEY hKey ); @@ -1584,7 +1466,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) LONG WINAPI -@@ -7708,6 +8015,8 @@ +@@ -7708,6 +7940,8 @@ _Out_ PFILETIME lpftLastWriteTime ); @@ -1593,7 +1475,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterRegSetValue( -@@ -7727,6 +8036,7 @@ +@@ -7727,6 +7961,7 @@ DWORD cbData ); @@ -1601,7 +1483,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterRegDeleteValue( -@@ -7780,6 +8090,7 @@ +@@ -7780,6 +8015,7 @@ #endif @@ -1609,7 +1491,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegQueryValue( -@@ -7799,6 +8110,7 @@ +@@ -7799,6 +8035,7 @@ _Inout_opt_ LPDWORD lpcbData ); @@ -1617,7 +1499,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _Success_(return == ERROR_SUCCESS) DWORD WINAPI -@@ -7823,6 +8135,7 @@ +@@ -7823,6 +8060,7 @@ _Inout_opt_ LPDWORD lpcbData ); @@ -1625,7 +1507,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegQueryInfoKey( -@@ -7848,6 +8161,7 @@ +@@ -7848,6 +8086,7 @@ PFILETIME lpftLastWriteTime ); @@ -1633,7 +1515,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegGetKeySecurity ( -@@ -7865,6 +8179,7 @@ +@@ -7865,6 +8104,7 @@ _Inout_ LPDWORD lpcbSecurityDescriptor ); @@ -1641,7 +1523,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegSetKeySecurity( -@@ -7886,7 +8201,7 @@ +@@ -7886,7 +8126,7 @@ WINAPI ClusterRegSetKeySecurityEx( _In_ HKEY hKey, @@ -1650,7 +1532,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor, _In_opt_ LPCWSTR lpszReason ); -@@ -7901,6 +8216,7 @@ +@@ -7901,6 +8141,7 @@ #endif @@ -1658,7 +1540,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegSyncDatabase( -@@ -7914,6 +8230,7 @@ +@@ -7914,6 +8155,7 @@ DWORD flags ); @@ -1666,7 +1548,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCreateBatch( _In_opt_ HKEY hKey, _Out_ HREGBATCH* pHREGBATCH -@@ -7925,6 +8242,7 @@ +@@ -7925,6 +8167,7 @@ _Out_ HREGBATCH* pHREGBATCH ); @@ -1674,7 +1556,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegBatchAddCommand( _In_ HREGBATCH hRegBatch, _In_ CLUSTER_REG_COMMAND dwCommand, -@@ -7944,12 +8262,14 @@ +@@ -7944,12 +8187,14 @@ _In_ DWORD cbData ); @@ -1689,7 +1571,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseBatchEx( _In_ HREGBATCH hRegBatch, _In_ DWORD flags, -@@ -7963,6 +8283,7 @@ +@@ -7963,6 +8208,7 @@ _Out_opt_ INT * failedCommandNumber ); @@ -1697,7 +1579,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegBatchReadCommand( _In_ HREGBATCHNOTIFICATION hBatchNotification, _Out_ CLUSTER_BATCH_COMMAND * pBatchCommand); -@@ -7972,6 +8293,7 @@ +@@ -7972,6 +8218,7 @@ _In_ HREGBATCHNOTIFICATION hBatchNotification, _Out_ CLUSTER_BATCH_COMMAND * pBatchCommand); @@ -1705,7 +1587,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegBatchCloseNotification( _In_ HREGBATCHNOTIFICATION hBatchNotification); -@@ -7979,6 +8301,7 @@ +@@ -7979,6 +8226,7 @@ (WINAPI *PCLUSTER_REG_BATCH_CLOSE_NOTIFICATION)( _In_ HREGBATCHNOTIFICATION hBatchNotification); @@ -1713,7 +1595,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCreateBatchNotifyPort( _In_ HKEY hKey, _Out_ HREGBATCHPORT * phBatchNotifyPort); -@@ -7988,6 +8311,7 @@ +@@ -7988,6 +8236,7 @@ _In_ HKEY hKey, _Out_ HREGBATCHPORT * phBatchNotifyPort); @@ -1721,7 +1603,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseBatchNotifyPort( _In_ HREGBATCHPORT hBatchNotifyPort); -@@ -7995,6 +8319,7 @@ +@@ -7995,6 +8244,7 @@ (WINAPI *PCLUSTER_REG_CLOSE_BATCH_NOTIFY_PORT)( _In_ HREGBATCHPORT hBatchNotifyPort); @@ -1729,7 +1611,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegGetBatchNotification( _In_ HREGBATCHPORT hBatchNotify, _Out_ HREGBATCHNOTIFICATION * phBatchNotification); -@@ -8005,6 +8330,7 @@ +@@ -8005,6 +8255,7 @@ _Out_ HREGBATCHNOTIFICATION * phBatchNotification); @@ -1737,7 +1619,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCreateReadBatch( _In_ HKEY hKey, _Out_ HREGREADBATCH* phRegReadBatch); -@@ -8014,6 +8340,7 @@ +@@ -8014,6 +8265,7 @@ _In_ HKEY hKey, _Out_ HREGREADBATCH* phRegReadBatch); @@ -1745,7 +1627,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegReadBatchAddCommand( _In_ HREGREADBATCH hRegReadBatch, _In_ LPCWSTR wzSubkeyName, -@@ -8025,6 +8352,7 @@ +@@ -8025,6 +8277,7 @@ _In_ LPCWSTR wzSubkeyName, _In_ LPCWSTR wzValueName); @@ -1753,7 +1635,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseReadBatch( _In_ HREGREADBATCH hRegReadBatch, _Out_ HREGREADBATCHREPLY * phRegReadBatchReply); -@@ -8034,6 +8362,7 @@ +@@ -8034,6 +8287,7 @@ _In_ HREGREADBATCH hRegReadBatch, _Out_ HREGREADBATCHREPLY * phRegReadBatchReply); @@ -1761,7 +1643,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseReadBatchEx( _In_ HREGREADBATCH hRegReadBatch, _In_ DWORD flags, -@@ -8045,6 +8374,7 @@ +@@ -8045,6 +8299,7 @@ _In_ DWORD flags, _Out_ HREGREADBATCHREPLY * phRegReadBatchReply); @@ -1769,7 +1651,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegReadBatchReplyNextCommand( _In_ HREGREADBATCHREPLY hRegReadBatchReply, _Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand); -@@ -8054,6 +8384,7 @@ +@@ -8054,6 +8309,7 @@ _In_ HREGREADBATCHREPLY hRegReadBatchReply, _Out_ CLUSTER_READ_BATCH_COMMAND * pBatchCommand); @@ -1777,7 +1659,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h LONG WINAPI ClusterRegCloseReadBatchReply( _In_ HREGREADBATCHREPLY hRegReadBatchReply); -@@ -8061,6 +8392,7 @@ +@@ -8061,6 +8317,7 @@ (WINAPI *PCLUSTER_REG_CLOSE_READ_BATCH_REPLY)( _In_ HREGREADBATCHREPLY hRegReadBatchReply); @@ -1785,7 +1667,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI ClusterSetAccountAccess( -@@ -8161,6 +8493,8 @@ +@@ -8161,6 +8418,8 @@ _In_opt_ PCWSTR lpszObjectName, DWORD dwStatus ); @@ -1794,7 +1676,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI CreateCluster( -@@ -8176,6 +8510,8 @@ +@@ -8176,6 +8435,8 @@ _In_opt_ PVOID pvCallbackArg ); @@ -1803,7 +1685,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HCLUSTER WINAPI CreateClusterCNOless( -@@ -8191,6 +8527,7 @@ +@@ -8191,6 +8452,7 @@ _In_opt_ PVOID pvCallbackArg ); @@ -1811,7 +1693,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI CreateClusterNameAccount( -@@ -8270,6 +8607,7 @@ +@@ -8270,6 +8532,7 @@ _In_ HCLUSTER hCluster ); @@ -1819,7 +1701,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h DWORD WINAPI RegisterClusterResourceTypeNotifyV2 ( -@@ -8280,6 +8618,8 @@ +@@ -8280,6 +8543,8 @@ __in DWORD_PTR dwNotifyKey ); @@ -1828,7 +1710,7 @@ diff --git a/um/clusapi.h b/um/clusapi.h HNODE WINAPI AddClusterNode( -@@ -8336,6 +8676,7 @@ +@@ -8336,6 +8601,7 @@ _In_opt_ PVOID pvCallbackArg ); diff --git a/generation/WinSDK/patches/um/combaseapi.h.patch b/generation/WinSDK/patches/um/combaseapi.h.patch index 1763abef0..6cb655ece 100644 --- a/generation/WinSDK/patches/um/combaseapi.h.patch +++ b/generation/WinSDK/patches/um/combaseapi.h.patch @@ -118,18 +118,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_ APTTYPE* pAptType, _Out_ APTTYPEQUALIFIER* pAptQualifier ); -@@ -551,7 +560,10 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - - DECLARE_HANDLE(CO_MTA_USAGE_COOKIE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef CO_MTA_USAGE_COOKIE CO_MTA_USAGE_COOKIE; -+#endif - - _Check_return_ - WINOLEAPI - CoIncrementMTAUsage( -@@ -569,6 +581,7 @@ +@@ -569,6 +578,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -137,7 +126,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoAllowUnmarshalerCLSID( _In_ REFCLSID clsid -@@ -598,10 +611,10 @@ +@@ -598,10 +608,10 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -150,7 +139,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -@@ -613,13 +626,13 @@ +@@ -613,13 +623,13 @@ /* register/revoke/get class objects */ _Check_return_ @@ -167,7 +156,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -629,29 +642,30 @@ +@@ -629,29 +639,30 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) _Check_return_ @@ -202,7 +191,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h void ); -@@ -661,34 +675,36 @@ +@@ -661,34 +672,36 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -242,7 +231,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPSURROGATE pSurrogate ); -@@ -701,8 +717,8 @@ +@@ -701,8 +714,8 @@ /* marshaling interface pointers */ _Check_return_ @@ -252,7 +241,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_ ULONG* pulSize, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, -@@ -712,8 +728,8 @@ +@@ -712,8 +725,8 @@ ); _Check_return_ @@ -262,7 +251,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPSTREAM pStm, _In_ REFIID riid, _In_ LPUNKNOWN pUnk, -@@ -723,8 +739,8 @@ +@@ -723,8 +736,8 @@ ); _Check_return_ @@ -272,7 +261,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPSTREAM pStm, _In_ REFIID riid, _COM_Outptr_ LPVOID FAR * ppv -@@ -736,12 +752,14 @@ +@@ -736,12 +749,14 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -287,7 +276,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoUnmarshalHresult( _In_ LPSTREAM pstm, -@@ -755,16 +773,16 @@ +@@ -755,16 +770,16 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -307,7 +296,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) -@@ -774,8 +792,8 @@ +@@ -774,8 +789,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -317,7 +306,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPUNKNOWN pUnk, _In_ BOOL fLock, _In_ BOOL fLastUnlockReleases -@@ -788,8 +806,8 @@ +@@ -788,8 +803,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -327,7 +316,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ REFIID riid, _In_opt_ LPUNKNOWN pUnk, _In_ DWORD dwDestContext, -@@ -805,8 +823,8 @@ +@@ -805,8 +820,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -337,7 +326,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPUNKNOWN pUnkOuter, _In_ DWORD smexflags, _Outptr_ LPUNKNOWN FAR * ppUnkInner -@@ -831,6 +849,7 @@ +@@ -831,6 +846,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -345,7 +334,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(BOOL) CoIsHandlerConnected( _In_ LPUNKNOWN pUnk -@@ -844,16 +863,16 @@ +@@ -844,16 +860,16 @@ // Apartment model inter-thread interface passing helpers _Check_return_ @@ -364,7 +353,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPSTREAM pStm, _In_ REFIID iid, _COM_Outptr_ LPVOID FAR * ppv -@@ -866,8 +885,8 @@ +@@ -866,8 +882,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) _Check_return_ @@ -374,7 +363,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_opt_ LPUNKNOWN punkOuter, _Outptr_ LPUNKNOWN* ppunkMarshal ); -@@ -878,16 +897,18 @@ +@@ -878,16 +894,18 @@ #pragma region Application or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) @@ -394,7 +383,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif -@@ -901,8 +922,8 @@ +@@ -901,8 +919,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -404,7 +393,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h DWORD dwTimeout ); -@@ -920,17 +941,17 @@ +@@ -920,17 +938,17 @@ /* Call Security. */ _Check_return_ @@ -428,7 +417,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -@@ -940,15 +961,15 @@ +@@ -940,15 +958,15 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -451,7 +440,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ IUnknown* pProxy, _Out_opt_ DWORD* pwAuthnSvc, _Out_opt_ DWORD* pAuthzSvc, -@@ -960,28 +981,28 @@ +@@ -960,28 +978,28 @@ ); _Check_return_ @@ -490,7 +479,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_opt_ DWORD* pAuthnSvc, _Out_opt_ DWORD* pAuthzSvc, _Outptr_opt_ LPOLESTR* pServerPrincName, -@@ -992,20 +1013,20 @@ +@@ -992,20 +1010,20 @@ ); _Check_return_ @@ -514,7 +503,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_ DWORD* pcAuthSvc, _Outptr_result_buffer_(*pcAuthSvc) SOLE_AUTHENTICATION_SERVICE** asAuthSvc ); -@@ -1017,8 +1038,8 @@ +@@ -1017,8 +1035,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -524,7 +513,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_opt_ IUnknown* pNewObject, _Outptr_ IUnknown** ppOldObject ); -@@ -1042,8 +1063,8 @@ +@@ -1042,8 +1060,8 @@ /* helper for creating instances */ _Check_return_ @@ -534,7 +523,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ REFCLSID rclsid, _In_opt_ LPUNKNOWN pUnkOuter, _In_ DWORD dwClsContext, -@@ -1061,8 +1082,8 @@ +@@ -1061,8 +1079,8 @@ #if (_WIN32_WINNT >= 0x0400) || defined(_WIN32_DCOM) _Check_return_ @@ -544,7 +533,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ REFCLSID Clsid, _In_opt_ IUnknown* punkOuter, _In_ DWORD dwClsCtx, -@@ -1076,8 +1097,8 @@ +@@ -1076,8 +1094,8 @@ #if (_WIN32_WINNT >= 0x0602) _Check_return_ @@ -554,7 +543,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ REFCLSID Clsid, _In_opt_ IUnknown* punkOuter, _In_ DWORD dwClsCtx, -@@ -1094,6 +1115,7 @@ +@@ -1094,6 +1112,7 @@ #pragma region Desktop or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -562,7 +551,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI CoRegisterActivationFilter( _In_ IActivationFilter* pActivationFilter -@@ -1110,42 +1132,42 @@ +@@ -1110,42 +1129,42 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -622,7 +611,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h ); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -@@ -1159,29 +1181,29 @@ +@@ -1159,29 +1178,29 @@ /* other helpers */ _Check_return_ @@ -656,7 +645,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPCOLESTR lpsz, _Out_ LPIID lpiid ); -@@ -1193,15 +1215,15 @@ +@@ -1193,15 +1212,15 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) _Check_return_ @@ -674,7 +663,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPCOLESTR lpszProgID, _Out_ LPCLSID lpclsid ); -@@ -1213,16 +1235,16 @@ +@@ -1213,16 +1232,16 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) _Check_return_ @@ -693,7 +682,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _Out_ GUID FAR * pguid ); -@@ -1232,18 +1254,18 @@ +@@ -1232,18 +1251,18 @@ _Check_return_ WINOLEAPI @@ -715,7 +704,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ ULONG cVariants, _Inout_updates_(cVariants) PROPVARIANT* rgvars ); -@@ -1270,8 +1292,8 @@ +@@ -1270,8 +1289,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -725,7 +714,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ DWORD dwFlags, _In_ DWORD dwTimeout, _In_ ULONG cHandles, -@@ -1324,8 +1346,8 @@ +@@ -1324,8 +1343,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -735,7 +724,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ REFCLSID clsidOld, _Out_ LPCLSID pClsidNew ); -@@ -1341,8 +1363,8 @@ +@@ -1341,8 +1360,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) _Check_return_ @@ -745,7 +734,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPOLESTR pszMachineName ); -@@ -1363,8 +1385,8 @@ +@@ -1363,8 +1382,8 @@ }; _Check_return_ @@ -755,7 +744,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ enum AgileReferenceOptions options, _In_ REFIID riid, _In_ IUnknown* pUnk, -@@ -1388,23 +1410,28 @@ +@@ -1388,23 +1407,28 @@ typedef HRESULT (STDAPICALLTYPE * LPFNCANUNLOADNOW)(void); _Check_return_ @@ -784,7 +773,7 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h WINOLEAPI_(void) CoTaskMemFree( _Frees_ptr_opt_ LPVOID pv -@@ -1417,13 +1444,13 @@ +@@ -1417,13 +1441,13 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) WINOLEAPI @@ -800,13 +789,3 @@ diff --git a/um/combaseapi.h b/um/combaseapi.h _In_ LPCOLESTR lpszProgID, _Out_ LPCLSID lpclsid ); -@@ -1435,6 +1462,9 @@ - #endif - - DECLARE_HANDLE(CO_DEVICE_CATALOG_COOKIE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef CO_DEVICE_CATALOG_COOKIE CO_DEVICE_CATALOG_COOKIE; -+#endif - - _Check_return_ - WINOLEAPI diff --git a/generation/WinSDK/patches/um/commctrl.h.patch b/generation/WinSDK/patches/um/commctrl.h.patch index b26b2fc32..b7a394348 100644 --- a/generation/WinSDK/patches/um/commctrl.h.patch +++ b/generation/WinSDK/patches/um/commctrl.h.patch @@ -175,16 +175,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPARAM lItemlParam; } NMCUSTOMDRAW, *LPNMCUSTOMDRAW; -@@ -499,5 +612,8 @@ - #ifndef HIMAGELIST - struct _IMAGELIST; - typedef struct _IMAGELIST* HIMAGELIST; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMAGELIST HIMAGELIST; -+#endif - #endif - -@@ -538,25 +654,46 @@ +@@ -538,25 +651,46 @@ #define ILC_COLOR24 0x00000018 #define ILC_COLOR32 0x00000020 #define ILC_PALETTE 0x00000800 // (not implemented) @@ -233,7 +224,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI BOOL WINAPI ImageList_SetOverlayImage(_In_ HIMAGELIST himl, _In_ int iImage, _In_ int iOverlay); #define ImageList_AddIcon(himl, hicon) ImageList_ReplaceIcon(himl, -1, hicon) -@@ -580,6 +717,24 @@ +@@ -580,6 +714,24 @@ #define ILD_SELECTED ILD_BLEND50 #define ILD_FOCUS ILD_BLEND25 #define ILD_BLEND ILD_BLEND50 @@ -258,7 +249,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define CLR_HILIGHT CLR_DEFAULT #define ILS_NORMAL 0x00000000 -@@ -593,7 +748,8 @@ +@@ -593,7 +745,8 @@ #define ILGT_ASYNC 0x00000001 #endif @@ -268,7 +259,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #ifdef _WIN32 -@@ -602,15 +758,23 @@ +@@ -602,15 +755,23 @@ #define HBITMAP_CALLBACK ((HBITMAP)-1) // only for SparseImageList #endif @@ -296,7 +287,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #ifdef UNICODE #define ImageList_LoadImage ImageList_LoadImageW -@@ -620,16 +784,30 @@ +@@ -620,16 +781,30 @@ #define ILCF_MOVE (0x00000000) #define ILCF_SWAP (0x00000001) @@ -329,7 +320,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h _Success_(return != NULL) WINCOMMCTRLAPI HIMAGELIST WINAPI ImageList_GetDragImage(_Out_opt_ POINT *ppt, _Out_opt_ POINT *pptHotspot); #define ImageList_RemoveAll(himl) ImageList_Remove(himl, -1) -@@ -638,16 +816,25 @@ +@@ -638,16 +813,25 @@ struct IStream; @@ -358,7 +349,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif -@@ -662,16 +849,22 @@ +@@ -662,16 +846,22 @@ } IMAGEINFO, *LPIMAGEINFO; #endif @@ -381,7 +372,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HRESULT WINAPI HIMAGELIST_QueryInterface(_In_ HIMAGELIST himl, _In_ REFIID riid, _Outptr_ void **ppv); #ifdef __cplusplus -@@ -734,6 +927,13 @@ +@@ -734,6 +924,13 @@ #define HDFT_ISDATE 0x0002 // HD_ITEM.pvFilter points to a DWORD (dos date) #define HDFT_HASNOVALUE 0x8000 // clear the filter, by setting this bit @@ -395,7 +386,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #ifdef UNICODE #define HD_TEXTFILTER HD_TEXTFILTERW -@@ -765,19 +965,19 @@ +@@ -765,19 +962,19 @@ typedef struct _HD_ITEMA { @@ -419,7 +410,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif } HDITEMA, *LPHDITEMA; -@@ -787,19 +987,19 @@ +@@ -787,19 +984,19 @@ typedef struct _HD_ITEMW { @@ -443,7 +434,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif } HDITEMW, *LPHDITEMW; -@@ -826,6 +1026,20 @@ +@@ -826,6 +1023,20 @@ #define HDI_FILTER 0x0100 #if (NTDDI_VERSION >= NTDDI_VISTA) #define HDI_STATE 0x0200 @@ -464,7 +455,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif // HDF_ flags are shared with the listview control (LVCFMT_ flags) -@@ -852,10 +1066,33 @@ +@@ -852,10 +1063,33 @@ #define HDF_CHECKED 0x0080 #define HDF_FIXEDWIDTH 0x0100 // Can't resize the column; same as LVCFMT_FIXED_WIDTH #define HDF_SPLITBUTTON 0x1000000 // Column is a split button; same as LVCFMT_SPLITBUTTON @@ -498,7 +489,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define HDM_GETITEMCOUNT (HDM_FIRST + 0) -@@ -934,6 +1171,22 @@ +@@ -934,6 +1168,22 @@ #define HHT_ONITEMSTATEICON 0x1000 #define HHT_ONDROPDOWN 0x2000 #define HHT_ONOVERFLOW 0x4000 @@ -521,7 +512,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define HD_HITTESTINFO HDHITTESTINFO -@@ -941,7 +1194,7 @@ +@@ -941,7 +1191,7 @@ typedef struct _HD_HITTESTINFO { POINT pt; @@ -530,7 +521,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iItem; } HDHITTESTINFO, *LPHDHITTESTINFO; -@@ -1119,8 +1372,14 @@ +@@ -1119,8 +1369,14 @@ +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) +typedef _WIN32META_ANNOTATION_( + "Enum(HEADER_CONTROL_NOTIFICATION_BUTTON_LEFT, HEADER_CONTROL_NOTIFICATION_BUTTON_RIGHT, HEADER_CONTROL_NOTIFICATION_BUTTON_MIDDLE)", @@ -546,7 +537,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HDITEMA *pitem; } NMHEADERA, *LPNMHEADERA; -@@ -1129,7 +1388,7 @@ +@@ -1129,7 +1385,7 @@ { NMHDR hdr; int iItem; @@ -555,7 +546,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HDITEMW *pitem; } NMHEADERW, *LPNMHEADERW; -@@ -1145,7 +1404,7 @@ +@@ -1145,7 +1401,7 @@ { NMHDR hdr; int iItem; @@ -564,7 +555,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPWSTR pszText; int cchTextMax; int iImage; -@@ -1156,7 +1415,7 @@ +@@ -1156,7 +1412,7 @@ { NMHDR hdr; int iItem; @@ -573,7 +564,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPSTR pszText; int cchTextMax; int iImage; -@@ -1221,11 +1480,15 @@ +@@ -1221,11 +1477,15 @@ COLORREF to; } COLORMAP, *LPCOLORMAP; @@ -589,7 +580,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HBITMAP WINAPI CreateMappedBitmap(HINSTANCE hInstance, INT_PTR idBitmap, UINT wFlags, _In_opt_ LPCOLORMAP lpColorMap, int iNumMaps); -@@ -1492,10 +1755,16 @@ +@@ -1492,10 +1752,16 @@ typedef struct { int iButton; @@ -607,7 +598,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TB_GETINSERTMARK (WM_USER + 79) // lParam == LPTBINSERTMARK #define TB_SETINSERTMARK (WM_USER + 80) // lParam == LPTBINSERTMARK -@@ -1545,10 +1814,21 @@ +@@ -1545,10 +1811,21 @@ #define TBIF_SIZE 0x00000040 #define TBIF_BYINDEX 0x80000000 // this specifies that the wparam in Get/SetButtonInfo is an index, not id @@ -630,7 +621,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int idCommand; int iImage; BYTE fsState; -@@ -1561,7 +1841,7 @@ +@@ -1561,7 +1838,7 @@ typedef struct { UINT cbSize; @@ -639,7 +630,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int idCommand; int iImage; BYTE fsState; -@@ -1680,7 +1960,7 @@ +@@ -1680,7 +1957,7 @@ NMHDR hdr; int idOld; int idNew; @@ -648,7 +639,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } NMTBHOTITEM, * LPNMTBHOTITEM; // Hot item change flags -@@ -1694,6 +1974,19 @@ +@@ -1694,6 +1971,19 @@ #define HICF_RESELECT 0x00000040 // hot item reselected #define HICF_LMOUSE 0x00000080 // left mouse button selected #define HICF_TOGGLEDROPDOWN 0x00000100 // Toggle button's dropdown state @@ -668,7 +659,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TBN_HOTITEMCHANGE (TBN_FIRST - 13) -@@ -1771,10 +2064,16 @@ +@@ -1771,10 +2061,16 @@ #define TBNF_IMAGE 0x00000001 #define TBNF_TEXT 0x00000002 #define TBNF_DI_SETITEM 0x10000000 @@ -686,7 +677,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int idCommand; // [in] id of button we're requesting info for DWORD_PTR lParam; // [in] lParam of button int iImage; // [out] image index -@@ -1784,7 +2083,7 @@ +@@ -1784,7 +2080,7 @@ typedef struct { NMHDR hdr; @@ -695,7 +686,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int idCommand; // [in] id of button we're requesting info for DWORD_PTR lParam; // [in] lParam of button int iImage; // [out] image index -@@ -2132,7 +2431,7 @@ +@@ -2132,7 +2428,7 @@ typedef struct tagNMREBAR { NMHDR hdr; @@ -704,7 +695,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h UINT uBand; UINT fStyle; UINT wID; -@@ -2143,6 +2442,12 @@ +@@ -2143,6 +2439,12 @@ #define RBNM_ID 0x00000001 #define RBNM_STYLE 0x00000002 #define RBNM_LPARAM 0x00000004 @@ -717,7 +708,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h typedef struct tagNMRBAUTOSIZE -@@ -2241,7 +2546,7 @@ +@@ -2241,7 +2543,7 @@ typedef struct tagTOOLINFOA { UINT cbSize; @@ -726,7 +717,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HWND hwnd; UINT_PTR uId; RECT rect; -@@ -2255,7 +2560,7 @@ +@@ -2255,7 +2557,7 @@ typedef struct tagTOOLINFOW { UINT cbSize; @@ -735,7 +726,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HWND hwnd; UINT_PTR uId; RECT rect; -@@ -2310,6 +2615,18 @@ +@@ -2310,6 +2612,18 @@ #define TTF_TRANSPARENT 0x0100 #define TTF_PARSELINKS 0x1000 #define TTF_DI_SETITEM 0x8000 // valid only on the TTN_NEEDTEXT callback @@ -754,7 +745,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TTDT_AUTOMATIC 0 -@@ -2326,6 +2643,16 @@ +@@ -2326,6 +2640,16 @@ #define TTI_INFO_LARGE 4 #define TTI_WARNING_LARGE 5 #define TTI_ERROR_LARGE 6 @@ -771,7 +762,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif // (NTDDI_VERSION >= NTDDI_VISTA) // Tool Tip Messages -@@ -2476,7 +2803,7 @@ +@@ -2476,7 +2800,7 @@ LPSTR lpszText; char szText[80]; HINSTANCE hinst; @@ -780,7 +771,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPARAM lParam; } NMTTDISPINFOA, *LPNMTTDISPINFOA; -@@ -2485,7 +2812,7 @@ +@@ -2485,7 +2809,7 @@ LPWSTR lpszText; WCHAR szText[80]; HINSTANCE hinst; @@ -789,7 +780,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPARAM lParam; } NMTTDISPINFOW, *LPNMTTDISPINFOW; -@@ -2516,10 +2843,16 @@ +@@ -2516,10 +2840,16 @@ // end_r_commctrl @@ -806,7 +797,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HWND WINAPI CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID); #ifdef UNICODE -@@ -2602,8 +2935,11 @@ +@@ -2602,8 +2932,11 @@ #ifndef NOMENUHELP @@ -818,7 +809,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI void WINAPI GetEffectiveClientRect(_In_ HWND hWnd, _Out_ LPRECT lprc, _In_z_ const INT *lpInfo); #define MINSYSCOMMAND SC_SIZE -@@ -2739,7 +3075,7 @@ +@@ -2739,7 +3072,7 @@ #ifndef NODRAGLIST typedef struct tagDRAGLISTINFO { @@ -827,7 +818,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HWND hWnd; POINT ptCursor; } DRAGLISTINFO, *LPDRAGLISTINFO; -@@ -2748,6 +3084,13 @@ +@@ -2748,6 +3081,13 @@ #define DL_DRAGGING (WM_USER+134) #define DL_DROPPED (WM_USER+135) #define DL_CANCELDRAG (WM_USER+136) @@ -841,7 +832,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define DL_CURSORSET 0 #define DL_STOPCURSOR 1 -@@ -2756,9 +3099,12 @@ +@@ -2756,9 +3096,12 @@ #define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg") @@ -854,7 +845,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI int WINAPI LBItemFromPt(HWND hLB, POINT pt, BOOL bAutoScroll); #endif -@@ -2823,6 +3169,7 @@ +@@ -2823,6 +3166,7 @@ #define UDM_SETPOS32 (WM_USER+113) #define UDM_GETPOS32 (WM_USER+114) @@ -862,7 +853,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HWND WINAPI CreateUpDownControl(DWORD dwStyle, int x, int y, int cx, int cy, HWND hParent, int nID, HINSTANCE hInst, HWND hBuddy, -@@ -3012,6 +3359,13 @@ +@@ -3012,6 +3356,13 @@ #define LIF_STATE 0x00000002 #define LIF_ITEMID 0x00000004 #define LIF_URL 0x00000008 @@ -876,7 +867,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LIS_FOCUSED 0x00000001 #define LIS_ENABLED 0x00000002 -@@ -3019,14 +3373,22 @@ +@@ -3019,14 +3370,22 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) #define LIS_HOTTRACK 0x00000008 #define LIS_DEFAULTCOLORS 0x00000010 // Don't use any custom text colors @@ -902,7 +893,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WCHAR szID[MAX_LINKID_TEXT] ; WCHAR szUrl[L_MAX_URL_LENGTH] ; } LITEM, * PLITEM ; -@@ -3166,6 +3528,17 @@ +@@ -3166,6 +3525,17 @@ #define LVIS_OVERLAYMASK 0x0F00 #define LVIS_STATEIMAGEMASK 0xF000 @@ -920,7 +911,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12) -@@ -3176,6 +3549,11 @@ +@@ -3176,6 +3546,11 @@ #if (NTDDI_VERSION >= NTDDI_WINXP) #define I_GROUPIDCALLBACK (-1) #define I_GROUPIDNONE (-2) @@ -932,7 +923,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define LV_ITEM LVITEM -@@ -3195,11 +3573,11 @@ +@@ -3195,11 +3570,11 @@ typedef struct tagLVITEMA { @@ -947,7 +938,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPSTR pszText; int cchTextMax; int iImage; -@@ -3211,18 +3589,18 @@ +@@ -3211,18 +3586,18 @@ PUINT puColumns; #endif #if (NTDDI_VERSION >= NTDDI_VISTA) // Will be unused downlevel, but sizeof(LVITEMA) must be equal to sizeof(LVITEMW) @@ -970,7 +961,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPWSTR pszText; int cchTextMax; int iImage; -@@ -3234,7 +3612,7 @@ +@@ -3234,7 +3609,7 @@ PUINT puColumns; #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -979,7 +970,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iGroup; // readonly. only valid for owner data. #endif } LVITEMW, *LPLVITEMW; -@@ -3350,6 +3728,15 @@ +@@ -3350,6 +3725,15 @@ #define LVFI_PARTIAL 0x0008 #define LVFI_WRAP 0x0020 #define LVFI_NEARESTXY 0x0040 @@ -995,7 +986,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LV_FINDINFOA LVFINDINFOA #define LV_FINDINFOW LVFINDINFOW -@@ -3358,7 +3745,7 @@ +@@ -3358,7 +3742,7 @@ typedef struct tagLVFINDINFOA { @@ -1004,7 +995,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPCSTR psz; LPARAM lParam; POINT pt; -@@ -3367,7 +3754,7 @@ +@@ -3367,7 +3751,7 @@ typedef struct tagLVFINDINFOW { @@ -1013,7 +1004,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPCWSTR psz; LPARAM lParam; POINT pt; -@@ -3446,6 +3833,26 @@ +@@ -3446,6 +3830,26 @@ #define LVHT_EX_GROUP (LVHT_EX_GROUP_BACKGROUND | LVHT_EX_GROUP_COLLAPSE | LVHT_EX_GROUP_FOOTER | LVHT_EX_GROUP_HEADER | LVHT_EX_GROUP_STATEICON | LVHT_EX_GROUP_SUBSETLINK) #define LVHT_EX_ONCONTENTS 0x04000000 // On item AND not on the background #define LVHT_EX_FOOTER 0x08000000 @@ -1040,7 +1031,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LV_HITTESTINFO LVHITTESTINFO -@@ -3454,7 +3861,7 @@ +@@ -3454,7 +3858,7 @@ typedef struct tagLVHITTESTINFO { POINT pt; @@ -1049,7 +1040,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iItem; int iSubItem; // this is was NOT in win95. valid only for LVM_SUBITEMHITTEST #if (NTDDI_VERSION >= NTDDI_VISTA) -@@ -3522,8 +3929,8 @@ +@@ -3522,8 +3926,8 @@ typedef struct tagLVCOLUMNA { @@ -1060,7 +1051,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int cx; LPSTR pszText; int cchTextMax; -@@ -3539,8 +3946,8 @@ +@@ -3539,8 +3943,8 @@ typedef struct tagLVCOLUMNW { @@ -1071,7 +1062,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int cx; LPWSTR pszText; int cchTextMax; -@@ -3575,6 +3982,18 @@ +@@ -3575,6 +3979,18 @@ #define LVCF_MINWIDTH 0x0040 #define LVCF_DEFAULTWIDTH 0x0080 #define LVCF_IDEALWIDTH 0x0100 @@ -1090,7 +1081,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif // LVCFMT_ flags up to FFFF are shared with the header control (HDF_ flags). -@@ -3600,8 +4019,30 @@ +@@ -3600,8 +4016,30 @@ #define LVCFMT_WRAP 0x400000 // This sub-item can be wrapped. #define LVCFMT_NO_TITLE 0x800000 // This sub-item doesn't have an title. #define LVCFMT_TILE_PLACEMENTMASK (LVCFMT_LINE_BREAK | LVCFMT_FILL) @@ -1121,7 +1112,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define LVM_GETCOLUMNA (LVM_FIRST + 25) -@@ -3949,7 +4390,7 @@ +@@ -3949,7 +4387,7 @@ typedef struct tagLVBKIMAGEA { @@ -1130,7 +1121,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HBITMAP hbm; LPSTR pszImage; UINT cchImageMax; -@@ -3958,7 +4399,7 @@ +@@ -3958,7 +4396,7 @@ } LVBKIMAGEA, *LPLVBKIMAGEA; typedef struct tagLVBKIMAGEW { @@ -1139,7 +1130,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HBITMAP hbm; LPWSTR pszImage; UINT cchImageMax; -@@ -3977,6 +4418,19 @@ +@@ -3977,6 +4415,19 @@ #define LVBKIF_FLAG_TILEOFFSET 0x00000100 #define LVBKIF_TYPE_WATERMARK 0x10000000 #define LVBKIF_FLAG_ALPHABLEND 0x20000000 @@ -1159,7 +1150,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define LVM_SETBKIMAGEA (LVM_FIRST + 68) -@@ -4021,6 +4475,24 @@ +@@ -4021,6 +4472,24 @@ #define LVGF_ITEMS 0x00004000 // iFirstItem and cItems are valid #define LVGF_SUBSET 0x00008000 // pszSubsetTitle is valid #define LVGF_SUBSETITEMS 0x00010000 // readonly, cItems holds count of items in visible subset, iFirstItem is valid @@ -1184,7 +1175,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif #define LVGS_NORMAL 0x00000000 -@@ -4032,6 +4504,18 @@ +@@ -4032,6 +4501,18 @@ #define LVGS_SELECTED 0x00000020 #define LVGS_SUBSETED 0x00000040 #define LVGS_SUBSETLINKFOCUSED 0x00000080 @@ -1203,7 +1194,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LVGA_HEADER_LEFT 0x00000001 #define LVGA_HEADER_CENTER 0x00000002 -@@ -4039,11 +4523,20 @@ +@@ -4039,11 +4520,20 @@ #define LVGA_FOOTER_LEFT 0x00000008 #define LVGA_FOOTER_CENTER 0x00000010 #define LVGA_FOOTER_RIGHT 0x00000020 // Don't forget to validate exclusivity @@ -1225,7 +1216,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPWSTR pszHeader; int cchHeader; -@@ -4052,9 +4545,9 @@ +@@ -4052,9 +4542,9 @@ int iGroupId; @@ -1238,7 +1229,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #if (NTDDI_VERSION >= NTDDI_VISTA) LPWSTR pszSubtitle; UINT cchSubtitle; -@@ -4196,6 +4689,13 @@ +@@ -4196,6 +4686,13 @@ #define LVTVIF_FIXEDWIDTH 0x00000001 #define LVTVIF_FIXEDHEIGHT 0x00000002 #define LVTVIF_FIXEDSIZE 0x00000003 @@ -1252,7 +1243,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #if (NTDDI_VERSION >= NTDDI_VISTA) #define LVTVIF_EXTENDED 0x00000004 #endif -@@ -4203,12 +4703,18 @@ +@@ -4203,12 +4700,18 @@ #define LVTVIM_TILESIZE 0x00000001 #define LVTVIM_COLUMNS 0x00000002 #define LVTVIM_LABELMARGIN 0x00000004 @@ -1273,7 +1264,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h SIZE sizeTile; int cLines; RECT rcLabelMargin; -@@ -4366,13 +4872,18 @@ +@@ -4366,13 +4869,18 @@ // footer item flags #define LVFIF_TEXT 0x00000001 #define LVFIF_STATE 0x00000002 @@ -1293,7 +1284,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iItem; LPWSTR pszText; int cchTextMax; -@@ -4442,7 +4953,7 @@ +@@ -4442,7 +4950,7 @@ int iSubItem; UINT uNewState; UINT uOldState; @@ -1302,7 +1293,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h POINT ptAction; LPARAM lParam; } NMLISTVIEW, *LPNMLISTVIEW; -@@ -4481,7 +4992,7 @@ +@@ -4481,7 +4989,7 @@ COLORREF clrTextBk; int iSubItem; #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -1311,7 +1302,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h // Item custom draw COLORREF clrFace; -@@ -4492,7 +5003,7 @@ +@@ -4492,7 +5000,7 @@ // Group Custom Draw RECT rcText; @@ -1320,7 +1311,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif } NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW; -@@ -4500,6 +5011,12 @@ +@@ -4500,6 +5008,12 @@ #define LVCDI_ITEM 0x00000000 #define LVCDI_GROUP 0x00000001 #define LVCDI_ITEMSLIST 0x00000002 @@ -1333,7 +1324,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h // ListView custom draw return values #define LVCDRF_NOSELECT 0x00010000 -@@ -4558,8 +5075,8 @@ +@@ -4558,8 +5072,8 @@ NMHDR hdr; int iFrom; int iTo; @@ -1344,7 +1335,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE; #define PNM_ODSTATECHANGE LPNMLVODSTATECHANGE -@@ -4615,6 +5132,19 @@ +@@ -4615,6 +5129,19 @@ #define LVIF_DI_SETITEM 0x1000 @@ -1364,7 +1355,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LV_DISPINFOA NMLVDISPINFOA #define LV_DISPINFOW NMLVDISPINFOW -@@ -4671,7 +5201,7 @@ +@@ -4671,7 +5198,7 @@ typedef struct tagNMLVGETINFOTIPA { NMHDR hdr; @@ -1373,7 +1364,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPSTR pszText; int cchTextMax; int iItem; -@@ -4682,7 +5212,7 @@ +@@ -4682,7 +5209,7 @@ typedef struct tagNMLVGETINFOTIPW { NMHDR hdr; @@ -1382,7 +1373,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPWSTR pszText; int cchTextMax; int iItem; -@@ -4693,6 +5223,11 @@ +@@ -4693,6 +5220,11 @@ // NMLVGETINFOTIPA.dwFlag values #define LVGIT_UNFOLDED 0x0001 @@ -1394,7 +1385,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LVN_GETINFOTIPA (LVN_FIRST-57) #define LVN_GETINFOTIPW (LVN_FIRST-58) -@@ -4760,12 +5295,16 @@ +@@ -4760,12 +5292,16 @@ #define EMF_CENTERED 0x00000001 // render markup centered in the listview area @@ -1412,16 +1403,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WCHAR szMarkup[L_MAX_URL_LENGTH]; // markup displayed } NMLVEMPTYMARKUP; -@@ -4838,5 +5377,8 @@ - - struct _TREEITEM; - typedef struct _TREEITEM *HTREEITEM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTREEITEM HTREEITEM; -+#endif - - #define TVIF_TEXT 0x0001 -@@ -4869,6 +5411,22 @@ +@@ -4869,6 +5405,22 @@ #define TVIS_EX_DISABLED 0x0002 #endif #define TVIS_EX_ALL 0x0002 @@ -1444,7 +1426,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h // Structure for TreeView's NM_TVSTATEIMAGECHANGING notification typedef struct tagNMTVSTATEIMAGECHANGING -@@ -4883,6 +5441,12 @@ +@@ -4883,6 +5435,12 @@ #define I_CHILDRENCALLBACK (-1) #define I_CHILDRENAUTO (-2) @@ -1457,7 +1439,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LPTV_ITEMW LPTVITEMW #define LPTV_ITEMA LPTVITEMA #define TV_ITEMW TVITEMW -@@ -4892,7 +5456,34 @@ +@@ -4892,7 +5450,34 @@ #define TV_ITEM TVITEM typedef struct tagTVITEMA { @@ -1493,7 +1475,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HTREEITEM hItem; UINT state; UINT stateMask; -@@ -4900,12 +5491,21 @@ +@@ -4900,12 +5485,21 @@ int cchTextMax; int iImage; int iSelectedImage; @@ -1520,7 +1502,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HTREEITEM hItem; UINT state; UINT stateMask; -@@ -4913,43 +5513,7 @@ +@@ -4913,43 +5507,7 @@ int cchTextMax; int iImage; int iSelectedImage; @@ -1565,7 +1547,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPARAM lParam; int iIntegral; #if (_WIN32_IE >= 0x0600) -@@ -5198,7 +5762,7 @@ +@@ -5198,7 +5756,7 @@ typedef struct tagTVHITTESTINFO { POINT pt; @@ -1574,7 +1556,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h HTREEITEM hItem; } TVHITTESTINFO, *LPTVHITTESTINFO; -@@ -5215,6 +5779,21 @@ +@@ -5215,6 +5773,21 @@ #define TVHT_BELOW 0x0200 #define TVHT_TORIGHT 0x0400 #define TVHT_TOLEFT 0x0800 @@ -1596,7 +1578,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TVM_CREATEDRAGIMAGE (TV_FIRST + 18) -@@ -5432,7 +6011,7 @@ +@@ -5432,7 +6005,7 @@ typedef struct tagNMTREEVIEWA { NMHDR hdr; @@ -1605,7 +1587,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h TVITEMA itemOld; TVITEMA itemNew; POINT ptDrag; -@@ -5441,7 +6020,7 @@ +@@ -5441,7 +6014,7 @@ typedef struct tagNMTREEVIEWW { NMHDR hdr; @@ -1614,7 +1596,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h TVITEMW itemOld; TVITEMW itemNew; POINT ptDrag; -@@ -5465,6 +6044,17 @@ +@@ -5465,6 +6038,17 @@ #define TVC_UNKNOWN 0x0000 #define TVC_BYMOUSE 0x0001 #define TVC_BYKEYBOARD 0x0002 @@ -1632,7 +1614,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TVN_GETDISPINFOA (TVN_FIRST-3) #define TVN_GETDISPINFOW (TVN_FIRST-52) -@@ -5472,6 +6062,20 @@ +@@ -5472,6 +6056,20 @@ #define TVN_SETDISPINFOW (TVN_FIRST-53) #define TVIF_DI_SETITEM 0x1000 @@ -1653,7 +1635,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TV_DISPINFOA NMTVDISPINFOA #define TV_DISPINFOW NMTVDISPINFOW -@@ -5698,10 +6302,20 @@ +@@ -5698,10 +6296,20 @@ #define CBEIF_LPARAM 0x00000020 #define CBEIF_DI_SETITEM 0x10000000 @@ -1675,7 +1657,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h INT_PTR iItem; LPSTR pszText; int cchTextMax; -@@ -5716,7 +6330,7 @@ +@@ -5716,7 +6324,7 @@ typedef struct tagCOMBOBOXEXITEMW { @@ -1684,7 +1666,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h INT_PTR iItem; LPWSTR pszText; int cchTextMax; -@@ -5961,10 +6575,23 @@ +@@ -5961,10 +6569,23 @@ #define TCIF_RTLREADING 0x0004 #define TCIF_PARAM 0x0008 #define TCIF_STATE 0x0010 @@ -1708,7 +1690,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define TC_ITEMHEADERA TCITEMHEADERA #define TC_ITEMHEADERW TCITEMHEADERW -@@ -5972,7 +6599,7 @@ +@@ -5972,7 +6593,7 @@ typedef struct tagTCITEMHEADERA { @@ -1717,7 +1699,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h UINT lpReserved1; UINT lpReserved2; LPSTR pszText; -@@ -5982,7 +6609,7 @@ +@@ -5982,7 +6603,7 @@ typedef struct tagTCITEMHEADERW { @@ -1726,7 +1708,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h UINT lpReserved1; UINT lpReserved2; LPWSTR pszText; -@@ -6005,9 +6632,9 @@ +@@ -6005,9 +6626,9 @@ typedef struct tagTCITEMA { @@ -1739,7 +1721,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPSTR pszText; int cchTextMax; int iImage; -@@ -6017,9 +6644,9 @@ +@@ -6017,9 +6638,9 @@ typedef struct tagTCITEMW { @@ -1752,7 +1734,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LPWSTR pszText; int cchTextMax; int iImage; -@@ -6104,6 +6731,13 @@ +@@ -6104,6 +6725,13 @@ #define TCHT_ONITEMICON 0x0002 #define TCHT_ONITEMLABEL 0x0004 #define TCHT_ONITEM (TCHT_ONITEMICON | TCHT_ONITEMLABEL) @@ -1766,7 +1748,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define LPTC_HITTESTINFO LPTCHITTESTINFO #define TC_HITTESTINFO TCHITTESTINFO -@@ -6111,7 +6745,7 @@ +@@ -6111,7 +6739,7 @@ typedef struct tagTCHITTESTINFO { POINT pt; @@ -1775,7 +1757,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } TCHITTESTINFO, *LPTCHITTESTINFO; #define TCM_HITTEST (TCM_FIRST + 13) -@@ -6396,7 +7030,7 @@ +@@ -6396,7 +7024,7 @@ UINT cbSize; POINT pt; @@ -1784,7 +1766,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h SYSTEMTIME st; #if (NTDDI_VERSION >= NTDDI_VISTA) RECT rc; -@@ -6435,6 +7069,29 @@ +@@ -6435,6 +7063,29 @@ #define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003) #define MCHT_CALENDARDATEMIN (MCHT_CALENDAR | 0x0004) #define MCHT_CALENDARDATEMAX (MCHT_CALENDAR | 0x0005) @@ -1814,7 +1796,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h // set first day of week to iDay: // 0 for Monday, 1 for Tuesday, ..., 6 for Sunday -@@ -6500,6 +7157,14 @@ +@@ -6500,6 +7151,14 @@ #define MCMV_DECADE 2 #define MCMV_CENTURY 3 #define MCMV_MAX MCMV_CENTURY @@ -1829,7 +1811,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #define MCM_GETCURRENTVIEW (MCM_FIRST + 22) #define MonthCal_GetCurrentView(hmc) \ -@@ -6519,16 +7184,34 @@ +@@ -6519,16 +7178,34 @@ #define MCGIP_CALENDARBODY 6 #define MCGIP_CALENDARROW 7 #define MCGIP_CALENDARCELL 8 @@ -1866,7 +1848,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iCalendar; int iRow; int iCol; -@@ -6613,8 +7296,8 @@ +@@ -6613,8 +7290,8 @@ typedef struct tagNMVIEWCHANGE { NMHDR nmhdr; // this must be first, so we don't break WM_NOTIFY @@ -1877,7 +1859,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } NMVIEWCHANGE, *LPNMVIEWCHANGE; #define MCN_VIEWCHANGE (MCN_FIRST - 4) // -750 -@@ -6780,7 +7463,7 @@ +@@ -6780,7 +7457,7 @@ typedef struct tagNMDATETIMECHANGE { NMHDR nmhdr; @@ -1886,7 +1868,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h SYSTEMTIME st; // valid iff dwFlags==GDT_VALID } NMDATETIMECHANGE, *LPNMDATETIMECHANGE; -@@ -6910,6 +7593,11 @@ +@@ -6910,6 +7587,11 @@ #define GDT_ERROR -1 #define GDT_VALID 0 #define GDT_NONE 1 @@ -1898,7 +1880,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #endif // _WIN32 -@@ -7086,12 +7774,26 @@ +@@ -7086,12 +7768,26 @@ #define PGF_SCROLLDOWN 2 #define PGF_SCROLLLEFT 4 #define PGF_SCROLLRIGHT 8 @@ -1925,7 +1907,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h #ifdef _WIN32 -@@ -7101,9 +7803,9 @@ +@@ -7101,9 +7797,9 @@ // This structure is sent along with PGN_SCROLL notifications typedef struct { NMHDR hdr; @@ -1937,7 +1919,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iXpos; // Horizontal scroll position int iYpos; // Vertical scroll position int iScroll; // [in/out] Amount to scroll -@@ -7119,10 +7821,15 @@ +@@ -7119,10 +7815,15 @@ #define PGF_CALCWIDTH 1 #define PGF_CALCHEIGHT 2 @@ -1954,7 +1936,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h int iWidth; int iHeight; }NMPGCALCSIZE, *LPNMPGCALCSIZE; -@@ -7209,12 +7916,20 @@ +@@ -7209,12 +7910,20 @@ #define BUTTON_IMAGELIST_ALIGN_TOP 2 #define BUTTON_IMAGELIST_ALIGN_BOTTOM 3 #define BUTTON_IMAGELIST_ALIGN_CENTER 4 // Doesn't draw text @@ -1976,7 +1958,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } BUTTON_IMAGELIST, *PBUTTON_IMAGELIST; #define BCM_GETIDEALSIZE (BCM_FIRST + 0x0001) -@@ -7239,7 +7954,7 @@ +@@ -7239,7 +7948,7 @@ typedef struct tagNMBCHOTITEM { NMHDR hdr; @@ -1985,7 +1967,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } NMBCHOTITEM, * LPNMBCHOTITEM; #define BCN_HOTITEMCHANGE (BCN_FIRST + 0x0001) -@@ -7407,7 +8122,7 @@ +@@ -7407,7 +8116,7 @@ DWORD cbStruct; LPCWSTR pszTitle; LPCWSTR pszText; @@ -1994,7 +1976,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h } EDITBALLOONTIP, *PEDITBALLOONTIP; #define EM_SHOWBALLOONTIP (ECM_FIRST + 3) // Show a balloon tip associated to the edit control #define Edit_ShowBalloonTip(hwnd, peditballoontip) \ -@@ -7626,7 +8341,11 @@ +@@ -7626,7 +8335,11 @@ typedef HRESULT (CALLBACK *PFTASKDIALOGCALLBACK)(_In_ HWND hwnd, _In_ UINT msg, _In_ WPARAM wParam, _In_ LPARAM lParam, _In_ LONG_PTR lpRefData); @@ -2007,7 +1989,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h { TDF_ENABLE_HYPERLINKS = 0x0001, TDF_USE_HICON_MAIN = 0x0002, -@@ -7725,13 +8444,17 @@ +@@ -7725,13 +8438,17 @@ }; typedef int TASKDIALOG_COMMON_BUTTON_FLAGS; // Note: _TASKDIALOG_COMMON_BUTTON_FLAGS is an int @@ -2026,7 +2008,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h PCWSTR pszWindowTitle; // string or MAKEINTRESOURCE() union { -@@ -7762,7 +8485,9 @@ +@@ -7762,7 +8479,9 @@ } TASKDIALOGCONFIG; @@ -2036,7 +2018,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HRESULT WINAPI TaskDialog(_In_opt_ HWND hwndOwner, _In_opt_ HINSTANCE hInstance, _In_opt_ PCWSTR pszWindowTitle, _In_opt_ PCWSTR pszMainInstruction, _In_opt_ PCWSTR pszContent, TASKDIALOG_COMMON_BUTTON_FLAGS dwCommonButtons, _In_opt_ PCWSTR pszIcon, _Out_opt_ int *pnButton); -@@ -7781,9 +8506,11 @@ +@@ -7781,9 +8500,11 @@ // === MUI APIs === // #ifndef NOMUI @@ -2048,7 +2030,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LANGID WINAPI GetMUILanguage(void); #endif // NOMUI -@@ -7835,6 +8562,7 @@ +@@ -7835,6 +8556,7 @@ // Declare _TrackMouseEvent. This API tries to use the window manager's // implementation of TrackMouseEvent if it is present, otherwise it emulates. // @@ -2056,7 +2038,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI BOOL WINAPI -@@ -7858,39 +8586,67 @@ +@@ -7858,39 +8580,67 @@ #define WSB_PROP_HSTYLE 0x00000200L #define WSB_PROP_WINSTYLE 0x00000400L #define WSB_PROP_PALETTE 0x00000800L @@ -2141,7 +2123,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h WINCOMMCTRLAPI HRESULT WINAPI UninitializeFlatSB(HWND); #endif // NOFLATSBAPIS -@@ -7907,13 +8663,17 @@ +@@ -7907,13 +8657,17 @@ LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData); @@ -2159,7 +2141,7 @@ diff --git a/um/commctrl.h b/um/commctrl.h LRESULT WINAPI DefSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); #endif -@@ -7925,13 +8685,16 @@ +@@ -7925,13 +8679,16 @@ LIM_LARGE, // corresponds to SM_CXICON/SM_CYICON }; diff --git a/generation/WinSDK/patches/um/commoncontrols.idl.patch b/generation/WinSDK/patches/um/commoncontrols.idl.patch index 36367817d..58b3a0e18 100644 --- a/generation/WinSDK/patches/um/commoncontrols.idl.patch +++ b/generation/WinSDK/patches/um/commoncontrols.idl.patch @@ -10,15 +10,7 @@ index 10787e66..f828ffed 100644 cpp_quote("#include ") #pragma region Desktop Family -@@ -21,6 +23,7 @@ - - typedef IUnknown* HIMAGELIST; - cpp_quote("typedef struct _IMAGELIST* HIMAGELIST;") -+cpp_quote("/* Win32Metadata: type ::HIMAGELIST => NativeTypedef */") - - typedef struct _IMAGELISTDRAWPARAMS - { -@@ -59,20 +62,26 @@ +@@ -59,20 +61,26 @@ cpp_quote("#if (NTDDI_VERSION >= NTDDI_VISTA)") cpp_quote("WINCOMMCTRLAPI HRESULT WINAPI ImageList_CoCreateInstance(") @@ -45,7 +37,7 @@ index 10787e66..f828ffed 100644 [ uuid(46EB5926-582E-4017-9FDF-E8998DAA0950), local -@@ -126,6 +135,7 @@ +@@ -126,6 +134,7 @@ // New for (_WIN32_IE >= 0x0605) diff --git a/generation/WinSDK/patches/um/compressapi.h.patch b/generation/WinSDK/patches/um/compressapi.h.patch index 35c5f9f63..b3ba7332c 100644 --- a/generation/WinSDK/patches/um/compressapi.h.patch +++ b/generation/WinSDK/patches/um/compressapi.h.patch @@ -1,173 +1,157 @@ diff --git a/um/compressapi.h b/um/compressapi.h --- a/um/compressapi.h +++ b/um/compressapi.h -@@ -30,9 +30,15 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - - DECLARE_HANDLE(COMPRESSOR_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef COMPRESSOR_HANDLE COMPRESSOR_HANDLE; -+#endif - typedef COMPRESSOR_HANDLE *PCOMPRESSOR_HANDLE; - - typedef COMPRESSOR_HANDLE DECOMPRESSOR_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef DECOMPRESSOR_HANDLE DECOMPRESSOR_HANDLE; -+#endif - typedef COMPRESSOR_HANDLE *PDECOMPRESSOR_HANDLE; - - #define COMPRESS_ALGORITHM_INVALID 0 -@@ -45,6 +51,15 @@ - - #define COMPRESS_RAW (1 << 29) - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+#include -+_Win32_Enum_(COMPRESS_ALGORITHM, unsigned long, -+ COMPRESS_ALGORITHM_MSZIP, -+ COMPRESS_ALGORITHM_XPRESS, -+ COMPRESS_ALGORITHM_XPRESS_HUFF, -+ COMPRESS_ALGORITHM_LZMS); -+#endif -+ - typedef PVOID (__cdecl *PFN_COMPRESS_ALLOCATE) ( - _In_ PVOID UserContext, - _In_ SIZE_T Size -@@ -69,14 +84,29 @@ - - // Compression routines - -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+// Keep the native cleanup visible to compiler-parsed producer annotations. -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ -+BOOL -+WINAPI -+CloseCompressor ( -+ _In_ COMPRESSOR_HANDLE CompressorHandle -+ ); -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - CreateCompressor ( -- _In_ DWORD Algorithm, -+ _In_ _Win32_AssociatedEnum_(COMPRESS_ALGORITHM) DWORD Algorithm, - _In_opt_ PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, -- _Out_ PCOMPRESSOR_HANDLE CompressorHandle -- ); -- -+ _Win32_RAIIFree_(CloseCompressor, -1, 0) _Out_ PCOMPRESSOR_HANDLE CompressorHandle -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - SetCompressorInformation ( -@@ -86,6 +116,8 @@ - _In_ SIZE_T CompressInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - QueryCompressorInformation ( -@@ -95,6 +127,8 @@ - _In_ SIZE_T CompressInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - Compress ( -@@ -106,12 +140,16 @@ - _Out_ PSIZE_T CompressedDataSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - ResetCompressor ( - _In_ COMPRESSOR_HANDLE CompressorHandle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - CloseCompressor ( -@@ -120,14 +158,29 @@ - - // Decompression routines - -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+// Keep the native cleanup visible to compiler-parsed producer annotations. -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ -+BOOL -+WINAPI -+CloseDecompressor ( -+ _In_ DECOMPRESSOR_HANDLE DecompressorHandle -+ ); -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - CreateDecompressor ( -- _In_ DWORD Algorithm, -+ _In_ _Win32_AssociatedEnum_(COMPRESS_ALGORITHM) DWORD Algorithm, - _In_opt_ PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, -- _Out_ PDECOMPRESSOR_HANDLE DecompressorHandle -- ); -- -+ _Win32_RAIIFree_(CloseDecompressor, -1, 0) _Out_ PDECOMPRESSOR_HANDLE DecompressorHandle -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - SetDecompressorInformation ( -@@ -137,6 +190,8 @@ - _In_ SIZE_T CompressInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - QueryDecompressorInformation ( -@@ -146,6 +201,8 @@ - _In_ SIZE_T CompressInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - Decompress ( -@@ -157,12 +214,16 @@ - _Out_opt_ PSIZE_T UncompressedDataSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - ResetDecompressor ( - _In_ DECOMPRESSOR_HANDLE DecompressorHandle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - BOOL - WINAPI - CloseDecompressor ( +@@ -45,6 +45,15 @@ + + #define COMPRESS_RAW (1 << 29) + ++#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) ++#include ++_Win32_Enum_(COMPRESS_ALGORITHM, unsigned long, ++ COMPRESS_ALGORITHM_MSZIP, ++ COMPRESS_ALGORITHM_XPRESS, ++ COMPRESS_ALGORITHM_XPRESS_HUFF, ++ COMPRESS_ALGORITHM_LZMS); ++#endif ++ + typedef PVOID (__cdecl *PFN_COMPRESS_ALLOCATE) ( + _In_ PVOID UserContext, + _In_ SIZE_T Size +@@ -69,14 +78,29 @@ + + // Compression routines + ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++// Keep the native cleanup visible to compiler-parsed producer annotations. ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ ++BOOL ++WINAPI ++CloseCompressor ( ++ _In_ COMPRESSOR_HANDLE CompressorHandle ++ ); ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + CreateCompressor ( +- _In_ DWORD Algorithm, ++ _In_ _Win32_AssociatedEnum_(COMPRESS_ALGORITHM) DWORD Algorithm, + _In_opt_ PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, +- _Out_ PCOMPRESSOR_HANDLE CompressorHandle +- ); +- ++ _Win32_RAIIFree_(CloseCompressor, -1, 0) _Out_ PCOMPRESSOR_HANDLE CompressorHandle ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + SetCompressorInformation ( +@@ -86,6 +110,8 @@ + _In_ SIZE_T CompressInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + QueryCompressorInformation ( +@@ -95,6 +121,8 @@ + _In_ SIZE_T CompressInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + Compress ( +@@ -106,12 +134,16 @@ + _Out_ PSIZE_T CompressedDataSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + ResetCompressor ( + _In_ COMPRESSOR_HANDLE CompressorHandle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + CloseCompressor ( +@@ -120,14 +152,29 @@ + + // Decompression routines + ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++// Keep the native cleanup visible to compiler-parsed producer annotations. ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ ++BOOL ++WINAPI ++CloseDecompressor ( ++ _In_ DECOMPRESSOR_HANDLE DecompressorHandle ++ ); ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + CreateDecompressor ( +- _In_ DWORD Algorithm, ++ _In_ _Win32_AssociatedEnum_(COMPRESS_ALGORITHM) DWORD Algorithm, + _In_opt_ PCOMPRESS_ALLOCATION_ROUTINES AllocationRoutines, +- _Out_ PDECOMPRESSOR_HANDLE DecompressorHandle +- ); +- ++ _Win32_RAIIFree_(CloseDecompressor, -1, 0) _Out_ PDECOMPRESSOR_HANDLE DecompressorHandle ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + SetDecompressorInformation ( +@@ -137,6 +184,8 @@ + _In_ SIZE_T CompressInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + QueryDecompressorInformation ( +@@ -146,6 +195,8 @@ + _In_ SIZE_T CompressInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + Decompress ( +@@ -157,12 +208,16 @@ + _Out_opt_ PSIZE_T UncompressedDataSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + ResetDecompressor ( + _In_ DECOMPRESSOR_HANDLE DecompressorHandle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + BOOL + WINAPI + CloseDecompressor ( diff --git a/generation/WinSDK/patches/um/computedefs.h.patch b/generation/WinSDK/patches/um/computedefs.h.patch deleted file mode 100644 index 89948b984..000000000 --- a/generation/WinSDK/patches/um/computedefs.h.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/um/computedefs.h b/um/computedefs.h ---- a/um/computedefs.h -+++ b/um/computedefs.h -@@ -24,15 +24,27 @@ - - // Handle to a compute system - DECLARE_HANDLE(HCS_SYSTEM); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCS_SYSTEM HCS_SYSTEM; -+#endif - - // Handle to a process running in a compute system - DECLARE_HANDLE(HCS_PROCESS); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCS_PROCESS HCS_PROCESS; -+#endif - - // Handle to an operation on a compute system - DECLARE_HANDLE(HCS_OPERATION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCS_OPERATION HCS_OPERATION; -+#endif - - // Handle to a callback registered on a compute system or process handle. - DECLARE_HANDLE(HCS_CALLBACK); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCS_CALLBACK HCS_CALLBACK; -+#endif - - // Type of an operation. These correspond to the functions that invoke the operation. - typedef enum HCS_OPERATION_TYPE diff --git a/generation/WinSDK/patches/um/d3dshadercacheregistration.idl.patch b/generation/WinSDK/patches/um/d3dshadercacheregistration.idl.patch deleted file mode 100644 index af2fec08e..000000000 --- a/generation/WinSDK/patches/um/d3dshadercacheregistration.idl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/um/d3dshadercacheregistration.idl b/um/d3dshadercacheregistration.idl -index cae31e4f..f1f91359 100644 ---- a/um/d3dshadercacheregistration.idl -+++ b/um/d3dshadercacheregistration.idl -@@ -127,6 +127,7 @@ - }; - - typedef struct SC_HANDLE__ *SC_HANDLE; -+cpp_quote("/* Win32Metadata: type ::SC_HANDLE => NativeTypedef */") - [uuid(bbe30de1-6318-4526-ae17-776693191bb4), object, local, pointer_default(unique)] - interface ID3DShaderCacheInstaller : IUnknown - { diff --git a/generation/WinSDK/patches/um/dbs.idl.patch b/generation/WinSDK/patches/um/dbs.idl.patch index b5ce8c055..1e2ea990c 100644 --- a/generation/WinSDK/patches/um/dbs.idl.patch +++ b/generation/WinSDK/patches/um/dbs.idl.patch @@ -2,27 +2,19 @@ diff --git a/um/dbs.idl b/um/dbs.idl --- a/um/dbs.idl +++ b/um/dbs.idl @@ -14,6 +14,8 @@ - // - //----------------------------------------------------------------------------- - -+#include -+cpp_quote("#include ") - cpp_quote("#include ") - - #pragma region Desktop Family -@@ -496,6 +498,7 @@ - // - - typedef ULONG_PTR HACCESSOR; -+cpp_quote("/* Win32Metadata: type ::HACCESSOR => NativeTypedef */") - - cpp_quote("#define DB_NULL_HACCESSOR 0x00 // deprecated; use DB_INVALID_HACCESSOR instead") - cpp_quote("#define DB_INVALID_HACCESSOR 0x00") -@@ -1972,6 +1975,7 @@ - cpp_quote("#endif // OLEDBVER >= 0x0260") - cpp_quote("//@@@- V2.6") - -+cpp_quote("/* Win32Metadata: field ::DBPROPINFO::vtType => AssociatedEnum(VARENUM) */") - typedef struct tagDBPROPINFO { - LPOLESTR pwszDescription; - DBPROPID dwPropertyID; + // + //----------------------------------------------------------------------------- + ++#include ++cpp_quote("#include ") + cpp_quote("#include ") + + #pragma region Desktop Family +@@ -1972,6 +1974,7 @@ + cpp_quote("#endif // OLEDBVER >= 0x0260") + cpp_quote("//@@@- V2.6") + ++cpp_quote("/* Win32Metadata: field ::DBPROPINFO::vtType => AssociatedEnum(VARENUM) */") + typedef struct tagDBPROPINFO { + LPOLESTR pwszDescription; + DBPROPID dwPropertyID; diff --git a/generation/WinSDK/patches/um/dciman.h.patch b/generation/WinSDK/patches/um/dciman.h.patch index 40636dc0c..02fef625d 100644 --- a/generation/WinSDK/patches/um/dciman.h.patch +++ b/generation/WinSDK/patches/um/dciman.h.patch @@ -1,13 +1,10 @@ diff --git a/um/dciman.h b/um/dciman.h --- a/um/dciman.h +++ b/um/dciman.h -@@ -34,13 +34,19 @@ +@@ -34,13 +34,16 @@ ***************************************************************************/ DECLARE_HANDLE(HWINWATCH); // context handle for WinWatch instance -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HWINWATCH HWINWATCH; -+#endif /**************************************************************************** ***************************************************************************/ @@ -21,7 +18,7 @@ diff --git a/um/dciman.h b/um/dciman.h extern int WINAPI DCICreatePrimary(HDC hdc, LPDCISURFACEINFO FAR *lplpSurface); extern int WINAPI DCICreateOffscreen(HDC hdc, DWORD dwCompression, DWORD dwRedMask, DWORD dwGreenMask, DWORD dwBlueMask, DWORD dwWidth, DWORD dwHeight, -@@ -78,9 +84,9 @@ +@@ -78,9 +81,9 @@ /**************************************************************************** helper functions to call DCIMAN16.DLL ***************************************************************************/ diff --git a/generation/WinSDK/patches/um/ddeml.h.patch b/generation/WinSDK/patches/um/ddeml.h.patch index 9df0989be..e6370d2fb 100644 --- a/generation/WinSDK/patches/um/ddeml.h.patch +++ b/generation/WinSDK/patches/um/ddeml.h.patch @@ -1,29 +1,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h --- a/um/ddeml.h +++ b/um/ddeml.h -@@ -33,9 +33,21 @@ - /******** public types ********/ - - DECLARE_HANDLE(HCONVLIST); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCONVLIST HCONVLIST; -+#endif - DECLARE_HANDLE(HCONV); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCONV HCONV; -+#endif - DECLARE_HANDLE(HSZ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSZ HSZ; -+#endif - DECLARE_HANDLE(HDDEDATA); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDDEDATA HDDEDATA; -+#endif - #define EXPENTRY CALLBACK - - /* the following structure is for use with XTYP_WILDCONNECT processing. */ -@@ -70,9 +82,9 @@ +@@ -70,9 +70,9 @@ HSZ hszTopic; /* Topic name for conversation */ HSZ hszItem; /* transaction item name or NULL if quiescent */ UINT wFmt; /* transaction format or NULL if quiescent */ @@ -36,7 +14,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h UINT wLastError; /* last transaction error. */ HCONVLIST hConvList; /* parent hConvList if this conversation is in a list */ CONVCONTEXT ConvCtxt; /* conversation context */ -@@ -100,6 +112,27 @@ +@@ -100,6 +100,27 @@ #define XST_ADVDATASENT 15 #define XST_ADVDATAACKRCVD 16 @@ -64,7 +42,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h /* used in LOWORD(dwData1) of XTYP_ADVREQ callbacks... */ #define CADV_LATEACK 0xFFFF -@@ -114,6 +147,19 @@ +@@ -114,6 +135,19 @@ #define ST_INLIST 0x0040 #define ST_BLOCKNEXT 0x0080 #define ST_ISSELF 0x0100 @@ -84,7 +62,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h /* DDE constants for wStatus field */ -@@ -218,19 +264,21 @@ +@@ -218,19 +252,21 @@ /* DLL registration functions */ @@ -108,7 +86,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h _Reserved_ DWORD ulRes); #ifdef UNICODE #define DdeInitialize DdeInitializeW -@@ -269,6 +317,7 @@ +@@ -269,6 +305,7 @@ #define APPCLASS_STANDARD 0x00000000L #define APPCLASS_MASK 0x0000000FL @@ -116,7 +94,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeUninitialize( -@@ -277,6 +326,7 @@ +@@ -277,6 +314,7 @@ /* * conversation enumeration functions */ @@ -124,7 +102,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HCONVLIST WINAPI DdeConnectList( -@@ -286,11 +336,13 @@ +@@ -286,11 +324,13 @@ _In_ HCONVLIST hConvList, _In_opt_ PCONVCONTEXT pCC); @@ -138,7 +116,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeDisconnectList( -@@ -299,6 +351,7 @@ +@@ -299,6 +339,7 @@ /* * conversation control functions */ @@ -146,7 +124,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HCONV WINAPI DdeConnect( -@@ -307,16 +360,19 @@ +@@ -307,16 +348,19 @@ _In_ HSZ hszTopic, _In_opt_ PCONVCONTEXT pCC); @@ -166,7 +144,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h UINT WINAPI DdeQueryConvInfo( -@@ -324,6 +380,7 @@ +@@ -324,6 +368,7 @@ _In_ DWORD idTransaction, _Inout_ PCONVINFO pConvInfo); @@ -174,7 +152,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeSetUserHandle( -@@ -331,6 +388,7 @@ +@@ -331,6 +376,7 @@ _In_ DWORD id, _In_ DWORD_PTR hUser); @@ -182,7 +160,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeAbandonTransaction( -@@ -342,6 +400,7 @@ +@@ -342,6 +388,7 @@ /* * app server interface functions */ @@ -190,7 +168,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdePostAdvise( -@@ -349,13 +408,16 @@ +@@ -349,13 +396,16 @@ _In_ HSZ hszTopic, _In_ HSZ hszItem); @@ -209,7 +187,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeImpersonateClient( -@@ -367,22 +429,40 @@ +@@ -367,22 +417,40 @@ #define EC_DISABLE ST_BLOCKED #define EC_QUERYWAITING 2 @@ -251,7 +229,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HDDEDATA WINAPI DdeClientTransaction( -@@ -391,7 +471,7 @@ +@@ -391,7 +459,7 @@ _In_ HCONV hConv, _In_opt_ HSZ hszItem, _In_ UINT wFmt, @@ -260,7 +238,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h _In_ DWORD dwTimeout, _Out_opt_ LPDWORD pdwResult); -@@ -400,6 +480,7 @@ +@@ -400,6 +468,7 @@ *data transfer functions */ @@ -268,7 +246,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HDDEDATA WINAPI DdeCreateDataHandle( -@@ -411,6 +492,7 @@ +@@ -411,6 +480,7 @@ _In_ UINT wFmt, _In_ UINT afCmd); @@ -276,7 +254,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HDDEDATA WINAPI DdeAddData( -@@ -419,6 +501,7 @@ +@@ -419,6 +489,7 @@ _In_ DWORD cb, _In_ DWORD cbOff); @@ -284,7 +262,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h DWORD WINAPI DdeGetData( -@@ -427,17 +510,20 @@ +@@ -427,17 +498,20 @@ _In_ DWORD cbMax, _In_ DWORD cbOff); @@ -305,7 +283,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h BOOL WINAPI DdeFreeDataHandle( -@@ -446,6 +532,7 @@ +@@ -446,6 +520,7 @@ #define HDATA_APPOWNED 0x0001 @@ -313,7 +291,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h UINT WINAPI DdeGetLastError( -@@ -477,12 +564,14 @@ +@@ -477,12 +552,14 @@ #define DMLERR_LAST 0x4011 @@ -328,7 +306,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h HSZ WINAPI DdeCreateStringHandleW( -@@ -495,6 +584,7 @@ +@@ -495,6 +572,7 @@ #define DdeCreateStringHandle DdeCreateStringHandleA #endif // !UNICODE @@ -336,7 +314,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h DWORD WINAPI DdeQueryStringA( -@@ -503,6 +593,7 @@ +@@ -503,6 +581,7 @@ _Out_writes_opt_(cchMax) LPSTR psz, _In_ DWORD cchMax, _In_ int iCodePage); @@ -344,7 +322,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h DWORD WINAPI DdeQueryStringW( -@@ -517,18 +608,21 @@ +@@ -517,18 +596,21 @@ #define DdeQueryString DdeQueryStringA #endif // !UNICODE @@ -366,7 +344,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h int WINAPI DdeCmpStringHandles( -@@ -643,6 +737,25 @@ +@@ -643,6 +725,25 @@ #define APPCLASS_MONITOR 0x00000001L #define XTYP_MONITOR (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK) @@ -392,7 +370,7 @@ diff --git a/um/ddeml.h b/um/ddeml.h /* * Callback filter flags for use with MONITOR apps - 0 implies no monitor * callbacks. -@@ -655,6 +768,33 @@ +@@ -655,6 +756,33 @@ #define MF_LINKS 0x20000000 #define MF_CONV 0x40000000 diff --git a/generation/WinSDK/patches/um/ddraw.h.patch b/generation/WinSDK/patches/um/ddraw.h.patch deleted file mode 100644 index e1abf345f..000000000 --- a/generation/WinSDK/patches/um/ddraw.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/ddraw.h b/um/ddraw.h ---- a/um/ddraw.h -+++ b/um/ddraw.h -@@ -132,6 +132,9 @@ - typedef struct IDirectDrawGammaControl FAR *LPDIRECTDRAWGAMMACONTROL; - - typedef struct _DDFXROP FAR *LPDDFXROP; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LPDDFXROP LPDDFXROP; -+#endif - - - typedef struct _DDSURFACEDESC FAR *LPDDSURFACEDESC; diff --git a/generation/WinSDK/patches/um/ddrawint.h.patch b/generation/WinSDK/patches/um/ddrawint.h.patch deleted file mode 100644 index a6b669987..000000000 --- a/generation/WinSDK/patches/um/ddrawint.h.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git a/um/ddrawint.h b/um/ddrawint.h ---- a/um/ddrawint.h -+++ b/um/ddrawint.h -@@ -190,7 +190,13 @@ - typedef struct _DD_CANCREATESURFACEDATA *PDD_CANCREATESURFACEDATA; - typedef struct _DD_WAITFORVERTICALBLANKDATA *PDD_WAITFORVERTICALBLANKDATA; - typedef struct _DD_DESTROYDRIVERDATA *PDD_DESTROYDRIVERDATA; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDD_DESTROYDRIVERDATA PDD_DESTROYDRIVERDATA; -+#endif - typedef struct _DD_SETMODEDATA *PDD_SETMODEDATA; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDD_SETMODEDATA PDD_SETMODEDATA; -+#endif - typedef struct _DD_DRVSETCOLORKEYDATA *PDD_DRVSETCOLORKEYDATA; - typedef struct _DD_GETSCANLINEDATA *PDD_GETSCANLINEDATA; - typedef struct _DD_MAPMEMORYDATA *PDD_MAPMEMORYDATA; -@@ -220,6 +226,9 @@ - typedef struct _DD_GETVPORTINPUTFORMATDATA *PDD_GETVPORTINPUTFORMATDATA; - typedef struct _DD_GETVPORTOUTPUTFORMATDATA *PDD_GETVPORTOUTPUTFORMATDATA; - typedef struct _DD_GETVPORTAUTOFLIPSURFACEDATA *PDD_GETVPORTAUTOFLIPSURFACEDATA; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDD_GETVPORTAUTOFLIPSURFACEDATA PDD_GETVPORTAUTOFLIPSURFACEDATA; -+#endif - typedef struct _DD_GETVPORTFIELDDATA *PDD_GETVPORTFIELDDATA; - typedef struct _DD_GETVPORTLINEDATA *PDD_GETVPORTLINEDATA; - typedef struct _DD_DESTROYVPORTDATA *PDD_DESTROYVPORTDATA; diff --git a/generation/WinSDK/patches/um/devquery.h.patch b/generation/WinSDK/patches/um/devquery.h.patch deleted file mode 100644 index 96101a36f..000000000 --- a/generation/WinSDK/patches/um/devquery.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/devquery.h b/um/devquery.h ---- a/um/devquery.h -+++ b/um/devquery.h -@@ -27,6 +27,9 @@ - #endif // defined(__cplusplus) - - DECLARE_HANDLE(HDEVQUERY); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDEVQUERY HDEVQUERY; -+#endif - typedef HDEVQUERY *PHDEVQUERY; - - typedef VOID (WINAPI *PDEV_QUERY_RESULT_CALLBACK)( diff --git a/generation/WinSDK/patches/um/diagnosticdataquery.h.patch b/generation/WinSDK/patches/um/diagnosticdataquery.h.patch index 6698787c9..0cfcfafe2 100644 --- a/generation/WinSDK/patches/um/diagnosticdataquery.h.patch +++ b/generation/WinSDK/patches/um/diagnosticdataquery.h.patch @@ -1,33 +1,15 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h --- a/um/diagnosticdataquery.h +++ b/um/diagnosticdataquery.h -@@ -5,31 +5,54 @@ +@@ -5,31 +5,36 @@ #include DECLARE_HANDLE(HDIAGNOSTIC_DATA_QUERY_SESSION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_DATA_QUERY_SESSION HDIAGNOSTIC_DATA_QUERY_SESSION; -+#endif DECLARE_HANDLE(HDIAGNOSTIC_REPORT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_REPORT HDIAGNOSTIC_REPORT; -+#endif DECLARE_HANDLE(HDIAGNOSTIC_EVENT_TAG_DESCRIPTION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_EVENT_TAG_DESCRIPTION HDIAGNOSTIC_EVENT_TAG_DESCRIPTION; -+#endif DECLARE_HANDLE(HDIAGNOSTIC_EVENT_PRODUCER_DESCRIPTION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_EVENT_PRODUCER_DESCRIPTION HDIAGNOSTIC_EVENT_PRODUCER_DESCRIPTION; -+#endif DECLARE_HANDLE(HDIAGNOSTIC_EVENT_CATEGORY_DESCRIPTION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_EVENT_CATEGORY_DESCRIPTION HDIAGNOSTIC_EVENT_CATEGORY_DESCRIPTION; -+#endif DECLARE_HANDLE(HDIAGNOSTIC_RECORD); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDIAGNOSTIC_RECORD HDIAGNOSTIC_RECORD; -+#endif #ifdef __cplusplus extern "C" { @@ -58,7 +40,7 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h STDAPI DdqGetDiagnosticRecordStats( _In_ HDIAGNOSTIC_DATA_QUERY_SESSION hSession, _In_ DIAGNOSTIC_DATA_SEARCH_CRITERIA const* searchCriteria, -@@ -38,64 +61,78 @@ +@@ -38,64 +43,78 @@ _Out_ INT64* maxRowId); // Caller is expected to free payload with CoTaskMemFree() @@ -143,7 +125,7 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h STDAPI DdqIsDiagnosticRecordSampledIn( _In_ HDIAGNOSTIC_DATA_QUERY_SESSION hSession, _In_ const GUID* providerGroup, -@@ -108,52 +145,63 @@ +@@ -108,52 +127,63 @@ _Out_ BOOL* isSampledIn); // Invoke DdqFreeDiagnosticRecordPage() to free record @@ -211,7 +193,7 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h STDAPI DdqExtractDiagnosticReport( _In_ HDIAGNOSTIC_DATA_QUERY_SESSION hSession, _In_ UINT32 reportStoreType, -@@ -161,6 +209,7 @@ +@@ -161,6 +191,7 @@ _In_ PCWSTR destinationPath); // Caller is expected to free tagStats with CoTaskMemFree() @@ -219,7 +201,7 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h STDAPI DdqGetDiagnosticRecordTagDistribution( _In_ HDIAGNOSTIC_DATA_QUERY_SESSION hSession, _In_reads_(producerNameCount) PCWSTR* producerNames, -@@ -169,6 +218,7 @@ +@@ -169,6 +200,7 @@ _Out_ UINT32* statCount); // Caller is expected to free binaryStats with CoTaskMemFree() @@ -227,7 +209,7 @@ diff --git a/um/diagnosticdataquery.h b/um/diagnosticdataquery.h STDAPI DdqGetDiagnosticRecordBinaryDistribution( _In_ HDIAGNOSTIC_DATA_QUERY_SESSION hSession, _In_reads_(producerNameCount) PCWSTR* producerNames, -@@ -177,16 +227,19 @@ +@@ -177,16 +209,19 @@ _Outptr_result_buffer_all_(*statCount) DIAGNOSTIC_DATA_EVENT_BINARY_STATS** binaryStats, _Out_ UINT32* statCount); diff --git a/generation/WinSDK/patches/um/dpa_dsa.h.patch b/generation/WinSDK/patches/um/dpa_dsa.h.patch index 69ec7feb7..4c0891f5a 100644 --- a/generation/WinSDK/patches/um/dpa_dsa.h.patch +++ b/generation/WinSDK/patches/um/dpa_dsa.h.patch @@ -13,15 +13,12 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma warning(push) #pragma warning(disable:4001) /* nonstandard extension : single line comment */ -@@ -69,9 +74,14 @@ +@@ -69,9 +74,11 @@ // Dynamic structure array struct _DSA; typedef struct _DSA *HDSA; - - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDSA HDSA; -+#endif + + +_Win32_SupportedOS_WindowsVista_ @@ -30,7 +27,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI BOOL WINAPI DSA_Destroy(_Inout_opt_ HDSA hdsa); WINCOMMCTRLAPI void WINAPI DSA_DestroyCallback(_Inout_opt_ HDSA hdsa, _In_ PFNDAENUMCALLBACK pfnCB, _In_opt_ void *pData); #ifdef __cplusplus -@@ -80,7 +90,9 @@ +@@ -80,7 +87,9 @@ DSA_DestroyCallback(hdsa, (PFNDAENUMCALLBACK)pfnCB, pData); } #endif @@ -40,7 +37,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI BOOL WINAPI DSA_DeleteAllItems(_Inout_ HDSA hdsa); WINCOMMCTRLAPI void WINAPI DSA_EnumCallback(_In_ HDSA hdsa, _In_ PFNDAENUMCALLBACK pfnCB, _In_opt_ void *pData); #ifdef __cplusplus -@@ -89,15 +101,20 @@ +@@ -89,15 +98,20 @@ DSA_EnumCallback(hdsa, (PFNDAENUMCALLBACK)pfnCB, pData); } #endif @@ -62,15 +59,12 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI ULONGLONG WINAPI DSA_GetSize(_In_opt_ HDSA hdsa); WINCOMMCTRLAPI BOOL WINAPI DSA_Sort(_Inout_ HDSA pdsa, _In_ PFNDACOMPARE pfnCompare, _In_ LPARAM lParam); #ifdef __cplusplus -@@ -119,11 +136,18 @@ +@@ -119,11 +133,15 @@ // Dynamic pointer array struct _DPA; typedef struct _DPA *HDPA; - - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDPA HDPA; -+#endif + + +_Win32_SupportedOS_WindowsVista_ @@ -83,7 +77,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI BOOL WINAPI DPA_Destroy(_Inout_opt_ HDPA hdpa); WINCOMMCTRLAPI void WINAPI DPA_DestroyCallback(_Inout_opt_ HDPA hdpa, _In_ PFNDAENUMCALLBACK pfnCB, _In_opt_ void *pData); #ifdef __cplusplus -@@ -132,7 +156,9 @@ +@@ -132,7 +150,9 @@ DPA_DestroyCallback(hdpa, (PFNDAENUMCALLBACK)pfnCB, pData); } #endif @@ -93,7 +87,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI BOOL WINAPI DPA_DeleteAllPtrs(_Inout_ HDPA hdpa); WINCOMMCTRLAPI void WINAPI DPA_EnumCallback(_In_opt_ HDPA hdpa, _In_opt_ PFNDAENUMCALLBACK pfnCB, _In_opt_ void *pData); #ifdef __cplusplus -@@ -141,10 +167,14 @@ +@@ -141,10 +161,14 @@ DPA_EnumCallback(hdpa, (PFNDAENUMCALLBACK)pfnCB, pData); } #endif @@ -109,7 +103,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI int WINAPI DPA_GetPtrIndex(_In_ HDPA hdpa, _In_opt_ const void *p); #define DPA_GetPtrCount(hdpa) (*(int *)(hdpa)) -@@ -155,6 +185,7 @@ +@@ -155,6 +179,7 @@ #define DPA_AppendPtr(hdpa, pitem) DPA_InsertPtr(hdpa, DA_LAST, pitem) #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -117,7 +111,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI ULONGLONG WINAPI DPA_GetSize(_In_opt_ HDPA hdpa); #endif // NTDDI_VISTA -@@ -190,7 +221,9 @@ +@@ -190,7 +215,9 @@ struct IStream; typedef HRESULT (CALLBACK *PFNDPASTREAM)(_In_ DPASTREAMINFO * pinfo, _In_ struct IStream * pstream, _In_opt_ void *pvInstData); @@ -127,7 +121,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI HRESULT WINAPI DPA_SaveStream(_In_ HDPA hdpa, _In_ PFNDPASTREAM pfn, _In_ struct IStream * pstream, _In_opt_ void *pvInstData); // Merge two DPAs. This takes two (optionally) presorted arrays and merges -@@ -223,14 +256,21 @@ +@@ -223,14 +250,21 @@ // the pointer of the merged item. It's okay to simply use pvDest // as the returned pointer. // @@ -151,7 +145,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h WINCOMMCTRLAPI BOOL WINAPI DPA_Merge(_Inout_ HDPA hdpaDest, _In_ HDPA hdpaSrc, _In_ DWORD dwFlags, _In_ PFNDACOMPARE pfnCompare, _In_ PFNDPAMERGE pfnMerge, _In_ LPARAM lParam); #ifdef __cplusplus extern "C++" __inline BOOL DPA_Merge(_Inout_ HDPA hdpaDest, _In_ HDPA hdpaSrc, _In_ DWORD dwFlags, _In_ PFNDACOMPARECONST pfnCompare, _In_ PFNDPAMERGECONST pfnMerge, _In_ LPARAM lParam) -@@ -257,9 +297,9 @@ +@@ -257,9 +291,9 @@ #define DPAS_INSERTBEFORE 0x0002 #define DPAS_INSERTAFTER 0x0004 @@ -164,7 +158,7 @@ diff --git a/um/dpa_dsa.h b/um/dpa_dsa.h { return DPA_Search(hdpa, const_cast(pFind), iStart, (PFNDACOMPARE)pfnCompare, lParam, options); } -@@ -279,6 +319,7 @@ +@@ -279,6 +313,7 @@ #endif // NO_COMMCTRL_DA diff --git a/generation/WinSDK/patches/um/esent.h.patch b/generation/WinSDK/patches/um/esent.h.patch deleted file mode 100644 index ef4a8dd83..000000000 --- a/generation/WinSDK/patches/um/esent.h.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/um/esent.h b/um/esent.h ---- a/um/esent.h -+++ b/um/esent.h -@@ -118,8 +118,14 @@ - - #if defined(_WIN64) - typedef JET_UINT64 JET_API_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_API_PTR JET_API_PTR; -+#endif - #else - typedef JET_UINT32 JET_API_PTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_API_PTR JET_API_PTR; -+#endif - #endif - - typedef _Return_type_success_( return >= 0 ) JET_INT32 JET_ERR; -@@ -130,11 +136,26 @@ - - - typedef JET_API_PTR JET_HANDLE; // backup file handle -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_HANDLE JET_HANDLE; -+#endif - typedef JET_API_PTR JET_INSTANCE; // Instance Identifier -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_INSTANCE JET_INSTANCE; -+#endif - typedef JET_API_PTR JET_SESID; // Session Identifier -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_SESID JET_SESID; -+#endif - typedef JET_API_PTR JET_TABLEID; // Table Identifier -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_TABLEID JET_TABLEID; -+#endif - #if ( JET_VERSION >= 0x0501 ) - typedef JET_API_PTR JET_LS; // Local Storage -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_LS JET_LS; -+#endif - #endif // JET_VERSION >= 0x0501 - - typedef JET_UINT32 JET_COLUMNID; // Column Identifier -@@ -7445,6 +7466,9 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PKG_ESENT) - - typedef JET_API_PTR JET_OSSNAPID; // Snapshot Session Identifier -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef JET_OSSNAPID JET_OSSNAPID; -+#endif - - JET_ERR JET_API - JetOSSnapshotPrepare( diff --git a/generation/WinSDK/patches/um/featurestagingapi.h.patch b/generation/WinSDK/patches/um/featurestagingapi.h.patch index 4558b9c57..9dc6e5849 100644 --- a/generation/WinSDK/patches/um/featurestagingapi.h.patch +++ b/generation/WinSDK/patches/um/featurestagingapi.h.patch @@ -10,17 +10,7 @@ diff --git a/um/featurestagingapi.h b/um/featurestagingapi.h #include #include -@@ -52,6 +54,9 @@ - } FEATURE_ERROR; - - DECLARE_HANDLE(FEATURE_STATE_CHANGE_SUBSCRIPTION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef FEATURE_STATE_CHANGE_SUBSCRIPTION FEATURE_STATE_CHANGE_SUBSCRIPTION; -+#endif - typedef void WINAPI FEATURE_STATE_CHANGE_CALLBACK(_In_opt_ void* context); - typedef FEATURE_STATE_CHANGE_CALLBACK *PFEATURE_STATE_CHANGE_CALLBACK; - -@@ -81,7 +86,7 @@ +@@ -81,7 +83,7 @@ EXTERN_C void SubscribeFeatureStateChangeNotification( diff --git a/generation/WinSDK/patches/um/gamingexperience.h.patch b/generation/WinSDK/patches/um/gamingexperience.h.patch index da40a1e3e..d684a5e5c 100644 --- a/generation/WinSDK/patches/um/gamingexperience.h.patch +++ b/generation/WinSDK/patches/um/gamingexperience.h.patch @@ -10,13 +10,10 @@ diff --git a/um/gamingexperience.h b/um/gamingexperience.h #include #include -@@ -59,13 +61,16 @@ +@@ -59,13 +61,13 @@ ); DECLARE_HANDLE(GAMING_FULL_SCREEN_EXPERIENCE_REGISTRATION); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef GAMING_FULL_SCREEN_EXPERIENCE_REGISTRATION GAMING_FULL_SCREEN_EXPERIENCE_REGISTRATION; -+#endif HRESULT WINAPI diff --git a/generation/WinSDK/patches/um/imessage.h.patch b/generation/WinSDK/patches/um/imessage.h.patch deleted file mode 100644 index 2a10cde4e..000000000 --- a/generation/WinSDK/patches/um/imessage.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/imessage.h b/um/imessage.h ---- a/um/imessage.h -+++ b/um/imessage.h -@@ -36,6 +36,9 @@ - #endif - - typedef struct _MSGSESS FAR * LPMSGSESS; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LPMSGSESS LPMSGSESS; -+#endif - - /* Typedef of optional callback routine to be called on last release of - * top-level messages opened with OpenIMsgOnIStg diff --git a/generation/WinSDK/patches/um/imm.h.patch b/generation/WinSDK/patches/um/imm.h.patch index d608c3d0f..fad4029b4 100644 --- a/generation/WinSDK/patches/um/imm.h.patch +++ b/generation/WinSDK/patches/um/imm.h.patch @@ -10,30 +10,7 @@ diff --git a/um/imm.h b/um/imm.h #ifdef __cplusplus extern "C" { -@@ -29,10 +29,22 @@ - - #if (WINVER >= 0x040A) - DECLARE_HANDLE(HIMC); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMC HIMC; -+#endif - DECLARE_HANDLE(HIMCC); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMCC HIMCC; -+#endif - #else - typedef DWORD HIMC; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMC HIMC; -+#endif - typedef DWORD HIMCC; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMCC HIMCC; -+#endif - #endif /* WINVER >= 0x040A */ - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ -@@ -216,111 +228,111 @@ +@@ -216,111 +216,111 @@ #pragma endregion #endif /* WINVER >= 0x040A */ @@ -186,7 +163,7 @@ diff --git a/um/imm.h b/um/imm.h #ifdef UNICODE #define ImmSetCompositionFont ImmSetCompositionFontW #else -@@ -328,48 +340,48 @@ +@@ -328,48 +328,48 @@ #endif // !UNICODE #endif // defined(_WINGDI_) && !defined(NOGDI) @@ -253,7 +230,7 @@ diff --git a/um/imm.h b/um/imm.h typedef int (CALLBACK *REGISTERWORDENUMPROCA)(_In_ LPCSTR lpszReading, DWORD, _In_ LPCSTR lpszString, LPVOID); typedef int (CALLBACK *REGISTERWORDENUMPROCW)(_In_ LPCWSTR lpszReading, DWORD, _In_ LPCWSTR lpszString, LPVOID); -@@ -379,32 +391,32 @@ +@@ -379,32 +379,32 @@ #define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA #endif // !UNICODE @@ -294,7 +271,7 @@ diff --git a/um/imm.h b/um/imm.h #ifdef UNICODE #define ImmEnumRegisterWord ImmEnumRegisterWordW #else -@@ -412,21 +424,21 @@ +@@ -412,21 +412,21 @@ #endif // !UNICODE #if (WINVER >= 0x040A) @@ -322,7 +299,7 @@ diff --git a/um/imm.h b/um/imm.h #endif /* WINVER >= 0x0602 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -510,6 +522,24 @@ +@@ -510,6 +510,24 @@ #define IME_ITHOTKEY_PREVIOUS_COMPOSITION 0x201 #define IME_ITHOTKEY_UISTYLE_TOGGLE 0x202 #define IME_ITHOTKEY_RECONVERTSTRING 0x203 @@ -347,7 +324,7 @@ diff --git a/um/imm.h b/um/imm.h #define IME_HOTKEY_PRIVATE_LAST 0x21F -@@ -526,6 +556,22 @@ +@@ -526,6 +544,22 @@ #define GCS_RESULTREADCLAUSE 0x0400 #define GCS_RESULTSTR 0x0800 #define GCS_RESULTCLAUSE 0x1000 @@ -370,7 +347,7 @@ diff --git a/um/imm.h b/um/imm.h // style bit flags for WM_IME_COMPOSITION #define CS_INSERTCHAR 0x2000 -@@ -603,6 +649,17 @@ +@@ -603,6 +637,17 @@ #define IGP_SETCOMPSTR 0x00000014 #define IGP_SELECT 0x00000018 @@ -388,7 +365,7 @@ diff --git a/um/imm.h b/um/imm.h // dwIndex for ImmSetCompositionString API #define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR) #define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR) -@@ -630,10 +687,10 @@ +@@ -630,10 +675,10 @@ #define GCL_CONVERSION 0x0001 #define GCL_REVERSECONVERSION 0x0002 #define GCL_REVERSE_LENGTH 0x0003 @@ -402,7 +379,7 @@ diff --git a/um/imm.h b/um/imm.h // bit field for conversion mode // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually. #define IME_CMODE_HANGEUL IME_CMODE_NATIVE -@@ -652,6 +709,17 @@ +@@ -652,6 +697,17 @@ #define IME_SMODE_PHRASEPREDICT 0x0008 #define IME_SMODE_CONVERSATION 0x0010 #define IME_SMODE_RESERVED 0x0000F000 @@ -420,7 +397,7 @@ diff --git a/um/imm.h b/um/imm.h // style of candidate -@@ -718,6 +786,25 @@ +@@ -718,6 +774,25 @@ #define IME_ESC_PRIVATE_HOTKEY 0x100a #define IME_ESC_GETHELPFILENAME 0x100b diff --git a/generation/WinSDK/patches/um/immdev.h.patch b/generation/WinSDK/patches/um/immdev.h.patch index 94d86a456..21bc98c03 100644 --- a/generation/WinSDK/patches/um/immdev.h.patch +++ b/generation/WinSDK/patches/um/immdev.h.patch @@ -10,30 +10,7 @@ diff --git a/um/immdev.h b/um/immdev.h #ifdef __cplusplus extern "C" { -@@ -28,10 +28,22 @@ - - #if (WINVER >= 0x040A) - DECLARE_HANDLE(HIMC); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMC HIMC; -+#endif - DECLARE_HANDLE(HIMCC); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMCC HIMCC; -+#endif - #else - typedef DWORD HIMC; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMC HIMC; -+#endif - typedef DWORD HIMCC; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIMCC HIMCC; -+#endif - #endif /* WINVER >= 0x040A */ - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ -@@ -215,111 +227,111 @@ +@@ -215,111 +215,111 @@ #pragma endregion #endif /* WINVER >= 0x040A */ @@ -186,7 +163,7 @@ diff --git a/um/immdev.h b/um/immdev.h #ifdef UNICODE #define ImmSetCompositionFont ImmSetCompositionFontW #else -@@ -327,48 +339,48 @@ +@@ -327,48 +327,48 @@ #endif // !UNICODE #endif // defined(_WINGDI_) && !defined(NOGDI) @@ -253,7 +230,7 @@ diff --git a/um/immdev.h b/um/immdev.h typedef int (CALLBACK *REGISTERWORDENUMPROCA)(_In_ LPCSTR lpszReading, DWORD, _In_ LPCSTR lpszString, LPVOID); typedef int (CALLBACK *REGISTERWORDENUMPROCW)(_In_ LPCWSTR lpszReading, DWORD, _In_ LPCWSTR lpszString, LPVOID); -@@ -378,32 +390,32 @@ +@@ -378,32 +378,32 @@ #define REGISTERWORDENUMPROC REGISTERWORDENUMPROCA #endif // !UNICODE @@ -294,7 +271,7 @@ diff --git a/um/immdev.h b/um/immdev.h #ifdef UNICODE #define ImmEnumRegisterWord ImmEnumRegisterWordW #else -@@ -411,21 +423,21 @@ +@@ -411,21 +411,21 @@ #endif // !UNICODE #if (WINVER >= 0x040A) @@ -322,7 +299,7 @@ diff --git a/um/immdev.h b/um/immdev.h #endif /* WINVER >= 0x0602 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -629,10 +641,10 @@ +@@ -629,10 +629,10 @@ #define GCL_CONVERSION 0x0001 #define GCL_REVERSECONVERSION 0x0002 #define GCL_REVERSE_LENGTH 0x0003 @@ -336,7 +313,7 @@ diff --git a/um/immdev.h b/um/immdev.h // bit field for conversion mode // IME_CMODE_HANGEUL is old name of IME_CMODE_HANGUL. It will be gone eventually. #define IME_CMODE_HANGEUL IME_CMODE_NATIVE -@@ -764,10 +776,10 @@ +@@ -764,10 +764,10 @@ #define SOFTKEYBOARD_TYPE_T1 0x0001 // for Windows Simplified Chinese Edition #define SOFTKEYBOARD_TYPE_C1 0x0002 @@ -350,7 +327,7 @@ diff --git a/um/immdev.h b/um/immdev.h #ifndef _IMM_DDK_DEFINED_ #define _IMM_DDK_DEFINED_ -@@ -921,7 +933,9 @@ +@@ -921,7 +921,9 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) diff --git a/generation/WinSDK/patches/um/interactioncontext.h.patch b/generation/WinSDK/patches/um/interactioncontext.h.patch index 2233c6a8f..121d755df 100644 --- a/generation/WinSDK/patches/um/interactioncontext.h.patch +++ b/generation/WinSDK/patches/um/interactioncontext.h.patch @@ -9,17 +9,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h #include -@@ -282,6 +283,9 @@ - #endif - - DECLARE_HANDLE(HINTERACTIONCONTEXT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HINTERACTIONCONTEXT HINTERACTIONCONTEXT; -+#endif - - #define INTERACTION_CONTEXT_CONFIGURATION_DEFAULT \ - { \ -@@ -308,16 +312,19 @@ +@@ -308,16 +309,19 @@ #define INERTIA_PARAMETER_INVALID_VALUE FLT_MAX @@ -41,7 +31,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI RegisterOutputCallbackInteractionContext( -@@ -334,6 +341,7 @@ +@@ -334,6 +338,7 @@ _In_opt_ void *clientData); #endif @@ -49,7 +39,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI SetInteractionConfigurationInteractionContext( -@@ -341,6 +349,7 @@ +@@ -341,6 +346,7 @@ _In_ UINT32 configurationCount, _In_reads_(configurationCount) const INTERACTION_CONTEXT_CONFIGURATION *configuration); @@ -57,7 +47,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetInteractionConfigurationInteractionContext( -@@ -348,6 +357,7 @@ +@@ -348,6 +354,7 @@ _In_ UINT32 configurationCount, _Inout_updates_(configurationCount) INTERACTION_CONTEXT_CONFIGURATION *configuration); @@ -65,7 +55,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI SetPropertyInteractionContext( -@@ -355,6 +365,7 @@ +@@ -355,6 +362,7 @@ _In_ INTERACTION_CONTEXT_PROPERTY contextProperty, _In_ UINT32 value); @@ -73,7 +63,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetPropertyInteractionContext( -@@ -362,6 +373,7 @@ +@@ -362,6 +370,7 @@ _In_ INTERACTION_CONTEXT_PROPERTY contextProperty, _Out_writes_(1) UINT32 *value); @@ -81,7 +71,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI SetInertiaParameterInteractionContext( -@@ -369,6 +381,7 @@ +@@ -369,6 +378,7 @@ _In_ INERTIA_PARAMETER inertiaParameter, _In_ float value); @@ -89,7 +79,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetInertiaParameterInteractionContext( -@@ -376,6 +389,7 @@ +@@ -376,6 +386,7 @@ _In_ INERTIA_PARAMETER inertiaParameter, _Out_writes_(1) float *value); @@ -97,7 +87,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI SetCrossSlideParametersInteractionContext( -@@ -383,6 +397,7 @@ +@@ -383,6 +394,7 @@ _In_ UINT32 parameterCount, _In_reads_(parameterCount) CROSS_SLIDE_PARAMETER *crossSlideParameters); @@ -105,7 +95,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetCrossSlideParameterInteractionContext( -@@ -434,6 +449,7 @@ +@@ -434,6 +446,7 @@ _Out_ float *value); #endif @@ -113,7 +103,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI SetMouseWheelParameterInteractionContext( -@@ -441,6 +457,7 @@ +@@ -441,6 +454,7 @@ _In_ MOUSE_WHEEL_PARAMETER parameter, _In_ float value); @@ -121,7 +111,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetMouseWheelParameterInteractionContext( -@@ -448,11 +465,13 @@ +@@ -448,11 +462,13 @@ _In_ MOUSE_WHEEL_PARAMETER parameter, _Out_writes_(1) float *value); @@ -135,7 +125,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI GetStateInteractionContext( -@@ -460,18 +479,21 @@ +@@ -460,18 +476,21 @@ _In_opt_ const POINTER_INFO *pointerInfo, _Out_writes_(1) INTERACTION_STATE *state); @@ -157,7 +147,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI ProcessPointerFramesInteractionContext( -@@ -480,6 +502,7 @@ +@@ -480,6 +499,7 @@ _In_ UINT32 pointerCount, _In_reads_(entriesCount * pointerCount) const POINTER_INFO *pointerInfo); @@ -165,7 +155,7 @@ diff --git a/um/interactioncontext.h b/um/interactioncontext.h HRESULT WINAPI BufferPointerPacketsInteractionContext( -@@ -487,21 +510,25 @@ +@@ -487,21 +507,25 @@ _In_ UINT32 entriesCount, _In_reads_(entriesCount) const POINTER_INFO *pointerInfo); diff --git a/generation/WinSDK/patches/um/ioringapi.h.patch b/generation/WinSDK/patches/um/ioringapi.h.patch index 33b613b73..8434af228 100644 --- a/generation/WinSDK/patches/um/ioringapi.h.patch +++ b/generation/WinSDK/patches/um/ioringapi.h.patch @@ -9,17 +9,7 @@ diff --git a/um/ioringapi.h b/um/ioringapi.h #include #include #include -@@ -26,6 +27,9 @@ - // Opaque `HANDLE` for an IORING - // Release resources held by this using CloseIoRing(); [NOT CloseHandle()!] - DECLARE_HANDLE(HIORING); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIORING HIORING; -+#endif - - // Flags to alter the behavior of the kernel for a submission queue entry - typedef enum IORING_SQE_FLAGS -@@ -205,7 +209,7 @@ +@@ -205,7 +206,7 @@ IORING_CREATE_FLAGS flags, UINT32 submissionQueueSize, UINT32 completionQueueSize, @@ -28,7 +18,7 @@ diff --git a/um/ioringapi.h b/um/ioringapi.h ); STDAPI GetIoRingInfo(_In_ HIORING ioRing, _Out_ IORING_INFO* info); -@@ -214,7 +218,7 @@ +@@ -214,7 +215,7 @@ STDAPI CloseIoRing(_In_ _Post_ptr_invalid_ HIORING ioRing); diff --git a/generation/WinSDK/patches/um/iphlpapi.h.patch b/generation/WinSDK/patches/um/iphlpapi.h.patch index 246ed019c..72b5acb09 100644 --- a/generation/WinSDK/patches/um/iphlpapi.h.patch +++ b/generation/WinSDK/patches/um/iphlpapi.h.patch @@ -560,17 +560,7 @@ index 3a4ac2c..bf1920e 100644 _Inout_ PULONG pOutBufLen ); #endif -@@ -974,6 +1037,9 @@ typedef struct _INTERFACE_HARDWARE_CROSSTIMESTAMP - } INTERFACE_HARDWARE_CROSSTIMESTAMP, *PINTERFACE_HARDWARE_CROSSTIMESTAMP; - - DECLARE_HANDLE(HIFTIMESTAMPCHANGE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIFTIMESTAMPCHANGE HIFTIMESTAMPCHANGE; -+#endif - - IPHLPAPI_DLL_LINKAGE - DWORD -@@ -1015,7 +1081,7 @@ WINAPI +@@ -1015,7 +1078,7 @@ WINAPI RegisterInterfaceTimestampConfigChange( _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, _In_opt_ PVOID CallerContext, @@ -579,7 +569,7 @@ index 3a4ac2c..bf1920e 100644 ); IPHLPAPI_DLL_LINKAGE -@@ -1047,7 +1113,7 @@ WINAPI +@@ -1047,7 +1110,7 @@ WINAPI NotifyIfTimestampConfigChange( _In_opt_ PVOID CallerContext, _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, @@ -588,17 +578,7 @@ index 3a4ac2c..bf1920e 100644 ); IPHLPAPI_DLL_LINKAGE -@@ -1102,6 +1168,9 @@ typedef struct _INTERFACE_HARDWARE_CROSSTIMESTAMP - } INTERFACE_HARDWARE_CROSSTIMESTAMP, *PINTERFACE_HARDWARE_CROSSTIMESTAMP; - - DECLARE_HANDLE(HIFTIMESTAMPCHANGE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIFTIMESTAMPCHANGE HIFTIMESTAMPCHANGE; -+#endif - - IPHLPAPI_DLL_LINKAGE - DWORD -@@ -1143,7 +1212,7 @@ WINAPI +@@ -1143,7 +1206,7 @@ WINAPI NotifyIfTimestampConfigChange( _In_opt_ PVOID CallerContext, _In_ PINTERFACE_TIMESTAMP_CONFIG_CHANGE_CALLBACK Callback, @@ -607,7 +587,7 @@ index 3a4ac2c..bf1920e 100644 ); IPHLPAPI_DLL_LINKAGE -@@ -1161,6 +1230,7 @@ CancelIfTimestampConfigChange( +@@ -1161,6 +1224,7 @@ CancelIfTimestampConfigChange( #pragma region Desktop Family or OneCore Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -615,7 +595,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1168,6 +1238,7 @@ IpReleaseAddress( +@@ -1168,6 +1232,7 @@ IpReleaseAddress( _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo ); @@ -623,7 +603,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1175,6 +1246,7 @@ IpRenewAddress( +@@ -1175,6 +1240,7 @@ IpRenewAddress( _In_ PIP_ADAPTER_INDEX_MAP AdapterInfo ); @@ -631,7 +611,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1185,6 +1257,8 @@ SendARP( +@@ -1185,6 +1251,8 @@ SendARP( _Inout_ PULONG PhyAddrLen ); @@ -640,7 +620,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE BOOL WINAPI -@@ -1195,6 +1269,7 @@ GetRTTAndHopCount( +@@ -1195,6 +1263,7 @@ GetRTTAndHopCount( _Out_ PULONG RTT ); @@ -648,7 +628,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1202,6 +1277,7 @@ GetFriendlyIfIndex( +@@ -1202,6 +1271,7 @@ GetFriendlyIfIndex( _In_ DWORD IfIndex ); @@ -656,7 +636,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1210,6 +1286,7 @@ EnableRouter( +@@ -1210,6 +1280,7 @@ EnableRouter( _Out_ OVERLAPPED* pOverlapped ); @@ -664,7 +644,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1218,6 +1295,7 @@ UnenableRouter( +@@ -1218,6 +1289,7 @@ UnenableRouter( _Out_opt_ LPDWORD lpdwEnableCount ); @@ -672,7 +652,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1226,6 +1304,7 @@ DisableMediaSense( +@@ -1226,6 +1298,7 @@ DisableMediaSense( _In_ OVERLAPPED *pOverLapped ); @@ -680,7 +660,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1236,6 +1315,7 @@ RestoreMediaSense( +@@ -1236,6 +1309,7 @@ RestoreMediaSense( #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -688,7 +668,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE DWORD WINAPI -@@ -1247,6 +1327,7 @@ GetIpErrorString( +@@ -1247,6 +1321,7 @@ GetIpErrorString( #if (NTDDI_VERSION >= NTDDI_VISTA) #ifdef _WS2DEF_ @@ -696,7 +676,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1262,6 +1343,7 @@ ResolveNeighbor( +@@ -1262,6 +1337,7 @@ ResolveNeighbor( // Port reservation API routines. // @@ -704,7 +684,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1271,6 +1353,7 @@ CreatePersistentTcpPortReservation( +@@ -1271,6 +1347,7 @@ CreatePersistentTcpPortReservation( _Out_ PULONG64 Token ); @@ -712,7 +692,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1280,6 +1363,7 @@ CreatePersistentUdpPortReservation( +@@ -1280,6 +1357,7 @@ CreatePersistentUdpPortReservation( _Out_ PULONG64 Token ); @@ -720,7 +700,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1288,6 +1372,7 @@ DeletePersistentTcpPortReservation( +@@ -1288,6 +1366,7 @@ DeletePersistentTcpPortReservation( _In_ USHORT NumberOfPorts ); @@ -728,7 +708,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1296,6 +1381,7 @@ DeletePersistentUdpPortReservation( +@@ -1296,6 +1375,7 @@ DeletePersistentUdpPortReservation( _In_ USHORT NumberOfPorts ); @@ -736,7 +716,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1305,6 +1391,7 @@ LookupPersistentTcpPortReservation( +@@ -1305,6 +1385,7 @@ LookupPersistentTcpPortReservation( _Out_ PULONG64 Token ); @@ -744,7 +724,7 @@ index 3a4ac2c..bf1920e 100644 IPHLPAPI_DLL_LINKAGE ULONG WINAPI -@@ -1415,6 +1502,7 @@ typedef struct NET_ADDRESS_INFO_ +@@ -1415,6 +1496,7 @@ typedef struct NET_ADDRESS_INFO_ #pragma warning(pop) // 4201 nonstandard extension used: nameless struct/union diff --git a/generation/WinSDK/patches/um/lmaccess.h.patch b/generation/WinSDK/patches/um/lmaccess.h.patch index c0c6cebb3..428c206e4 100644 --- a/generation/WinSDK/patches/um/lmaccess.h.patch +++ b/generation/WinSDK/patches/um/lmaccess.h.patch @@ -551,17 +551,7 @@ index d6bf1c4c..e349d485 100644 _Success_(return == ERROR_SUCCESS) NET_API_STATUS NET_API_FUNCTION NetGetAnyDCName ( -@@ -1590,6 +1663,9 @@ NetLogonControl2 ( - - #ifndef _NTDEF_ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef NTSTATUS NTSTATUS; -+#endif - #endif - - NTSTATUS NET_API_FUNCTION -@@ -1711,6 +1787,7 @@ DEFINE_GUID( //262e99c9-6160-4871-acec-4e61736b6f21 +@@ -1711,6 +1784,7 @@ DEFINE_GUID( //262e99c9-6160-4871-acec-4e61736b6f21 0x4871, 0xAC, 0xEC, 0x4E, 0x61, 0x73, 0x6B, 0x6F, 0x21 ); @@ -569,7 +559,7 @@ index d6bf1c4c..e349d485 100644 NTSTATUS NetAddServiceAccount( _In_opt_ LPWSTR ServerName, -@@ -1736,12 +1813,14 @@ NetAddServiceAccount( +@@ -1736,12 +1810,14 @@ NetAddServiceAccount( // attempt to unlink or delete the account #define SERVICE_ACCOUNT_FLAG_REMOVE_OFFLINE 0x00000002L @@ -584,7 +574,7 @@ index d6bf1c4c..e349d485 100644 NTSTATUS NetEnumerateServiceAccounts( _In_opt_ LPWSTR ServerName, -@@ -1749,6 +1828,7 @@ NetEnumerateServiceAccounts( +@@ -1749,6 +1825,7 @@ NetEnumerateServiceAccounts( _Out_ DWORD* AccountsCount, _Outptr_result_buffer_(*AccountsCount) PZPWSTR* Accounts); @@ -592,7 +582,7 @@ index d6bf1c4c..e349d485 100644 NTSTATUS NetIsServiceAccount( _In_opt_ LPWSTR ServerName, -@@ -1762,6 +1842,7 @@ NetIsServiceAccount2( +@@ -1762,6 +1839,7 @@ NetIsServiceAccount2( _Out_ BOOL * IsService, _Out_ MSA_INFO_ACCOUNT_TYPE * AccountType); diff --git a/generation/WinSDK/patches/um/lpmapi.h.patch b/generation/WinSDK/patches/um/lpmapi.h.patch index 738041cf8..1245a35f7 100644 --- a/generation/WinSDK/patches/um/lpmapi.h.patch +++ b/generation/WinSDK/patches/um/lpmapi.h.patch @@ -1,17 +1,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h --- a/um/lpmapi.h +++ b/um/lpmapi.h -@@ -962,6 +962,9 @@ - DECLARE_HANDLE(LPM_HANDLE); - - DECLARE_HANDLE(RHANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RHANDLE RHANDLE; -+#endif - - typedef ULONG LPV; - -@@ -1092,7 +1095,7 @@ +@@ -1092,7 +1092,7 @@ ULONG APIENTRY @@ -20,7 +10,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN LPM_HANDLE LpmHandle, -@@ -1112,7 +1115,7 @@ +@@ -1112,7 +1112,7 @@ ULONG APIENTRY @@ -29,7 +19,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN LPM_HANDLE LpmHandle ); -@@ -1139,7 +1142,7 @@ +@@ -1139,7 +1139,7 @@ ULONG APIENTRY @@ -38,7 +28,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN RHANDLE PcmReqHandle, -@@ -1168,7 +1171,7 @@ +@@ -1168,7 +1168,7 @@ ULONG APIENTRY @@ -47,7 +37,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN RHANDLE PcmReqHandle, -@@ -1202,7 +1205,7 @@ +@@ -1202,7 +1202,7 @@ VOID APIENTRY @@ -56,7 +46,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN RSVP_HOP *pRcvdIfAddr, -@@ -1240,7 +1243,7 @@ +@@ -1240,7 +1240,7 @@ BOOL APIENTRY @@ -65,7 +55,7 @@ diff --git a/um/lpmapi.h b/um/lpmapi.h IN ULONG cIpAddrTable, -@@ -1260,7 +1263,7 @@ +@@ -1260,7 +1260,7 @@ VOID APIENTRY diff --git a/generation/WinSDK/patches/um/mimeole.idl.patch b/generation/WinSDK/patches/um/mimeole.idl.patch deleted file mode 100644 index 3f989d61f..000000000 --- a/generation/WinSDK/patches/um/mimeole.idl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/um/mimeole.idl b/um/mimeole.idl -index 4152e37b..1ca47a63 100644 ---- a/um/mimeole.idl -+++ b/um/mimeole.idl -@@ -1183,6 +1183,7 @@ - cpp_quote("#ifndef __WINCRYPT_H__") - typedef const void *PCX509CERT; - typedef void *HCERTSTORE; -+ cpp_quote("/* Win32Metadata: type ::HCERTSTORE => NativeTypedef */") - cpp_quote("#else") - cpp_quote("typedef PCCERT_CONTEXT PCX509CERT;") - cpp_quote("#endif // __WINCRYPT_H_") diff --git a/generation/WinSDK/patches/um/mmc.idl.patch b/generation/WinSDK/patches/um/mmc.idl.patch index 658427d81..bc718ffa2 100644 --- a/generation/WinSDK/patches/um/mmc.idl.patch +++ b/generation/WinSDK/patches/um/mmc.idl.patch @@ -126,18 +126,17 @@ index ad21af41..b055b484 100644 [ object, uuid(255F18CC-65DB-11D1-A7DC-00C04FD8D565), -@@ -1588,7 +1607,9 @@ +@@ -1588,7 +1607,8 @@ struct _PSP; typedef struct _PSP * HPROPSHEETPAGE; - -+cpp_quote("/* Win32Metadata: type ::HPROPSHEETPAGE => NativeTypedef */") + +cpp_quote("/* Win32Metadata: interface ::IPropertySheetCallback => SupportedOSPlatform(\"windows6.0.6000\") */") [ local, object, -@@ -1606,6 +1627,7 @@ +@@ -1606,6 +1626,7 @@ HRESULT RemovePage([in] HPROPSHEETPAGE hPage); }; @@ -145,7 +144,7 @@ index ad21af41..b055b484 100644 [ object, uuid(85DE64DE-EF21-11cf-A285-00C04FD8DBE6), -@@ -1632,6 +1654,7 @@ +@@ -1632,6 +1653,7 @@ HRESULT Show([in] LONG_PTR window, [in] int page); }; @@ -153,7 +152,7 @@ index ad21af41..b055b484 100644 [ object, uuid(85DE64DC-EF21-11cf-A285-00C04FD8DBE6), -@@ -1656,6 +1679,7 @@ +@@ -1656,6 +1678,7 @@ @@ -161,7 +160,7 @@ index ad21af41..b055b484 100644 [ object, uuid(69FB811E-6C1C-11D0-A2CB-00C04FD909DD), -@@ -1676,6 +1700,7 @@ +@@ -1676,6 +1699,7 @@ HRESULT Detach([in] LPUNKNOWN lpUnknown); }; @@ -169,7 +168,7 @@ index ad21af41..b055b484 100644 [ object, uuid(49506520-6F40-11D0-A98B-00C04FD8D565), -@@ -1693,6 +1718,7 @@ +@@ -1693,6 +1717,7 @@ }; @@ -177,7 +176,7 @@ index ad21af41..b055b484 100644 [ object, uuid(43136EB9-D36C-11CF-ADBC-00AA00A80033), -@@ -1720,6 +1746,7 @@ +@@ -1720,6 +1745,7 @@ }; @@ -185,7 +184,7 @@ index ad21af41..b055b484 100644 [ object, uuid(E49F7A60-74AF-11D0-A286-00C04FD8FE93), -@@ -1741,6 +1768,7 @@ +@@ -1741,6 +1767,7 @@ }; @@ -193,7 +192,7 @@ index ad21af41..b055b484 100644 [ object, uuid(1245208C-A151-11D0-A7D7-00C04FD909DD), -@@ -1768,6 +1796,7 @@ +@@ -1768,6 +1795,7 @@ }; @@ -201,7 +200,7 @@ index ad21af41..b055b484 100644 [ object, uuid(951ED750-D080-11d0-B197-000000000000), -@@ -1790,6 +1819,7 @@ +@@ -1790,6 +1818,7 @@ }; @@ -209,7 +208,7 @@ index ad21af41..b055b484 100644 [ object, uuid(A6B15ACE-DF59-11D0-A7DD-00C04FD909DD), -@@ -1812,6 +1842,7 @@ +@@ -1812,6 +1841,7 @@ //// cpp_quote("#if (MMC_VER >= 0x0110)") @@ -217,7 +216,7 @@ index ad21af41..b055b484 100644 [ object, uuid(B7A87232-4A51-11D1-A7EA-00C04FD909DD), -@@ -1828,6 +1859,7 @@ +@@ -1828,6 +1858,7 @@ [out] BOOL* bStretch); }; @@ -225,7 +224,7 @@ index ad21af41..b055b484 100644 [ object, uuid(9757abb8-1b32-11d1-a7ce-00c04fd8d565), -@@ -1847,6 +1879,7 @@ +@@ -1847,6 +1878,7 @@ }; @@ -233,7 +232,7 @@ index ad21af41..b055b484 100644 [ object, uuid(4861A010-20F9-11d2-A510-00C04FB6DD2C), -@@ -1930,6 +1963,7 @@ +@@ -1930,6 +1962,7 @@ typedef DWORD MMC_STRING_ID; @@ -241,7 +240,7 @@ index ad21af41..b055b484 100644 [ local, object, -@@ -1954,6 +1988,7 @@ +@@ -1954,6 +1987,7 @@ @@ -249,7 +248,7 @@ index ad21af41..b055b484 100644 [ local, object, -@@ -1989,6 +2024,7 @@ +@@ -1989,6 +2023,7 @@ }; @@ -257,7 +256,7 @@ index ad21af41..b055b484 100644 [ object, uuid(103D842A-AA63-11D1-A7E1-00C04FD8D565), -@@ -2008,6 +2044,7 @@ +@@ -2008,6 +2043,7 @@ }; @@ -265,7 +264,7 @@ index ad21af41..b055b484 100644 [ object, uuid(cc593830-b926-11d1-8063-0000f875a9ce), -@@ -2021,6 +2058,7 @@ +@@ -2021,6 +2057,7 @@ }; @@ -273,7 +272,7 @@ index ad21af41..b055b484 100644 [ local, object, -@@ -2041,6 +2079,7 @@ +@@ -2041,6 +2078,7 @@ }; @@ -281,7 +280,7 @@ index ad21af41..b055b484 100644 [ object, uuid(DE40B7A4-0F65-11d2-8E25-00C04F8ECD78), -@@ -2139,6 +2178,7 @@ +@@ -2139,6 +2177,7 @@ MMC_SORT_DATA* pSortData; // Array of column data } MMC_SORT_SET_DATA; @@ -289,7 +288,7 @@ index ad21af41..b055b484 100644 [ object, uuid(547C1354-024D-11d3-A707-00C04F8EF4CB), -@@ -2172,6 +2212,7 @@ +@@ -2172,6 +2211,7 @@ ); }; @@ -297,7 +296,7 @@ index ad21af41..b055b484 100644 [ object, uuid(80F94174-FCCC-11d2-B991-00C04F8ECD78), -@@ -2233,6 +2274,7 @@ +@@ -2233,6 +2273,7 @@ } RDCOMPARE; @@ -305,7 +304,7 @@ index ad21af41..b055b484 100644 [ object, uuid(96933476-0251-11d3-AEB0-00C04F8ECD78), -@@ -2386,6 +2428,7 @@ +@@ -2386,6 +2427,7 @@ // //####################################################################### //####################################################################### @@ -313,7 +312,7 @@ index ad21af41..b055b484 100644 [ object, uuid(CCA0F2D2-82DE-41B5-BF47-3B2076273D5C), -@@ -2406,6 +2449,7 @@ +@@ -2406,6 +2448,7 @@ // //####################################################################### //####################################################################### @@ -321,7 +320,7 @@ index ad21af41..b055b484 100644 [ object, uuid(79A2D615-4A10-4ED4-8C65-8633F9335095), -@@ -2433,6 +2477,7 @@ +@@ -2433,6 +2476,7 @@ // //####################################################################### //####################################################################### @@ -329,7 +328,7 @@ index ad21af41..b055b484 100644 [ object, uuid(E178BC0E-2ED0-4b5e-8097-42C9087E8B33), -@@ -2462,6 +2507,7 @@ +@@ -2462,6 +2506,7 @@ // //####################################################################### //####################################################################### @@ -337,7 +336,7 @@ index ad21af41..b055b484 100644 [ uuid(A8D2C5FE-CDCB-4b9d-BDE5-A27343FF54BC), helpstring("IMMCVersionInfo Interface"), -@@ -2514,6 +2560,7 @@ +@@ -2514,6 +2559,7 @@ // //####################################################################### //####################################################################### @@ -345,7 +344,7 @@ index ad21af41..b055b484 100644 [ object, uuid(89995CEE-D2ED-4c0e-AE5E-DF7E76F3FA53), -@@ -2535,6 +2582,7 @@ +@@ -2535,6 +2581,7 @@ // //####################################################################### //####################################################################### @@ -353,7 +352,7 @@ index ad21af41..b055b484 100644 [ object, uuid(34DD928A-7599-41E5-9F5E-D6BC3062C2DA), -@@ -2554,6 +2602,7 @@ +@@ -2554,6 +2601,7 @@ // //####################################################################### //####################################################################### @@ -361,7 +360,7 @@ index ad21af41..b055b484 100644 [ object, uuid(1cfbdd0e-62ca-49ce-a3af-dbb2de61b068), -@@ -2576,6 +2625,7 @@ +@@ -2576,6 +2624,7 @@ // //####################################################################### //####################################################################### @@ -369,7 +368,7 @@ index ad21af41..b055b484 100644 [ object, uuid(3333759f-fe4f-4975-b143-fec0a5dd6d65), -@@ -2599,6 +2649,7 @@ +@@ -2599,6 +2648,7 @@ // //####################################################################### //####################################################################### @@ -377,7 +376,7 @@ index ad21af41..b055b484 100644 [ object, uuid(15BC4D24-A522-4406-AA55-0749537A6865), -@@ -2618,6 +2669,7 @@ +@@ -2618,6 +2668,7 @@ // //####################################################################### //####################################################################### @@ -385,7 +384,7 @@ index ad21af41..b055b484 100644 [ object, uuid(4F85EFDB-D0E1-498c-8D4A-D010DFDD404F), -@@ -2637,6 +2689,7 @@ +@@ -2637,6 +2688,7 @@ // //####################################################################### //####################################################################### diff --git a/generation/WinSDK/patches/um/mmeapi.h.patch b/generation/WinSDK/patches/um/mmeapi.h.patch index e6eefd3b4..e018be481 100644 --- a/generation/WinSDK/patches/um/mmeapi.h.patch +++ b/generation/WinSDK/patches/um/mmeapi.h.patch @@ -9,25 +9,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h #include #include -@@ -48,8 +49,17 @@ - - /* waveform audio data types */ - DECLARE_HANDLE(HWAVE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HWAVE HWAVE; -+#endif - DECLARE_HANDLE(HWAVEIN); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HWAVEIN HWAVEIN; -+#endif - DECLARE_HANDLE(HWAVEOUT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HWAVEOUT HWAVEOUT; -+#endif - typedef HWAVEIN FAR *LPHWAVEIN; - typedef HWAVEOUT FAR *LPHWAVEOUT; - typedef DRVCALLBACK WAVECALLBACK; -@@ -338,6 +348,7 @@ +@@ -338,6 +339,7 @@ typedef const WAVEFORMATEX FAR *LPCWAVEFORMATEX; /* waveform audio function prototypes */ @@ -35,7 +17,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -376,6 +387,7 @@ +@@ -376,6 +378,7 @@ #endif #if (WINVER >= 0x0400) @@ -43,7 +25,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -384,6 +396,7 @@ +@@ -384,6 +387,7 @@ _Out_ LPDWORD pdwVolume ); @@ -51,7 +33,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -427,18 +440,20 @@ +@@ -427,18 +431,20 @@ MMRESULT WINAPI waveOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText); #endif @@ -76,7 +58,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -446,6 +461,7 @@ +@@ -446,6 +452,7 @@ _In_ HWAVEOUT hwo ); @@ -84,7 +66,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -455,6 +471,7 @@ +@@ -455,6 +462,7 @@ _In_ UINT cbwh ); @@ -92,7 +74,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -464,6 +481,7 @@ +@@ -464,6 +472,7 @@ _In_ UINT cbwh ); @@ -100,7 +82,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -473,6 +491,7 @@ +@@ -473,6 +482,7 @@ _In_ UINT cbwh ); @@ -108,7 +90,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -480,6 +499,7 @@ +@@ -480,6 +490,7 @@ _In_ HWAVEOUT hwo ); @@ -116,7 +98,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -487,6 +507,7 @@ +@@ -487,6 +498,7 @@ _In_ HWAVEOUT hwo ); @@ -124,7 +106,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -494,6 +515,7 @@ +@@ -494,6 +506,7 @@ _In_ HWAVEOUT hwo ); @@ -132,7 +114,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -501,6 +523,7 @@ +@@ -501,6 +514,7 @@ _In_ HWAVEOUT hwo ); @@ -140,7 +122,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -510,6 +533,7 @@ +@@ -510,6 +524,7 @@ _In_ UINT cbmmt ); @@ -148,7 +130,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -518,6 +542,7 @@ +@@ -518,6 +533,7 @@ _Out_ LPDWORD pdwPitch ); @@ -156,7 +138,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -526,6 +551,7 @@ +@@ -526,6 +542,7 @@ _In_ DWORD dwPitch ); @@ -164,7 +146,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -534,6 +560,7 @@ +@@ -534,6 +551,7 @@ _Out_ LPDWORD pdwRate ); @@ -172,7 +154,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -542,6 +569,7 @@ +@@ -542,6 +560,7 @@ _In_ DWORD dwRate ); @@ -180,7 +162,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -552,6 +580,7 @@ +@@ -552,6 +571,7 @@ #if (WINVER >= 0x030a) #ifdef _WIN32 @@ -188,7 +170,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -567,6 +596,7 @@ +@@ -567,6 +587,7 @@ #endif #endif /* ifdef WINVER >= 0x030a */ @@ -196,7 +178,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -634,18 +664,20 @@ +@@ -634,18 +655,20 @@ MMRESULT WINAPI waveInGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText); #endif @@ -221,7 +203,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -653,6 +685,7 @@ +@@ -653,6 +676,7 @@ _In_ HWAVEIN hwi ); @@ -229,7 +211,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -662,6 +695,7 @@ +@@ -662,6 +686,7 @@ _In_ UINT cbwh ); @@ -237,7 +219,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -671,6 +705,7 @@ +@@ -671,6 +696,7 @@ _In_ UINT cbwh ); @@ -245,7 +227,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -680,6 +715,7 @@ +@@ -680,6 +706,7 @@ _In_ UINT cbwh ); @@ -253,7 +235,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -687,6 +723,7 @@ +@@ -687,6 +714,7 @@ _In_ HWAVEIN hwi ); @@ -261,7 +243,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -694,6 +731,7 @@ +@@ -694,6 +722,7 @@ _In_ HWAVEIN hwi ); @@ -269,7 +251,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -701,6 +739,7 @@ +@@ -701,6 +730,7 @@ _In_ HWAVEIN hwi ); @@ -277,7 +259,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -710,6 +749,7 @@ +@@ -710,6 +740,7 @@ _In_ UINT cbmmt ); @@ -285,7 +267,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -720,6 +760,7 @@ +@@ -720,6 +751,7 @@ #if (WINVER >= 0x030a) #ifdef _WIN32 @@ -293,29 +275,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -757,9 +798,21 @@ - - /* MIDI audio data types */ - DECLARE_HANDLE(HMIDI); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIDI HMIDI; -+#endif - DECLARE_HANDLE(HMIDIIN); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIDIIN HMIDIIN; -+#endif - DECLARE_HANDLE(HMIDIOUT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIDIOUT HMIDIOUT; -+#endif - DECLARE_HANDLE(HMIDISTRM); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIDISTRM HMIDISTRM; -+#endif - typedef HMIDI FAR *LPHMIDI; - typedef HMIDIIN FAR *LPHMIDIIN; - typedef HMIDIOUT FAR *LPHMIDIOUT; -@@ -795,6 +848,12 @@ +@@ -795,6 +827,12 @@ #if(WINVER >= 0x0400) /* flags for dwFlags parm of midiInOpen() */ #define MIDI_IO_STATUS 0x00000020L @@ -328,7 +288,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h #endif /* WINVER >= 0x0400 */ /* flags for wFlags parm of midiOutCachePatches(), midiOutCacheDrumPatches() */ -@@ -1087,6 +1146,7 @@ +@@ -1087,6 +1125,7 @@ #endif /* WINVER >= 0x0400 */ /* MIDI function prototypes */ @@ -336,7 +296,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -1095,11 +1155,12 @@ +@@ -1095,11 +1134,12 @@ ); #if (WINVER >= 0x0400) @@ -350,7 +310,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h _Inout_updates_(cMidi) LPUINT puDeviceID, _In_ DWORD cMidi, _In_opt_ DWORD_PTR dwCallback, -@@ -1107,6 +1168,7 @@ +@@ -1107,6 +1147,7 @@ _In_ DWORD fdwOpen ); @@ -358,7 +318,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1114,6 +1176,7 @@ +@@ -1114,6 +1155,7 @@ _In_ HMIDISTRM hms ); @@ -366,7 +326,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1123,6 +1186,7 @@ +@@ -1123,6 +1165,7 @@ _In_ DWORD dwProperty ); @@ -374,7 +334,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1132,6 +1196,7 @@ +@@ -1132,6 +1175,7 @@ _In_ UINT cbmmt ); @@ -382,7 +342,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1141,6 +1206,7 @@ +@@ -1141,6 +1185,7 @@ _In_ UINT cbmh ); @@ -390,7 +350,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1148,6 +1214,7 @@ +@@ -1148,6 +1193,7 @@ _In_ HMIDISTRM hms ); @@ -398,7 +358,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1155,6 +1222,7 @@ +@@ -1155,6 +1201,7 @@ _In_ HMIDISTRM hms ); @@ -406,7 +366,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1163,6 +1231,7 @@ +@@ -1163,6 +1210,7 @@ ); #ifdef _WIN32 @@ -414,7 +374,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1172,6 +1241,7 @@ +@@ -1172,6 +1220,7 @@ _In_opt_ LPVOID pReserved ); @@ -422,7 +382,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1186,6 +1256,7 @@ +@@ -1186,6 +1235,7 @@ #ifdef _WIN32 @@ -430,7 +390,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1195,6 +1266,7 @@ +@@ -1195,6 +1245,7 @@ _In_ UINT cbmoc ); @@ -438,7 +398,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1215,6 +1287,7 @@ +@@ -1215,6 +1266,7 @@ #endif #if (WINVER >= 0x0400) @@ -446,7 +406,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1223,6 +1296,7 @@ +@@ -1223,6 +1275,7 @@ _Out_ LPDWORD pdwVolume ); @@ -454,7 +414,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1238,6 +1312,7 @@ +@@ -1238,6 +1291,7 @@ #ifdef _WIN32 @@ -462,7 +422,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1247,6 +1322,7 @@ +@@ -1247,6 +1301,7 @@ _In_ UINT cchText ); @@ -470,7 +430,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1266,17 +1342,19 @@ +@@ -1266,17 +1321,19 @@ WINMMAPI MMRESULT WINAPI midiOutGetErrorText(MMRESULT mmrError, LPSTR pszText, UINT cchText); #endif @@ -494,7 +454,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1284,6 +1362,7 @@ +@@ -1284,6 +1341,7 @@ _In_ HMIDIOUT hmo ); @@ -502,7 +462,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1293,6 +1372,7 @@ +@@ -1293,6 +1351,7 @@ _In_ UINT cbmh ); @@ -510,7 +470,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1302,6 +1382,7 @@ +@@ -1302,6 +1361,7 @@ _In_ UINT cbmh ); @@ -518,7 +478,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1310,6 +1391,7 @@ +@@ -1310,6 +1370,7 @@ _In_ DWORD dwMsg ); @@ -526,7 +486,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1319,6 +1401,7 @@ +@@ -1319,6 +1380,7 @@ _In_ UINT cbmh ); @@ -534,7 +494,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1326,6 +1409,7 @@ +@@ -1326,6 +1388,7 @@ _In_ HMIDIOUT hmo ); @@ -542,7 +502,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1336,6 +1420,7 @@ +@@ -1336,6 +1399,7 @@ _In_ UINT fuCache ); @@ -550,7 +510,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1346,6 +1431,7 @@ +@@ -1346,6 +1410,7 @@ _In_ UINT fuCache ); @@ -558,7 +518,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1356,6 +1442,7 @@ +@@ -1356,6 +1421,7 @@ #if (WINVER >= 0x030a) #ifdef _WIN32 @@ -566,7 +526,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1371,6 +1458,7 @@ +@@ -1371,6 +1437,7 @@ #endif #endif /* ifdef WINVER >= 0x030a */ @@ -574,7 +534,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -1380,6 +1468,7 @@ +@@ -1380,6 +1447,7 @@ #ifdef _WIN32 @@ -582,7 +542,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1389,6 +1478,7 @@ +@@ -1389,6 +1457,7 @@ _In_ UINT cbmic ); @@ -590,7 +550,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1403,6 +1493,7 @@ +@@ -1403,6 +1472,7 @@ #else #define midiInGetDevCaps midiInGetDevCapsA #endif // !UNICODE @@ -598,7 +558,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1412,6 +1503,7 @@ +@@ -1412,6 +1482,7 @@ _In_ UINT cchText ); @@ -606,7 +566,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1432,17 +1524,19 @@ +@@ -1432,17 +1503,19 @@ WINMMAPI MMRESULT WINAPI midiInGetErrorText(MMRESULT mmrError, _Out_writes_(cchText) LPSTR pszText, UINT cchText); #endif @@ -630,7 +590,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1450,6 +1544,7 @@ +@@ -1450,6 +1523,7 @@ _In_ HMIDIIN hmi ); @@ -638,7 +598,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1459,6 +1554,7 @@ +@@ -1459,6 +1533,7 @@ _In_ UINT cbmh ); @@ -646,7 +606,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1468,6 +1564,7 @@ +@@ -1468,6 +1543,7 @@ _In_ UINT cbmh ); @@ -654,7 +614,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1477,6 +1574,7 @@ +@@ -1477,6 +1553,7 @@ _In_ UINT cbmh ); @@ -662,7 +622,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1484,6 +1582,7 @@ +@@ -1484,6 +1561,7 @@ _In_ HMIDIIN hmi ); @@ -670,7 +630,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1491,6 +1590,7 @@ +@@ -1491,6 +1569,7 @@ _In_ HMIDIIN hmi ); @@ -678,7 +638,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1498,6 +1598,7 @@ +@@ -1498,6 +1577,7 @@ _In_ HMIDIIN hmi ); @@ -686,7 +646,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1508,6 +1609,7 @@ +@@ -1508,6 +1588,7 @@ #if (WINVER >= 0x030a) #ifdef _WIN32 @@ -694,7 +654,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1623,6 +1725,7 @@ +@@ -1623,6 +1704,7 @@ #define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */ /* auxiliary audio function prototypes */ @@ -702,7 +662,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -1632,6 +1735,7 @@ +@@ -1632,6 +1714,7 @@ #ifdef _WIN32 @@ -710,7 +670,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1641,6 +1745,7 @@ +@@ -1641,6 +1724,7 @@ _In_ UINT cbac ); @@ -718,7 +678,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1659,6 +1764,7 @@ +@@ -1659,6 +1743,7 @@ #else MMRESULT WINAPI auxGetDevCaps(UINT uDeviceID, LPAUXCAPS pac, UINT cbac); #endif @@ -726,7 +686,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1667,6 +1773,7 @@ +@@ -1667,6 +1752,7 @@ _In_ DWORD dwVolume ); @@ -734,7 +694,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1677,6 +1784,7 @@ +@@ -1677,6 +1763,7 @@ #if (WINVER >= 0x030a) #ifdef _WIN32 @@ -742,23 +702,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1702,9 +1810,15 @@ - ****************************************************************************/ - - DECLARE_HANDLE(HMIXEROBJ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIXEROBJ HMIXEROBJ; -+#endif - typedef HMIXEROBJ FAR *LPHMIXEROBJ; - - DECLARE_HANDLE(HMIXER); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMIXER HMIXER; -+#endif - typedef HMIXER FAR *LPHMIXER; - - #define MIXER_SHORT_NAME_CHARS 16 -@@ -1732,6 +1846,7 @@ +@@ -1732,6 +1819,7 @@ #define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN) #define MIXER_OBJECTF_AUX 0x50000000L @@ -766,7 +710,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI UINT WINAPI -@@ -1811,6 +1926,7 @@ +@@ -1811,6 +1899,7 @@ #ifdef _WIN32 @@ -774,7 +718,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1820,6 +1936,7 @@ +@@ -1820,6 +1909,7 @@ _In_ UINT cbmxcaps ); @@ -782,7 +726,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1839,17 +1956,19 @@ +@@ -1839,17 +1929,19 @@ MMRESULT WINAPI mixerGetDevCaps(UINT uMxId, LPMIXERCAPS pmxcaps, UINT cbmxcaps); #endif @@ -803,7 +747,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -1857,6 +1976,7 @@ +@@ -1857,6 +1949,7 @@ _In_ HMIXER hmx ); @@ -811,7 +755,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI DWORD WINAPI -@@ -1866,6 +1986,10 @@ +@@ -1866,6 +1959,10 @@ _In_opt_ DWORD_PTR dwParam1, _In_opt_ DWORD_PTR dwParam2 ); @@ -822,7 +766,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h #ifdef _WIN32 -@@ -1876,7 +2000,7 @@ +@@ -1876,7 +1973,7 @@ DWORD dwLineID; /* unique line id for mixer device */ DWORD fdwLine; /* state/information about line */ DWORD_PTR dwUser; /* driver specific information */ @@ -831,7 +775,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h DWORD cChannels; /* number of channels line supports */ DWORD cConnections; /* number of connections [possible] */ DWORD cControls; /* number of controls at this line */ -@@ -1898,7 +2022,7 @@ +@@ -1898,7 +1995,7 @@ DWORD dwLineID; /* unique line id for mixer device */ DWORD fdwLine; /* state/information about line */ DWORD_PTR dwUser; /* driver specific information */ @@ -840,7 +784,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h DWORD cChannels; /* number of channels line supports */ DWORD cConnections; /* number of connections [possible] */ DWORD cControls; /* number of controls at this line */ -@@ -1988,6 +2112,18 @@ +@@ -1988,6 +2085,18 @@ #define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) #define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10) @@ -859,7 +803,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h /* */ /* MIXERLINE.Target.dwType */ /* */ -@@ -2001,6 +2137,7 @@ +@@ -2001,6 +2110,7 @@ #ifdef _WIN32 @@ -867,7 +811,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2010,6 +2147,7 @@ +@@ -2010,6 +2120,7 @@ _In_ DWORD fdwInfo ); @@ -875,7 +819,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2037,6 +2175,7 @@ +@@ -2037,6 +2148,7 @@ #define MIXER_GETLINEINFOF_QUERYMASK 0x0000000FL @@ -883,7 +827,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2275,6 +2414,7 @@ +@@ -2275,6 +2387,7 @@ /* */ #ifdef _WIN32 @@ -891,7 +835,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2284,6 +2424,7 @@ +@@ -2284,6 +2397,7 @@ _In_ DWORD fdwControls ); @@ -899,7 +843,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2379,6 +2520,7 @@ +@@ -2379,6 +2493,7 @@ #ifdef _WIN32 @@ -907,7 +851,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2388,6 +2530,7 @@ +@@ -2388,6 +2503,7 @@ _In_ DWORD fdwDetails ); @@ -915,7 +859,7 @@ diff --git a/um/mmeapi.h b/um/mmeapi.h WINMMAPI MMRESULT WINAPI -@@ -2412,6 +2555,7 @@ +@@ -2412,6 +2528,7 @@ #define MIXER_GETCONTROLDETAILSF_QUERYMASK 0x0000000FL diff --git a/generation/WinSDK/patches/um/mmiscapi.h.patch b/generation/WinSDK/patches/um/mmiscapi.h.patch index b952c05be..e29289c4f 100644 --- a/generation/WinSDK/patches/um/mmiscapi.h.patch +++ b/generation/WinSDK/patches/um/mmiscapi.h.patch @@ -68,17 +68,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINAPI sndOpenSound( _In_ LPCWSTR EventName, -@@ -259,6 +268,9 @@ - typedef DWORD FOURCC; /* a four character code */ - typedef char _huge * HPSTR; /* a huge version of LPSTR */ - DECLARE_HANDLE(HMMIO); /* a handle to an open file */ -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HMMIO HMMIO; -+#endif - typedef LRESULT (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMsg, - LPARAM lParam1, LPARAM lParam2); - typedef MMIOPROC FAR *LPMMIOPROC; -@@ -382,6 +394,7 @@ +@@ -382,6 +391,7 @@ /* MMIO function prototypes */ #ifdef _WIN32 @@ -86,7 +76,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI FOURCC WINAPI -@@ -390,6 +403,7 @@ +@@ -390,6 +400,7 @@ _In_ UINT uFlags ); @@ -94,7 +84,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI FOURCC WINAPI -@@ -403,6 +417,7 @@ +@@ -403,6 +414,7 @@ #else #define mmioStringToFOURCC mmioStringToFOURCCA #endif // !UNICODE @@ -102,7 +92,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LPMMIOPROC WINAPI -@@ -412,6 +427,7 @@ +@@ -412,6 +424,7 @@ _In_ DWORD dwFlags ); @@ -110,7 +100,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LPMMIOPROC WINAPI -@@ -426,6 +442,7 @@ +@@ -426,6 +439,7 @@ #else #define mmioInstallIOProc mmioInstallIOProcA #endif // !UNICODE @@ -118,7 +108,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI HMMIO WINAPI -@@ -435,6 +452,7 @@ +@@ -435,6 +449,7 @@ _In_ DWORD fdwOpen ); @@ -126,7 +116,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI HMMIO WINAPI -@@ -449,6 +467,7 @@ +@@ -449,6 +464,7 @@ #else #define mmioOpen mmioOpenA #endif // !UNICODE @@ -134,7 +124,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -459,6 +478,7 @@ +@@ -459,6 +475,7 @@ _In_ DWORD fdwRename ); @@ -142,7 +132,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -483,6 +503,7 @@ +@@ -483,6 +500,7 @@ #endif /* ifdef WINVER >= 0x030a */ #endif @@ -150,7 +140,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -491,6 +512,7 @@ +@@ -491,6 +509,7 @@ _In_ UINT fuClose ); @@ -158,7 +148,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LONG WINAPI -@@ -500,6 +522,7 @@ +@@ -500,6 +519,7 @@ _In_ LONG cch ); @@ -166,7 +156,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LONG WINAPI -@@ -509,6 +532,7 @@ +@@ -509,6 +529,7 @@ _In_ LONG cch ); @@ -174,7 +164,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LONG WINAPI -@@ -518,6 +542,7 @@ +@@ -518,6 +539,7 @@ _In_ int iOrigin ); @@ -182,7 +172,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -527,6 +552,7 @@ +@@ -527,6 +549,7 @@ _In_ UINT fuInfo ); @@ -190,7 +180,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -536,6 +562,7 @@ +@@ -536,6 +559,7 @@ _In_ UINT fuInfo ); @@ -198,7 +188,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -546,6 +573,7 @@ +@@ -546,6 +570,7 @@ _In_ UINT fuBuffer ); @@ -206,7 +196,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -554,6 +582,7 @@ +@@ -554,6 +579,7 @@ _In_ UINT fuFlush ); @@ -214,7 +204,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -563,6 +592,7 @@ +@@ -563,6 +589,7 @@ _In_ UINT fuAdvance ); @@ -222,7 +212,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI LRESULT WINAPI -@@ -573,6 +603,7 @@ +@@ -573,6 +600,7 @@ _In_opt_ LPARAM lParam2 ); @@ -230,7 +220,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -583,6 +614,7 @@ +@@ -583,6 +611,7 @@ _In_ UINT fuDescend ); @@ -238,7 +228,7 @@ diff --git a/um/mmiscapi.h b/um/mmiscapi.h WINMMAPI MMRESULT WINAPI -@@ -592,6 +624,7 @@ +@@ -592,6 +621,7 @@ _In_ UINT fuAscend ); diff --git a/generation/WinSDK/patches/um/mmsyscom.h.patch b/generation/WinSDK/patches/um/mmsyscom.h.patch index c7088d16e..e02ac87c6 100644 --- a/generation/WinSDK/patches/um/mmsyscom.h.patch +++ b/generation/WinSDK/patches/um/mmsyscom.h.patch @@ -1,17 +1,7 @@ diff --git a/um/mmsyscom.h b/um/mmsyscom.h --- a/um/mmsyscom.h +++ b/um/mmsyscom.h -@@ -273,6 +273,9 @@ - - #if (WINVER < 0x030a) || defined(_WIN32) - DECLARE_HANDLE(HDRVR); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVR HDRVR; -+#endif - #endif /* ifdef WINVER < 0x030a */ - - -@@ -293,6 +296,17 @@ +@@ -293,6 +293,17 @@ #ifdef _WIN32 #define CALLBACK_THREAD (CALLBACK_TASK)/* thread ID replaces 16 bit task */ #define CALLBACK_EVENT 0x00050000l /* dwCallback is an EVENT Handle */ diff --git a/generation/WinSDK/patches/um/msacm.h.patch b/generation/WinSDK/patches/um/msacm.h.patch index c6ac76973..609ff1048 100644 --- a/generation/WinSDK/patches/um/msacm.h.patch +++ b/generation/WinSDK/patches/um/msacm.h.patch @@ -1,38 +1,7 @@ diff --git a/um/msacm.h b/um/msacm.h --- a/um/msacm.h +++ b/um/msacm.h -@@ -136,18 +136,30 @@ - // that can accept two or more ACM handle types. - // - DECLARE_HANDLE(HACMDRIVERID); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HACMDRIVERID HACMDRIVERID; -+#endif - typedef HACMDRIVERID *PHACMDRIVERID; - typedef HACMDRIVERID FAR *LPHACMDRIVERID; - - DECLARE_HANDLE(HACMDRIVER); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HACMDRIVER HACMDRIVER; -+#endif - typedef HACMDRIVER *PHACMDRIVER; - typedef HACMDRIVER FAR *LPHACMDRIVER; - - DECLARE_HANDLE(HACMSTREAM); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HACMSTREAM HACMSTREAM; -+#endif - typedef HACMSTREAM *PHACMSTREAM; - typedef HACMSTREAM FAR *LPHACMSTREAM; - - DECLARE_HANDLE(HACMOBJ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HACMOBJ HACMOBJ; -+#endif - typedef HACMOBJ *PHACMOBJ; - typedef HACMOBJ FAR *LPHACMOBJ; - -@@ -210,6 +222,7 @@ +@@ -210,6 +210,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -40,7 +9,7 @@ diff --git a/um/msacm.h b/um/msacm.h DWORD ACMAPI acmGetVersion ( void -@@ -223,6 +236,7 @@ +@@ -223,6 +224,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -48,7 +17,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmMetrics ( HACMOBJ hao, -@@ -272,6 +286,7 @@ +@@ -272,6 +274,7 @@ DWORD fdwSupport ); @@ -56,7 +25,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverEnum ( ACMDRIVERENUMCB fnCallback, -@@ -289,6 +304,7 @@ +@@ -289,6 +292,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -64,7 +33,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverID ( HACMOBJ hao, -@@ -305,6 +321,7 @@ +@@ -305,6 +309,7 @@ //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; #ifdef _WIN32 @@ -72,7 +41,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverAddA ( LPHACMDRIVERID phadid, -@@ -314,6 +331,7 @@ +@@ -314,6 +319,7 @@ DWORD fdwAdd ); @@ -80,7 +49,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverAddW ( LPHACMDRIVERID phadid, -@@ -360,6 +378,7 @@ +@@ -360,6 +366,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -88,7 +57,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverRemove ( HACMDRIVERID hadid, -@@ -374,6 +393,7 @@ +@@ -374,6 +381,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -96,7 +65,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverOpen ( LPHACMDRIVER phad, -@@ -389,6 +409,7 @@ +@@ -389,6 +397,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -104,7 +73,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverClose ( HACMDRIVER had, -@@ -403,6 +424,7 @@ +@@ -403,6 +412,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -112,7 +81,7 @@ diff --git a/um/msacm.h b/um/msacm.h LRESULT ACMAPI acmDriverMessage ( HACMDRIVER had, -@@ -432,6 +454,7 @@ +@@ -432,6 +442,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -120,7 +89,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverPriority ( HACMDRIVERID hadid, -@@ -625,6 +648,7 @@ +@@ -625,6 +636,7 @@ #ifdef _WIN32 @@ -128,7 +97,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverDetailsA ( HACMDRIVERID hadid, -@@ -632,6 +656,7 @@ +@@ -632,6 +644,7 @@ DWORD fdwDetails ); @@ -136,7 +105,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmDriverDetailsW ( HACMDRIVERID hadid, -@@ -722,6 +747,7 @@ +@@ -722,6 +735,7 @@ #endif #ifdef _WIN32 @@ -144,7 +113,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatTagDetailsA ( HACMDRIVER had, -@@ -729,6 +755,7 @@ +@@ -729,6 +743,7 @@ DWORD fdwDetails ); @@ -152,7 +121,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatTagDetailsW ( HACMDRIVER had, -@@ -773,6 +800,7 @@ +@@ -773,6 +788,7 @@ DWORD fdwSupport ); @@ -160,7 +129,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatTagEnumA ( HACMDRIVER had, -@@ -789,6 +817,7 @@ +@@ -789,6 +805,7 @@ DWORD fdwSupport ); @@ -168,7 +137,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatTagEnumW ( HACMDRIVER had, -@@ -893,6 +922,7 @@ +@@ -893,6 +910,7 @@ #ifdef _WIN32 @@ -176,7 +145,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatDetailsA ( HACMDRIVER had, -@@ -900,6 +930,7 @@ +@@ -900,6 +918,7 @@ DWORD fdwDetails ); @@ -184,7 +153,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatDetailsW ( HACMDRIVER had, -@@ -942,6 +973,7 @@ +@@ -942,6 +961,7 @@ DWORD fdwSupport ); @@ -192,7 +161,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatEnumA ( HACMDRIVER had, -@@ -959,6 +991,7 @@ +@@ -959,6 +979,7 @@ DWORD fdwSupport ); @@ -200,7 +169,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatEnumW ( HACMDRIVER had, -@@ -1013,6 +1046,7 @@ +@@ -1013,6 +1034,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -208,7 +177,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatSuggest ( HACMDRIVER had, -@@ -1212,11 +1246,13 @@ +@@ -1212,11 +1234,13 @@ #define ACMFORMATCHOOSE_STYLEF_CONTEXTHELP 0x00000080L #ifdef _WIN32 @@ -222,7 +191,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFormatChooseW ( LPACMFORMATCHOOSEW pafmtc -@@ -1302,6 +1338,7 @@ +@@ -1302,6 +1326,7 @@ #endif #ifdef _WIN32 @@ -230,7 +199,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterTagDetailsA ( HACMDRIVER had, -@@ -1309,6 +1346,7 @@ +@@ -1309,6 +1334,7 @@ DWORD fdwDetails ); @@ -238,7 +207,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterTagDetailsW ( HACMDRIVER had, -@@ -1353,6 +1391,7 @@ +@@ -1353,6 +1379,7 @@ DWORD fdwSupport ); @@ -246,7 +215,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterTagEnumA ( HACMDRIVER had, -@@ -1370,6 +1409,7 @@ +@@ -1370,6 +1397,7 @@ DWORD fdwSupport ); @@ -254,7 +223,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterTagEnumW ( HACMDRIVER had, -@@ -1473,6 +1513,7 @@ +@@ -1473,6 +1501,7 @@ #endif #ifdef _WIN32 @@ -262,7 +231,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterDetailsA ( HACMDRIVER had, -@@ -1480,6 +1521,7 @@ +@@ -1480,6 +1509,7 @@ DWORD fdwDetails ); @@ -270,7 +239,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterDetailsW ( HACMDRIVER had, -@@ -1521,6 +1563,7 @@ +@@ -1521,6 +1551,7 @@ DWORD fdwSupport ); @@ -278,7 +247,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterEnumA ( HACMDRIVER had, -@@ -1538,6 +1581,7 @@ +@@ -1538,6 +1569,7 @@ DWORD fdwSupport ); @@ -286,7 +255,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterEnumW ( HACMDRIVER had, -@@ -1736,11 +1780,13 @@ +@@ -1736,11 +1768,13 @@ #define ACMFILTERCHOOSE_STYLEF_CONTEXTHELP 0x00000080L #ifdef _WIN32 @@ -300,7 +269,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmFilterChooseW ( LPACMFILTERCHOOSEW pafltrc -@@ -1806,6 +1852,7 @@ +@@ -1806,6 +1840,7 @@ #define ACMSTREAMHEADER_STATUSF_INQUEUE 0x00100000L @@ -308,7 +277,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamOpen ( LPHACMSTREAM phas, // pointer to stream handle -@@ -1829,6 +1876,7 @@ +@@ -1829,6 +1864,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -316,7 +285,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamClose ( HACMSTREAM has, -@@ -1843,6 +1891,7 @@ +@@ -1843,6 +1879,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -324,7 +293,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamSize ( HACMSTREAM has, -@@ -1863,6 +1912,7 @@ +@@ -1863,6 +1900,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -332,7 +301,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamReset ( HACMSTREAM has, -@@ -1877,6 +1927,7 @@ +@@ -1877,6 +1915,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -340,7 +309,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamMessage ( HACMSTREAM has, -@@ -1894,6 +1945,7 @@ +@@ -1894,6 +1933,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -348,7 +317,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamConvert ( HACMSTREAM has, -@@ -1912,6 +1964,7 @@ +@@ -1912,6 +1952,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; @@ -356,7 +325,7 @@ diff --git a/um/msacm.h b/um/msacm.h MMRESULT ACMAPI acmStreamPrepareHeader ( HACMSTREAM has, -@@ -1927,6 +1980,7 @@ +@@ -1927,6 +1968,7 @@ // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; diff --git a/generation/WinSDK/patches/um/msi.h.patch b/generation/WinSDK/patches/um/msi.h.patch index 4ebed8a92..53447fd73 100644 --- a/generation/WinSDK/patches/um/msi.h.patch +++ b/generation/WinSDK/patches/um/msi.h.patch @@ -1,17 +1,7 @@ diff --git a/um/msi.h b/um/msi.h --- a/um/msi.h +++ b/um/msi.h -@@ -89,6 +89,9 @@ - // -------------------------------------------------------------------------- - - typedef unsigned long MSIHANDLE; // abstract generic handle, 0 == no handle -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef MSIHANDLE MSIHANDLE; -+#endif - - #ifdef __cplusplus - extern "C" { -@@ -98,6 +101,7 @@ +@@ -98,6 +98,7 @@ // All handles obtained from API calls must be closed when no longer needed // Normally succeeds, returning TRUE. @@ -19,7 +9,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiCloseHandle(MSIHANDLE hAny); // Close all handles open in the process, a diagnostic call -@@ -105,6 +109,7 @@ +@@ -105,6 +106,7 @@ // Can be called at termination to assure that all handles have been closed // Returns 0 if all handles have been close, else number of open handles @@ -27,7 +17,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiCloseAllHandles(); #ifdef __cplusplus -@@ -528,6 +533,7 @@ +@@ -528,6 +530,7 @@ // Enable internal UI @@ -35,7 +25,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLUILEVEL WINAPI MsiSetInternalUI( _In_ INSTALLUILEVEL dwUILevel, // UI level _Inout_opt_ HWND *phWnd); // handle of owner window -@@ -535,10 +541,12 @@ +@@ -535,10 +538,12 @@ // Enable external UI handling, returns any previous handler or NULL if none. // Messages are designated with a combination of bits from INSTALLLOGMODE enum. @@ -48,7 +38,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLUI_HANDLERW WINAPI MsiSetExternalUIW( _In_opt_ INSTALLUI_HANDLERW puiHandler, // for progress and error handling _In_ DWORD dwMessageFilter, // bit flags designating messages to handle -@@ -551,6 +559,7 @@ +@@ -551,6 +556,7 @@ #if (_WIN32_MSI >= 310) @@ -56,7 +46,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSetExternalUIRecord( _In_opt_ INSTALLUI_HANDLER_RECORD puiHandler, // for progress and error handling _In_ DWORD dwMessageFilter, // bit flags designating messages to handle -@@ -563,12 +572,14 @@ +@@ -563,12 +569,14 @@ // with control over which log messages are passed to the specified log file. // Messages are designated with a combination of bits from INSTALLLOGMODE enum. @@ -73,7 +63,7 @@ diff --git a/um/msi.h b/um/msi.h _In_opt_ LPCWSTR szLogFile, // log file, or NULL to disable logging _In_ DWORD dwLogAttributes); // INSTALLLOGATTRIBUTES flags #ifdef UNICODE -@@ -583,8 +594,10 @@ +@@ -583,8 +591,10 @@ // Return the installed state for a product @@ -84,7 +74,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiQueryProductStateW( _In_ LPCWSTR szProduct); #ifdef UNICODE -@@ -595,11 +608,13 @@ +@@ -595,11 +605,13 @@ // Return product info @@ -98,7 +88,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductInfoW( _In_ LPCWSTR szProduct, // product code _In_ LPCWSTR szAttribute, // attribute name, case-sensitive -@@ -614,6 +629,7 @@ +@@ -614,6 +626,7 @@ #if (_WIN32_MSI >= 300) // Retrieve product info for a particular product instance @@ -106,7 +96,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductInfoExA( _In_ LPCSTR szProductCode, // Information is queried on this product _In_opt_ LPCSTR szUserSid, // Account of this product instance -@@ -621,6 +637,7 @@ +@@ -621,6 +634,7 @@ _In_ LPCSTR szProperty, // Property being queried _Out_writes_opt_(*pcchValue) LPSTR szValue, // Value read _Inout_opt_ LPDWORD pcchValue); // size of the szValue buffer @@ -114,7 +104,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductInfoExW( _In_ LPCWSTR szProductCode, // Information is queried on this product _In_opt_ LPCWSTR szUserSid, // Account of this product instance -@@ -638,9 +655,11 @@ +@@ -638,9 +652,11 @@ // Install a new product. // Either may be NULL, but the DATABASE property must be specfied @@ -126,7 +116,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiInstallProductW( _In_ LPCWSTR szPackagePath, // location of package to install _In_opt_ LPCWSTR szCommandLine); // command line -@@ -653,13 +672,15 @@ +@@ -653,13 +669,15 @@ // Install/uninstall an advertised or installed product // No action if installed and INSTALLSTATE_DEFAULT specified @@ -144,7 +134,7 @@ diff --git a/um/msi.h b/um/msi.h _In_ INSTALLSTATE eInstallState); // local/source/default/absent/lock/uncache #ifdef UNICODE #define MsiConfigureProduct MsiConfigureProductW -@@ -670,14 +691,16 @@ +@@ -670,14 +688,16 @@ // Install/uninstall an advertised or installed product // No action if installed and INSTALLSTATE_DEFAULT specified @@ -163,7 +153,7 @@ diff --git a/um/msi.h b/um/msi.h _In_ INSTALLSTATE eInstallState, // local/source/default/absent/lock/uncache _In_opt_ LPCWSTR szCommandLine); // command line #ifdef UNICODE -@@ -688,12 +711,14 @@ +@@ -688,12 +708,14 @@ // Reinstall product, used to validate or correct problems @@ -180,7 +170,7 @@ diff --git a/um/msi.h b/um/msi.h #ifdef UNICODE #define MsiReinstallProduct MsiReinstallProductW #else -@@ -709,6 +734,7 @@ +@@ -709,6 +731,7 @@ // If dwOptions includes MSIADVERTISEOPTIONFLAGS_INSTANCE, then a new instance is advertised. Use of // this option requires that szTransforms include the instance transform that changes the product code @@ -188,7 +178,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiAdvertiseProductExA( _In_ LPCSTR szPackagePath, // location of package _In_opt_ LPCSTR szScriptfilePath, // if NULL, product is locally advertised -@@ -717,6 +743,7 @@ +@@ -717,6 +740,7 @@ _In_ DWORD dwPlatform, // the MSIARCHITECTUREFLAGS that control for which platform // to create the script, ignored if szScriptfilePath is NULL _In_ DWORD dwOptions); // the MSIADVERTISEOPTIONFLAGS that specify extra advertise parameters @@ -196,7 +186,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiAdvertiseProductExW( _In_ LPCWSTR szPackagePath, // location of package _In_opt_ LPCWSTR szScriptfilePath, // if NULL, product is locally advertised -@@ -735,11 +762,13 @@ +@@ -735,11 +759,13 @@ // Output reg and shortcut info to script file for Assign or Publish @@ -210,7 +200,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiAdvertiseProductW( _In_ LPCWSTR szPackagePath, // location of package _In_opt_ LPCWSTR szScriptfilePath, // if NULL, product is locally advertised -@@ -761,12 +790,14 @@ +@@ -761,12 +787,14 @@ // returned by SHGetSpecialFolderLocation(?), it will hold the shortcuts. // if fRemoveItems is TRUE, items that are present will be removed @@ -225,7 +215,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiProcessAdvertiseScriptW( _In_ LPCWSTR szScriptFile, // path to script from MsiAdvertiseProduct _In_opt_ LPCWSTR szIconFolder, // optional path to folder for icon files and transforms -@@ -785,13 +816,15 @@ +@@ -785,13 +813,15 @@ // Process advertise script file using the supplied dwFlags control flags // if fRemoveItems is TRUE, items that are present will be removed @@ -243,7 +233,7 @@ diff --git a/um/msi.h b/um/msi.h _In_ DWORD dwFlags, // the SCRIPTFLAGS bit flags that control the script execution _In_opt_ PHKEY phRegData, // optional parent registry key _In_ BOOL fRemoveItems); // TRUE if specified items are to be removed -@@ -805,6 +838,7 @@ +@@ -805,6 +835,7 @@ // product code, language, version, readable name, path to package // Returns TRUE is success, FALSE if szScriptFile is not a valid script file @@ -251,7 +241,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductInfoFromScriptA( _In_ LPCSTR szScriptFile, // path to installer script file _Out_writes_opt_(MAX_GUID_CHARS+1) LPSTR lpProductBuf39, // buffer for product code string GUID, 39 chars -@@ -814,6 +848,7 @@ +@@ -814,6 +845,7 @@ _Inout_opt_ LPDWORD pcchNameBuf, // in/out name buffer character count _Out_writes_opt_(*pcchPackageBuf) LPSTR lpPackageBuf, // buffer for path to product package _Inout_opt_ LPDWORD pcchPackageBuf);// in/out path buffer character count @@ -259,7 +249,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductInfoFromScriptW( _In_ LPCWSTR szScriptFile, // path to installer script file _Out_writes_opt_(MAX_GUID_CHARS+1) LPWSTR lpProductBuf39, // buffer for product code string GUID, 39 chars -@@ -831,9 +866,11 @@ +@@ -831,9 +863,11 @@ // Return the product code for a registered component, called once by apps @@ -271,7 +261,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductCodeW( _In_ LPCWSTR szComponent, // component Id registered for this product _Out_writes_(MAX_GUID_CHARS+1) LPWSTR lpBuf39); // returned string GUID, sized for 39 characters -@@ -845,6 +882,7 @@ +@@ -845,6 +879,7 @@ // Return the registered user information for an installed product @@ -279,7 +269,7 @@ diff --git a/um/msi.h b/um/msi.h USERINFOSTATE WINAPI MsiGetUserInfoA( _In_ LPCSTR szProduct, // product code, string GUID _Out_writes_opt_(*pcchUserNameBuf) LPSTR lpUserNameBuf, // return user name -@@ -853,6 +891,7 @@ +@@ -853,6 +888,7 @@ _Inout_opt_ LPDWORD pcchOrgNameBuf, // in/out buffer character count _Out_writes_opt_(*pcchSerialBuf) LPSTR lpSerialBuf, // return product serial number _Inout_opt_ LPDWORD pcchSerialBuf); // in/out buffer character count @@ -287,7 +277,7 @@ diff --git a/um/msi.h b/um/msi.h USERINFOSTATE WINAPI MsiGetUserInfoW( _In_ LPCWSTR szProduct, // product code, string GUID _Out_writes_opt_(*pcchUserNameBuf) LPWSTR lpUserNameBuf, // return user name -@@ -869,8 +908,10 @@ +@@ -869,8 +905,10 @@ // Obtain and store user info and PID from installation wizard (first run) @@ -298,7 +288,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiCollectUserInfoW( _In_ LPCWSTR szProduct); // product code, string GUID #ifdef UNICODE -@@ -885,11 +926,13 @@ +@@ -885,11 +923,13 @@ // Patch all possible installed products. @@ -312,7 +302,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiApplyPatchW( _In_ LPCWSTR szPatchPackage, // location of patch package _In_opt_ LPCWSTR szInstallPackage, // location of package for install to patch -@@ -903,11 +946,13 @@ +@@ -903,11 +943,13 @@ // Return patch info for first visible patch @@ -326,7 +316,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetPatchInfoW( _In_ LPCWSTR szPatch, // patch code _In_ LPCWSTR szAttribute, // attribute name, case-sensitive -@@ -921,12 +966,14 @@ +@@ -921,12 +963,14 @@ // Enumerate all patches for a product in contexts visible to caller @@ -341,7 +331,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumPatchesW( _In_ LPCWSTR szProduct, _In_ DWORD iPatchIndex, -@@ -942,11 +989,13 @@ +@@ -942,11 +986,13 @@ #if (_WIN32_MSI >= 300) // Remove one or more patches from the specified product. @@ -355,7 +345,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiRemovePatchesW( _In_ LPCWSTR szPatchList, // semi-colon delimited list of patches to remove; patch can be referenced by patch package path or Patch GUID _In_ LPCWSTR szProductCode, // ProductCode GUID of product with patch to remove -@@ -960,11 +1009,13 @@ +@@ -960,11 +1006,13 @@ // Extract XML data from the patch @@ -369,7 +359,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiExtractPatchXMLDataW( _In_ LPCWSTR szPatchPath, // Patch file to open _Reserved_ DWORD dwReserved, // Reserved -@@ -979,6 +1030,7 @@ +@@ -979,6 +1027,7 @@ // Retrieve extended patch info for a particular patch applied // to a particular product instance. @@ -377,7 +367,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetPatchInfoExA( _In_ LPCSTR szPatchCode, // target patch to query _In_ LPCSTR szProductCode, // target product of patch application -@@ -987,6 +1039,7 @@ +@@ -987,6 +1036,7 @@ _In_ LPCSTR szProperty, // property of patch to retrieve _Out_writes_opt_(*pcchValue) LPSTR lpValue, // address buffer for data _Inout_opt_ LPDWORD pcchValue); // in/out value buffer character count @@ -385,7 +375,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetPatchInfoExW( _In_ LPCWSTR szPatchCode, // target patch to query _In_ LPCWSTR szProductCode, // target product of patch application -@@ -1004,10 +1057,12 @@ +@@ -1004,10 +1054,12 @@ // Apply multiple patches to the specified product or to all eligible products // on the machine @@ -398,7 +388,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiApplyMultiplePatchesW( _In_ LPCWSTR szPatchPackages, // Patches to apply _In_opt_ LPCWSTR szProductCode, // target product of patch application -@@ -1022,12 +1077,14 @@ +@@ -1022,12 +1074,14 @@ // patch files, XML files, and/or XML blobs. Patches already applied to the product // are taken into account @@ -413,7 +403,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiDeterminePatchSequenceW( _In_ LPCWSTR szProductCode, // Product code GUID of an installed product _In_opt_ LPCWSTR szUserSid, // User account we're interested in -@@ -1044,10 +1101,12 @@ +@@ -1044,10 +1098,12 @@ // XML files, and/or XML blobs. Does not take into account either products or patches // already installed on the machine. @@ -426,7 +416,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiDetermineApplicablePatchesW( _In_ LPCWSTR szProductPackagePath, // Fully qualified path to a product MSI database _In_ DWORD cPatchInfo, // Number of patches in the array -@@ -1061,6 +1120,7 @@ +@@ -1061,6 +1117,7 @@ // Enumerates all patches applied for a single product or all products based upon // enumeration context and filter. @@ -434,7 +424,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumPatchesExA( _In_opt_ LPCSTR szProductCode, // Enumerate patches on instances of this product _In_opt_ LPCSTR szUserSid, // Account for enumeration -@@ -1072,6 +1132,7 @@ +@@ -1072,6 +1129,7 @@ _Out_opt_ MSIINSTALLCONTEXT *pdwTargetProductContext, //Enumerated patch's context _Out_writes_opt_(*pcchTargetUserSid) LPSTR szTargetUserSid, // Enumerated patch's user account _Inout_opt_ LPDWORD pcchTargetUserSid); // in/out character count of szTargetUserSid @@ -442,7 +432,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumPatchesExW( _In_opt_ LPCWSTR szProductCode, // Enumerate patches on instances of this product _In_opt_ LPCWSTR szUserSid, // Account for enumeration -@@ -1097,9 +1158,11 @@ +@@ -1097,9 +1155,11 @@ // Return the installed state for a product feature @@ -454,7 +444,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiQueryFeatureStateW( _In_ LPCWSTR szProduct, _In_ LPCWSTR szFeature); -@@ -1112,12 +1175,14 @@ +@@ -1112,12 +1172,14 @@ #if (_WIN32_MSI >= 300) // Retrieve the installed state for a product feature in a particular product instance @@ -469,7 +459,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiQueryFeatureStateExW( _In_ LPCWSTR szProductCode, // Information is queried on this product _In_opt_ LPCWSTR szUserSid, // Account of this product instance -@@ -1134,9 +1199,11 @@ +@@ -1134,9 +1196,11 @@ // Indicate intent to use a product feature, increments usage count // Prompts for CD if not loaded, does not install feature @@ -481,7 +471,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiUseFeatureW( _In_ LPCWSTR szProduct, _In_ LPCWSTR szFeature); -@@ -1150,11 +1217,13 @@ +@@ -1150,11 +1214,13 @@ // Prompts for CD if not loaded, does not install feature // Allows for bypassing component detection where performance is critical @@ -495,7 +485,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiUseFeatureExW( _In_ LPCWSTR szProduct, // product code _In_ LPCWSTR szFeature, // feature ID -@@ -1168,11 +1237,13 @@ +@@ -1168,11 +1234,13 @@ // Return the usage metrics for a product feature @@ -509,7 +499,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetFeatureUsageW( _In_ LPCWSTR szProduct, // product code _In_ LPCWSTR szFeature, // feature ID -@@ -1186,10 +1257,12 @@ +@@ -1186,10 +1254,12 @@ // Force the installed state for a product feature @@ -522,7 +512,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiConfigureFeatureW( _In_ LPCWSTR szProduct, _In_ LPCWSTR szFeature, -@@ -1203,14 +1276,16 @@ +@@ -1203,14 +1273,16 @@ // Reinstall feature, used to validate or correct problems @@ -541,7 +531,7 @@ diff --git a/um/msi.h b/um/msi.h #ifdef UNICODE #define MsiReinstallFeature MsiReinstallFeatureW #else -@@ -1228,18 +1303,20 @@ +@@ -1228,18 +1300,20 @@ // then calls MsiConfigureFeature if any of its components are uninstalled // then calls MsiLocateComponent to obtain the path the its key file @@ -564,7 +554,7 @@ diff --git a/um/msi.h b/um/msi.h _Out_writes_opt_(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, NULL if not desired _Inout_opt_ LPDWORD pcchPathBuf); // in/out buffer character count #ifdef UNICODE -@@ -1251,16 +1328,18 @@ +@@ -1251,16 +1325,18 @@ // Return full component path for a qualified component, performing any necessary installation. // Prompts for source if necessary and increments the usage count for the feature. @@ -585,7 +575,7 @@ diff --git a/um/msi.h b/um/msi.h _Out_writes_opt_(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, NULL if not desired _Inout_opt_ LPDWORD pcchPathBuf); // in/out buffer character count #ifdef UNICODE -@@ -1274,19 +1353,21 @@ +@@ -1274,19 +1350,21 @@ // The szProduct parameter specifies the product to match that has published the qualified // component. If null, this API works the same as MsiProvideQualifiedComponent. @@ -609,7 +599,7 @@ diff --git a/um/msi.h b/um/msi.h _In_opt_ LPCWSTR szProduct, // the product code _Reserved_ DWORD dwUnused1, // not used, must be zero _Reserved_ DWORD dwUnused2, // not used, must be zero -@@ -1300,11 +1381,13 @@ +@@ -1300,11 +1378,13 @@ // Return full path to an installed component @@ -623,7 +613,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiGetComponentPathW( _In_ LPCWSTR szProduct, // product code for client product _In_ LPCWSTR szComponent, // component Id, string GUID -@@ -1320,6 +1403,7 @@ +@@ -1320,6 +1400,7 @@ // Return full path to an installed component for a given user // and context @@ -631,7 +621,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiGetComponentPathExA( _In_ LPCSTR szProductCode, // ProductCode _In_ LPCSTR szComponentCode, // ComponentCode -@@ -1327,6 +1411,7 @@ +@@ -1327,6 +1408,7 @@ _In_opt_ MSIINSTALLCONTEXT dwContext, // Install context _Out_writes_opt_(*pcchOutPathBuffer) LPSTR lpOutPathBuffer, // returned path _Inout_opt_ LPDWORD pcchOutPathBuffer); // in/out buffer character count @@ -639,7 +629,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiGetComponentPathExW( _In_ LPCWSTR szProductCode, // ProductCode _In_ LPCWSTR szComponentCode, // ComponentCode -@@ -1346,24 +1431,32 @@ +@@ -1346,24 +1428,32 @@ #define MSIASSEMBLYINFO_NETASSEMBLY 0 // Net assemblies #define MSIASSEMBLYINFO_WIN32ASSEMBLY 1 // Win32 assemblies @@ -676,7 +666,7 @@ diff --git a/um/msi.h b/um/msi.h _Out_writes_opt_(*pcchPathBuf) LPWSTR lpPathBuf, // returned path, NULL if not desired _Inout_opt_ LPDWORD pcchPathBuf); // in/out buffer character count #ifdef UNICODE -@@ -1377,12 +1470,14 @@ +@@ -1377,12 +1467,14 @@ #if (_WIN32_MSI >= 300) // Query the installed state of a component in the specified product instance @@ -691,7 +681,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiQueryComponentStateW( _In_ LPCWSTR szProductCode, // Information is queried on this product _In_opt_ LPCWSTR szUserSid, // Account of this product instance -@@ -1404,9 +1499,11 @@ +@@ -1404,9 +1496,11 @@ // Enumerate the registered products, either installed or advertised @@ -703,7 +693,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumProductsW( _In_ DWORD iProductIndex, // 0-based index into registered products _Out_writes_(MAX_GUID_CHARS+1) LPWSTR lpProductBuf); // buffer of char count: 39 (size of string GUID) -@@ -1419,6 +1516,7 @@ +@@ -1419,6 +1513,7 @@ #if (_WIN32_MSI >= 300) // Enumerate the registered products, either installed or advertised in // the specified context @@ -711,7 +701,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumProductsExA( _In_opt_ LPCSTR szProductCode, // Enumerate instances of this product _In_opt_ LPCSTR szUserSid, // Account for enumeration -@@ -1430,6 +1528,7 @@ +@@ -1430,6 +1525,7 @@ _Inout_opt_ LPDWORD pcchSid); // in/out character count of szSid // Enumerate the registered products, either installed or advertised in // the specified context @@ -719,7 +709,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumProductsExW( _In_opt_ LPCWSTR szProductCode, // Enumerate instances of this product _In_opt_ LPCWSTR szUserSid, // Account for enumeration -@@ -1450,11 +1549,13 @@ +@@ -1450,11 +1546,13 @@ // Enumerate products with given upgrade code @@ -733,7 +723,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumRelatedProductsW( _In_ LPCWSTR lpUpgradeCode, // upgrade code of products to enumerate _Reserved_ DWORD dwReserved, // reserved, must be 0 -@@ -1471,11 +1572,13 @@ +@@ -1471,11 +1569,13 @@ // Enumerate the advertised features for a given product. // If parent is not required, supplying NULL will improve performance. @@ -747,7 +737,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumFeaturesW( _In_ LPCWSTR szProduct, _In_ DWORD iFeatureIndex, // 0-based index into published features -@@ -1489,9 +1592,11 @@ +@@ -1489,9 +1589,11 @@ // Enumerate the installed components for all products @@ -759,7 +749,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumComponentsW( _In_ DWORD iComponentIndex, // 0-based index into installed components _Out_writes_(MAX_GUID_CHARS+1) LPWSTR lpComponentBuf); // buffer of char count: 39 (size of string GUID) -@@ -1505,6 +1610,7 @@ +@@ -1505,6 +1607,7 @@ // Enumerate installed components for all products for a given users // and context @@ -767,7 +757,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumComponentsExA( _In_opt_ LPCSTR szUserSid, // Account for enumeration _In_ DWORD dwContext, // Contexts for enumeration -@@ -1513,6 +1619,7 @@ +@@ -1513,6 +1616,7 @@ _Out_opt_ MSIINSTALLCONTEXT* pdwInstalledContext, // Enumerated component's context _Out_writes_opt_(*pcchSid) LPSTR szSid, // Enumerated component's user account _Inout_opt_ LPDWORD pcchSid); // in/out character count of szSid @@ -775,7 +765,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumComponentsExW( _In_opt_ LPCWSTR szUserSid, // Account for enumeration _In_ DWORD dwContext, // Contexts for enumeration -@@ -1531,10 +1638,12 @@ +@@ -1531,10 +1635,12 @@ // Enumerate the client products for a component @@ -788,7 +778,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumClientsW( _In_ LPCWSTR szComponent, _In_ DWORD iProductIndex, // 0-based index into client products -@@ -1549,19 +1658,21 @@ +@@ -1549,19 +1655,21 @@ // Enumerate the client products for a component for a given users // and context @@ -812,7 +802,7 @@ diff --git a/um/msi.h b/um/msi.h _In_ DWORD dwProductIndex, // 0-based index into component clients _Out_writes_opt_(MAX_GUID_CHARS+1) WCHAR szProductBuf[39], // Enumerated component's client ProductCode _Out_opt_ MSIINSTALLCONTEXT *pdwInstalledContext, // Enumerated component's client product's context -@@ -1576,6 +1687,7 @@ +@@ -1576,6 +1684,7 @@ // Enumerate the qualifiers for an advertised component. @@ -820,7 +810,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumComponentQualifiersA( _In_ LPCSTR szComponent, // generic component ID that is qualified _In_ DWORD iIndex, // 0-based index into qualifiers -@@ -1583,6 +1695,7 @@ +@@ -1583,6 +1692,7 @@ _Inout_ LPDWORD pcchQualifierBuf, // in/out qualifier buffer character count _Out_writes_opt_(*pcchApplicationDataBuf) LPSTR lpApplicationDataBuf, // description buffer _Inout_opt_ LPDWORD pcchApplicationDataBuf); // in/out description buffer character count @@ -828,7 +818,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiEnumComponentQualifiersW( _In_ LPCWSTR szComponent, // generic component ID that is qualified _In_ DWORD iIndex, // 0-based index into qualifiers -@@ -1602,9 +1715,11 @@ +@@ -1602,9 +1712,11 @@ // Open the installation for a product to obtain detailed information @@ -840,7 +830,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiOpenProductW( _In_ LPCWSTR szProduct, // product code _Out_ MSIHANDLE *hProduct); // returned product handle, must be closed -@@ -1616,9 +1731,11 @@ +@@ -1616,9 +1728,11 @@ // Open a product package in order to access product properties @@ -852,7 +842,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiOpenPackageW( _In_ LPCWSTR szPackagePath, // path to package, or database handle: #nnnn _Out_ MSIHANDLE *hProduct); // returned product handle, must be closed -@@ -1634,10 +1751,12 @@ +@@ -1634,10 +1748,12 @@ // Option to create a "safe" engine that does not look at machine state // and does not allow for modification of machine state @@ -865,7 +855,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiOpenPackageExW( _In_ LPCWSTR szPackagePath, // path to package, or database handle: #nnnn _In_ DWORD dwOptions, // options flags to indicate whether or not to ignore machine state -@@ -1652,11 +1771,13 @@ +@@ -1652,11 +1768,13 @@ #if (_WIN32_MSI >= 400) @@ -879,7 +869,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetPatchFileListW( _In_ LPCWSTR szProductCode, _In_ LPCWSTR szPatchPackages, -@@ -1672,11 +1793,13 @@ +@@ -1672,11 +1790,13 @@ // Provide the value for an installation property. @@ -893,7 +883,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetProductPropertyW( _In_ MSIHANDLE hProduct, // product handle obtained from MsiOpenProduct _In_ LPCWSTR szProperty, // property name, case-sensitive -@@ -1692,8 +1815,10 @@ +@@ -1692,8 +1812,10 @@ // Determine whether a file is a package // Returns ERROR_SUCCESS if file is a package. @@ -904,7 +894,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiVerifyPackageW( _In_ LPCWSTR szPackagePath); // location of package #ifdef UNICODE -@@ -1709,6 +1834,7 @@ +@@ -1709,6 +1831,7 @@ // 1 = highest priority, feature installed if parent is installed // >1 = decreasing priority, feature installation based on InstallLevel property @@ -912,7 +902,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetFeatureInfoA( _In_ MSIHANDLE hProduct, // product handle obtained from MsiOpenProduct _In_ LPCSTR szFeature, // feature name -@@ -1717,6 +1843,7 @@ +@@ -1717,6 +1840,7 @@ _Inout_opt_ LPDWORD pcchTitleBuf, // in/out buffer character count _Out_writes_opt_(*pcchHelpBuf) LPSTR lpHelpBuf, // returned description, NULL if not desired _Inout_opt_ LPDWORD pcchHelpBuf); // in/out buffer character count @@ -920,7 +910,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetFeatureInfoW( _In_ MSIHANDLE hProduct, // product handle obtained from MsiOpenProduct _In_ LPCWSTR szFeature, // feature name -@@ -1740,10 +1867,12 @@ +@@ -1740,10 +1864,12 @@ // This would typically occur due to failue to establish feature availability // The product feature having the smallest incremental cost is installed @@ -933,7 +923,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiInstallMissingComponentW( _In_ LPCWSTR szProduct, // product code _In_ LPCWSTR szComponent, // component Id, string GUID -@@ -1759,9 +1888,11 @@ +@@ -1759,9 +1885,11 @@ // The missing component is determined from the product's File table, then // the product feature having the smallest incremental cost is installed @@ -945,7 +935,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiInstallMissingFileW( _In_ LPCWSTR szProduct, // product code _In_ LPCWSTR szFile); // file name, without path -@@ -1776,10 +1907,12 @@ +@@ -1776,10 +1904,12 @@ // but is not guaranteed to find the correct product for the caller. // MsiGetComponentPath should always be called when possible. @@ -958,7 +948,7 @@ diff --git a/um/msi.h b/um/msi.h INSTALLSTATE WINAPI MsiLocateComponentW( _In_ LPCWSTR szComponent, // component Id, string GUID _Out_writes_opt_(*pcchBuf) LPWSTR lpPathBuf, // returned path -@@ -1800,10 +1933,12 @@ +@@ -1800,10 +1930,12 @@ // and removes all network sources from the list. A NULL or empty value for // the user name indicates the per-machine install. @@ -971,7 +961,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListClearAllW( _In_ LPCWSTR szProduct, // product code _In_opt_ LPCWSTR szUserName, // user name or NULL/empty for per-machine -@@ -1818,11 +1953,13 @@ +@@ -1818,11 +1950,13 @@ // and adds the provided source as a new network source. A NULL or empty // value for the user name indicates the per-machine install. @@ -985,7 +975,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListAddSourceW( _In_ LPCWSTR szProduct, // product code _In_opt_ LPCWSTR szUserName, // user name or NULL/empty for per-machine -@@ -1837,10 +1974,12 @@ +@@ -1837,10 +1971,12 @@ // Forces the installer to reevaluate the list of sources the next time that // the specified product needs a source. @@ -998,7 +988,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListForceResolutionW( _In_ LPCWSTR szProduct, // product code _In_opt_ LPCWSTR szUserName, // user name or NULL/empty for per-machine -@@ -1857,6 +1996,7 @@ +@@ -1857,6 +1993,7 @@ // Adds a source or moves a source within the list of sources for the // specified product or patch instance. The source can be network/url type. @@ -1006,7 +996,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListAddSourceExA( _In_ LPCSTR szProductCodeOrPatchCode,// Source will be added to this product or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -1864,6 +2004,7 @@ +@@ -1864,6 +2001,7 @@ _In_ DWORD dwOptions, // Additional qualifiers _In_ LPCSTR szSource, // source to be added/re-ordered _In_ DWORD dwIndex); // new index for the source @@ -1014,7 +1004,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListAddSourceExW( _In_ LPCWSTR szProductCodeOrPatchCode,// Source will be added to this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1879,6 +2020,7 @@ +@@ -1879,6 +2017,7 @@ // Add or update a media source for the specified product or patch instance @@ -1022,7 +1012,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListAddMediaDiskA( _In_ LPCSTR szProductCodeOrPatchCode,// Disk will be added to this product or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -1887,6 +2029,7 @@ +@@ -1887,6 +2026,7 @@ _In_ DWORD dwDiskId, // ID of the disk to be added/updated _In_opt_ LPCSTR szVolumeLabel, // Volume Label of the disk _In_opt_ LPCSTR szDiskPrompt); // Disk Prompt of the disk @@ -1030,7 +1020,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListAddMediaDiskW( _In_ LPCWSTR szProductCodeOrPatchCode,// Disk will be added to this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1903,12 +2046,14 @@ +@@ -1903,12 +2043,14 @@ // Remove an existing source for the specified product or patch instance @@ -1045,7 +1035,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListClearSourceW( _In_ LPCWSTR szProductCodeOrPatchCode, // Source will be cleared for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1924,12 +2069,14 @@ +@@ -1924,12 +2066,14 @@ // Remove an existing registered disk under the media source for the specified product or // patch instance @@ -1060,7 +1050,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListClearMediaDiskW( _In_ LPCWSTR szProductCodeOrPatchCode, // Disk will be cleared for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1945,11 +2092,13 @@ +@@ -1945,11 +2089,13 @@ // Remove all existing sources of the given source type for the specified product or patch // instance @@ -1074,7 +1064,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListClearAllExW( _In_ LPCWSTR szProductCodeOrPatchCode, // All sources will be cleared for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1964,11 +2113,13 @@ +@@ -1964,11 +2110,13 @@ // Forces the installer to reevaluate the list of sources the next time that // the specified product or patch instance needs a source. @@ -1088,7 +1078,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListForceResolutionExW( _In_ LPCWSTR szProductCodeOrPatchCode, // Source Resolution will be forced for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -1982,6 +2133,7 @@ +@@ -1982,6 +2130,7 @@ // Set the source list property to the provided value for the specified product or patch instance @@ -1096,7 +1086,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListSetInfoA( _In_ LPCSTR szProductCodeOrPatchCode, // Source Info will be set for this product or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -1989,6 +2141,7 @@ +@@ -1989,6 +2138,7 @@ _In_ DWORD dwOptions, // Additional qualifiers _In_ LPCSTR szProperty, // Property being set/modified _In_ LPCSTR szValue); // Value to be set @@ -1104,7 +1094,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListSetInfoW( _In_ LPCWSTR szProductCodeOrPatchCode, // Source Info will be set for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -2004,6 +2157,7 @@ +@@ -2004,6 +2154,7 @@ // Query the given source list property for the specified product or patch instance @@ -1112,7 +1102,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListGetInfoA( _In_ LPCSTR szProductCodeOrPatchCode, // Source Info will be queried for this produt or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -2012,6 +2166,7 @@ +@@ -2012,6 +2163,7 @@ _In_ LPCSTR szProperty, // Property being queried _Out_writes_opt_(*pcchValue) LPSTR szValue, // Buffer to get the value _Inout_opt_ LPDWORD pcchValue); // in/out character count of szValue @@ -1120,7 +1110,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListGetInfoW( _In_ LPCWSTR szProductCodeOrPatchCode, // Source Info will be queried for this produt or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -2028,6 +2183,7 @@ +@@ -2028,6 +2180,7 @@ // Enumerate all sources for the specified product or patch instance @@ -1128,7 +1118,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListEnumSourcesA( _In_ LPCSTR szProductCodeOrPatchCode, // Sources will be enumerated for this product or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -2036,6 +2192,7 @@ +@@ -2036,6 +2189,7 @@ _In_ DWORD dwIndex, // Index value for enumeration _Out_writes_opt_(*pcchSource) LPSTR szSource, // Buffer to receive the enumerated source _Inout_opt_ LPDWORD pcchSource); // in/out character count of szSource @@ -1136,7 +1126,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListEnumSourcesW( _In_ LPCWSTR szProductCodeOrPatchCode, // Sources will be enumerated for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -2052,6 +2209,7 @@ +@@ -2052,6 +2206,7 @@ // Enumerate all registered media disks for the specified product or patch instance @@ -1144,7 +1134,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListEnumMediaDisksA( _In_ LPCSTR szProductCodeOrPatchCode, // Disks will be enumerated for this product or patch _In_opt_ LPCSTR szUserSid, // Account of this product/patch instance -@@ -2063,6 +2221,7 @@ +@@ -2063,6 +2218,7 @@ _Inout_opt_ LPDWORD pcchVolumeLabel, // in/out character count of szVolumeLabel _Out_writes_opt_(*pcchDiskPrompt) LPSTR szDiskPrompt, // DiskPrompt of the disk being enumerated _Inout_opt_ LPDWORD pcchDiskPrompt); // in/out character count of szDiskPrompt @@ -1152,7 +1142,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiSourceListEnumMediaDisksW( _In_ LPCWSTR szProductCodeOrPatchCode, // Disks will be enumerated for this product or patch _In_opt_ LPCWSTR szUserSid, // Account of this product/patch instance -@@ -2088,12 +2247,14 @@ +@@ -2088,12 +2244,14 @@ // Give the version string and language for a specified file @@ -1167,7 +1157,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetFileVersionW( _In_ LPCWSTR szFilePath, // path to the file _Out_writes_opt_(*pcchVersionBuf) LPWSTR lpVersionBuf, // returned version string -@@ -2109,10 +2270,12 @@ +@@ -2109,10 +2267,12 @@ #if (_WIN32_MSI >= 150) @@ -1180,7 +1170,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetFileHashW( _In_ LPCWSTR szFilePath, // path to the file _In_ DWORD dwOptions, // options -@@ -2128,12 +2291,14 @@ +@@ -2128,12 +2288,14 @@ #if (_WIN32_MSI >= 150) #ifndef _MSI_NO_CRYPTO @@ -1195,7 +1185,7 @@ diff --git a/um/msi.h b/um/msi.h HRESULT WINAPI MsiGetFileSignatureInformationW( _In_ LPCWSTR szSignedObjectPath, // path to the signed object _In_ DWORD dwFlags, // special extra error case flags -@@ -2159,11 +2324,13 @@ +@@ -2159,11 +2321,13 @@ // examine a shortcut, and retrieve its descriptor information // if available. @@ -1209,7 +1199,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiGetShortcutTargetW( _In_ LPCWSTR szShortcutPath, // full file path for the shortcut _Out_writes_opt_(MAX_GUID_CHARS+1) LPWSTR szProductCode, // returned product code - GUID -@@ -2182,12 +2349,14 @@ +@@ -2182,12 +2346,14 @@ // checks to see if a product is managed // checks per-machine if called from system context, per-user if from // user context @@ -1224,7 +1214,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiIsProductElevatedW( _In_ LPCWSTR szProduct, // product code _Out_ BOOL *pfElevated); // result -@@ -2204,8 +2373,10 @@ +@@ -2204,8 +2370,10 @@ // Caller notifies us of a user who's been moved and results in a sid change. @@ -1235,7 +1225,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiNotifySidChangeW(_In_ LPCWSTR pOldSid, _In_ LPCWSTR pNewSid); #ifdef UNICODE -@@ -2223,12 +2394,14 @@ +@@ -2223,12 +2391,14 @@ #if (_WIN32_MSI >= 450) // Start a multi package transaction @@ -1250,7 +1240,7 @@ diff --git a/um/msi.h b/um/msi.h UINT WINAPI MsiBeginTransactionW( _In_ LPCWSTR szName, // A name to identify the transaction _In_ DWORD dwTransactionAttributes, // Attributes to control the nature of the transaction -@@ -2241,10 +2414,12 @@ +@@ -2241,10 +2411,12 @@ #endif // !UNICODE // End a multi package transaction diff --git a/generation/WinSDK/patches/um/msports.h.patch b/generation/WinSDK/patches/um/msports.h.patch index cc9dd593d..ca37ab9d8 100644 --- a/generation/WinSDK/patches/um/msports.h.patch +++ b/generation/WinSDK/patches/um/msports.h.patch @@ -9,17 +9,7 @@ diff --git a/um/msports.h b/um/msports.h #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -91,6 +92,9 @@ - #endif - - DECLARE_HANDLE(HCOMDB); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCOMDB HCOMDB; -+#endif - typedef HCOMDB *PHCOMDB; - #define HCOMDB_INVALID_HANDLE_VALUE ((HCOMDB) INVALID_HANDLE_VALUE) - -@@ -103,7 +107,7 @@ +@@ -103,7 +104,7 @@ LONG WINAPI ComDBOpen ( diff --git a/generation/WinSDK/patches/um/mstask.idl.patch b/generation/WinSDK/patches/um/mstask.idl.patch index 9b217f981..890625032 100644 --- a/generation/WinSDK/patches/um/mstask.idl.patch +++ b/generation/WinSDK/patches/um/mstask.idl.patch @@ -51,15 +51,7 @@ index 9a1d6382..cc05ed8a 100644 [ local, object, -@@ -460,6 +467,7 @@ - - struct _PSP; - typedef struct _PSP * HPROPSHEETPAGE; -+cpp_quote("/* Win32Metadata: type ::HPROPSHEETPAGE => NativeTypedef */") - - typedef enum _TASKPAGE { - TASKPAGE_TASK = 0, -@@ -481,6 +489,7 @@ +@@ -481,6 +488,7 @@ cpp_quote("DEFINE_GUID(IID_IProvideTaskPage, 0x4086658aL, 0xcbbb, 0x11cf, 0xb6, 0x04, 0x00, 0xc0, 0x4f, 0xd8, 0xd5, 0x65);") interface IProvideTaskPage; @@ -67,7 +59,7 @@ index 9a1d6382..cc05ed8a 100644 [ local, object, -@@ -496,6 +505,8 @@ +@@ -496,6 +504,8 @@ [out] HPROPSHEETPAGE * phPage); } diff --git a/generation/WinSDK/patches/um/ncrypt.h.patch b/generation/WinSDK/patches/um/ncrypt.h.patch index 21da65b8b..b8890c7be 100644 --- a/generation/WinSDK/patches/um/ncrypt.h.patch +++ b/generation/WinSDK/patches/um/ncrypt.h.patch @@ -46,23 +46,18 @@ index 4ba920f4..e28334dd 100644 #endif #if (NTDDI_VERSION >= NTDDI_WIN8) #define NCRYPT_KEY_PROTECTION_INTERFACE 0x00010004 -@@ -306,8 +327,13 @@ typedef BCryptBufferDesc* PNCryptBufferDesc; +@@ -306,8 +327,8 @@ typedef BCryptBufferDesc* PNCryptBufferDesc; // -+_Win32_NativeTypedef_ typedef ULONG_PTR NCRYPT_HANDLE; -typedef ULONG_PTR NCRYPT_PROV_HANDLE; -typedef ULONG_PTR NCRYPT_KEY_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(NCRYPT_HANDLE) typedef ULONG_PTR NCRYPT_PROV_HANDLE; -+_Win32_NativeTypedef_ +_Win32_AlsoUsableFor_(NCRYPT_HANDLE) typedef ULONG_PTR NCRYPT_KEY_HANDLE; -+_Win32_NativeTypedef_ typedef ULONG_PTR NCRYPT_HASH_HANDLE; -+_Win32_NativeTypedef_ typedef ULONG_PTR NCRYPT_SECRET_HANDLE; -@@ -667,6 +693,10 @@ typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT +@@ -667,6 +688,10 @@ typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT #define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 #define NCRYPT_PERSIST_FLAG 0x80000000 @@ -73,7 +68,7 @@ index 4ba920f4..e28334dd 100644 #if (NTDDI_VERSION >= NTDDI_WIN10_RS2) #define NCRYPT_PREFER_VIRTUAL_ISOLATION_FLAG 0x00010000 // NCryptCreatePersistedKey NCryptImportKey -@@ -691,11 +721,12 @@ typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT +@@ -691,11 +716,12 @@ typedef struct _NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT #define NCRYPT_IGNORE_DEVICE_STATE_FLAG 0x00001000 // NCryptOpenStorageProvider #endif // (NTDDI_VERSION >= NTDDI_WINBLUE) @@ -87,7 +82,7 @@ index 4ba920f4..e28334dd 100644 _In_opt_ LPCWSTR pszProviderName, _In_ DWORD dwFlags); -@@ -707,6 +738,15 @@ NCryptOpenStorageProvider( +@@ -707,6 +733,15 @@ NCryptOpenStorageProvider( #define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION #define NCRYPT_SECRET_AGREEMENT_OPERATION BCRYPT_SECRET_AGREEMENT_OPERATION #define NCRYPT_SIGNATURE_OPERATION BCRYPT_SIGNATURE_OPERATION @@ -103,7 +98,7 @@ index 4ba920f4..e28334dd 100644 #define NCRYPT_RNG_OPERATION BCRYPT_RNG_OPERATION #if (NTDDI_VERSION >= NTDDI_WIN8) #define NCRYPT_KEY_DERIVATION_OPERATION BCRYPT_KEY_DERIVATION_OPERATION -@@ -720,24 +760,26 @@ NCryptOpenStorageProvider( +@@ -720,24 +755,26 @@ NCryptOpenStorageProvider( typedef struct _NCryptAlgorithmName { LPWSTR pszName; @@ -133,7 +128,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -755,10 +797,11 @@ typedef struct NCryptKeyName +@@ -755,10 +792,11 @@ typedef struct NCryptKeyName { LPWSTR pszName; LPWSTR pszAlgid; @@ -146,7 +141,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -767,7 +810,7 @@ NCryptEnumKeys( +@@ -767,7 +805,7 @@ NCryptEnumKeys( _In_opt_ LPCWSTR pszScope, _Outptr_ NCryptKeyName **ppKeyName, _Inout_ PVOID * ppEnumState, @@ -155,7 +150,7 @@ index 4ba920f4..e28334dd 100644 -@@ -780,6 +823,7 @@ typedef struct NCryptProviderName +@@ -780,6 +818,7 @@ typedef struct NCryptProviderName #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -163,7 +158,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -793,6 +837,7 @@ NCryptEnumStorageProviders( +@@ -793,6 +832,7 @@ NCryptEnumStorageProviders( #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #pragma endregion @@ -171,7 +166,7 @@ index 4ba920f4..e28334dd 100644 SECURITY_STATUS WINAPI NCryptFreeBuffer( -@@ -810,15 +855,16 @@ NCryptFreeBuffer( +@@ -810,15 +850,16 @@ NCryptFreeBuffer( #define NCRYPT_EXTENDED_ERRORS_FLAG 0x10000000 #endif @@ -191,7 +186,7 @@ index 4ba920f4..e28334dd 100644 -@@ -826,16 +872,17 @@ NCryptOpenKey( +@@ -826,16 +867,17 @@ NCryptOpenKey( #define NCRYPT_MACHINE_KEY_FLAG 0x00000020 #define NCRYPT_OVERWRITE_KEY_FLAG 0x00000080 @@ -212,7 +207,7 @@ index 4ba920f4..e28334dd 100644 -@@ -1241,6 +1288,7 @@ typedef struct __NCRYPT_PCP_RAW_POLICYDIGEST +@@ -1241,6 +1283,7 @@ typedef struct __NCRYPT_PCP_RAW_POLICYDIGEST // NCryptGetProperty flags #define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 @@ -220,7 +215,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ _Success_( return == 0 ) SECURITY_STATUS -@@ -1251,7 +1299,7 @@ NCryptGetProperty( +@@ -1251,7 +1294,7 @@ NCryptGetProperty( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PBYTE pbOutput, _In_ DWORD cbOutput, _Out_ DWORD * pcbResult, @@ -229,7 +224,7 @@ index 4ba920f4..e28334dd 100644 -@@ -1259,6 +1307,7 @@ NCryptGetProperty( +@@ -1259,6 +1302,7 @@ NCryptGetProperty( #define NCRYPT_PERSIST_FLAG 0x80000000 #define NCRYPT_PERSIST_ONLY_FLAG 0x40000000 @@ -237,7 +232,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1267,22 +1316,24 @@ NCryptSetProperty( +@@ -1267,22 +1311,24 @@ NCryptSetProperty( _In_ LPCWSTR pszProperty, _In_reads_bytes_(cbInput) PBYTE pbInput, _In_ DWORD cbInput, @@ -264,7 +259,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1294,10 +1345,11 @@ NCryptEncrypt( +@@ -1294,10 +1340,11 @@ NCryptEncrypt( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PBYTE pbOutput, _In_ DWORD cbOutput, _Out_ DWORD * pcbResult, @@ -277,7 +272,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1309,7 +1361,7 @@ NCryptDecrypt( +@@ -1309,7 +1356,7 @@ NCryptDecrypt( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PBYTE pbOutput, _In_ DWORD cbOutput, _Out_ DWORD * pcbResult, @@ -286,7 +281,7 @@ index 4ba920f4..e28334dd 100644 -@@ -1423,6 +1475,7 @@ typedef struct _NCRYPT_PQ_BLOB +@@ -1423,6 +1470,7 @@ typedef struct _NCRYPT_PQ_BLOB #define NCRYPT_DO_NOT_FINALIZE_FLAG 0x00000400 #define NCRYPT_EXPORT_LEGACY_FLAG 0x00000800 @@ -294,7 +289,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1431,13 +1484,14 @@ NCryptImportKey( +@@ -1431,13 +1479,14 @@ NCryptImportKey( _In_opt_ NCRYPT_KEY_HANDLE hImportKey, _In_ LPCWSTR pszBlobType, _In_opt_ NCryptBufferDesc *pParameterList, @@ -311,7 +306,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1449,10 +1503,11 @@ NCryptExportKey( +@@ -1449,10 +1498,11 @@ NCryptExportKey( _Out_writes_bytes_to_opt_(cbOutput, *pcbResult) PBYTE pbOutput, _In_ DWORD cbOutput, _Out_ DWORD * pcbResult, @@ -324,7 +319,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1464,10 +1519,11 @@ NCryptSignHash( +@@ -1464,10 +1514,11 @@ NCryptSignHash( _Out_writes_bytes_to_opt_(cbSignature, *pcbResult) PBYTE pbSignature, _In_ DWORD cbSignature, _Out_ DWORD * pcbResult, @@ -337,7 +332,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1478,10 +1534,11 @@ NCryptVerifySignature( +@@ -1478,10 +1529,11 @@ NCryptVerifySignature( _In_ DWORD cbHashValue, _In_reads_bytes_(cbSignature) PBYTE pbSignature, _In_ DWORD cbSignature, @@ -350,7 +345,7 @@ index 4ba920f4..e28334dd 100644 SECURITY_STATUS WINAPI NCryptDeleteKey( -@@ -1490,6 +1547,7 @@ NCryptDeleteKey( +@@ -1490,6 +1542,7 @@ NCryptDeleteKey( @@ -358,7 +353,7 @@ index 4ba920f4..e28334dd 100644 SECURITY_STATUS WINAPI NCryptFreeObject( -@@ -1499,20 +1557,22 @@ NCryptFreeObject( +@@ -1499,20 +1552,22 @@ NCryptFreeObject( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -384,7 +379,7 @@ index 4ba920f4..e28334dd 100644 _In_ DWORD dwFlags); #endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -@@ -1527,19 +1587,21 @@ NCryptTranslateHandle( +@@ -1527,19 +1582,21 @@ NCryptTranslateHandle( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -407,7 +402,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1547,10 +1609,11 @@ NCryptSecretAgreement( +@@ -1547,10 +1604,11 @@ NCryptSecretAgreement( _In_ NCRYPT_KEY_HANDLE hPrivKey, _In_ NCRYPT_KEY_HANDLE hPubKey, _Out_ NCRYPT_SECRET_HANDLE *phAgreedSecret, @@ -420,7 +415,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1567,6 +1630,7 @@ NCryptDeriveKey( +@@ -1567,6 +1625,7 @@ NCryptDeriveKey( #if (NTDDI_VERSION >= NTDDI_WIN8) @@ -428,7 +423,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1583,6 +1647,7 @@ NCryptKeyDerivation( +@@ -1583,6 +1642,7 @@ NCryptKeyDerivation( #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) @@ -436,7 +431,7 @@ index 4ba920f4..e28334dd 100644 _Check_return_ SECURITY_STATUS WINAPI -@@ -1601,6 +1666,7 @@ NCryptCreateClaim( +@@ -1601,6 +1661,7 @@ NCryptCreateClaim( #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) diff --git a/generation/WinSDK/patches/um/ncryptprotect.h.patch b/generation/WinSDK/patches/um/ncryptprotect.h.patch index 20a54b498..ded3d9b16 100644 --- a/generation/WinSDK/patches/um/ncryptprotect.h.patch +++ b/generation/WinSDK/patches/um/ncryptprotect.h.patch @@ -1,17 +1,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h --- a/um/ncryptprotect.h +++ b/um/ncryptprotect.h -@@ -130,6 +130,9 @@ - // NCRYPT_DESCRIPTOR_HANDLE - // - DECLARE_HANDLE( NCRYPT_DESCRIPTOR_HANDLE ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef NCRYPT_DESCRIPTOR_HANDLE NCRYPT_DESCRIPTOR_HANDLE; -+#endif - - #if (NTDDI_VERSION >= NTDDI_WIN8) - -@@ -175,6 +178,7 @@ +@@ -175,6 +175,7 @@ ****************************************************************************/ @@ -19,7 +9,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptRegisterProtectionDescriptorName( -@@ -218,6 +222,7 @@ +@@ -218,6 +219,7 @@ ****************************************************************************/ @@ -27,7 +17,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptQueryProtectionDescriptorName( -@@ -261,6 +266,7 @@ +@@ -261,6 +263,7 @@ NTE_BAD_TYPE ****************************************************************************/ @@ -35,7 +25,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptCreateProtectionDescriptor( -@@ -294,6 +300,7 @@ +@@ -294,6 +297,7 @@ NTE_INVALID_HANDLE ****************************************************************************/ @@ -43,7 +33,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptCloseProtectionDescriptor( -@@ -355,6 +362,7 @@ +@@ -355,6 +359,7 @@ // #define NCRYPT_PROTECTION_INFO_TYPE_DESCRIPTOR_STRING 0x00000001 // LPWSTR @@ -51,7 +41,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h _Success_(return == 0) _When_(dwInfoType == NCRYPT_PROTECTION_INFO_TYPE_DESCRIPTOR_STRING, _At_((LPWSTR*)ppvInfo, _Outptr_result_nullonfailure_)) -@@ -420,6 +428,7 @@ +@@ -420,6 +425,7 @@ NTE_BAD_TYPE ****************************************************************************/ @@ -59,7 +49,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptProtectSecret( -@@ -498,11 +507,12 @@ +@@ -498,11 +504,12 @@ no actual decryption will occur. ****************************************************************************/ @@ -73,7 +63,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h _In_reads_bytes_(cbProtectedBlob) const BYTE *pbProtectedBlob, ULONG cbProtectedBlob, -@@ -515,6 +525,10 @@ +@@ -515,6 +522,10 @@ #define NCRYPT_UNPROTECT_NO_DECRYPT 0x00000001 @@ -84,17 +74,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h /*-------------------------------------------------------------------------- // // STREAM API -@@ -522,6 +536,9 @@ - ---------------------------------------------------------------------------*/ - - DECLARE_HANDLE( NCRYPT_STREAM_HANDLE ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef NCRYPT_STREAM_HANDLE NCRYPT_STREAM_HANDLE; -+#endif - - - /**************************************************************************** -@@ -627,6 +644,7 @@ +@@ -627,6 +638,7 @@ NTE_BAD_TYPE ****************************************************************************/ @@ -102,7 +82,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptStreamOpenToProtect( -@@ -672,6 +690,7 @@ +@@ -672,6 +684,7 @@ NTE_DECRYPTION_FAILURE ****************************************************************************/ @@ -110,7 +90,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptStreamOpenToUnprotect( -@@ -837,6 +856,7 @@ +@@ -837,6 +850,7 @@ NTE_DECRYPTION_FAILURE ****************************************************************************/ @@ -118,7 +98,7 @@ diff --git a/um/ncryptprotect.h b/um/ncryptprotect.h SECURITY_STATUS WINAPI NCryptStreamUpdate( -@@ -863,6 +883,7 @@ +@@ -863,6 +877,7 @@ NTE_INVALID_HANDLE ****************************************************************************/ diff --git a/generation/WinSDK/patches/um/ntlsa.h.patch b/generation/WinSDK/patches/um/ntlsa.h.patch index 70c0f6981..28b731a57 100644 --- a/generation/WinSDK/patches/um/ntlsa.h.patch +++ b/generation/WinSDK/patches/um/ntlsa.h.patch @@ -2,206 +2,196 @@ diff --git a/um/ntlsa.h b/um/ntlsa.h --- a/um/ntlsa.h +++ b/um/ntlsa.h @@ -18,6 +18,7 @@ - #ifndef _NTLSA_ - #define _NTLSA_ - -+#include - #include - - #pragma region Desktop Family -@@ -2504,6 +2505,9 @@ - // - - typedef PVOID LSA_HANDLE, *PLSA_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LSA_HANDLE LSA_HANDLE; -+#endif - - // end_ntsecapi - -@@ -2667,12 +2671,18 @@ - #define TRUST_DIRECTION_OUTBOUND 0x00000002 - #define TRUST_DIRECTION_BIDIRECTIONAL (TRUST_DIRECTION_INBOUND | TRUST_DIRECTION_OUTBOUND) - -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_DIRECTION, ULONG, TRUST_DIRECTION_DISABLED, TRUST_DIRECTION_INBOUND, TRUST_DIRECTION_OUTBOUND, TRUST_DIRECTION_BIDIRECTIONAL); -+ - #define TRUST_TYPE_DOWNLEVEL 0x00000001 // NT4 and before - #define TRUST_TYPE_UPLEVEL 0x00000002 // NT5 - #define TRUST_TYPE_MIT 0x00000003 // Trust with a MIT Kerberos realm - -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_TYPE, ULONG, TRUST_TYPE_DOWNLEVEL, TRUST_TYPE_UPLEVEL, TRUST_TYPE_MIT); -+ - #if (_WIN32_WINNT < 0x0502) - #define TRUST_TYPE_DCE 0x00000004 // Trust with a DCE realm -+ -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_TYPE, ULONG, TRUST_TYPE_DCE); - #endif - - #define TRUST_TYPE_AAD 0x00000005 // Trust with Azure AD -@@ -2682,6 +2692,8 @@ - - #define TRUST_ATTRIBUTE_NON_TRANSITIVE 0x00000001 // Disallow transitivity - #define TRUST_ATTRIBUTE_UPLEVEL_ONLY 0x00000002 // Trust link only valid for uplevel client -+ -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_NON_TRANSITIVE, TRUST_ATTRIBUTE_UPLEVEL_ONLY); - #if (_WIN32_WINNT == 0x0500) - #define TRUST_ATTRIBUTE_TREE_PARENT 0x00400000 // Denotes that we are setting the trust - // to our parent in the org tree... -@@ -2696,16 +2708,22 @@ - - #if (_WIN32_WINNT < 0x0502) - #define TRUST_ATTRIBUTE_FILTER_SIDS 0x00000004 // Used to quarantine domains -+ -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_FILTER_SIDS); - #else - #define TRUST_ATTRIBUTE_QUARANTINED_DOMAIN 0x00000004 // Used to quarantine domains - #endif - - #if (_WIN32_WINNT >= 0x0501) - #define TRUST_ATTRIBUTE_FOREST_TRANSITIVE 0x00000008 // This link may contain forest trust information -+ -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_FOREST_TRANSITIVE); - #if (_WIN32_WINNT >= 0x0502) - #define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 // This trust is to a domain/forest which is not part of this enterprise - #define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 // Trust is internal to this forest - #define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 // Trust is to be treated as external for trust boundary purposes -+ -+_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_CROSS_ORGANIZATION, TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, TRUST_ATTRIBUTE_WITHIN_FOREST); - #if (_WIN32_WINNT >= 0x0600) - #define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 // MIT trust with RC4 - #define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100 // Use AES keys to encrypte KRB TGTs -@@ -2771,6 +2789,8 @@ - #define TRUST_AUTH_TYPE_CLEAR 2 // Cleartext password - #define TRUST_AUTH_TYPE_VERSION 3 // Cleartext password version number - -+_Win32_Enum_(LSA_AUTH_INFORMATION_AUTH_TYPE, ULONG, TRUST_AUTH_TYPE_NONE, TRUST_AUTH_TYPE_NT4OWF, TRUST_AUTH_TYPE_CLEAR, TRUST_AUTH_TYPE_VERSION); -+ - typedef struct _LSA_AUTH_INFORMATION { - - LARGE_INTEGER LastUpdateTime; -@@ -3118,7 +3138,7 @@ - NTAPI - LsaQuerySecurityObject( - _In_ LSA_HANDLE ObjectHandle, -- _In_ SECURITY_INFORMATION SecurityInformation, -+ _Win32_AssociatedEnum_(OBJECT_SECURITY_INFORMATION) _In_ SECURITY_INFORMATION SecurityInformation, - _Out_ PSECURITY_DESCRIPTOR *SecurityDescriptor - ); - -@@ -3225,7 +3245,7 @@ - _In_opt_ PLSA_UNICODE_STRING SystemName, - _In_ PLSA_OBJECT_ATTRIBUTES ObjectAttributes, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE PolicyHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE PolicyHandle - ); - - // end_ntsecapi -@@ -3236,7 +3256,7 @@ - _In_opt_ PLSA_UNICODE_STRING SystemName, - _In_ PLSA_OBJECT_ATTRIBUTES ObjectAttributes, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE PolicyHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE PolicyHandle - ); - - /////////////////////////////////////////////////////////////////////////////// -@@ -3365,7 +3385,7 @@ - - NTSTATUS - NTAPI --LsaGetAppliedCAPIDs( -+_Win32_SupportedOS_Windows8_ LsaGetAppliedCAPIDs( - _In_opt_ PLSA_UNICODE_STRING SystemName, - _Outptr_result_buffer_(*CAPIDCount) PSID **CAPIDs, - _Out_ PULONG CAPIDCount -@@ -3373,7 +3393,7 @@ - - NTSTATUS - NTAPI --LsaQueryCAPs( -+_Win32_SupportedOS_Windows8_ LsaQueryCAPs( - _In_reads_opt_(CAPIDCount) PSID *CAPIDs, - _In_ ULONG CAPIDCount, - _Outptr_result_buffer_(*CAPCount) PCENTRAL_ACCESS_POLICY *CAPs, -@@ -3446,7 +3466,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PSID AccountSid, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE AccountHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE AccountHandle - ); - - NTSTATUS -@@ -3465,7 +3485,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PLSA_TRUST_INFORMATION TrustedDomainInformation, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE TrustedDomainHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle - ); - - // begin_ntsecapi -@@ -3546,7 +3566,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PLSA_UNICODE_STRING SecretName, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE SecretHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE SecretHandle - ); - - // -@@ -3570,7 +3590,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PSID AccountSid, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE AccountHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE AccountHandle - ); - - NTSTATUS -@@ -3683,7 +3703,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PSID TrustedDomainSid, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE TrustedDomainHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle - ); - - NTSTATUS -@@ -3714,7 +3734,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PLSA_UNICODE_STRING SecretName, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE SecretHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE SecretHandle - ); - - NTSTATUS -@@ -3744,7 +3764,7 @@ - - NTSTATUS - NTAPI --LsaLookupPrivilegeValue( -+_Win32_SupportedOS_WindowsVista_ LsaLookupPrivilegeValue( - _In_ LSA_HANDLE PolicyHandle, - _In_ PLSA_UNICODE_STRING Name, - _Out_ PLUID Value -@@ -3868,7 +3888,7 @@ - _In_ LSA_HANDLE PolicyHandle, - _In_ PLSA_UNICODE_STRING TrustedDomainName, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE TrustedDomainHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle - ); - - -@@ -3932,7 +3952,7 @@ - _In_ PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, - _In_ PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, - _In_ ACCESS_MASK DesiredAccess, -- _Out_ PLSA_HANDLE TrustedDomainHandle -+ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle - ); - - #if (_WIN32_WINNT >= 0x0501) + #ifndef _NTLSA_ + #define _NTLSA_ + ++#include + #include + + #pragma region Desktop Family +@@ -2667,12 +2668,18 @@ + #define TRUST_DIRECTION_OUTBOUND 0x00000002 + #define TRUST_DIRECTION_BIDIRECTIONAL (TRUST_DIRECTION_INBOUND | TRUST_DIRECTION_OUTBOUND) + ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_DIRECTION, ULONG, TRUST_DIRECTION_DISABLED, TRUST_DIRECTION_INBOUND, TRUST_DIRECTION_OUTBOUND, TRUST_DIRECTION_BIDIRECTIONAL); ++ + #define TRUST_TYPE_DOWNLEVEL 0x00000001 // NT4 and before + #define TRUST_TYPE_UPLEVEL 0x00000002 // NT5 + #define TRUST_TYPE_MIT 0x00000003 // Trust with a MIT Kerberos realm + ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_TYPE, ULONG, TRUST_TYPE_DOWNLEVEL, TRUST_TYPE_UPLEVEL, TRUST_TYPE_MIT); ++ + #if (_WIN32_WINNT < 0x0502) + #define TRUST_TYPE_DCE 0x00000004 // Trust with a DCE realm ++ ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_TYPE, ULONG, TRUST_TYPE_DCE); + #endif + + #define TRUST_TYPE_AAD 0x00000005 // Trust with Azure AD +@@ -2682,6 +2689,8 @@ + + #define TRUST_ATTRIBUTE_NON_TRANSITIVE 0x00000001 // Disallow transitivity + #define TRUST_ATTRIBUTE_UPLEVEL_ONLY 0x00000002 // Trust link only valid for uplevel client ++ ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_NON_TRANSITIVE, TRUST_ATTRIBUTE_UPLEVEL_ONLY); + #if (_WIN32_WINNT == 0x0500) + #define TRUST_ATTRIBUTE_TREE_PARENT 0x00400000 // Denotes that we are setting the trust + // to our parent in the org tree... +@@ -2696,16 +2705,22 @@ + + #if (_WIN32_WINNT < 0x0502) + #define TRUST_ATTRIBUTE_FILTER_SIDS 0x00000004 // Used to quarantine domains ++ ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_FILTER_SIDS); + #else + #define TRUST_ATTRIBUTE_QUARANTINED_DOMAIN 0x00000004 // Used to quarantine domains + #endif + + #if (_WIN32_WINNT >= 0x0501) + #define TRUST_ATTRIBUTE_FOREST_TRANSITIVE 0x00000008 // This link may contain forest trust information ++ ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_FOREST_TRANSITIVE); + #if (_WIN32_WINNT >= 0x0502) + #define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 // This trust is to a domain/forest which is not part of this enterprise + #define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 // Trust is internal to this forest + #define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 // Trust is to be treated as external for trust boundary purposes ++ ++_Win32_Enum_(TRUSTED_DOMAIN_TRUST_ATTRIBUTES, ULONG, TRUST_ATTRIBUTE_CROSS_ORGANIZATION, TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL, TRUST_ATTRIBUTE_WITHIN_FOREST); + #if (_WIN32_WINNT >= 0x0600) + #define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 // MIT trust with RC4 + #define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100 // Use AES keys to encrypte KRB TGTs +@@ -2771,6 +2786,8 @@ + #define TRUST_AUTH_TYPE_CLEAR 2 // Cleartext password + #define TRUST_AUTH_TYPE_VERSION 3 // Cleartext password version number + ++_Win32_Enum_(LSA_AUTH_INFORMATION_AUTH_TYPE, ULONG, TRUST_AUTH_TYPE_NONE, TRUST_AUTH_TYPE_NT4OWF, TRUST_AUTH_TYPE_CLEAR, TRUST_AUTH_TYPE_VERSION); ++ + typedef struct _LSA_AUTH_INFORMATION { + + LARGE_INTEGER LastUpdateTime; +@@ -3118,7 +3135,7 @@ + NTAPI + LsaQuerySecurityObject( + _In_ LSA_HANDLE ObjectHandle, +- _In_ SECURITY_INFORMATION SecurityInformation, ++ _Win32_AssociatedEnum_(OBJECT_SECURITY_INFORMATION) _In_ SECURITY_INFORMATION SecurityInformation, + _Out_ PSECURITY_DESCRIPTOR *SecurityDescriptor + ); + +@@ -3225,7 +3242,7 @@ + _In_opt_ PLSA_UNICODE_STRING SystemName, + _In_ PLSA_OBJECT_ATTRIBUTES ObjectAttributes, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE PolicyHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE PolicyHandle + ); + + // end_ntsecapi +@@ -3236,7 +3253,7 @@ + _In_opt_ PLSA_UNICODE_STRING SystemName, + _In_ PLSA_OBJECT_ATTRIBUTES ObjectAttributes, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE PolicyHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE PolicyHandle + ); + + /////////////////////////////////////////////////////////////////////////////// +@@ -3365,7 +3382,7 @@ + + NTSTATUS + NTAPI +-LsaGetAppliedCAPIDs( ++_Win32_SupportedOS_Windows8_ LsaGetAppliedCAPIDs( + _In_opt_ PLSA_UNICODE_STRING SystemName, + _Outptr_result_buffer_(*CAPIDCount) PSID **CAPIDs, + _Out_ PULONG CAPIDCount +@@ -3373,7 +3390,7 @@ + + NTSTATUS + NTAPI +-LsaQueryCAPs( ++_Win32_SupportedOS_Windows8_ LsaQueryCAPs( + _In_reads_opt_(CAPIDCount) PSID *CAPIDs, + _In_ ULONG CAPIDCount, + _Outptr_result_buffer_(*CAPCount) PCENTRAL_ACCESS_POLICY *CAPs, +@@ -3446,7 +3463,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PSID AccountSid, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE AccountHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE AccountHandle + ); + + NTSTATUS +@@ -3465,7 +3482,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PLSA_TRUST_INFORMATION TrustedDomainInformation, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE TrustedDomainHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle + ); + + // begin_ntsecapi +@@ -3546,7 +3563,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PLSA_UNICODE_STRING SecretName, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE SecretHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE SecretHandle + ); + + // +@@ -3570,7 +3587,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PSID AccountSid, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE AccountHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE AccountHandle + ); + + NTSTATUS +@@ -3683,7 +3700,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PSID TrustedDomainSid, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE TrustedDomainHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle + ); + + NTSTATUS +@@ -3714,7 +3731,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PLSA_UNICODE_STRING SecretName, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE SecretHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE SecretHandle + ); + + NTSTATUS +@@ -3744,7 +3761,7 @@ + + NTSTATUS + NTAPI +-LsaLookupPrivilegeValue( ++_Win32_SupportedOS_WindowsVista_ LsaLookupPrivilegeValue( + _In_ LSA_HANDLE PolicyHandle, + _In_ PLSA_UNICODE_STRING Name, + _Out_ PLUID Value +@@ -3868,7 +3885,7 @@ + _In_ LSA_HANDLE PolicyHandle, + _In_ PLSA_UNICODE_STRING TrustedDomainName, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE TrustedDomainHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle + ); + + +@@ -3932,7 +3949,7 @@ + _In_ PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, + _In_ PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, + _In_ ACCESS_MASK DesiredAccess, +- _Out_ PLSA_HANDLE TrustedDomainHandle ++ _Win32_RAIIFree_(LsaClose, -1, 0) _Out_ PLSA_HANDLE TrustedDomainHandle + ); + + #if (_WIN32_WINNT >= 0x0501) diff --git a/generation/WinSDK/patches/um/ntsecapi.h.patch b/generation/WinSDK/patches/um/ntsecapi.h.patch index 4cc61070b..f8a094fc8 100644 --- a/generation/WinSDK/patches/um/ntsecapi.h.patch +++ b/generation/WinSDK/patches/um/ntsecapi.h.patch @@ -10,17 +10,7 @@ index e30ee026..626baf52 100644 #if _MSC_VER >= 1200 #pragma warning(push) -@@ -893,6 +894,9 @@ extern "C" { - - #ifndef _NTDEF_ - typedef _Return_type_success_(return >= 0) LONG NTSTATUS, *PNTSTATUS; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef NTSTATUS NTSTATUS; -+#endif - #endif - - #include -@@ -1653,6 +1657,7 @@ typedef enum _POLICY_AUDIT_EVENT_TYPE { +@@ -1653,6 +1654,7 @@ typedef enum _POLICY_AUDIT_EVENT_TYPE { #ifndef _NTLSA_IFS_ // begin_ntifs @@ -28,7 +18,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -1668,6 +1673,7 @@ LsaRegisterLogonProcess ( +@@ -1668,6 +1670,7 @@ LsaRegisterLogonProcess ( // However, the function has always been there, so it is okay to use // even on w2k // @@ -36,7 +26,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -1691,6 +1697,7 @@ LsaLogonUser ( +@@ -1691,6 +1694,7 @@ LsaLogonUser ( // end_ntifs @@ -44,7 +34,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -1703,6 +1710,7 @@ LsaLookupAuthenticationPackage ( +@@ -1703,6 +1707,7 @@ LsaLookupAuthenticationPackage ( // begin_ntifs @@ -52,7 +42,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ NTSTATUS NTAPI -@@ -1712,6 +1720,7 @@ LsaFreeReturnBuffer ( +@@ -1712,6 +1717,7 @@ LsaFreeReturnBuffer ( // end_ntifs @@ -60,7 +50,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -1726,6 +1735,7 @@ LsaCallAuthenticationPackage ( +@@ -1726,6 +1732,7 @@ LsaCallAuthenticationPackage ( _Out_opt_ PNTSTATUS ProtocolStatus ); @@ -68,7 +58,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -1734,6 +1744,7 @@ LsaDeregisterLogonProcess ( +@@ -1734,6 +1741,7 @@ LsaDeregisterLogonProcess ( _In_ HANDLE LsaHandle ); @@ -76,18 +66,7 @@ index e30ee026..626baf52 100644 _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS -@@ -2353,7 +2364,10 @@ - // always a pointer type unlike regular handles. - // - - typedef PVOID LSA_HANDLE, *PLSA_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LSA_HANDLE LSA_HANDLE; -+#endif - - - // -@@ -2478,12 +2492,28 @@ typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; +@@ -2478,12 +2486,28 @@ typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; #define TRUST_DIRECTION_OUTBOUND 0x00000002 #define TRUST_DIRECTION_BIDIRECTIONAL (TRUST_DIRECTION_INBOUND | TRUST_DIRECTION_OUTBOUND) @@ -116,7 +95,7 @@ index e30ee026..626baf52 100644 #endif #define TRUST_TYPE_AAD 0x00000005 // Trust with Azure AD -@@ -2547,14 +2577,25 @@ typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; +@@ -2547,14 +2571,25 @@ typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; #endif #define TRUST_ATTRIBUTES_USER 0xFF000000 @@ -145,7 +124,7 @@ index e30ee026..626baf52 100644 } TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX; -@@ -2582,10 +2623,18 @@ typedef struct _TRUSTED_DOMAIN_INFORMATION_EX2 { +@@ -2582,10 +2617,18 @@ typedef struct _TRUSTED_DOMAIN_INFORMATION_EX2 { #define TRUST_AUTH_TYPE_CLEAR 2 // Cleartext password #define TRUST_AUTH_TYPE_VERSION 3 // Cleartext password version number @@ -165,7 +144,7 @@ index e30ee026..626baf52 100644 ULONG AuthInfoLength; PUCHAR AuthInfo; } LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION; -@@ -2858,12 +2907,14 @@ typedef struct _LSA_ENUMERATION_INFORMATION { +@@ -2858,12 +2901,14 @@ typedef struct _LSA_ENUMERATION_INFORMATION { //////////////////////////////////////////////////////////////////////////// @@ -180,7 +159,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaClose( -@@ -2924,6 +2975,7 @@ typedef struct _SECURITY_LOGON_SESSION_DATA { +@@ -2924,6 +2969,7 @@ typedef struct _SECURITY_LOGON_SESSION_DATA { #endif } SECURITY_LOGON_SESSION_DATA, * PSECURITY_LOGON_SESSION_DATA; @@ -188,7 +167,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaEnumerateLogonSessions( -@@ -2931,6 +2983,7 @@ LsaEnumerateLogonSessions( +@@ -2931,6 +2977,7 @@ LsaEnumerateLogonSessions( _Out_ PLUID * LogonSessionList ); @@ -196,7 +175,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaGetLogonSessionData( -@@ -2939,13 +2992,14 @@ LsaGetLogonSessionData( +@@ -2939,13 +2986,14 @@ LsaGetLogonSessionData( ); #endif @@ -212,7 +191,7 @@ index e30ee026..626baf52 100644 ); -@@ -3082,6 +3136,7 @@ LsaQueryCAPs( +@@ -3082,6 +3130,7 @@ LsaQueryCAPs( ); @@ -220,7 +199,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaQueryInformationPolicy( -@@ -3090,6 +3145,7 @@ LsaQueryInformationPolicy( +@@ -3090,6 +3139,7 @@ LsaQueryInformationPolicy( _Out_ PVOID *Buffer ); @@ -228,7 +207,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaSetInformationPolicy( -@@ -3098,6 +3154,7 @@ LsaSetInformationPolicy( +@@ -3098,6 +3148,7 @@ LsaSetInformationPolicy( _In_ PVOID Buffer ); @@ -236,7 +215,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaQueryDomainInformationPolicy( -@@ -3106,6 +3163,7 @@ LsaQueryDomainInformationPolicy( +@@ -3106,6 +3157,7 @@ LsaQueryDomainInformationPolicy( _Out_ PVOID *Buffer ); @@ -244,7 +223,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaSetDomainInformationPolicy( -@@ -3115,6 +3173,7 @@ LsaSetDomainInformationPolicy( +@@ -3115,6 +3167,7 @@ LsaSetDomainInformationPolicy( ); @@ -252,7 +231,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaRegisterPolicyChangeNotification( -@@ -3122,6 +3181,7 @@ LsaRegisterPolicyChangeNotification( +@@ -3122,6 +3175,7 @@ LsaRegisterPolicyChangeNotification( _In_ HANDLE NotificationEventHandle ); @@ -260,7 +239,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaUnregisterPolicyChangeNotification( -@@ -3131,6 +3191,7 @@ LsaUnregisterPolicyChangeNotification( +@@ -3131,6 +3185,7 @@ LsaUnregisterPolicyChangeNotification( @@ -268,7 +247,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaEnumerateTrustedDomains( -@@ -3142,6 +3203,7 @@ LsaEnumerateTrustedDomains( +@@ -3142,6 +3197,7 @@ LsaEnumerateTrustedDomains( ); @@ -276,7 +255,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaLookupNames( -@@ -3153,6 +3215,7 @@ LsaLookupNames( +@@ -3153,6 +3209,7 @@ LsaLookupNames( ); #if (_WIN32_WINNT >= 0x0501) @@ -284,7 +263,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaLookupNames2( -@@ -3165,6 +3228,7 @@ LsaLookupNames2( +@@ -3165,6 +3222,7 @@ LsaLookupNames2( ); #endif @@ -292,7 +271,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaLookupSids( -@@ -3175,6 +3239,7 @@ LsaLookupSids( +@@ -3175,6 +3233,7 @@ LsaLookupSids( _Out_ PLSA_TRANSLATED_NAME *Names ); @@ -300,7 +279,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaLookupSids2( -@@ -3205,6 +3270,7 @@ LsaLookupSids2( +@@ -3205,6 +3264,7 @@ LsaLookupSids2( // This new API returns all the accounts with a certain privilege // @@ -308,7 +287,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight( -@@ -3219,6 +3285,7 @@ LsaEnumerateAccountsWithUserRight( +@@ -3219,6 +3279,7 @@ LsaEnumerateAccountsWithUserRight( // to open the account first and passing in an account handle // @@ -316,7 +295,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaEnumerateAccountRights( -@@ -3228,6 +3295,7 @@ LsaEnumerateAccountRights( +@@ -3228,6 +3289,7 @@ LsaEnumerateAccountRights( _Out_ PULONG CountOfRights ); @@ -324,7 +303,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaAddAccountRights( -@@ -3237,6 +3305,7 @@ LsaAddAccountRights( +@@ -3237,6 +3299,7 @@ LsaAddAccountRights( _In_ ULONG CountOfRights ); @@ -332,7 +311,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaRemoveAccountRights( -@@ -3253,16 +3322,18 @@ LsaRemoveAccountRights( +@@ -3253,16 +3316,18 @@ LsaRemoveAccountRights( // // /////////////////////////////////////////////////////////////////////////////// @@ -352,7 +331,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaQueryTrustedDomainInfo( -@@ -3272,6 +3343,7 @@ LsaQueryTrustedDomainInfo( +@@ -3272,6 +3337,7 @@ LsaQueryTrustedDomainInfo( _Out_ PVOID *Buffer ); @@ -360,7 +339,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaSetTrustedDomainInformation( -@@ -3281,6 +3353,7 @@ LsaSetTrustedDomainInformation( +@@ -3281,6 +3347,7 @@ LsaSetTrustedDomainInformation( _In_ PVOID Buffer ); @@ -368,7 +347,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaDeleteTrustedDomain( -@@ -3288,6 +3361,7 @@ LsaDeleteTrustedDomain( +@@ -3288,6 +3355,7 @@ LsaDeleteTrustedDomain( _In_ PSID TrustedDomainSid ); @@ -376,7 +355,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName( -@@ -3297,6 +3371,7 @@ LsaQueryTrustedDomainInfoByName( +@@ -3297,6 +3365,7 @@ LsaQueryTrustedDomainInfoByName( _Out_ PVOID *Buffer ); @@ -384,7 +363,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaSetTrustedDomainInfoByName( -@@ -3306,6 +3381,7 @@ LsaSetTrustedDomainInfoByName( +@@ -3306,6 +3375,7 @@ LsaSetTrustedDomainInfoByName( _In_ PVOID Buffer ); @@ -392,7 +371,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx( -@@ -3316,6 +3392,7 @@ LsaEnumerateTrustedDomainsEx( +@@ -3316,6 +3386,7 @@ LsaEnumerateTrustedDomainsEx( _Out_ PULONG CountReturned ); @@ -400,7 +379,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaCreateTrustedDomainEx( -@@ -3323,10 +3400,11 @@ LsaCreateTrustedDomainEx( +@@ -3323,10 +3394,11 @@ LsaCreateTrustedDomainEx( _In_ PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, _In_ PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, _In_ ACCESS_MASK DesiredAccess, @@ -413,7 +392,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaQueryForestTrustInformation( -@@ -3335,6 +3413,7 @@ LsaQueryForestTrustInformation( +@@ -3335,6 +3407,7 @@ LsaQueryForestTrustInformation( _Out_ PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo ); @@ -421,7 +400,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaSetForestTrustInformation( -@@ -3366,6 +3445,7 @@ LsaForestTrustFindMatch( +@@ -3366,6 +3439,7 @@ LsaForestTrustFindMatch( // the SSI_SECRET_NAME secret) // @@ -429,7 +408,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaStorePrivateData( -@@ -3374,6 +3454,7 @@ LsaStorePrivateData( +@@ -3374,6 +3448,7 @@ LsaStorePrivateData( _In_opt_ PLSA_UNICODE_STRING PrivateData ); @@ -437,7 +416,7 @@ index e30ee026..626baf52 100644 NTSTATUS NTAPI LsaRetrievePrivateData( -@@ -3383,6 +3464,7 @@ LsaRetrievePrivateData( +@@ -3383,6 +3458,7 @@ LsaRetrievePrivateData( ); @@ -445,7 +424,7 @@ index e30ee026..626baf52 100644 ULONG NTAPI LsaNtStatusToWinError( -@@ -3494,6 +3576,16 @@ typedef struct _DOMAIN_PASSWORD_INFORMATION { +@@ -3494,6 +3570,16 @@ typedef struct _DOMAIN_PASSWORD_INFORMATION { #define DOMAIN_LOCKOUT_ADMINS 0x00000008L #define DOMAIN_PASSWORD_STORE_CLEARTEXT 0x00000010L #define DOMAIN_REFUSE_PASSWORD_CHANGE 0x00000020L @@ -462,7 +441,7 @@ index e30ee026..626baf52 100644 #if(_WIN32_WINNT >= 0x0502) #define DOMAIN_NO_LM_OWF_CHANGE 0x00000040L #endif -@@ -3728,6 +3820,20 @@ typedef struct _MSV1_0_INTERACTIVE_PROFILE { +@@ -3728,6 +3814,20 @@ typedef struct _MSV1_0_INTERACTIVE_PROFILE { #define MSV1_0_RETURN_PROFILE_PATH 0x200 #define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 0x400 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x800 @@ -483,7 +462,7 @@ index e30ee026..626baf52 100644 //#if (_WIN32_WINNT >= 0x0501) -- Disabled until IIS fixes their target version. #define MSV1_0_DISABLE_PERSONAL_FALLBACK 0x00001000 #define MSV1_0_ALLOW_FORCE_GUEST 0x00002000 -@@ -3793,7 +3899,7 @@ typedef struct _MSV1_0_SUBAUTH_LOGON{ +@@ -3793,7 +3893,7 @@ typedef struct _MSV1_0_SUBAUTH_LOGON{ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH]; STRING AuthenticationInfo1; STRING AuthenticationInfo2; @@ -492,7 +471,7 @@ index e30ee026..626baf52 100644 ULONG SubAuthPackageId; } MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON; -@@ -3833,6 +3939,19 @@ typedef struct _MSV1_0_S4U_LOGON { +@@ -3833,6 +3933,19 @@ typedef struct _MSV1_0_S4U_LOGON { #define LOGON_NTLMV2_ENABLED 0x100 // says DC understands NTLMv2 #define LOGON_RESOURCE_GROUPS 0x200 #define LOGON_PROFILE_PATH_RETURNED 0x400 @@ -512,7 +491,7 @@ index e30ee026..626baf52 100644 // Defined in Windows Server 2008 and above #define LOGON_NT_V2 0x800 // NT response was used for validation #define LOGON_LM_V2 0x1000 // LM response was used for validation -@@ -3867,7 +3986,7 @@ typedef struct _MSV1_0_LM20_LOGON_PROFILE { +@@ -3867,7 +3980,7 @@ typedef struct _MSV1_0_LM20_LOGON_PROFILE { MSV1_0_PROFILE_BUFFER_TYPE MessageType; LARGE_INTEGER KickOffTime; LARGE_INTEGER LogoffTime; @@ -521,7 +500,7 @@ index e30ee026..626baf52 100644 UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH]; UNICODE_STRING LogonDomainName; UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH]; -@@ -3892,6 +4011,13 @@ typedef struct _MSV1_0_LM20_LOGON_PROFILE { +@@ -3892,6 +4005,13 @@ typedef struct _MSV1_0_LM20_LOGON_PROFILE { #define MSV1_0_CRED_SHA_PRESENT 0x0010 #define MSV1_0_CRED_VERSION 0 @@ -535,7 +514,7 @@ index e30ee026..626baf52 100644 #define MSV1_0_CRED_VERSION_V2 2 #define MSV1_0_CRED_VERSION_V3 4 #define MSV1_0_CRED_VERSION_IUM 0xffff0001 -@@ -3915,7 +4041,7 @@ typedef struct _MSV1_0_CREDENTIAL_KEY { +@@ -3915,7 +4035,7 @@ typedef struct _MSV1_0_CREDENTIAL_KEY { typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL { ULONG Version; @@ -544,7 +523,7 @@ index e30ee026..626baf52 100644 UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH]; UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH]; } MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL; -@@ -4176,6 +4302,7 @@ typedef struct _MSV1_0_SUBAUTH_RESPONSE{ +@@ -4176,6 +4296,7 @@ typedef struct _MSV1_0_SUBAUTH_RESPONSE{ #endif #if(_WIN32_WINNT >= 0x0501) @@ -552,7 +531,7 @@ index e30ee026..626baf52 100644 BOOLEAN __stdcall RtlGenRandom( -@@ -4215,6 +4342,7 @@ RtlGenRandom( +@@ -4215,6 +4336,7 @@ RtlGenRandom( #define RTL_ENCRYPT_OPTION_FOR_SYSTEM 0x04 @@ -560,7 +539,7 @@ index e30ee026..626baf52 100644 NTSTATUS __stdcall RtlEncryptMemory( -@@ -4223,6 +4351,7 @@ RtlEncryptMemory( +@@ -4223,6 +4345,7 @@ RtlEncryptMemory( _In_ ULONG OptionFlags ); @@ -568,7 +547,7 @@ index e30ee026..626baf52 100644 NTSTATUS __stdcall RtlDecryptMemory( -@@ -4314,7 +4443,12 @@ +@@ -4314,7 +4437,12 @@ // #define KERB_ETYPE_DES_CBC_MD5_NT 20 @@ -581,7 +560,7 @@ index e30ee026..626baf52 100644 #define KERB_ETYPE_RC4_HMAC_NT_EXP 24 // Checksum algorithms. -@@ -4399,6 +4533,24 @@ RtlDecryptMemory( +@@ -4399,6 +4527,24 @@ RtlDecryptMemory( #define KERB_TICKET_FLAGS_enc_pa_rep 0x00010000 #define KERB_TICKET_FLAGS_reserved1 0x00000001 @@ -606,7 +585,7 @@ index e30ee026..626baf52 100644 #if (_WIN32_WINNT >= 0x0501) -@@ -4660,13 +4812,13 @@ +@@ -4660,13 +4806,13 @@ // typedef struct KERB_CRYPTO_KEY { @@ -622,7 +601,7 @@ index e30ee026..626baf52 100644 ULONG Length; ULONG Offset; } KERB_CRYPTO_KEY32, *PKERB_CRYPTO_KEY32; -@@ -4750,7 +4902,7 @@ typedef struct _KERB_TICKET_CACHE_INFO { +@@ -4750,7 +4896,7 @@ typedef struct _KERB_TICKET_CACHE_INFO { LARGE_INTEGER EndTime; LARGE_INTEGER RenewTime; LONG EncryptionType; @@ -631,7 +610,7 @@ index e30ee026..626baf52 100644 } KERB_TICKET_CACHE_INFO, *PKERB_TICKET_CACHE_INFO; -@@ -4916,7 +5068,7 @@ typedef struct _KERB_EXTERNAL_TICKET { +@@ -4916,7 +5062,7 @@ typedef struct _KERB_EXTERNAL_TICKET { UNICODE_STRING TargetDomainName; UNICODE_STRING AltTargetDomainName; // contains ClientDomainName KERB_CRYPTO_KEY SessionKey; @@ -640,7 +619,7 @@ index e30ee026..626baf52 100644 ULONG Flags; LARGE_INTEGER KeyExpirationTime; LARGE_INTEGER StartTime; -@@ -4933,7 +5085,7 @@ +@@ -4933,7 +5079,7 @@ UNICODE_STRING TargetName; ULONG TicketFlags; ULONG CacheOptions; @@ -649,7 +628,7 @@ index e30ee026..626baf52 100644 SecHandle CredentialsHandle; } KERB_RETRIEVE_TKT_REQUEST, *PKERB_RETRIEVE_TKT_REQUEST; -@@ -5241,11 +5393,18 @@ typedef struct _KERB_DECRYPT_RESPONSE { +@@ -5241,11 +5387,18 @@ typedef struct _KERB_DECRYPT_RESPONSE { // is required for this operation. // @@ -669,7 +648,7 @@ index e30ee026..626baf52 100644 } KERB_ADD_BINDING_CACHE_ENTRY_REQUEST, *PKERB_ADD_BINDING_CACHE_ENTRY_REQUEST; -@@ -5284,19 +5443,30 @@ typedef struct _KERB_REFRESH_SCCRED_REQUEST { +@@ -5284,19 +5437,30 @@ typedef struct _KERB_REFRESH_SCCRED_REQUEST { // requires TCB to alter "other" creds // @@ -701,7 +680,7 @@ index e30ee026..626baf52 100644 #define KERB_REQUEST_CRED_LOCAL_ACCOUNT 8 #endif -@@ -5345,7 +5515,7 @@ typedef struct _KERB_BINDING_CACHE_ENTRY_DATA { +@@ -5345,7 +5509,7 @@ typedef struct _KERB_BINDING_CACHE_ENTRY_DATA { ULONG64 DiscoveryTime; UNICODE_STRING RealmName; UNICODE_STRING KdcAddress; @@ -710,7 +689,7 @@ index e30ee026..626baf52 100644 ULONG Flags; ULONG DcFlags; ULONG CacheFlags; -@@ -5362,7 +5532,7 @@ typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST { +@@ -5362,7 +5526,7 @@ typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST { KERB_PROTOCOL_MESSAGE_TYPE MessageType; UNICODE_STRING RealmName; UNICODE_STRING KdcAddress; @@ -719,7 +698,7 @@ index e30ee026..626baf52 100644 ULONG DcFlags; } KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST, *PKERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST; -@@ -5479,6 +5649,8 @@ typedef const PAUDIT_POLICY_INFORMATION PCAUDIT_POLICY_INFORMATION, LPCAUDIT_POL +@@ -5479,6 +5643,8 @@ typedef const PAUDIT_POLICY_INFORMATION PCAUDIT_POLICY_INFORMATION, LPCAUDIT_POL #define AUDIT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE) @@ -728,7 +707,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditSetSystemPolicy( -@@ -5486,6 +5658,8 @@ AuditSetSystemPolicy( +@@ -5486,6 +5652,8 @@ AuditSetSystemPolicy( _In_ ULONG dwPolicyCount ); @@ -737,7 +716,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditSetPerUserPolicy( -@@ -5494,6 +5668,8 @@ AuditSetPerUserPolicy( +@@ -5494,6 +5662,8 @@ AuditSetPerUserPolicy( _In_ ULONG dwPolicyCount ); @@ -746,7 +725,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5504,6 +5680,8 @@ AuditQuerySystemPolicy( +@@ -5504,6 +5674,8 @@ AuditQuerySystemPolicy( _When_(return != 0, __drv_allocatesMem(Mem)) PAUDIT_POLICY_INFORMATION* ppAuditPolicy ); @@ -755,7 +734,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5515,6 +5693,8 @@ AuditQueryPerUserPolicy( +@@ -5515,6 +5687,8 @@ AuditQueryPerUserPolicy( _When_(return != 0, __drv_allocatesMem(Mem)) PAUDIT_POLICY_INFORMATION* ppAuditPolicy ); @@ -764,7 +743,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5522,6 +5702,8 @@ AuditEnumeratePerUserPolicy( +@@ -5522,6 +5696,8 @@ AuditEnumeratePerUserPolicy( _Out_ _When_(return != 0, __drv_allocatesMem(Mem)) PPOLICY_AUDIT_SID_ARRAY* ppAuditSidArray ); @@ -773,7 +752,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5533,6 +5715,8 @@ AuditComputeEffectivePolicyBySid( +@@ -5533,6 +5709,8 @@ AuditComputeEffectivePolicyBySid( _When_(return != 0, __drv_allocatesMem(Mem)) PAUDIT_POLICY_INFORMATION* ppAuditPolicy ); @@ -782,7 +761,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5544,6 +5728,8 @@ AuditComputeEffectivePolicyByToken( +@@ -5544,6 +5722,8 @@ AuditComputeEffectivePolicyByToken( _When_(return != 0, __drv_allocatesMem(Mem)) PAUDIT_POLICY_INFORMATION* ppAuditPolicy ); @@ -791,7 +770,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5553,6 +5739,8 @@ AuditEnumerateCategories( +@@ -5553,6 +5733,8 @@ AuditEnumerateCategories( _Out_ PULONG pdwCountReturned ); @@ -800,7 +779,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5564,6 +5752,8 @@ AuditEnumerateSubCategories( +@@ -5564,6 +5746,8 @@ AuditEnumerateSubCategories( _Out_ PULONG pdwCountReturned ); @@ -809,7 +788,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5572,6 +5762,8 @@ AuditLookupCategoryNameW( +@@ -5572,6 +5756,8 @@ AuditLookupCategoryNameW( _Outptr_ _When_(return != 0, __drv_allocatesMem(Mem)) PWSTR* ppszCategoryName ); @@ -818,7 +797,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5586,6 +5778,8 @@ AuditLookupCategoryNameA( +@@ -5586,6 +5772,8 @@ AuditLookupCategoryNameA( #define AuditLookupCategoryName AuditLookupCategoryNameA #endif @@ -827,7 +806,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5594,6 +5788,8 @@ AuditLookupSubCategoryNameW( +@@ -5594,6 +5782,8 @@ AuditLookupSubCategoryNameW( _Outptr_ _When_(return != 0, __drv_allocatesMem(Mem)) PWSTR* ppszSubCategoryName ); @@ -836,7 +815,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5608,6 +5804,8 @@ AuditLookupSubCategoryNameA( +@@ -5608,6 +5798,8 @@ AuditLookupSubCategoryNameA( #define AuditLookupSubCategoryName AuditLookupSubCategoryNameA #endif @@ -845,7 +824,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditLookupCategoryIdFromCategoryGuid( -@@ -5615,6 +5813,8 @@ AuditLookupCategoryIdFromCategoryGuid( +@@ -5615,6 +5807,8 @@ AuditLookupCategoryIdFromCategoryGuid( _Out_ PPOLICY_AUDIT_EVENT_TYPE pAuditCategoryId ); @@ -854,7 +833,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditLookupCategoryGuidFromCategoryId( -@@ -5622,6 +5822,8 @@ AuditLookupCategoryGuidFromCategoryId( +@@ -5622,6 +5816,8 @@ AuditLookupCategoryGuidFromCategoryId( _Out_ GUID* pAuditCategoryGuid ); @@ -863,7 +842,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditSetSecurity( -@@ -5629,6 +5831,8 @@ AuditSetSecurity( +@@ -5629,6 +5825,8 @@ AuditSetSecurity( _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor ); @@ -872,7 +851,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5637,6 +5841,8 @@ AuditQuerySecurity( +@@ -5637,6 +5835,8 @@ AuditQuerySecurity( _Outptr_ _When_(return != 0, __drv_allocatesMem(Mem)) PSECURITY_DESCRIPTOR *ppSecurityDescriptor ); @@ -881,7 +860,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditSetGlobalSaclW( -@@ -5644,6 +5850,8 @@ AuditSetGlobalSaclW( +@@ -5644,6 +5844,8 @@ AuditSetGlobalSaclW( _In_opt_ PACL Acl ); @@ -890,7 +869,7 @@ index e30ee026..626baf52 100644 BOOLEAN NTAPI AuditSetGlobalSaclA( -@@ -5657,6 +5865,8 @@ AuditSetGlobalSaclA( +@@ -5657,6 +5859,8 @@ AuditSetGlobalSaclA( #define AuditSetGlobalSacl AuditSetGlobalSaclA #endif @@ -899,7 +878,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5665,6 +5875,8 @@ AuditQueryGlobalSaclW( +@@ -5665,6 +5869,8 @@ AuditQueryGlobalSaclW( _Out_ _When_(return != 0, __drv_allocatesMem(Mem)) PACL *Acl ); @@ -908,7 +887,7 @@ index e30ee026..626baf52 100644 _Check_return_ BOOLEAN NTAPI -@@ -5679,6 +5891,7 @@ AuditQueryGlobalSaclA( +@@ -5679,6 +5885,7 @@ AuditQueryGlobalSaclA( #define AuditQueryGlobalSacl AuditQueryGlobalSaclA #endif diff --git a/generation/WinSDK/patches/um/objidlbase.idl.patch b/generation/WinSDK/patches/um/objidlbase.idl.patch index 6adafa6c0..f3fe81c7c 100644 --- a/generation/WinSDK/patches/um/objidlbase.idl.patch +++ b/generation/WinSDK/patches/um/objidlbase.idl.patch @@ -346,11 +346,3 @@ index dd5ca29b..80752dff 100644 cpp_quote("") cpp_quote(" template") cpp_quote(" HRESULT") -@@ -1731,6 +1789,7 @@ - typedef struct MachineGlobalObjectTableRegistrationToken__{ - int unused; - }* MachineGlobalObjectTableRegistrationToken; -+cpp_quote("/* Win32Metadata: type ::MachineGlobalObjectTableRegistrationToken => NativeTypedef */") - - [ - local, diff --git a/generation/WinSDK/patches/um/ocidl.idl.patch b/generation/WinSDK/patches/um/ocidl.idl.patch index 2c01874b3..590b408e9 100644 --- a/generation/WinSDK/patches/um/ocidl.idl.patch +++ b/generation/WinSDK/patches/um/ocidl.idl.patch @@ -197,16 +197,7 @@ index a775180c..8f481052 100644 [ object, uuid(7BF80980-BF32-101A-8BBB-00AA00300CAB), -@@ -985,7 +1026,8 @@ - PICTURE_TRANSPARENT = 0x2 - } PICTUREATTRIBUTES; - - typedef [uuid(66504313-BE0F-101A-8BBB-00AA00300CAB), public] UINT OLE_HANDLE; -+cpp_quote("/* Win32Metadata: type ::OLE_HANDLE => NativeTypedef */") - typedef [uuid(66504306-BE0F-101A-8BBB-00AA00300CAB), hidden] LONG OLE_XPOS_HIMETRIC; - typedef [uuid(66504307-BE0F-101A-8BBB-00AA00300CAB), hidden] LONG OLE_YPOS_HIMETRIC; - typedef [uuid(66504308-BE0F-101A-8BBB-00AA00300CAB), hidden] LONG OLE_XSIZE_HIMETRIC; -@@ -1172,6 +1214,7 @@ interface IFontEventsDisp : IDispatch +@@ -1172,6 +1213,7 @@ interface IFontEventsDisp : IDispatch typedef IFontEventsDisp * LPFONTEVENTS; } @@ -214,7 +205,7 @@ index a775180c..8f481052 100644 [ object, uuid(BEF6E003-A874-101A-8BBA-00AA00300CAB), -@@ -1184,6 +1227,7 @@ interface IFontDisp : IDispatch +@@ -1184,6 +1226,7 @@ interface IFontDisp : IDispatch } @@ -222,7 +213,7 @@ index a775180c..8f481052 100644 [ object, uuid(7BF80981-BF32-101A-8BBB-00AA00300CAB), -@@ -1203,6 +1247,7 @@ interface IPictureDisp : IDispatch +@@ -1203,6 +1246,7 @@ interface IPictureDisp : IDispatch //---------------------------------------------------------------------------- @@ -230,7 +221,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1226,6 +1271,7 @@ interface IOleInPlaceObjectWindowless : IOleInPlaceObject +@@ -1226,6 +1270,7 @@ interface IOleInPlaceObjectWindowless : IOleInPlaceObject } @@ -238,7 +229,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1255,6 +1301,7 @@ interface IOleInPlaceSiteEx : IOleInPlaceSite +@@ -1255,6 +1300,7 @@ interface IOleInPlaceSiteEx : IOleInPlaceSite } @@ -246,7 +237,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1333,6 +1380,8 @@ midl_pragma warning (default: 2495) +@@ -1333,6 +1379,8 @@ midl_pragma warning (default: 2495) } @@ -255,7 +246,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1420,6 +1469,12 @@ interface IViewObjectEx : IViewObject2 +@@ -1420,6 +1468,12 @@ interface IViewObjectEx : IViewObject2 } +cpp_quote("#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS)") @@ -268,7 +259,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1449,6 +1504,7 @@ interface IOleUndoUnit : IUnknown +@@ -1449,6 +1503,7 @@ interface IOleUndoUnit : IUnknown } @@ -276,7 +267,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1482,6 +1538,7 @@ interface IOleParentUndoUnit : IOleUndoUnit +@@ -1482,6 +1537,7 @@ interface IOleParentUndoUnit : IOleUndoUnit } @@ -284,7 +275,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1520,8 +1577,10 @@ interface IEnumOleUndoUnits : IUnknown +@@ -1520,8 +1576,10 @@ interface IEnumOleUndoUnits : IUnknown [out] IEnumOleUndoUnits ** ppEnum ); } @@ -295,7 +286,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1583,8 +1642,11 @@ cpp_quote("#define SID_SOleUndoManager IID_IOleUndoManager") +@@ -1583,8 +1641,11 @@ cpp_quote("#define SID_SOleUndoManager IID_IOleUndoManager") [in] BOOL fEnable ); } @@ -307,7 +298,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1622,6 +1684,7 @@ interface IPointerInactive : IUnknown +@@ -1622,6 +1683,7 @@ interface IPointerInactive : IUnknown } @@ -315,7 +306,7 @@ index a775180c..8f481052 100644 [ object, uuid(FC4801A3-2BA9-11CF-A229-00AA003D7352), -@@ -1654,6 +1717,7 @@ cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITI +@@ -1654,6 +1716,7 @@ cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITI @@ -323,7 +314,7 @@ index a775180c..8f481052 100644 [ object, uuid(376BD3AA-3845-101B-84ED-08002B2EC713), -@@ -1810,6 +1874,7 @@ interface IPersistPropertyBag2 : IPersist +@@ -1810,6 +1873,7 @@ interface IPersistPropertyBag2 : IPersist void ); } @@ -331,7 +322,7 @@ index a775180c..8f481052 100644 cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */") #pragma endregion -@@ -1823,6 +1888,7 @@ cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITI +@@ -1823,6 +1887,7 @@ cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITI #if !defined(_DCOM_OC_REMOTING_) @@ -339,7 +330,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1852,6 +1918,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P +@@ -1852,6 +1917,7 @@ cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_P #pragma region Application Family or OneCore Family or Games Family cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)") @@ -347,7 +338,7 @@ index a775180c..8f481052 100644 [ object, pointer_default(unique), -@@ -1875,6 +1942,7 @@ interface IQuickActivate : IUnknown +@@ -1875,6 +1941,7 @@ interface IQuickActivate : IUnknown typedef [uuid(66504301-BE0F-101A-8BBB-00AA00300CAB), public] DWORD OLE_COLOR; @@ -355,7 +346,7 @@ index a775180c..8f481052 100644 typedef struct tagQACONTAINER { ULONG cbSize; IOleClientSite * pClientSite; -@@ -1894,6 +1962,9 @@ interface IQuickActivate : IUnknown +@@ -1894,6 +1961,9 @@ interface IQuickActivate : IUnknown IServiceProvider * pServiceProvider; } QACONTAINER; diff --git a/generation/WinSDK/patches/um/packagevirtualizationcontext.h.patch b/generation/WinSDK/patches/um/packagevirtualizationcontext.h.patch deleted file mode 100644 index f69dab84e..000000000 --- a/generation/WinSDK/patches/um/packagevirtualizationcontext.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/packagevirtualizationcontext.h b/um/packagevirtualizationcontext.h ---- a/um/packagevirtualizationcontext.h -+++ b/um/packagevirtualizationcontext.h -@@ -25,6 +25,9 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - - DECLARE_HANDLE(PACKAGE_VIRTUALIZATION_CONTEXT_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PACKAGE_VIRTUALIZATION_CONTEXT_HANDLE PACKAGE_VIRTUALIZATION_CONTEXT_HANDLE; -+#endif - - #if NTDDI_VERSION >= NTDDI_WIN10_CO - diff --git a/generation/WinSDK/patches/um/pdh.h.patch b/generation/WinSDK/patches/um/pdh.h.patch index abf082e28..6d5e4f3aa 100644 --- a/generation/WinSDK/patches/um/pdh.h.patch +++ b/generation/WinSDK/patches/um/pdh.h.patch @@ -21,24 +21,7 @@ // define severity masks #define IsSuccessSeverity(ErrorCode) ((((DWORD)(ErrorCode) & (0xC0000000L)) == 0x00000000L) ? TRUE : FALSE) -@@ -70,7 +77,16 @@ - - // data type definitions - - typedef HANDLE PDH_HCOUNTER; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDH_HCOUNTER PDH_HCOUNTER; -+#endif - typedef HANDLE PDH_HQUERY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDH_HQUERY PDH_HQUERY; -+#endif - typedef HANDLE PDH_HLOG; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PDH_HLOG PDH_HLOG; -+#endif - -@@ -227,7 +243,7 @@ +@@ -227,7 +234,7 @@ typedef struct _PDH_RAW_LOG_RECORD { DWORD dwStructureSize; @@ -47,7 +30,7 @@ DWORD dwItems; UCHAR RawBytes[1]; } PDH_RAW_LOG_RECORD, * PPDH_RAW_LOG_RECORD; -@@ -310,6 +326,7 @@ +@@ -310,6 +317,7 @@ // function definitions @@ -55,7 +38,7 @@ PDH_FUNCTION PdhGetDllVersion( _Out_opt_ LPDWORD lpdwVersion -@@ -319,20 +336,23 @@ +@@ -319,20 +327,23 @@ // Query Functions // @@ -85,7 +68,7 @@ PDH_FUNCTION PdhAddCounterW( _In_ PDH_HQUERY hQuery, -@@ -341,6 +361,7 @@ +@@ -341,6 +352,7 @@ _Out_ PDH_HCOUNTER * phCounter ); @@ -93,7 +76,7 @@ PDH_FUNCTION PdhAddCounterA( _In_ PDH_HQUERY hQuery, -@@ -350,6 +371,7 @@ +@@ -350,6 +362,7 @@ ); #if (_WIN32_WINDOWS >= 0x0600 || _WIN32_WINNT >= 0x0600 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_VISTA)) @@ -101,7 +84,7 @@ PDH_FUNCTION PdhAddEnglishCounterW( _In_ PDH_HQUERY hQuery, -@@ -358,6 +380,7 @@ +@@ -358,6 +371,7 @@ _Out_ PDH_HCOUNTER * phCounter ); @@ -109,7 +92,7 @@ PDH_FUNCTION PdhAddEnglishCounterA( _In_ PDH_HQUERY hQuery, -@@ -366,18 +389,21 @@ +@@ -366,18 +380,21 @@ _Out_ PDH_HCOUNTER * phCounter ); @@ -131,7 +114,7 @@ PDH_FUNCTION PdhValidatePathExA( _In_opt_ PDH_HLOG hDataSource, -@@ -385,16 +411,19 @@ +@@ -385,16 +402,19 @@ ); #endif @@ -151,7 +134,7 @@ PDH_FUNCTION PdhCloseQuery( _Inout_ PDH_HQUERY hQuery -@@ -404,6 +433,7 @@ +@@ -404,6 +424,7 @@ // Counter Functions // @@ -159,7 +142,7 @@ PDH_FUNCTION PdhGetFormattedCounterValue( _In_ PDH_HCOUNTER hCounter, -@@ -412,6 +442,7 @@ +@@ -412,6 +433,7 @@ _Out_ PPDH_FMT_COUNTERVALUE pValue ); @@ -167,7 +150,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetFormattedCounterArrayA( -@@ -422,6 +453,7 @@ +@@ -422,6 +444,7 @@ _Out_writes_bytes_opt_(* lpdwBufferSize) PPDH_FMT_COUNTERVALUE_ITEM_A ItemBuffer ); @@ -175,7 +158,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetFormattedCounterArrayW( -@@ -440,6 +472,13 @@ +@@ -440,6 +463,13 @@ #define PDH_FMT_LONG ((DWORD) 0x00000100) #define PDH_FMT_DOUBLE ((DWORD) 0x00000200) #define PDH_FMT_LARGE ((DWORD) 0x00000400) @@ -189,7 +172,7 @@ #define PDH_FMT_NOSCALE ((DWORD) 0x00001000) #define PDH_FMT_1000 ((DWORD) 0x00002000) #define PDH_FMT_NODATA ((DWORD) 0x00004000) -@@ -447,6 +486,7 @@ +@@ -447,6 +477,7 @@ #define PERF_DETAIL_COSTLY ((DWORD) 0x00010000) #define PERF_DETAIL_STANDARD ((DWORD) 0x0000FFFF) @@ -197,7 +180,7 @@ PDH_FUNCTION PdhGetRawCounterValue( _In_ PDH_HCOUNTER hCounter, -@@ -454,6 +494,7 @@ +@@ -454,6 +485,7 @@ _Out_ PPDH_RAW_COUNTER pValue ); @@ -205,7 +188,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetRawCounterArrayA( -@@ -463,6 +504,7 @@ +@@ -463,6 +495,7 @@ _Out_writes_bytes_opt_(* lpdwBufferSize) PPDH_RAW_COUNTER_ITEM_A ItemBuffer ); @@ -213,7 +196,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetRawCounterArrayW( -@@ -472,25 +514,28 @@ +@@ -472,25 +505,28 @@ _Out_writes_bytes_opt_(* lpdwBufferSize) PPDH_RAW_COUNTER_ITEM_W ItemBuffer ); @@ -244,7 +227,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetCounterInfoW( -@@ -500,6 +545,7 @@ +@@ -500,6 +536,7 @@ _Out_writes_bytes_opt_(* pdwBufferSize) PPDH_COUNTER_INFO_W lpBuffer ); @@ -252,7 +235,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetCounterInfoA( -@@ -512,6 +558,7 @@ +@@ -512,6 +549,7 @@ #define PDH_MAX_SCALE (7L) #define PDH_MIN_SCALE (-7L) @@ -260,7 +243,7 @@ PDH_FUNCTION PdhSetCounterScaleFactor( _Inout_ PDH_HCOUNTER hCounter, -@@ -520,16 +567,19 @@ +@@ -520,16 +558,19 @@ // // Browsing and enumeration functions // @@ -280,7 +263,7 @@ PDH_FUNCTION PdhEnumMachinesW( _In_opt_ LPCWSTR szDataSource, -@@ -537,6 +587,7 @@ +@@ -537,6 +578,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -288,7 +271,7 @@ PDH_FUNCTION PdhEnumMachinesA( _In_opt_ LPCSTR szDataSource, -@@ -544,26 +595,29 @@ +@@ -544,26 +586,29 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -320,7 +303,7 @@ PDH_FUNCTION PdhEnumObjectItemsW( _In_opt_ LPCWSTR szDataSource, -@@ -573,10 +627,11 @@ +@@ -573,10 +618,11 @@ _Inout_ LPDWORD pcchCounterListLength, _Out_writes_opt_(* pcchInstanceListLength) PZZWSTR mszInstanceList, _Inout_ LPDWORD pcchInstanceListLength, @@ -333,7 +316,7 @@ PDH_FUNCTION PdhEnumObjectItemsA( _In_opt_ LPCSTR szDataSource, -@@ -586,10 +641,11 @@ +@@ -586,10 +632,11 @@ _Inout_ LPDWORD pcchCounterListLength, _Out_writes_opt_(* pcchInstanceListLength) PZZSTR mszInstanceList, _Inout_ LPDWORD pcchInstanceListLength, @@ -346,7 +329,7 @@ PDH_FUNCTION PdhMakeCounterPathW( _In_ PPDH_COUNTER_PATH_ELEMENTS_W pCounterPathElements, -@@ -598,6 +654,7 @@ +@@ -598,6 +645,7 @@ - _In_ DWORD dwFlags + _Win32_AssociatedEnum_(PDH_PATH_FLAGS) _In_ DWORD dwFlags ); @@ -355,7 +338,7 @@ PDH_FUNCTION PdhMakeCounterPathA( _In_ PPDH_COUNTER_PATH_ELEMENTS_A pCounterPathElements, -@@ -606,6 +663,7 @@ +@@ -606,6 +654,7 @@ - _In_ DWORD dwFlags + _Win32_AssociatedEnum_(PDH_PATH_FLAGS) _In_ DWORD dwFlags ); @@ -364,7 +347,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhParseCounterPathW( -@@ -615,6 +673,7 @@ +@@ -615,6 +664,7 @@ _In_ DWORD dwFlags ); @@ -372,7 +355,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhParseCounterPathA( -@@ -625,10 +684,15 @@ +@@ -625,10 +675,15 @@ ); #define PDH_PATH_WBEM_RESULT ((DWORD) 0x00000001) @@ -388,7 +371,7 @@ PDH_FUNCTION PdhParseInstanceNameW( _In_ LPCWSTR szInstanceString, -@@ -639,6 +703,7 @@ +@@ -639,6 +694,7 @@ _Out_ LPDWORD lpIndex ); @@ -396,7 +379,7 @@ PDH_FUNCTION PdhParseInstanceNameA( _In_ LPCSTR szInstanceString, -@@ -649,16 +714,19 @@ +@@ -649,16 +705,19 @@ _Out_ LPDWORD lpIndex ); @@ -416,7 +399,7 @@ PDH_FUNCTION PdhGetDefaultPerfObjectW( _In_opt_ LPCWSTR szDataSource, -@@ -667,6 +735,7 @@ +@@ -667,6 +726,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -424,7 +407,7 @@ PDH_FUNCTION PdhGetDefaultPerfObjectA( _In_opt_ LPCSTR szDataSource, -@@ -675,6 +744,7 @@ +@@ -675,6 +735,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -432,7 +415,7 @@ PDH_FUNCTION PdhGetDefaultPerfCounterW( _In_opt_ LPCWSTR szDataSource, -@@ -684,6 +754,7 @@ +@@ -684,6 +745,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -440,7 +423,7 @@ PDH_FUNCTION PdhGetDefaultPerfCounterA( _In_opt_ LPCSTR szDataSource, -@@ -857,16 +928,19 @@ +@@ -857,16 +919,19 @@ #pragma warning ( default : 4214 ) #endif @@ -460,7 +443,7 @@ PDH_FUNCTION PdhExpandCounterPathW( _In_ LPCWSTR szWildCardPath, -@@ -874,6 +948,7 @@ +@@ -874,6 +939,7 @@ _Inout_ LPDWORD pcchPathListLength ); @@ -468,7 +451,7 @@ PDH_FUNCTION PdhExpandCounterPathA( _In_ LPCSTR szWildCardPath, -@@ -884,6 +959,7 @@ +@@ -884,6 +950,7 @@ // // v2.0 functions // @@ -476,7 +459,7 @@ PDH_FUNCTION PdhLookupPerfNameByIndexW( _In_opt_ LPCWSTR szMachineName, -@@ -892,6 +968,7 @@ +@@ -892,6 +959,7 @@ _Inout_ LPDWORD pcchNameBufferSize ); @@ -484,7 +467,7 @@ PDH_FUNCTION PdhLookupPerfNameByIndexA( _In_opt_ LPCSTR szMachineName, -@@ -900,6 +977,7 @@ +@@ -900,6 +968,7 @@ _Inout_ LPDWORD pcchNameBufferSize ); @@ -492,7 +475,7 @@ PDH_FUNCTION PdhLookupPerfIndexByNameW( _In_opt_ LPCWSTR szMachineName, -@@ -907,6 +985,7 @@ +@@ -907,6 +976,7 @@ _Out_ LPDWORD pdwIndex ); @@ -500,7 +483,7 @@ PDH_FUNCTION PdhLookupPerfIndexByNameA( _In_opt_ LPCSTR szMachineName, -@@ -920,6 +999,7 @@ +@@ -920,6 +990,7 @@ #define PDH_REFRESHCOUNTERS 4 #endif @@ -508,7 +491,7 @@ PDH_FUNCTION PdhExpandWildCardPathA( _In_opt_ LPCSTR szDataSource, -@@ -929,6 +1009,7 @@ +@@ -929,6 +1000,7 @@ _In_ DWORD dwFlags ); @@ -516,7 +499,7 @@ PDH_FUNCTION PdhExpandWildCardPathW( _In_opt_ LPCWSTR szDataSource, -@@ -945,6 +1026,13 @@ +@@ -945,6 +1017,13 @@ #define PDH_LOG_READ_ACCESS ((DWORD) 0x00010000) #define PDH_LOG_WRITE_ACCESS ((DWORD) 0x00020000) #define PDH_LOG_UPDATE_ACCESS ((DWORD) 0x00040000) @@ -530,7 +513,7 @@ #define PDH_LOG_ACCESS_MASK ((DWORD) 0x000F0000) #define PDH_LOG_CREATE_NEW ((DWORD) 0x00000001) -@@ -970,56 +1058,73 @@ +@@ -970,56 +1049,73 @@ #define PDH_LOG_TYPE_PERFMON 6 // Obsolete - not supported. #if (_WIN32_WINDOWS >= 0x0501 || _WIN32_WINNT >= 0x0501 || (defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WINXP)) #define PDH_LOG_TYPE_SQL 7 @@ -614,7 +597,7 @@ PDH_FUNCTION PdhCloseLog( _In_ PDH_HLOG hLog, -@@ -1032,34 +1137,43 @@ +@@ -1032,34 +1128,43 @@ // #define PDH_FLAGS_FILE_BROWSER_ONLY ((DWORD) 0x00000001) +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) @@ -660,7 +643,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetDataSourceTimeRangeW( -@@ -1069,6 +1183,7 @@ +@@ -1069,6 +1174,7 @@ _Inout_ LPDWORD pdwBufferSize ); @@ -668,7 +651,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetDataSourceTimeRangeA( -@@ -1078,6 +1193,7 @@ +@@ -1078,6 +1184,7 @@ _Inout_ LPDWORD pdwBufferSize ); @@ -676,7 +659,7 @@ PDH_FUNCTION PdhCollectQueryDataEx( _In_ PDH_HQUERY hQuery, -@@ -1085,22 +1201,25 @@ +@@ -1085,22 +1192,25 @@ _In_ HANDLE hNewDataEvent ); @@ -703,7 +686,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhReadRawLogRecord( -@@ -1115,26 +1234,36 @@ +@@ -1115,26 +1225,36 @@ #define DATA_SOURCE_LOGFILE ((DWORD) 0x00000002) #define DATA_SOURCE_WBEM ((DWORD) 0x00000004) @@ -741,7 +724,7 @@ PDH_FUNCTION PdhOpenQueryH( _In_opt_ PDH_HLOG hDataSource, -@@ -1142,6 +1271,7 @@ +@@ -1142,6 +1262,7 @@ _Out_ PDH_HQUERY * phQuery ); @@ -749,7 +732,7 @@ PDH_FUNCTION PdhEnumMachinesHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1149,6 +1279,7 @@ +@@ -1149,6 +1270,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -757,7 +740,7 @@ PDH_FUNCTION PdhEnumMachinesHA( _In_opt_ PDH_HLOG hDataSource, -@@ -1156,6 +1287,7 @@ +@@ -1156,6 +1278,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -765,7 +748,7 @@ PDH_FUNCTION PdhEnumObjectsHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1166,16 +1298,18 @@ +@@ -1166,16 +1289,18 @@ _In_ BOOL bRefresh ) ; @@ -785,7 +768,7 @@ PDH_FUNCTION PdhEnumObjectItemsHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1185,10 +1319,11 @@ +@@ -1185,10 +1310,11 @@ _Inout_ LPDWORD pcchCounterListLength, _Out_writes_opt_(* pcchInstanceListLength) PZZWSTR mszInstanceList, _Inout_ LPDWORD pcchInstanceListLength, @@ -798,7 +781,7 @@ PDH_FUNCTION PdhEnumObjectItemsHA( _In_opt_ PDH_HLOG hDataSource, -@@ -1198,10 +1333,11 @@ +@@ -1198,10 +1324,11 @@ _Inout_ LPDWORD pcchCounterListLength, _Out_writes_opt_(* pcchInstanceListLength) PZZSTR mszInstanceList, _Inout_ LPDWORD pcchInstanceListLength, @@ -811,7 +794,7 @@ PDH_FUNCTION PdhExpandWildCardPathHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1211,6 +1347,7 @@ +@@ -1211,6 +1338,7 @@ _In_ DWORD dwFlags ); @@ -819,7 +802,7 @@ PDH_FUNCTION PdhExpandWildCardPathHA( _In_opt_ PDH_HLOG hDataSource, -@@ -1220,6 +1357,7 @@ +@@ -1220,6 +1348,7 @@ _In_ DWORD dwFlags ); @@ -827,7 +810,7 @@ _Success_(return == ERROR_SUCCESS) PDH_FUNCTION PdhGetDataSourceTimeRangeH( -@@ -1229,6 +1367,7 @@ +@@ -1229,6 +1358,7 @@ _Inout_ LPDWORD pdwBufferSize ); @@ -835,7 +818,7 @@ PDH_FUNCTION PdhGetDefaultPerfObjectHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1237,6 +1376,7 @@ +@@ -1237,6 +1367,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -843,7 +826,7 @@ PDH_FUNCTION PdhGetDefaultPerfObjectHA( _In_opt_ PDH_HLOG hDataSource, -@@ -1245,6 +1385,7 @@ +@@ -1245,6 +1376,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -851,7 +834,7 @@ PDH_FUNCTION PdhGetDefaultPerfCounterHW( _In_opt_ PDH_HLOG hDataSource, -@@ -1254,6 +1395,7 @@ +@@ -1254,6 +1386,7 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -859,7 +842,7 @@ PDH_FUNCTION PdhGetDefaultPerfCounterHA( _In_opt_ PDH_HLOG hDataSource, -@@ -1263,11 +1405,13 @@ +@@ -1263,11 +1396,13 @@ _Inout_ LPDWORD pcchBufferSize ); @@ -873,7 +856,7 @@ PDH_FUNCTION PdhBrowseCountersHA( _In_ PPDH_BROWSE_DLG_CONFIG_HA pBrowseDlgData -@@ -1297,6 +1441,7 @@ +@@ -1297,6 +1432,7 @@ ); //Return the list of Log set names in the database pointed to by the DSN. @@ -881,7 +864,7 @@ PDH_FUNCTION PdhEnumLogSetNamesW( _In_ LPCWSTR szDataSource, -@@ -1304,6 +1449,7 @@ +@@ -1304,6 +1440,7 @@ _Inout_ LPDWORD pcchBufferLength ); diff --git a/generation/WinSDK/patches/um/powerbase.h.patch b/generation/WinSDK/patches/um/powerbase.h.patch index 7803ff729..e59b3a563 100644 --- a/generation/WinSDK/patches/um/powerbase.h.patch +++ b/generation/WinSDK/patches/um/powerbase.h.patch @@ -2,17 +2,7 @@ diff --git a/um/powerbase.h b/um/powerbase.h index 73c8bfd..9be6c2a 100644 --- a/um/powerbase.h +++ b/um/powerbase.h -@@ -36,6 +36,9 @@ extern "C" { - #define _HPOWERNOTIFY_DEF_ - - typedef PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPOWERNOTIFY HPOWERNOTIFY; -+#endif - - #endif // _HPOWERNOTIFY_DEF_ - -@@ -44,6 +47,7 @@ typedef PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; +@@ -44,6 +44,7 @@ typedef PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; #define _OVERRIDE_NTSTATUS_ #endif @@ -20,7 +10,7 @@ index 73c8bfd..9be6c2a 100644 NTSTATUS WINAPI CallNtPowerInformation( -@@ -58,6 +62,8 @@ CallNtPowerInformation( +@@ -58,6 +59,8 @@ CallNtPowerInformation( #undef NTSTATUS #endif @@ -29,7 +19,7 @@ index 73c8bfd..9be6c2a 100644 BOOLEAN WINAPI GetPwrCapabilities( -@@ -65,6 +71,8 @@ GetPwrCapabilities( +@@ -65,6 +68,8 @@ GetPwrCapabilities( ); #if (NTDDI_VERSION >= NTDDI_WIN8) @@ -38,7 +28,7 @@ index 73c8bfd..9be6c2a 100644 POWER_PLATFORM_ROLE WINAPI PowerDeterminePlatformRoleEx( -@@ -74,10 +82,12 @@ PowerDeterminePlatformRoleEx( +@@ -74,10 +79,12 @@ PowerDeterminePlatformRoleEx( #endif #if (NTDDI_VERSION >= NTDDI_WIN8) @@ -52,7 +42,7 @@ index 73c8bfd..9be6c2a 100644 _In_ HANDLE Recipient, _Out_ PHPOWERNOTIFY RegistrationHandle ); -@@ -85,6 +95,8 @@ PowerRegisterSuspendResumeNotification( +@@ -85,6 +92,8 @@ PowerRegisterSuspendResumeNotification( #endif #if (NTDDI_VERSION >= NTDDI_WIN8) diff --git a/generation/WinSDK/patches/um/powersetting.h.patch b/generation/WinSDK/patches/um/powersetting.h.patch index 64bfad051..176184ebd 100644 --- a/generation/WinSDK/patches/um/powersetting.h.patch +++ b/generation/WinSDK/patches/um/powersetting.h.patch @@ -2,13 +2,10 @@ diff --git a/um/powersetting.h b/um/powersetting.h index 7d5e80f..aa17521 100644 --- a/um/powersetting.h +++ b/um/powersetting.h -@@ -36,10 +36,15 @@ extern "C" { +@@ -36,10 +36,12 @@ extern "C" { #define _HPOWERNOTIFY_DEF_ typedef PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPOWERNOTIFY HPOWERNOTIFY; -+#endif #endif // _HPOWERNOTIFY_DEF_ @@ -18,7 +15,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerReadACValue( -@@ -55,6 +60,8 @@ PowerReadACValue( +@@ -55,6 +57,8 @@ PowerReadACValue( #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -27,7 +24,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerReadDCValue( -@@ -70,6 +77,8 @@ PowerReadDCValue( +@@ -70,6 +74,8 @@ PowerReadDCValue( #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -36,7 +33,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerWriteACValueIndex( -@@ -83,6 +92,7 @@ PowerWriteACValueIndex( +@@ -83,6 +89,7 @@ PowerWriteACValueIndex( #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -44,7 +41,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerWriteDCValueIndex( -@@ -96,6 +106,8 @@ PowerWriteDCValueIndex( +@@ -96,6 +103,8 @@ PowerWriteDCValueIndex( #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -53,7 +50,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerGetActiveScheme( -@@ -106,6 +118,8 @@ PowerGetActiveScheme( +@@ -106,6 +115,8 @@ PowerGetActiveScheme( #endif #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -62,7 +59,7 @@ index 7d5e80f..aa17521 100644 DWORD WINAPI PowerSetActiveScheme( -@@ -116,24 +130,34 @@ PowerSetActiveScheme( +@@ -116,24 +127,32 @@ PowerSetActiveScheme( #endif #if (NTDDI_VERSION >= NTDDI_WIN7) @@ -92,13 +89,11 @@ index 7d5e80f..aa17521 100644 _Inout_ HPOWERNOTIFY RegistrationHandle ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + #endif #if NTDDI_VERSION >= NTDDI_WIN10_RS5 -@@ -153,6 +177,7 @@ typedef enum EFFECTIVE_POWER_MODE { +@@ -153,6 +172,7 @@ typedef enum EFFECTIVE_POWER_MODE { #define EFFECTIVE_POWER_MODE_V1 (0x00000001) #define EFFECTIVE_POWER_MODE_V2 (0x00000002) @@ -106,7 +101,7 @@ index 7d5e80f..aa17521 100644 typedef _Function_class_(EFFECTIVE_POWER_MODE_CALLBACK) VOID WINAPI -@@ -164,6 +189,7 @@ EFFECTIVE_POWER_MODE_CALLBACK ( +@@ -164,6 +184,7 @@ EFFECTIVE_POWER_MODE_CALLBACK ( #if NTDDI_VERSION >= NTDDI_WIN10_RS5 _Must_inspect_result_ @@ -114,7 +109,7 @@ index 7d5e80f..aa17521 100644 HRESULT WINAPI PowerRegisterForEffectivePowerModeNotifications( -@@ -176,6 +202,7 @@ PowerRegisterForEffectivePowerModeNotifications( +@@ -176,6 +197,7 @@ PowerRegisterForEffectivePowerModeNotifications( #endif #if NTDDI_VERSION >= NTDDI_WIN10_RS5 diff --git a/generation/WinSDK/patches/um/prntvpt.h.patch b/generation/WinSDK/patches/um/prntvpt.h.patch index bf2d69e28..61d17f042 100644 --- a/generation/WinSDK/patches/um/prntvpt.h.patch +++ b/generation/WinSDK/patches/um/prntvpt.h.patch @@ -1,17 +1,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h --- a/um/prntvpt.h +++ b/um/prntvpt.h -@@ -26,6 +26,9 @@ - #endif /* __cplusplus */ - - DECLARE_HANDLE(HPTPROVIDER); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPTPROVIDER HPTPROVIDER; -+#endif - - #define PRINTTICKET_ISTREAM_APIS 1 - -@@ -77,38 +80,44 @@ +@@ -77,38 +77,44 @@ } EPrintTicketScope; @@ -63,7 +53,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h HRESULT WINAPI PTGetPrintCapabilities( _In_ HPTPROVIDER hProvider, -@@ -117,6 +126,7 @@ +@@ -117,6 +123,7 @@ _Out_opt_ BSTR *pbstrErrorMessage ); @@ -71,7 +61,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h HRESULT WINAPI PTGetPrintDeviceCapabilities( _In_ HPTPROVIDER hProvider, -@@ -125,6 +135,7 @@ +@@ -125,6 +132,7 @@ _Out_opt_ BSTR *pbstrErrorMessage ); @@ -79,7 +69,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h HRESULT WINAPI PTGetPrintDeviceResources( _In_ HPTPROVIDER hProvider, -@@ -134,6 +145,7 @@ +@@ -134,6 +142,7 @@ _Out_opt_ BSTR *pbstrErrorMessage ); @@ -87,7 +77,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h HRESULT WINAPI PTMergeAndValidatePrintTicket( _In_ HPTPROVIDER hProvider, -@@ -144,6 +156,7 @@ +@@ -144,6 +153,7 @@ _Out_opt_ BSTR *pbstrErrorMessage ); @@ -95,7 +85,7 @@ diff --git a/um/prntvpt.h b/um/prntvpt.h HRESULT WINAPI PTConvertPrintTicketToDevMode( _In_ HPTPROVIDER hProvider, -@@ -155,6 +168,7 @@ +@@ -155,6 +165,7 @@ _Out_opt_ BSTR *pbstrErrorMessage ); diff --git a/generation/WinSDK/patches/um/processthreadsapi.h.patch b/generation/WinSDK/patches/um/processthreadsapi.h.patch index db084ecaf..6146847e5 100644 --- a/generation/WinSDK/patches/um/processthreadsapi.h.patch +++ b/generation/WinSDK/patches/um/processthreadsapi.h.patch @@ -2,895 +2,885 @@ diff --git a/um/processthreadsapi.h b/um/processthreadsapi.h --- a/um/processthreadsapi.h +++ b/um/processthreadsapi.h @@ -12,6 +12,21 @@ - - #ifndef _PROCESSTHREADSAPI_H_ - #define _PROCESSTHREADSAPI_H_ -+ -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+typedef unsigned int THREAD_CREATION_FLAGS; -+#endif -+ -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+typedef unsigned long PROCESS_AFFINITY_AUTO_UPDATE_FLAGS; -+#endif -+ -+#include -+#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) -+typedef unsigned int PROCESS_PROTECTION_LEVEL; -+typedef unsigned int STARTUPINFOW_FLAGS; -+typedef unsigned int PROCESS_CREATION_FLAGS; -+#endif - - #include - #include + + #ifndef _PROCESSTHREADSAPI_H_ + #define _PROCESSTHREADSAPI_H_ ++ ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++typedef unsigned int THREAD_CREATION_FLAGS; ++#endif ++ ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++typedef unsigned long PROCESS_AFFINITY_AUTO_UPDATE_FLAGS; ++#endif ++ ++#include ++#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) ++typedef unsigned int PROCESS_PROTECTION_LEVEL; ++typedef unsigned int STARTUPINFOW_FLAGS; ++typedef unsigned int PROCESS_CREATION_FLAGS; ++#endif + + #include + #include @@ -44,7 +59,7 @@ - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; -- DWORD dwFlags; -+ _Win32_AssociatedEnum_(STARTUPINFOW_FLAGS) DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - LPBYTE lpReserved2; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(STARTUPINFOW_FLAGS) DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + LPBYTE lpReserved2; @@ -64,7 +79,7 @@ - DWORD dwXCountChars; - DWORD dwYCountChars; - DWORD dwFillAttribute; -- DWORD dwFlags; -+ _Win32_AssociatedEnum_(STARTUPINFOW_FLAGS) DWORD dwFlags; - WORD wShowWindow; - WORD cbReserved2; - LPBYTE lpReserved2; + DWORD dwXCountChars; + DWORD dwYCountChars; + DWORD dwFillAttribute; +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(STARTUPINFOW_FLAGS) DWORD dwFlags; + WORD wShowWindow; + WORD cbReserved2; + LPBYTE lpReserved2; @@ -88,6 +103,8 @@ - - #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + + #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -131,6 +148,8 @@ - - #endif /* NTDDI_VERSION >= NTDDI_WIN10_MN */ - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + + #endif /* NTDDI_VERSION >= NTDDI_WIN10_MN */ + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -142,6 +161,7 @@ - _Out_ LPFILETIME lpUserTime - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - HANDLE - WINAPI + _Out_ LPFILETIME lpUserTime + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + HANDLE + WINAPI @@ -149,6 +169,7 @@ - VOID - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + VOID + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -156,6 +177,7 @@ - VOID - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DECLSPEC_NORETURN - VOID + VOID + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DECLSPEC_NORETURN + VOID @@ -164,6 +186,8 @@ - _In_ UINT uExitCode - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_ UINT uExitCode + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -172,6 +196,8 @@ - _In_ UINT uExitCode - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_ UINT uExitCode + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -180,6 +206,7 @@ - _Out_ LPDWORD lpExitCode - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _Out_ LPDWORD lpExitCode + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -187,6 +214,8 @@ - VOID - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - _Ret_maybenull_ - HANDLE + VOID + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + _Ret_maybenull_ + HANDLE @@ -196,7 +225,7 @@ - _In_ SIZE_T dwStackSize, - _In_ LPTHREAD_START_ROUTINE lpStartAddress, - _In_opt_ __drv_aliasesMem LPVOID lpParameter, -- _In_ DWORD dwCreationFlags, -+ _Win32_AssociatedEnum_(THREAD_CREATION_FLAGS) _In_ DWORD dwCreationFlags, - _Out_opt_ LPDWORD lpThreadId - ); - + _In_ SIZE_T dwStackSize, + _In_ LPTHREAD_START_ROUTINE lpStartAddress, + _In_opt_ __drv_aliasesMem LPVOID lpParameter, +- _In_ DWORD dwCreationFlags, ++ _Win32_AssociatedEnum_(THREAD_CREATION_FLAGS) _In_ DWORD dwCreationFlags, + _Out_opt_ LPDWORD lpThreadId + ); + @@ -205,6 +234,8 @@ - - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - _Ret_maybenull_ - HANDLE + + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + _Ret_maybenull_ + HANDLE @@ -225,6 +256,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - HANDLE - WINAPI + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + HANDLE + WINAPI @@ -232,6 +264,7 @@ - VOID - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + VOID + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -239,24 +272,30 @@ - VOID - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - _Ret_maybenull_ - HANDLE - WINAPI - OpenThread( -- _In_ DWORD dwDesiredAccess, -+ _Win32_AssociatedEnum_(THREAD_ACCESS_RIGHTS) _In_ DWORD dwDesiredAccess, - _In_ BOOL bInheritHandle, - _In_ DWORD dwThreadId - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI - SetThreadPriority( - _In_ HANDLE hThread, -- _In_ int nPriority -- ); -- -+ _Win32_AssociatedEnum_(THREAD_PRIORITY) _In_ int nPriority -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + VOID + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + _Ret_maybenull_ + HANDLE + WINAPI + OpenThread( +- _In_ DWORD dwDesiredAccess, ++ _Win32_AssociatedEnum_(THREAD_ACCESS_RIGHTS) _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ DWORD dwThreadId + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI + SetThreadPriority( + _In_ HANDLE hThread, +- _In_ int nPriority +- ); +- ++ _Win32_AssociatedEnum_(THREAD_PRIORITY) _In_ int nPriority ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -265,6 +304,8 @@ - _In_ BOOL bDisablePriorityBoost - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_ BOOL bDisablePriorityBoost + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -273,6 +314,8 @@ - _Out_ PBOOL pDisablePriorityBoost - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - int - WINAPI + _Out_ PBOOL pDisablePriorityBoost + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + int + WINAPI @@ -280,6 +323,7 @@ - _In_ HANDLE hThread - ); - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DECLSPEC_NORETURN - VOID + _In_ HANDLE hThread + ); + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DECLSPEC_NORETURN + VOID @@ -293,6 +337,8 @@ - - #pragma region Desktop Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -307,6 +353,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - _Success_(return != 0) - BOOL + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + _Success_(return != 0) + BOOL @@ -316,6 +364,8 @@ - _Out_ LPDWORD lpExitCode - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + _Out_ LPDWORD lpExitCode + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -323,6 +373,8 @@ - _In_ HANDLE hThread - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + _In_ HANDLE hThread + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -334,6 +386,8 @@ - #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF) - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Must_inspect_result_ - WINBASEAPI - DWORD + #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF) + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Must_inspect_result_ + WINBASEAPI + DWORD @@ -342,6 +396,8 @@ - VOID - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - LPVOID - WINAPI + VOID + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + LPVOID + WINAPI @@ -349,6 +405,8 @@ - _In_ DWORD dwTlsIndex - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_ DWORD dwTlsIndex + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -357,6 +415,8 @@ - _In_opt_ LPVOID lpTlsValue - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_opt_ LPVOID lpTlsValue + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -364,6 +424,8 @@ - _In_ DWORD dwTlsIndex - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_ DWORD dwTlsIndex + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -373,13 +435,15 @@ - _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, - _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, - _In_ BOOL bInheritHandles, -- _In_ DWORD dwCreationFlags, -+ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, - _In_opt_ LPVOID lpEnvironment, - _In_opt_ LPCSTR lpCurrentDirectory, - _In_ LPSTARTUPINFOA lpStartupInfo, - _Out_ LPPROCESS_INFORMATION lpProcessInformation - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, +- _In_ DWORD dwCreationFlags, ++ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -389,7 +453,7 @@ - _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, - _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, - _In_ BOOL bInheritHandles, -- _In_ DWORD dwCreationFlags, -+ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, - _In_opt_ LPVOID lpEnvironment, - _In_opt_ LPCWSTR lpCurrentDirectory, - _In_ LPSTARTUPINFOW lpStartupInfo, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, +- _In_ DWORD dwCreationFlags, ++ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, @@ -408,6 +472,8 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI @@ -416,6 +482,8 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -429,6 +497,7 @@ - #pragma region Desktop Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - VOID - WINAPI + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + VOID + WINAPI @@ -446,6 +515,8 @@ - #pragma region Desktop Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #pragma region Desktop Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -456,7 +527,7 @@ - _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, - _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, - _In_ BOOL bInheritHandles, -- _In_ DWORD dwCreationFlags, -+ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, - _In_opt_ LPVOID lpEnvironment, - _In_opt_ LPCWSTR lpCurrentDirectory, - _In_ LPSTARTUPINFOW lpStartupInfo, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, +- _In_ DWORD dwCreationFlags, ++ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, @@ -487,7 +558,7 @@ - #if !defined(MIDL_PASS) - #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) - --FORCEINLINE -+_Win32_SupportedOS_Windows8_ FORCEINLINE - HANDLE - GetCurrentProcessToken ( - VOID + #if !defined(MIDL_PASS) + #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) + +-FORCEINLINE ++_Win32_SupportedOS_Windows8_ FORCEINLINE + HANDLE + GetCurrentProcessToken ( + VOID @@ -496,7 +567,7 @@ - return (HANDLE)(LONG_PTR) -4; - } - --FORCEINLINE -+_Win32_SupportedOS_Windows8_ FORCEINLINE - HANDLE - GetCurrentThreadToken ( - VOID + return (HANDLE)(LONG_PTR) -4; + } + +-FORCEINLINE ++_Win32_SupportedOS_Windows8_ FORCEINLINE + HANDLE + GetCurrentThreadToken ( + VOID @@ -505,7 +576,7 @@ - return (HANDLE)(LONG_PTR) -5; - } - --FORCEINLINE -+_Win32_SupportedOS_Windows8_ FORCEINLINE - HANDLE - GetCurrentThreadEffectiveToken ( - VOID + return (HANDLE)(LONG_PTR) -5; + } + +-FORCEINLINE ++_Win32_SupportedOS_Windows8_ FORCEINLINE + HANDLE + GetCurrentThreadEffectiveToken ( + VOID @@ -517,6 +588,8 @@ - #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) - #endif // !defined(MIDL_PASS) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Must_inspect_result_ - BOOL + #endif // (_WIN32_WINNT >= _WIN32_WINNT_WIN8) + #endif // !defined(MIDL_PASS) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Must_inspect_result_ + BOOL @@ -532,12 +605,14 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - OpenProcessToken( - _In_ HANDLE ProcessHandle, -- _In_ DWORD DesiredAccess, -+ _In_ _Win32_AssociatedEnum_(TOKEN_ACCESS_MASK) DWORD DesiredAccess, - _Outptr_ PHANDLE TokenHandle - ); - + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + OpenProcessToken( + _In_ HANDLE ProcessHandle, +- _In_ DWORD DesiredAccess, ++ _In_ _Win32_AssociatedEnum_(TOKEN_ACCESS_MASK) DWORD DesiredAccess, + _Outptr_ PHANDLE TokenHandle + ); + @@ -547,24 +622,30 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - OpenThreadToken( - _In_ HANDLE ThreadHandle, -- _In_ DWORD DesiredAccess, -+ _In_ _Win32_AssociatedEnum_(TOKEN_ACCESS_MASK) DWORD DesiredAccess, - _In_ BOOL OpenAsSelf, - _Outptr_ PHANDLE TokenHandle - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI - SetPriorityClass( - _In_ HANDLE hProcess, -- _In_ DWORD dwPriorityClass -- ); -- -+ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwPriorityClass -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + OpenThreadToken( + _In_ HANDLE ThreadHandle, +- _In_ DWORD DesiredAccess, ++ _In_ _Win32_AssociatedEnum_(TOKEN_ACCESS_MASK) DWORD DesiredAccess, + _In_ BOOL OpenAsSelf, + _Outptr_ PHANDLE TokenHandle + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI + SetPriorityClass( + _In_ HANDLE hProcess, +- _In_ DWORD dwPriorityClass +- ); +- ++ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwPriorityClass ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI @@ -578,6 +659,8 @@ - #pragma region Desktop Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI @@ -591,6 +674,8 @@ - #pragma region Desktop Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI -@@ -606,6 +691,9 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - - typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LPPROC_THREAD_ATTRIBUTE_LIST LPPROC_THREAD_ATTRIBUTE_LIST; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion -@@ -615,6 +703,8 @@ - - #if (_WIN32_WINNT >= 0x0501) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - DWORD - WINAPI -@@ -626,6 +716,8 @@ - - #if (_WIN32_WINNT >= 0x0502) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - DWORD - WINAPI -@@ -637,6 +729,7 @@ - - #if (_WIN32_WINNT >= 0x0600) - -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - VOID - WINAPI -@@ -654,6 +747,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - DWORD - WINAPI -@@ -661,6 +756,8 @@ - _In_ HANDLE Thread - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - _Success_(return != FALSE) - BOOL -@@ -672,6 +769,7 @@ - _When_(lpAttributeList == nullptr,_Out_) _When_(lpAttributeList != nullptr,_Inout_) PSIZE_T lpSize - ); - -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - VOID - WINAPI -@@ -681,6 +779,8 @@ - - #define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI -@@ -696,6 +796,7 @@ - - #if (NTDDI_VERSION >= NTDDI_WIN10_VB) - -+_Win32_SetLastError_ - WINBASEAPI - BOOL - WINAPI -@@ -727,21 +828,28 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - - #define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE 0x00000001UL -- -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+typedef _WIN32META_ANNOTATION_("Enum(PROCESS_AFFINITY_DISABLE_AUTO_UPDATE, PROCESS_AFFINITY_ENABLE_AUTO_UPDATE)", 0, PROCESS_AFFINITY_ENABLE_AUTO_UPDATE) DWORD PROCESS_AFFINITY_AUTO_UPDATE_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI - SetProcessAffinityUpdateMode( - _In_ HANDLE hProcess, -- _In_ DWORD dwFlags -- ); -- -+ _In_ _Win32_AssociatedEnum_(PROCESS_AFFINITY_AUTO_UPDATE_FLAGS) DWORD dwFlags -+ ); -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI - QueryProcessAffinityUpdateMode( - _In_ HANDLE hProcess, -- _Out_opt_ LPDWORD lpdwFlags -+ _Out_opt_ _Win32_AssociatedEnum_(PROCESS_AFFINITY_AUTO_UPDATE_FLAGS) LPDWORD lpdwFlags - ); - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ -@@ -752,6 +860,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - WINBASEAPI - _Ret_maybenull_ - HANDLE -@@ -777,6 +887,7 @@ - - #if (_WIN32_WINNT >= 0x0602) - -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - VOID - WINAPI -@@ -787,6 +898,8 @@ - - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -803,6 +916,8 @@ - - #if (_WIN32_WINNT >= 0x0602) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -821,6 +936,8 @@ - #pragma region Desktop Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -837,6 +954,8 @@ - - #if (_WIN32_WINNT >= 0x0602) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -856,6 +975,8 @@ - #pragma region Application Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -871,6 +992,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -882,20 +1005,23 @@ - _Out_ LPFILETIME lpUserTime - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - HANDLE - WINAPI - OpenProcess( -- _In_ DWORD dwDesiredAccess, -+ _In_ _Win32_AssociatedEnum_(PROCESS_ACCESS_RIGHTS) DWORD dwDesiredAccess, - _In_ BOOL bInheritHandle, - _In_ DWORD dwProcessId - ); - -+_Win32_SupportedOS_Windows2000_ - WINBASEAPI - BOOL - WINAPI - IsProcessorFeaturePresent( -- _In_ DWORD ProcessorFeature -+ _Win32_AssociatedEnum_(PROCESSOR_FEATURE_ID) _In_ DWORD ProcessorFeature - ); - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ -@@ -906,6 +1032,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI -@@ -924,6 +1052,7 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - DWORD - WINAPI -@@ -941,6 +1070,8 @@ - #pragma region Application Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - WINBASEAPI - BOOL - WINAPI -@@ -950,6 +1081,8 @@ - _Out_opt_ PPROCESSOR_NUMBER lpPreviousIdealProcessor - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - WINBASEAPI - BOOL - WINAPI -@@ -958,6 +1091,7 @@ - _Out_ PPROCESSOR_NUMBER lpIdealProcessor - ); - -+_Win32_SupportedOS_Windows7_ - WINBASEAPI - VOID - WINAPI -@@ -975,6 +1109,8 @@ - - #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -983,6 +1119,8 @@ - _Out_ PBOOL pDisablePriorityBoost - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -1001,6 +1139,8 @@ - - #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI -@@ -1018,6 +1158,8 @@ - - #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINBASEAPI - BOOL - WINAPI -@@ -1049,9 +1191,11 @@ - #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) - - typedef struct _MEMORY_PRIORITY_INFORMATION { -- ULONG MemoryPriority; -+ _Win32_AssociatedEnum_(MEMORY_PRIORITY) ULONG MemoryPriority; - } MEMORY_PRIORITY_INFORMATION, *PMEMORY_PRIORITY_INFORMATION; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -1062,6 +1206,8 @@ - _In_ DWORD ThreadInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -1098,6 +1244,8 @@ - - #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - WINBASEAPI - BOOL - WINAPI -@@ -1110,6 +1258,8 @@ - - #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - WINBASEAPI - BOOL - WINAPI -@@ -1119,6 +1269,7 @@ - _Out_opt_ PULONG_PTR OldPolicyValue - ); - -+_Win32_SupportedOS_Windows81_ - WINBASEAPI - BOOL - WINAPI -@@ -1135,6 +1286,8 @@ - #pragma region Desktop Family or OneCore Family or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - DWORD - WINAPI -@@ -1183,7 +1336,7 @@ - #endif - - typedef struct _PROCESS_MACHINE_INFORMATION { -- USHORT ProcessMachine; -+ _Win32_AssociatedEnum_(IMAGE_FILE_MACHINE) USHORT ProcessMachine; - USHORT Res0; - MACHINE_ATTRIBUTES MachineAttributes; - } PROCESS_MACHINE_INFORMATION; -@@ -1229,7 +1382,7 @@ - } PROCESS_POWER_THROTTLING_STATE, *PPROCESS_POWER_THROTTLING_STATE; - - typedef struct PROCESS_PROTECTION_LEVEL_INFORMATION { -- DWORD ProtectionLevel; -+ _Win32_AssociatedEnum_(PROCESS_PROTECTION_LEVEL) DWORD ProtectionLevel; - } PROCESS_PROTECTION_LEVEL_INFORMATION; - - #define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1 -@@ -1243,6 +1396,8 @@ - - #if (_WIN32_WINNT >= 0x0602) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -1253,6 +1408,8 @@ - _In_ DWORD ProcessInformationSize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINBASEAPI - BOOL - WINAPI -@@ -1324,6 +1481,8 @@ - #pragma region Desktop Family or OneCore Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI -@@ -1334,7 +1493,7 @@ - _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, - _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, - _In_ BOOL bInheritHandles, -- _In_ DWORD dwCreationFlags, -+ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, - _In_opt_ LPVOID lpEnvironment, - _In_opt_ LPCSTR lpCurrentDirectory, - _In_ LPSTARTUPINFOA lpStartupInfo, -@@ -1345,6 +1504,8 @@ - #define CreateProcessAsUser CreateProcessAsUserA - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINBASEAPI - BOOL - WINAPI -@@ -1419,6 +1580,7 @@ - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ - #pragma endregion - -+_Win32_SupportedOS_14393_ - WINBASEAPI - HRESULT - WINAPI -@@ -1427,6 +1589,7 @@ - _In_ PCWSTR lpThreadDescription - ); - -+_Win32_SupportedOS_14393_ - WINBASEAPI - HRESULT - WINAPI + #pragma region Desktop Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI +@@ -615,6 +700,8 @@ + + #if (_WIN32_WINNT >= 0x0501) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + DWORD + WINAPI +@@ -626,6 +713,8 @@ + + #if (_WIN32_WINNT >= 0x0502) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + DWORD + WINAPI +@@ -637,6 +726,7 @@ + + #if (_WIN32_WINNT >= 0x0600) + ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + VOID + WINAPI +@@ -654,6 +744,8 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + DWORD + WINAPI +@@ -661,6 +753,8 @@ + _In_ HANDLE Thread + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + _Success_(return != FALSE) + BOOL +@@ -672,6 +766,7 @@ + _When_(lpAttributeList == nullptr,_Out_) _When_(lpAttributeList != nullptr,_Inout_) PSIZE_T lpSize + ); + ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + VOID + WINAPI +@@ -681,6 +776,8 @@ + + #define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI +@@ -696,6 +793,7 @@ + + #if (NTDDI_VERSION >= NTDDI_WIN10_VB) + ++_Win32_SetLastError_ + WINBASEAPI + BOOL + WINAPI +@@ -727,21 +825,28 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + + #define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE 0x00000001UL +- ++#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) ++typedef _WIN32META_ANNOTATION_("Enum(PROCESS_AFFINITY_DISABLE_AUTO_UPDATE, PROCESS_AFFINITY_ENABLE_AUTO_UPDATE)", 0, PROCESS_AFFINITY_ENABLE_AUTO_UPDATE) DWORD PROCESS_AFFINITY_AUTO_UPDATE_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI + SetProcessAffinityUpdateMode( + _In_ HANDLE hProcess, +- _In_ DWORD dwFlags +- ); +- ++ _In_ _Win32_AssociatedEnum_(PROCESS_AFFINITY_AUTO_UPDATE_FLAGS) DWORD dwFlags ++ ); ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI + QueryProcessAffinityUpdateMode( + _In_ HANDLE hProcess, +- _Out_opt_ LPDWORD lpdwFlags ++ _Out_opt_ _Win32_AssociatedEnum_(PROCESS_AFFINITY_AUTO_UPDATE_FLAGS) LPDWORD lpdwFlags + ); + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ +@@ -752,6 +857,8 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + WINBASEAPI + _Ret_maybenull_ + HANDLE +@@ -777,6 +884,7 @@ + + #if (_WIN32_WINNT >= 0x0602) + ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + VOID + WINAPI +@@ -787,6 +895,8 @@ + + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -803,6 +913,8 @@ + + #if (_WIN32_WINNT >= 0x0602) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -821,6 +933,8 @@ + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -837,6 +951,8 @@ + + #if (_WIN32_WINNT >= 0x0602) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -856,6 +972,8 @@ + #pragma region Application Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -871,6 +989,8 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -882,20 +1002,23 @@ + _Out_ LPFILETIME lpUserTime + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + HANDLE + WINAPI + OpenProcess( +- _In_ DWORD dwDesiredAccess, ++ _In_ _Win32_AssociatedEnum_(PROCESS_ACCESS_RIGHTS) DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ DWORD dwProcessId + ); + ++_Win32_SupportedOS_Windows2000_ + WINBASEAPI + BOOL + WINAPI + IsProcessorFeaturePresent( +- _In_ DWORD ProcessorFeature ++ _Win32_AssociatedEnum_(PROCESSOR_FEATURE_ID) _In_ DWORD ProcessorFeature + ); + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ +@@ -906,6 +1029,8 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI +@@ -924,6 +1049,7 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + DWORD + WINAPI +@@ -941,6 +1067,8 @@ + #pragma region Application Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + WINBASEAPI + BOOL + WINAPI +@@ -950,6 +1078,8 @@ + _Out_opt_ PPROCESSOR_NUMBER lpPreviousIdealProcessor + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + WINBASEAPI + BOOL + WINAPI +@@ -958,6 +1088,7 @@ + _Out_ PPROCESSOR_NUMBER lpIdealProcessor + ); + ++_Win32_SupportedOS_Windows7_ + WINBASEAPI + VOID + WINAPI +@@ -975,6 +1106,8 @@ + + #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -983,6 +1116,8 @@ + _Out_ PBOOL pDisablePriorityBoost + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -1001,6 +1136,8 @@ + + #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI +@@ -1018,6 +1155,8 @@ + + #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINBASEAPI + BOOL + WINAPI +@@ -1049,9 +1188,11 @@ + #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) + + typedef struct _MEMORY_PRIORITY_INFORMATION { +- ULONG MemoryPriority; ++ _Win32_AssociatedEnum_(MEMORY_PRIORITY) ULONG MemoryPriority; + } MEMORY_PRIORITY_INFORMATION, *PMEMORY_PRIORITY_INFORMATION; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -1062,6 +1203,8 @@ + _In_ DWORD ThreadInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -1098,6 +1241,8 @@ + + #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + WINBASEAPI + BOOL + WINAPI +@@ -1110,6 +1255,8 @@ + + #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + WINBASEAPI + BOOL + WINAPI +@@ -1119,6 +1266,7 @@ + _Out_opt_ PULONG_PTR OldPolicyValue + ); + ++_Win32_SupportedOS_Windows81_ + WINBASEAPI + BOOL + WINAPI +@@ -1135,6 +1283,8 @@ + #pragma region Desktop Family or OneCore Family or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + DWORD + WINAPI +@@ -1183,7 +1333,7 @@ + #endif + + typedef struct _PROCESS_MACHINE_INFORMATION { +- USHORT ProcessMachine; ++ _Win32_AssociatedEnum_(IMAGE_FILE_MACHINE) USHORT ProcessMachine; + USHORT Res0; + MACHINE_ATTRIBUTES MachineAttributes; + } PROCESS_MACHINE_INFORMATION; +@@ -1229,7 +1379,7 @@ + } PROCESS_POWER_THROTTLING_STATE, *PPROCESS_POWER_THROTTLING_STATE; + + typedef struct PROCESS_PROTECTION_LEVEL_INFORMATION { +- DWORD ProtectionLevel; ++ _Win32_AssociatedEnum_(PROCESS_PROTECTION_LEVEL) DWORD ProtectionLevel; + } PROCESS_PROTECTION_LEVEL_INFORMATION; + + #define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1 +@@ -1243,6 +1393,8 @@ + + #if (_WIN32_WINNT >= 0x0602) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -1253,6 +1405,8 @@ + _In_ DWORD ProcessInformationSize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINBASEAPI + BOOL + WINAPI +@@ -1324,6 +1478,8 @@ + #pragma region Desktop Family or OneCore Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI +@@ -1334,7 +1490,7 @@ + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, +- _In_ DWORD dwCreationFlags, ++ _Win32_AssociatedEnum_(PROCESS_CREATION_FLAGS) _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOA lpStartupInfo, +@@ -1345,6 +1501,8 @@ + #define CreateProcessAsUser CreateProcessAsUserA + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINBASEAPI + BOOL + WINAPI +@@ -1419,6 +1577,7 @@ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) */ + #pragma endregion + ++_Win32_SupportedOS_14393_ + WINBASEAPI + HRESULT + WINAPI +@@ -1427,6 +1586,7 @@ + _In_ PCWSTR lpThreadDescription + ); + ++_Win32_SupportedOS_14393_ + WINBASEAPI + HRESULT + WINAPI diff --git a/generation/WinSDK/patches/um/projectedfslib.h.patch b/generation/WinSDK/patches/um/projectedfslib.h.patch index 35d108b32..9a38be9d2 100644 --- a/generation/WinSDK/patches/um/projectedfslib.h.patch +++ b/generation/WinSDK/patches/um/projectedfslib.h.patch @@ -1,22 +1,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h --- a/um/projectedfslib.h +++ b/um/projectedfslib.h -@@ -85,8 +85,14 @@ - } PRJ_NOTIFICATION; - - DECLARE_HANDLE(PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT; -+#endif - - DECLARE_HANDLE(PRJ_DIR_ENTRY_BUFFER_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PRJ_DIR_ENTRY_BUFFER_HANDLE PRJ_DIR_ENTRY_BUFFER_HANDLE; -+#endif - - typedef enum PRJ_EXT_INFO_TYPE { - PRJ_EXT_INFO_TYPE_SYMLINK = 1 -@@ -140,6 +146,7 @@ +@@ -140,6 +140,7 @@ UINT32 NotificationMappingsCount; } PRJ_STARTVIRTUALIZING_OPTIONS; @@ -24,7 +9,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjStartVirtualizing( _In_ PCWSTR virtualizationRootPath, -@@ -149,11 +156,13 @@ +@@ -149,11 +150,13 @@ _Outptr_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT* namespaceVirtualizationContext ); @@ -38,7 +23,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjClearNegativePathCache( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -166,6 +175,7 @@ +@@ -166,6 +169,7 @@ UINT32 WriteAlignment; } PRJ_VIRTUALIZATION_INSTANCE_INFO; @@ -46,7 +31,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjGetVirtualizationInstanceInfo( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -187,6 +197,7 @@ +@@ -187,6 +191,7 @@ UINT8 ContentID[PRJ_PLACEHOLDER_ID_LENGTH]; } PRJ_PLACEHOLDER_VERSION_INFO; @@ -54,7 +39,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjMarkDirectoryAsPlaceholder( _In_ PCWSTR rootPathName, -@@ -231,6 +242,7 @@ +@@ -231,6 +236,7 @@ UINT8 VariableData[1]; } PRJ_PLACEHOLDER_INFO; @@ -62,7 +47,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjWritePlaceholderInfo( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -239,6 +251,7 @@ +@@ -239,6 +245,7 @@ _In_ UINT32 placeholderInfoSize ); @@ -70,7 +55,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjWritePlaceholderInfo2( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -273,6 +286,7 @@ +@@ -273,6 +280,7 @@ DEFINE_ENUM_FLAG_OPERATORS(PRJ_UPDATE_FAILURE_CAUSES); @@ -78,7 +63,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjUpdateFileIfNeeded( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -283,6 +297,7 @@ +@@ -283,6 +291,7 @@ _Out_opt_ PRJ_UPDATE_FAILURE_CAUSES* failureReason ); @@ -86,7 +71,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjDeleteFile( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -291,6 +306,7 @@ +@@ -291,6 +300,7 @@ _Out_opt_ PRJ_UPDATE_FAILURE_CAUSES* failureReason ); @@ -94,7 +79,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjWriteFileData( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -311,18 +327,21 @@ +@@ -311,18 +321,21 @@ DEFINE_ENUM_FLAG_OPERATORS(PRJ_FILE_STATE); @@ -116,7 +101,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI_(void) PrjFreeAlignedBuffer ( _In_ void* buffer -@@ -469,6 +488,7 @@ +@@ -469,6 +482,7 @@ } PRJ_COMPLETE_COMMAND_EXTENDED_PARAMETERS; @@ -124,7 +109,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjCompleteCommand( _In_ PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT namespaceVirtualizationContext, -@@ -481,6 +501,7 @@ +@@ -481,6 +495,7 @@ #pragma region Enumeration APIs @@ -132,7 +117,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjFillDirEntryBuffer( _In_ PCWSTR fileName, -@@ -488,6 +509,7 @@ +@@ -488,6 +503,7 @@ _In_ PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle ); @@ -140,7 +125,7 @@ diff --git a/um/projectedfslib.h b/um/projectedfslib.h STDAPI PrjFillDirEntryBuffer2( _In_ PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle, -@@ -496,18 +518,21 @@ +@@ -496,18 +512,21 @@ _In_opt_ PRJ_EXTENDED_INFO* extendedInfo ); diff --git a/generation/WinSDK/patches/um/propsys.idl.patch b/generation/WinSDK/patches/um/propsys.idl.patch index 18e96b995..022eb6e89 100644 --- a/generation/WinSDK/patches/um/propsys.idl.patch +++ b/generation/WinSDK/patches/um/propsys.idl.patch @@ -176,15 +176,7 @@ index 1fe720ca..66d51852 100644 cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(PROPDESC_SEARCHINFO_FLAGS)") -@@ -672,6 +737,7 @@ - - typedef SERIALIZEDPROPSTORAGE __unaligned *PUSERIALIZEDPROPSTORAGE; - typedef const SERIALIZEDPROPSTORAGE __unaligned *PCUSERIALIZEDPROPSTORAGE; -+cpp_quote("/* Win32Metadata: type ::PCUSERIALIZEDPROPSTORAGE => NativeTypedef */") - - [ - uuid(e318ad57-0aa0-450f-aca5-6fab7103d917), -@@ -730,8 +796,10 @@ +@@ -730,8 +795,10 @@ [out, iid_is(riid)] void **ppv); }; @@ -195,7 +187,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ REFPROPERTYKEY propkey,") cpp_quote(" _In_ REFPROPVARIANT propvar,") cpp_quote(" _In_ PROPDESC_FORMAT_FLAGS pdfFlags,") -@@ -739,12 +807,14 @@ +@@ -739,12 +806,14 @@ cpp_quote(" _In_ DWORD cchText);") cpp_quote("") cpp_quote("PSSTDAPI PSFormatForDisplayAlloc(") @@ -210,7 +202,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IPropertyStore *pps,") cpp_quote(" _In_ IPropertyDescription *ppd,") cpp_quote(" _In_ PROPDESC_FORMAT_FLAGS pdff,") -@@ -752,6 +822,7 @@ +@@ -752,6 +821,7 @@ cpp_quote("") cpp_quote("// Retrieve the image reference associated with a property value (if specified)") cpp_quote("PSSTDAPI PSGetImageReferenceForValue(") @@ -218,7 +210,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ REFPROPERTYKEY propkey,") cpp_quote(" _In_ REFPROPVARIANT propvar,") cpp_quote(" _Outptr_ PWSTR *ppszImageRes);") -@@ -763,11 +834,13 @@ +@@ -763,11 +833,13 @@ cpp_quote("") cpp_quote("// Convert a PROPERTYKEY to and from a PWSTR") cpp_quote("PSSTDAPI PSStringFromPropertyKey(") @@ -232,7 +224,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ LPCWSTR pszString,") cpp_quote(" _Out_ PROPERTYKEY *pkey);") cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */") -@@ -779,8 +852,10 @@ +@@ -779,8 +851,10 @@ cpp_quote("// Creates an in-memory property store") cpp_quote("// Returns an IPropertyStore, IPersistSerializedPropStorage, and related interfaces interface") cpp_quote("PSSTDAPI PSCreateMemoryPropertyStore(") @@ -245,7 +237,7 @@ index 1fe720ca..66d51852 100644 cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */") #pragma endregion #pragma region Desktop Family -@@ -790,6 +865,7 @@ +@@ -790,6 +864,7 @@ cpp_quote("// Create a read-only, delay-bind multiplexing property store") cpp_quote("// Returns an IPropertyStore interface or related interfaces") cpp_quote("PSSTDAPI PSCreateDelayedMultiplexPropertyStore(") @@ -253,7 +245,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ GETPROPERTYSTOREFLAGS flags,") cpp_quote(" _In_ IDelayedPropertyStoreFactory *pdpsf,") cpp_quote(" _In_reads_(cStores) const DWORD *rgStoreIds,") -@@ -801,6 +877,7 @@ +@@ -801,6 +876,7 @@ cpp_quote("// Create a read-only property store from one or more sources (which each must support either IPropertyStore or IPropertySetStorage)") cpp_quote("// Returns an IPropertyStore interface or related interfaces") cpp_quote("PSSTDAPI PSCreateMultiplexPropertyStore(") @@ -261,7 +253,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_reads_(cStores) IUnknown **prgpunkStores,") cpp_quote(" _In_ DWORD cStores,") cpp_quote(" _In_ REFIID riid,") -@@ -810,6 +887,7 @@ +@@ -810,6 +886,7 @@ cpp_quote("// Create a container for IPropertyChanges") cpp_quote("// Returns an IPropertyChangeArray interface") cpp_quote("PSSTDAPI PSCreatePropertyChangeArray(") @@ -269,7 +261,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_reads_opt_(cChanges) const PROPERTYKEY *rgpropkey,") cpp_quote(" _In_reads_opt_(cChanges) const PKA_FLAGS *rgflags,") cpp_quote(" _In_reads_opt_(cChanges) const PROPVARIANT *rgpropvar,") -@@ -821,6 +899,7 @@ +@@ -821,6 +898,7 @@ cpp_quote("// Create a simple property change") cpp_quote("// Returns an IPropertyChange interface") cpp_quote("PSSTDAPI PSCreateSimplePropertyChange(") @@ -277,7 +269,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ PKA_FLAGS flags,") cpp_quote(" _In_ REFPROPERTYKEY key,") cpp_quote(" _In_ REFPROPVARIANT propvar,") -@@ -831,11 +910,13 @@ +@@ -831,11 +909,13 @@ cpp_quote("// Get a property description") cpp_quote("// Returns an IPropertyDescription interface") cpp_quote("PSSTDAPI PSGetPropertyDescription(") @@ -291,7 +283,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ LPCWSTR pszCanonicalName,") cpp_quote(" _In_ REFIID riid,") cpp_quote(" _Outptr_ void **ppv);") -@@ -843,12 +924,14 @@ +@@ -843,12 +923,14 @@ cpp_quote("") cpp_quote("// Lookup a per-machine registered file property handler") cpp_quote("PSSTDAPI PSLookupPropertyHandlerCLSID(") @@ -306,7 +298,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IUnknown *punkItem,") cpp_quote(" _In_ BOOL fReadWrite,") cpp_quote(" _In_ REFIID riid,") -@@ -860,6 +943,7 @@ +@@ -860,6 +942,7 @@ cpp_quote("// punkCreateObject supports ICreateObject") cpp_quote("// Returns an IPropertyStore") cpp_quote("PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(") @@ -314,7 +306,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IUnknown *punkItem,") cpp_quote(" _In_ BOOL fReadWrite,") cpp_quote(" _In_ IUnknown *punkCreateObject,") -@@ -869,11 +953,13 @@ +@@ -869,11 +952,13 @@ cpp_quote("") cpp_quote("// Get or set a property value from a store") cpp_quote("PSSTDAPI PSGetPropertyValue(") @@ -328,7 +320,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IPropertyStore *pps,") cpp_quote(" _In_ IPropertyDescription *ppd,") cpp_quote(" _In_ REFPROPVARIANT propvar);") -@@ -881,15 +967,19 @@ +@@ -881,15 +966,19 @@ cpp_quote("") cpp_quote("// Interact with the set of property descriptions") cpp_quote("PSSTDAPI PSRegisterPropertySchema(") @@ -348,7 +340,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ PROPDESC_ENUMFILTER filterOn,") cpp_quote(" _In_ REFIID riid,") cpp_quote(" _Outptr_ void **ppv);") -@@ -897,16 +987,19 @@ +@@ -897,16 +986,19 @@ cpp_quote("") cpp_quote("// Convert between a PROPERTYKEY and its canonical name") cpp_quote("PSSTDAPI PSGetPropertyKeyFromName(") @@ -368,7 +360,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ REFPROPERTYKEY key,") cpp_quote(" _Inout_ PROPVARIANT *ppropvar);") cpp_quote("") -@@ -914,6 +1007,7 @@ +@@ -914,6 +1006,7 @@ cpp_quote("// Convert a 'prop:' string into a list of property descriptions") cpp_quote("// Returns an IPropertyDescriptionList interface") cpp_quote("PSSTDAPI PSGetPropertyDescriptionListFromString(") @@ -376,7 +368,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ LPCWSTR pszPropList,") cpp_quote(" _In_ REFIID riid,") cpp_quote(" _Outptr_ void **ppv);") -@@ -922,6 +1016,7 @@ +@@ -922,6 +1015,7 @@ cpp_quote("// Wrap an IPropertySetStorage interface in an IPropertyStore interface") cpp_quote("// Returns an IPropertyStore or related interface") cpp_quote("PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage(") @@ -384,7 +376,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IPropertySetStorage *ppss,") cpp_quote(" _In_ DWORD grfMode,") cpp_quote(" _In_ REFIID riid,") -@@ -936,6 +1031,7 @@ +@@ -936,6 +1030,7 @@ cpp_quote("// On success, the returned ppv is guaranteed to support IPropertyStore.") cpp_quote("// If punkSource already supports IPropertyStore, no wrapper is created.") cpp_quote("PSSTDAPI PSCreatePropertyStoreFromObject(") @@ -392,7 +384,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IUnknown *punk,") cpp_quote(" _In_ DWORD grfMode,") cpp_quote(" _In_ REFIID riid,") -@@ -945,6 +1041,7 @@ +@@ -945,6 +1040,7 @@ cpp_quote("// punkSource must support IPropertyStore") cpp_quote("// riid may be IPropertyStore, IPropertySetStorage, IPropertyStoreCapabilities, or IObjectProvider") cpp_quote("PSSTDAPI PSCreateAdapterFromPropertyStore(") @@ -400,7 +392,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_ IPropertyStore *pps,") cpp_quote(" _In_ REFIID riid,") cpp_quote(" _Outptr_ void **ppv);") -@@ -957,12 +1054,14 @@ +@@ -957,12 +1053,14 @@ cpp_quote("// Talk to the property system using an interface") cpp_quote("// Returns an IPropertySystem interface") cpp_quote("PSSTDAPI PSGetPropertySystem(") @@ -415,7 +407,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps, ") cpp_quote(" _In_ DWORD cb, ") cpp_quote(" _In_ REFPROPERTYKEY rpkey, ") -@@ -971,6 +1070,7 @@ +@@ -971,6 +1069,7 @@ cpp_quote("") cpp_quote("// Obtain a named value from serialized property storage") cpp_quote("PSSTDAPI PSGetNamedPropertyFromPropertyStorage(") @@ -423,7 +415,7 @@ index 1fe720ca..66d51852 100644 cpp_quote(" _In_reads_bytes_(cb) PCUSERIALIZEDPROPSTORAGE psps, ") cpp_quote(" _In_ DWORD cb, ") cpp_quote(" _In_ LPCWSTR pszName, ") -@@ -979,136 +1079,170 @@ +@@ -979,136 +1078,170 @@ cpp_quote("") cpp_quote("// Helper functions for reading and writing values from IPropertyBag's.") cpp_quote("PSSTDAPI PSPropertyBag_ReadType(") diff --git a/generation/WinSDK/patches/um/prsht.h.patch b/generation/WinSDK/patches/um/prsht.h.patch index dfd7203bc..d1f20e7d0 100644 --- a/generation/WinSDK/patches/um/prsht.h.patch +++ b/generation/WinSDK/patches/um/prsht.h.patch @@ -1,13 +1,10 @@ diff --git a/um/prsht.h b/um/prsht.h --- a/um/prsht.h +++ b/um/prsht.h -@@ -95,14 +95,21 @@ +@@ -95,14 +95,18 @@ struct _PSP; typedef struct _PSP * HPROPSHEETPAGE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPROPSHEETPAGE HPROPSHEETPAGE; -+#endif #ifndef MIDL_PASS struct _PROPSHEETPAGEA; @@ -25,7 +22,7 @@ diff --git a/um/prsht.h b/um/prsht.h #ifdef UNICODE #define LPFNPSPCALLBACK LPFNPSPCALLBACKW -@@ -135,6 +142,13 @@ +@@ -135,6 +139,13 @@ #define PSPCB_ADDREF 0 #define PSPCB_RELEASE 1 #define PSPCB_CREATE 2 @@ -39,7 +36,7 @@ diff --git a/um/prsht.h b/um/prsht.h #ifdef _WIN32 typedef LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE; -@@ -582,12 +596,28 @@ +@@ -582,12 +593,26 @@ #define PSCB_BUTTONPRESSED 3 #endif // NTDDI_VERSION >= NTDDI_WINXP @@ -56,8 +53,6 @@ diff --git a/um/prsht.h b/um/prsht.h +_Win32_SupportedOS_WindowsVista_ WINCOMMCTRLAPI BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_WindowsVista_ @@ -68,7 +63,7 @@ diff --git a/um/prsht.h b/um/prsht.h WINCOMMCTRLAPI INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW); #ifdef UNICODE -@@ -908,4 +938,3 @@ +@@ -908,4 +933,3 @@ #if defined(_MSC_VER) && (_MSC_VER >= 1200) #pragma warning(pop) #endif diff --git a/generation/WinSDK/patches/um/prsht.idl.patch b/generation/WinSDK/patches/um/prsht.idl.patch deleted file mode 100644 index 4ba3a2aee..000000000 --- a/generation/WinSDK/patches/um/prsht.idl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/um/prsht.idl b/um/prsht.idl -index 4b135a35..126e4468 100644 ---- a/um/prsht.idl -+++ b/um/prsht.idl -@@ -29,6 +29,7 @@ - #endif - - typedef void* HPROPSHEETPAGE; -+cpp_quote("/* Win32Metadata: type ::HPROPSHEETPAGE => NativeTypedef */") - typedef BOOL (* LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM); - typedef BOOL (* LPFNADDPROPSHEETPAGES)(LPVOID, LPFNADDPROPSHEETPAGE, LPARAM); - diff --git a/generation/WinSDK/patches/um/ras.h.patch b/generation/WinSDK/patches/um/ras.h.patch index 82bea2190..64310b1ab 100644 --- a/generation/WinSDK/patches/um/ras.h.patch +++ b/generation/WinSDK/patches/um/ras.h.patch @@ -9,17 +9,7 @@ diff --git a/um/ras.h b/um/ras.h #include #pragma region Desktop Family or CmdLineTools Package -@@ -146,6 +147,9 @@ - #define RAS_MaxDnsSuffix 256 - - DECLARE_HANDLE( HRASCONN ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRASCONN HRASCONN; -+#endif - #define LPHRASCONN HRASCONN* - - #if (WINVER >= 0x501) -@@ -749,6 +753,12 @@ +@@ -749,6 +750,12 @@ #define RASLCPAD_CHAP_MS 0x80 #define RASLCPAD_CHAP_MSV2 0x81 @@ -32,7 +22,7 @@ diff --git a/um/ras.h b/um/ras.h /* RASPPPLCP 'dwOptions' and 'dwServerOptions' flags. */ #define RASLCPO_PFC 0x00000001 -@@ -920,10 +930,10 @@ +@@ -920,10 +927,10 @@ // LCP Options BOOL fBundled; BOOL fMultilink; @@ -47,7 +37,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD dwEapTypeId; DWORD dwServerEapTypeId; DWORD dwLcpOptions; -@@ -944,6 +954,10 @@ +@@ -944,6 +951,10 @@ #define RASIKEv2_FLAGS_BEHIND_NAT 0x00000002 #define RASIKEv2_FLAGS_SERVERBEHIND_NAT 0x00000004 @@ -58,7 +48,7 @@ diff --git a/um/ras.h b/um/ras.h /* RASIKEV2_PROJECTION_INFO 'dwAuthenticatonProtocol' values. */ #define RASIKEv2_AUTH_MACHINECERTIFICATES 1 -@@ -967,7 +981,7 @@ +@@ -967,7 +978,7 @@ DWORD dwAuthenticationProtocol; DWORD dwEapTypeId; @@ -67,7 +57,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD dwEncryptionMethod; DWORD numIPv4ServerAddresses; -@@ -1128,6 +1142,15 @@ +@@ -1128,6 +1139,15 @@ #define VS_ProtocolList 15 // Use ProtocolList to determine protocols to connect #endif @@ -83,7 +73,7 @@ diff --git a/um/ras.h b/um/ras.h /* A RAS phone book entry. */ #define RASENTRYA struct tagRASENTRYA -@@ -1189,7 +1212,7 @@ +@@ -1189,7 +1209,7 @@ // Multilink // DWORD dwSubEntries; @@ -92,7 +82,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD dwDialExtraPercent; DWORD dwDialExtraSampleSeconds; DWORD dwHangUpExtraPercent; -@@ -1347,7 +1370,7 @@ +@@ -1347,7 +1367,7 @@ // Multilink // DWORD dwSubEntries; @@ -101,7 +91,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD dwDialExtraPercent; DWORD dwDialExtraSampleSeconds; DWORD dwHangUpExtraPercent; -@@ -1627,11 +1650,6 @@ +@@ -1627,11 +1647,6 @@ #endif #if (WINVER >= 0x401) @@ -113,7 +103,7 @@ diff --git a/um/ras.h b/um/ras.h /* RASENTRY 'dwIdleDisconnectSeconds' constants. */ #define RASIDS_Disabled 0xffffffff -@@ -1910,147 +1928,209 @@ +@@ -1910,147 +1925,209 @@ /* External RAS API function prototypes. */ @@ -323,7 +313,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasSetAutodialParamW( _In_ DWORD, _In_ LPVOID, _In_ DWORD ); DWORD APIENTRY RasGetPCscf(_Out_ LPWSTR lpszPCscf); -@@ -2106,21 +2186,27 @@ +@@ -2106,21 +2183,27 @@ #define RCD_Eap 0x00000002 #define RCD_Logon 0x00000004 @@ -351,7 +341,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasGetEapUserDataA( _In_opt_ HANDLE hToken, _In_opt_ LPCSTR pszPhonebook, -@@ -2129,6 +2215,7 @@ +@@ -2129,6 +2212,7 @@ _Inout_ DWORD *pdwSizeofEapData ); @@ -359,7 +349,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasGetEapUserDataW( _In_opt_ HANDLE hToken, _In_opt_ LPCWSTR pszPhonebook, -@@ -2136,6 +2223,7 @@ +@@ -2136,6 +2220,7 @@ _Out_opt_ BYTE *pbEapData, _Inout_ DWORD *pdwSizeofEapData ); @@ -367,7 +357,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasSetEapUserDataA( _In_opt_ HANDLE hToken, _In_opt_ LPCSTR pszPhonebook, -@@ -2143,6 +2231,7 @@ +@@ -2143,6 +2228,7 @@ _In_ BYTE *pbEapData, _In_ DWORD dwSizeofEapData ); @@ -375,7 +365,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasSetEapUserDataW( _In_opt_ HANDLE hToken, _In_opt_ LPCWSTR pszPhonebook, -@@ -2150,6 +2239,7 @@ +@@ -2150,6 +2236,7 @@ _In_ BYTE *pbEapData, _In_ DWORD dwSizeofEapData ); @@ -383,7 +373,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasGetCustomAuthDataA( _In_opt_ LPCSTR pszPhonebook, _In_ LPCSTR pszEntry, -@@ -2157,12 +2247,14 @@ +@@ -2157,12 +2244,14 @@ _Inout_ DWORD *pdwSizeofCustomAuthData ); @@ -398,7 +388,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasSetCustomAuthDataA( _In_opt_ LPCSTR pszPhonebook, _In_ LPCSTR pszEntry, -@@ -2170,12 +2262,14 @@ +@@ -2170,12 +2259,14 @@ _In_ DWORD dwSizeofCustomAuthData ); @@ -413,7 +403,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasGetEapUserIdentityW( _In_opt_ LPCWSTR pszPhonebook, _In_ LPCWSTR pszEntry, -@@ -2183,6 +2277,7 @@ +@@ -2183,6 +2274,7 @@ _In_ HWND hwnd, _Out_ LPRASEAPUSERIDENTITYW* ppRasEapUserIdentity ); @@ -421,7 +411,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasGetEapUserIdentityA( _In_opt_ LPCSTR pszPhonebook, _In_ LPCSTR pszEntry, -@@ -2190,9 +2285,11 @@ +@@ -2190,9 +2282,11 @@ _In_ HWND hwnd, _Out_ LPRASEAPUSERIDENTITYA* ppRasEapUserIdentity ); @@ -433,7 +423,7 @@ diff --git a/um/ras.h b/um/ras.h VOID APIENTRY RasFreeEapUserIdentityA( _In_ LPRASEAPUSERIDENTITYA pRasEapUserIdentity ); -@@ -2200,11 +2297,13 @@ +@@ -2200,11 +2294,13 @@ #if (WINVER >= 0x501) @@ -447,7 +437,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasDeleteSubEntryW( _In_opt_ LPCWSTR pszPhonebook, _In_ LPCWSTR pszEntry, -@@ -2216,7 +2315,7 @@ +@@ -2216,7 +2312,7 @@ #ifdef USES_RAS_QUARANTINE_APIS @@ -456,7 +446,7 @@ diff --git a/um/ras.h b/um/ras.h RasGetNapStatus( _In_ HRASCONN hRasconn, _Out_ LPRASNAPSTATE pRasNapState); -@@ -2244,6 +2343,7 @@ +@@ -2244,6 +2340,7 @@ #define LPRASUPDATECONN RASUPDATECONN* @@ -464,7 +454,7 @@ diff --git a/um/ras.h b/um/ras.h DWORD APIENTRY RasUpdateConnection( _In_ HRASCONN hrasconn, -@@ -2251,6 +2351,7 @@ +@@ -2251,6 +2348,7 @@ /* Ras Projection information for PPP or IKEv2 */ diff --git a/generation/WinSDK/patches/um/recapis.h.patch b/generation/WinSDK/patches/um/recapis.h.patch index e1060f6c1..ca8820505 100644 --- a/generation/WinSDK/patches/um/recapis.h.patch +++ b/generation/WinSDK/patches/um/recapis.h.patch @@ -1,49 +1,7 @@ diff --git a/um/recapis.h b/um/recapis.h --- a/um/recapis.h +++ b/um/recapis.h -@@ -24,26 +24,41 @@ - #ifndef __HRECOALT__ - #define __HRECOALT__ - DECLARE_HANDLE(HRECOALT); // definition of a handle for the alternate -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOALT HRECOALT; -+#endif - #endif - - #ifndef __HRECOCONTEXT__ - #define __HRECOCONTEXT__ - DECLARE_HANDLE(HRECOCONTEXT); // definition of a handle for the reco context -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOCONTEXT HRECOCONTEXT; -+#endif - #endif - - #ifndef __HRECOGNIZER__ - #define __HRECOGNIZER__ - DECLARE_HANDLE(HRECOGNIZER); // definition of a handle for the recognizer -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOGNIZER HRECOGNIZER; -+#endif - #endif - - #ifndef __HRECOLATTICE__ - #define __HRECOLATTICE__ - DECLARE_HANDLE(HRECOLATTICE); // definition of a handle for the lattice -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOLATTICE HRECOLATTICE; -+#endif - #endif - - #ifndef __HRECOWORDLIST__ - #define __HRECOWORDLIST__ - DECLARE_HANDLE(HRECOWORDLIST); // definition of a handle for the lattice -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOWORDLIST HRECOWORDLIST; -+#endif - #endif - - typedef HRESULT (*PfnRecoCallback)(DWORD, LPBYTE, HRECOCONTEXT); -@@ -70,49 +85,84 @@ +@@ -70,49 +70,84 @@ //////////////////////// // IRecognizer //////////////////////// @@ -131,49 +89,7 @@ diff --git a/um/recapis.h b/um/recapis.h HRESULT WINAPI MakeWordList(HRECOGNIZER hrec, _NullNull_terminated_ WCHAR *pBuffer, HRECOWORDLIST *phwl); #ifdef __cplusplus -@@ -134,26 +184,41 @@ - #ifndef __HRECOALT__ - #define __HRECOALT__ - DECLARE_HANDLE(HRECOALT); // definition of a handle for the alternate -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOALT HRECOALT; -+#endif - #endif - - #ifndef __HRECOCONTEXT__ - #define __HRECOCONTEXT__ - DECLARE_HANDLE(HRECOCONTEXT); // definition of a handle for the reco context -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOCONTEXT HRECOCONTEXT; -+#endif - #endif - - #ifndef __HRECOGNIZER__ - #define __HRECOGNIZER__ - DECLARE_HANDLE(HRECOGNIZER); // definition of a handle for the recognizer -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOGNIZER HRECOGNIZER; -+#endif - #endif - - #ifndef __HRECOLATTICE__ - #define __HRECOLATTICE__ - DECLARE_HANDLE(HRECOLATTICE); // definition of a handle for the lattice -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOLATTICE HRECOLATTICE; -+#endif - #endif - - #ifndef __HRECOWORDLIST__ - #define __HRECOWORDLIST__ - DECLARE_HANDLE(HRECOWORDLIST); // definition of a handle for the lattice -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRECOWORDLIST HRECOWORDLIST; -+#endif - #endif - - typedef HRESULT(*PfnRecoCallback)(DWORD, LPBYTE, HRECOCONTEXT); -@@ -180,44 +245,70 @@ +@@ -180,44 +215,70 @@ //////////////////////// // IRecognizer //////////////////////// diff --git a/generation/WinSDK/patches/um/resapi.h.patch b/generation/WinSDK/patches/um/resapi.h.patch index 9ea9ce98b..57f3bc069 100644 --- a/generation/WinSDK/patches/um/resapi.h.patch +++ b/generation/WinSDK/patches/um/resapi.h.patch @@ -827,20 +827,17 @@ diff --git a/um/resapi.h b/um/resapi.h DWORD WINAPI ResUtilGetCoreClusterResourcesEx( -@@ -2701,7 +2819,11 @@ +@@ -2701,7 +2819,8 @@ #define CLUS_CREATE_CRYPT_CONTAINER_NOT_FOUND 0x0001 typedef struct _HCLUSCRYPTPROVIDER *HCLUSCRYPTPROVIDER; - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCLUSCRYPTPROVIDER HCLUSCRYPTPROVIDER; -+#endif + +_Win32_SupportedOS_Server2012_ HCLUSCRYPTPROVIDER WINAPI OpenClusterCryptProvider( -@@ -2738,6 +2860,7 @@ +@@ -2738,6 +2857,7 @@ _In_ DWORD dwFlags ); @@ -848,7 +845,7 @@ diff --git a/um/resapi.h b/um/resapi.h DWORD WINAPI CloseClusterCryptProvider( -@@ -2749,6 +2872,7 @@ +@@ -2749,6 +2869,7 @@ _In_ HCLUSCRYPTPROVIDER hClusCryptProvider ); @@ -856,7 +853,7 @@ diff --git a/um/resapi.h b/um/resapi.h DWORD WINAPI ClusterEncrypt( -@@ -2768,6 +2892,7 @@ +@@ -2768,6 +2889,7 @@ _Out_ PDWORD pcbData ); @@ -864,7 +861,7 @@ diff --git a/um/resapi.h b/um/resapi.h DWORD WINAPI ClusterDecrypt( -@@ -2787,6 +2912,7 @@ +@@ -2787,6 +2909,7 @@ _Out_ PDWORD pcbCryptOutput ); @@ -872,7 +869,7 @@ diff --git a/um/resapi.h b/um/resapi.h DWORD WINAPI FreeClusterCrypt( -@@ -2848,8 +2974,10 @@ +@@ -2848,8 +2971,10 @@ PaxosTagCStruct paxosToValidate; }WitnessTagHelper; diff --git a/generation/WinSDK/patches/um/sapi.idl.patch b/generation/WinSDK/patches/um/sapi.idl.patch deleted file mode 100644 index 6c59992c4..000000000 --- a/generation/WinSDK/patches/um/sapi.idl.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/um/sapi.idl b/um/sapi.idl -index e70df2bb..6fbc5209 100644 ---- a/um/sapi.idl -+++ b/um/sapi.idl -@@ -1458,8 +1458,10 @@ - - cpp_quote("#if 0") - typedef void* SPSTATEHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPSTATEHANDLE => NativeTypedef */") - cpp_quote("#else") - cpp_quote("DECLARE_HANDLE(SPSTATEHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPSTATEHANDLE => NativeTypedef */") - cpp_quote("#endif") - - diff --git a/generation/WinSDK/patches/um/sapiddk.idl.patch b/generation/WinSDK/patches/um/sapiddk.idl.patch deleted file mode 100644 index aadce6865..000000000 --- a/generation/WinSDK/patches/um/sapiddk.idl.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/um/sapiddk.idl b/um/sapiddk.idl -index 2e297440..c38fff5f 100644 ---- a/um/sapiddk.idl -+++ b/um/sapiddk.idl -@@ -127,20 +127,34 @@ - //--- Handles for SR grammars and results - cpp_quote("#if 0") - typedef void* SPWORDHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPWORDHANDLE => NativeTypedef */") - typedef void* SPRULEHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPRULEHANDLE => NativeTypedef */") - typedef void* SPGRAMMARHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPGRAMMARHANDLE => NativeTypedef */") - typedef void* SPRECOCONTEXTHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPRECOCONTEXTHANDLE => NativeTypedef */") - typedef void* SPPHRASERULEHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPPHRASERULEHANDLE => NativeTypedef */") - typedef void* SPPHRASEPROPERTYHANDLE; -+cpp_quote("/* Win32Metadata: type ::SPPHRASEPROPERTYHANDLE => NativeTypedef */") - typedef void* SPTRANSITIONID; -+cpp_quote("/* Win32Metadata: type ::SPTRANSITIONID => NativeTypedef */") - cpp_quote("#else") - cpp_quote("DECLARE_HANDLE(SPWORDHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPWORDHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPRULEHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPRULEHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPGRAMMARHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPGRAMMARHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPRECOCONTEXTHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPRECOCONTEXTHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPPHRASERULEHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPPHRASERULEHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPPHRASEPROPERTYHANDLE);") -+cpp_quote("/* Win32Metadata: type ::SPPHRASEPROPERTYHANDLE => NativeTypedef */") - cpp_quote("DECLARE_HANDLE(SPTRANSITIONID);") -+cpp_quote("/* Win32Metadata: type ::SPTRANSITIONID => NativeTypedef */") - cpp_quote("#endif") - - diff --git a/generation/WinSDK/patches/um/shellapi.h.patch b/generation/WinSDK/patches/um/shellapi.h.patch index 12489fcfb..6fb551031 100644 --- a/generation/WinSDK/patches/um/shellapi.h.patch +++ b/generation/WinSDK/patches/um/shellapi.h.patch @@ -25,11 +25,8 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(LPWSTR *) CommandLineToArgvW(_In_ LPCWSTR lpCmdLine, _Out_ int* pNumArgs); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ -@@ -79,30 +89,42 @@ +@@ -79,30 +89,39 @@ DECLARE_HANDLE(HDROP); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDROP HDROP; -+#endif _Success_(return != 0) +_Win32_SupportedOS_WindowsXP_ @@ -70,7 +67,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(HINSTANCE) FindExecutableW(_In_ LPCWSTR lpFile, _In_opt_ LPCWSTR lpDirectory, _Out_writes_(MAX_PATH) LPWSTR lpResult); #ifdef UNICODE #define FindExecutable FindExecutableW -@@ -110,29 +132,38 @@ +@@ -110,29 +129,38 @@ #define FindExecutable FindExecutableA #endif // !UNICODE @@ -109,7 +106,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(HICON) ExtractIconW(_Reserved_ HINSTANCE hInst, _In_ LPCWSTR pszExeFileName, UINT nIconIndex); #ifdef UNICODE #define ExtractIcon ExtractIconW -@@ -216,13 +247,16 @@ +@@ -216,13 +244,16 @@ } APPBARDATA, *PAPPBARDATA; @@ -126,7 +123,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(DWORD) DoEnvironmentSubstW(_Inout_updates_(cchSrc) LPWSTR pszSrc, UINT cchSrc); #ifdef UNICODE #define DoEnvironmentSubst DoEnvironmentSubstW -@@ -231,7 +265,11 @@ +@@ -231,7 +262,11 @@ #endif // !UNICODE #define EIRESID(x) (-1 * (int)(x)) @@ -138,7 +135,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(UINT) ExtractIconExW(_In_ LPCWSTR lpszFile, int nIconIndex, _Out_writes_opt_(nIcons) HICON *phiconLarge, _Out_writes_opt_(nIcons) HICON *phiconSmall, UINT nIcons); #ifdef UNICODE #define ExtractIconEx ExtractIconExW -@@ -269,6 +307,15 @@ +@@ -269,6 +304,15 @@ #endif // (NTDDI_VERSION >= NTDDI_WINXP) #define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR) // don't display any UI at all @@ -154,7 +151,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h typedef WORD FILEOP_FLAGS; #define PO_DELETE 0x0013 // printer is being deleted -@@ -321,13 +368,18 @@ +@@ -321,13 +365,18 @@ typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT; #endif @@ -173,7 +170,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(void) SHFreeNameMappings(_In_opt_ HANDLE hNameMappings); typedef struct _SHNAMEMAPPINGA -@@ -499,7 +551,11 @@ +@@ -499,7 +548,11 @@ typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO; #endif // UNICODE @@ -185,7 +182,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(BOOL) ShellExecuteExW(_Inout_ SHELLEXECUTEINFOW *pExecInfo); #ifdef UNICODE #define ShellExecuteEx ShellExecuteExW -@@ -526,11 +582,14 @@ +@@ -526,11 +579,14 @@ LPPROCESS_INFORMATION lpProcessInformation; } SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW; @@ -200,7 +197,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI SHEvaluateSystemCommandTemplate(_In_ PCWSTR pszCmdTemplate, _Outptr_ PWSTR *ppszApplication, _Outptr_opt_ PWSTR *ppszCommandLine, _Outptr_opt_ PWSTR *ppszParameters); // // SHEvaluateSystemCommandTemplate() -@@ -894,6 +953,7 @@ +@@ -894,6 +950,7 @@ // the object returned from this API implements IQueryAssociations @@ -208,7 +205,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI AssocCreateForClasses(_In_reads_(cClasses) const ASSOCIATIONELEMENT *rgClasses, ULONG cClasses, _In_ REFIID riid, _COM_Outptr_ void **ppv); /* #if 0 // SAMPLE CODE -@@ -959,14 +1019,18 @@ +@@ -959,14 +1016,18 @@ #define SHERB_NOSOUND 0x00000004 @@ -227,7 +224,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI SHEmptyRecycleBinW(_In_opt_ HWND hwnd, _In_opt_ LPCWSTR pszRootPath, DWORD dwFlags); #ifdef UNICODE #define SHEmptyRecycleBin SHEmptyRecycleBinW -@@ -999,12 +1063,14 @@ +@@ -999,12 +1060,14 @@ #endif } QUERY_USER_NOTIFICATION_STATE; @@ -243,7 +240,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif -@@ -1012,7 +1078,7 @@ +@@ -1012,7 +1075,7 @@ DWORD cbSize; HWND hWnd; UINT uID; @@ -252,7 +249,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h UINT uCallbackMessage; HICON hIcon; #if (NTDDI_VERSION < NTDDI_WIN2K) -@@ -1020,8 +1086,8 @@ +@@ -1020,8 +1083,8 @@ #endif #if (NTDDI_VERSION >= NTDDI_WIN2K) CHAR szTip[128]; @@ -263,7 +260,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h CHAR szInfo[256]; #ifndef _SHELL_EXPORTS_INTERNALAPI_H_ union { -@@ -1030,7 +1096,7 @@ +@@ -1030,7 +1093,7 @@ } DUMMYUNIONNAME; #endif CHAR szInfoTitle[64]; @@ -272,7 +269,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif #if (NTDDI_VERSION >= NTDDI_WINXP) GUID guidItem; -@@ -1043,7 +1109,7 @@ +@@ -1043,7 +1106,7 @@ DWORD cbSize; HWND hWnd; UINT uID; @@ -281,7 +278,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h UINT uCallbackMessage; HICON hIcon; #if (NTDDI_VERSION < NTDDI_WIN2K) -@@ -1051,8 +1117,8 @@ +@@ -1051,8 +1114,8 @@ #endif #if (NTDDI_VERSION >= NTDDI_WIN2K) WCHAR szTip[128]; @@ -292,7 +289,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h WCHAR szInfo[256]; #ifndef _SHELL_EXPORTS_INTERNALAPI_H_ union { -@@ -1061,7 +1127,7 @@ +@@ -1061,7 +1124,7 @@ } DUMMYUNIONNAME; #endif WCHAR szInfoTitle[64]; @@ -301,7 +298,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif #if (NTDDI_VERSION >= NTDDI_WINXP) GUID guidItem; -@@ -1125,6 +1191,14 @@ +@@ -1125,6 +1188,14 @@ #define NIM_DELETE 0x00000002 #define NIM_SETFOCUS 0x00000003 #define NIM_SETVERSION 0x00000004 @@ -316,7 +313,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h // set NOTIFYICONDATA.uVersion with 0, 3 or 4 -@@ -1145,10 +1219,26 @@ +@@ -1145,10 +1216,26 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) #define NIF_REALTIME 0x00000040 #define NIF_SHOWTIP 0x00000080 @@ -343,7 +340,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h // says this is the source of a shared icon -@@ -1171,6 +1261,18 @@ +@@ -1171,6 +1258,18 @@ #if (NTDDI_VERSION >= NTDDI_WIN7) #define NIIF_RESPECT_QUIET_TIME 0x00000080 @@ -362,7 +359,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif // (NTDDI_VERSION >= NTDDI_WIN7) -@@ -1182,8 +1284,10 @@ +@@ -1182,8 +1281,10 @@ } NOTIFYICONIDENTIFIER, *PNOTIFYICONIDENTIFIER; @@ -375,7 +372,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #ifdef UNICODE #define Shell_NotifyIcon Shell_NotifyIconW #else -@@ -1191,6 +1295,7 @@ +@@ -1191,6 +1292,7 @@ #endif // !UNICODE #if (NTDDI_VERSION >= NTDDI_WIN7) @@ -383,7 +380,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI Shell_NotifyIconGetRect(_In_ const NOTIFYICONIDENTIFIER* identifier, _Out_ RECT* iconLocation); #endif // (NTDDI_VERSION >= NTDDI_WIN7) -@@ -1269,10 +1374,34 @@ +@@ -1269,10 +1371,34 @@ #define SHGFI_OVERLAYINDEX 0x000000040 // Get the index of the overlay // in the upper 8 bits of the iIcon @@ -422,7 +419,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #ifdef UNICODE #define SHGetFileInfo SHGetFileInfoW #else -@@ -1297,6 +1426,17 @@ +@@ -1297,6 +1423,17 @@ #define SHGSI_LARGEICON SHGFI_LARGEICON #define SHGSI_SMALLICON SHGFI_SMALLICON #define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE @@ -440,7 +437,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h // Shell icons -@@ -1404,7 +1544,8 @@ +@@ -1404,7 +1541,8 @@ #define SIID_INVALID ((SHSTOCKICONID)-1) @@ -450,7 +447,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif // (NTDDI_VERSION >= NTDDI_VISTA) -@@ -1412,8 +1553,10 @@ +@@ -1412,8 +1550,10 @@ #if (NTDDI_VERSION >= NTDDI_WIN2K) #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx @@ -461,7 +458,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(BOOL) SHGetDiskFreeSpaceExW(_In_ LPCWSTR pszDirectoryName, _Out_opt_ ULARGE_INTEGER* pulFreeBytesAvailableToCaller, _Out_opt_ ULARGE_INTEGER* pulTotalNumberOfBytes, _Out_opt_ ULARGE_INTEGER* pulTotalNumberOfFreeBytes); #ifdef UNICODE -@@ -1422,8 +1565,10 @@ +@@ -1422,8 +1562,10 @@ #define SHGetDiskFreeSpaceEx SHGetDiskFreeSpaceExA #endif // !UNICODE _Success_(return != 0) @@ -472,7 +469,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(BOOL) SHGetNewLinkInfoW(_In_ LPCWSTR pszLinkTo, _In_ LPCWSTR pszDir, _Out_writes_(MAX_PATH) LPWSTR pszName, _Out_ BOOL *pfMustCopy, _In_ UINT uFlags); #ifdef UNICODE #define SHGetNewLinkInfo SHGetNewLinkInfoW -@@ -1456,7 +1601,9 @@ +@@ -1456,7 +1598,9 @@ // deprecated, instead invoke verbs on printers/netprinters using IContextMenu or ShellExecute() @@ -482,7 +479,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(BOOL) SHInvokePrinterCommandW(_In_opt_ HWND hwnd, UINT uAction, _In_ LPCWSTR lpBuf1, _In_opt_ LPCWSTR lpBuf2, BOOL fModal); #ifdef UNICODE #define SHInvokePrinterCommand SHInvokePrinterCommandW -@@ -1509,6 +1656,7 @@ +@@ -1509,6 +1653,7 @@ // Returns: // S_OK // @@ -490,7 +487,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI SHLoadNonloadedIconOverlayIdentifiers(void); // -@@ -1530,6 +1678,7 @@ +@@ -1530,6 +1675,7 @@ // Both OFFLINE_STATUS_LOCAL and OFFLINE_STATUS_REMOTE may be returned, // indicating "open in both places." This is common when the server is online. // @@ -498,7 +495,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI SHIsFileAvailableOffline(_In_ PCWSTR pwszPath, _Out_opt_ DWORD *pdwStatus); #define OFFLINE_STATUS_LOCAL 0x0001 // If open, it's open locally -@@ -1543,13 +1692,16 @@ +@@ -1543,13 +1689,16 @@ #if (NTDDI_VERSION >= NTDDI_WINXP) // sets the specified path to use the string resource // as the UI instead of the file system name @@ -515,7 +512,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI SHGetLocalizedName(_In_ PCWSTR pszPath, _Out_writes_(cch) PWSTR pszResModule, UINT cch, _Out_ int *pidsRes); #endif // (NTDDI_VERSION >= NTDDI_VISTA) -@@ -1579,18 +1731,22 @@ +@@ -1579,18 +1728,22 @@ #define LWSTDAPIV_(type) STDAPIV_(type) #endif @@ -540,7 +537,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #ifdef UNICODE #define ShellMessageBox ShellMessageBoxW #else -@@ -1610,7 +1766,9 @@ +@@ -1610,7 +1763,9 @@ #if _WIN32_IE >= 0x0600 @@ -550,7 +547,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h STDAPI SHEnumerateUnreadMailAccountsW(_In_opt_ HKEY hKeyUser, DWORD dwIndex, _Out_writes_(cchMailAddress) LPWSTR pszMailAddress, int cchMailAddress); #ifdef UNICODE #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsW -@@ -1618,6 +1776,7 @@ +@@ -1618,6 +1773,7 @@ #define SHEnumerateUnreadMailAccounts SHEnumerateUnreadMailAccountsA #endif // !UNICODE STDAPI SHGetUnreadMailCountA(_In_opt_ HKEY hKeyUser, _In_opt_ LPCSTR pszMailAddress, _Out_opt_ DWORD *pdwCount, _Out_opt_ FILETIME *pFileTime, _Out_writes_opt_(cchShellExecuteCommand) LPSTR pszShellExecuteCommand, int cchShellExecuteCommand); @@ -558,7 +555,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h STDAPI SHGetUnreadMailCountW(_In_opt_ HKEY hKeyUser, _In_opt_ LPCWSTR pszMailAddress, _Out_opt_ DWORD *pdwCount, _Out_opt_ FILETIME *pFileTime, _Out_writes_opt_(cchShellExecuteCommand) LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand); #ifdef UNICODE #define SHGetUnreadMailCount SHGetUnreadMailCountW -@@ -1625,6 +1784,7 @@ +@@ -1625,6 +1781,7 @@ #define SHGetUnreadMailCount SHGetUnreadMailCountA #endif // !UNICODE STDAPI SHSetUnreadMailCountA(_In_ LPCSTR pszMailAddress, DWORD dwCount, _In_ LPCSTR pszShellExecuteCommand); @@ -566,7 +563,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h STDAPI SHSetUnreadMailCountW(_In_ LPCWSTR pszMailAddress, DWORD dwCount, _In_ LPCWSTR pszShellExecuteCommand); #ifdef UNICODE #define SHSetUnreadMailCount SHSetUnreadMailCountW -@@ -1635,13 +1795,15 @@ +@@ -1635,13 +1792,15 @@ #endif /* _WIN32_IE >= 0x0600 */ #if (_WIN32_IE >= 0x0601) @@ -583,7 +580,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h #endif // (NTDDI_VERSION >= NTDDI_WINXP) -@@ -1689,6 +1851,7 @@ +@@ -1689,6 +1848,7 @@ // Instantiation #define WC_NETADDRESS L"msctls_netaddress" @@ -591,7 +588,7 @@ diff --git a/um/shellapi.h b/um/shellapi.h SHSTDAPI_(BOOL) InitNetworkAddressControl(void); // Address Control Messages -@@ -1730,6 +1893,7 @@ +@@ -1730,6 +1890,7 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) // Returns the type of media (CD, DVD, Blank, etc) that is in the drive. // dwMediaContent is set to a combination of ARCONTENT flags. diff --git a/generation/WinSDK/patches/um/shlobj_core.h.patch b/generation/WinSDK/patches/um/shlobj_core.h.patch index 3a2137ab6..272432e1c 100644 --- a/generation/WinSDK/patches/um/shlobj_core.h.patch +++ b/generation/WinSDK/patches/um/shlobj_core.h.patch @@ -852,7 +852,7 @@ index 04174f87..803bb767 100644 // // Special value of fmtID which means "use the default format" -@@ -2455,24 +2732,42 @@ SHSTDAPI_(DWORD) SHFormatDrive(_In_ HWND hwnd, UINT drive, UINT fmtID, UINT opti +@@ -2455,24 +2732,39 @@ SHSTDAPI_(DWORD) SHFormatDrive(_In_ HWND hwnd, UINT drive, UINT fmtID, UINT opti #define SHFMT_ID_DEFAULT 0xFFFF +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) +_Win32_Enum_(SHFMT_ID, unsigned int, SHFMT_ID_DEFAULT); @@ -883,9 +883,6 @@ index 04174f87..803bb767 100644 #define HPSXA_DEFINED +#include DECLARE_HANDLE( HPSXA ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPSXA HPSXA; -+#endif #endif +_Win32_SupportedOS_WindowsXP_ WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray(_In_ HPSXA hpsxa); @@ -895,7 +892,7 @@ index 04174f87..803bb767 100644 WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray(_In_ HPSXA hpsxa, UINT uPageID, _In_ LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam); // shell restriction values, parameter for SHRestricted() -@@ -2698,32 +2993,44 @@ typedef enum RESTRICTIONS +@@ -2698,32 +2990,44 @@ typedef enum RESTRICTIONS #endif // NTDDI_VISTA #endif // NTDDI_WINXPSP2 } RESTRICTIONS; @@ -942,7 +939,7 @@ index 04174f87..803bb767 100644 _Out_opt_ HICON *phiconLarge, _Out_opt_ HICON *phiconSmall, UINT nIconSize); #ifdef UNICODE #define SHDefExtractIcon SHDefExtractIconW -@@ -2734,7 +3041,11 @@ SHSTDAPI SHDefExtractIconW(_In_ LPCWSTR pszIconFile, int iIndex, UINT uFlags, +@@ -2734,7 +3038,11 @@ SHSTDAPI SHDefExtractIconW(_In_ LPCWSTR pszIconFile, int iIndex, UINT uFlags, // Elevation // OpenAsInfo flags @@ -955,7 +952,7 @@ index 04174f87..803bb767 100644 OAIF_ALLOW_REGISTRATION = 0x00000001, // enable the "always use this file" checkbox (NOTE if you don't pass this, it will be disabled) OAIF_REGISTER_EXT = 0x00000002, // do the registration after the user hits "ok" OAIF_EXEC = 0x00000004, // execute file after registering -@@ -2765,13 +3076,18 @@ typedef struct _openasinfo +@@ -2765,13 +3073,18 @@ typedef struct _openasinfo #include /* Return to byte packing */ #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -974,7 +971,7 @@ index 04174f87..803bb767 100644 SHSTDAPI_(int) Shell_GetCachedImageIndexW(_In_ LPCWSTR pszIconPath, int iIconIndex, UINT uIconFlags); #ifdef UNICODE #define Shell_GetCachedImageIndex Shell_GetCachedImageIndexW -@@ -2782,14 +3098,25 @@ SHSTDAPI_(int) Shell_GetCachedImageIndexW(_In_ LPCWSTR pszIconPath, int iIconIn +@@ -2782,14 +3095,25 @@ SHSTDAPI_(int) Shell_GetCachedImageIndexW(_In_ LPCWSTR pszIconPath, int iIconIn #define VALIDATEUNC_CONNECT 0x0001 // connect a drive letter #define VALIDATEUNC_NOUI 0x0002 // don't bring up UI #define VALIDATEUNC_PRINT 0x0004 // validate as print share instead of disk share @@ -1001,7 +998,7 @@ index 04174f87..803bb767 100644 #define PIFNAMESIZE 30 #define PIFSTARTLOCSIZE 63 #define PIFDEFPATHSIZE 64 -@@ -2817,14 +3144,21 @@ typedef UNALIGNED PROPPRG *PPROPPRG; +@@ -2817,14 +3141,21 @@ typedef UNALIGNED PROPPRG *PPROPPRG; typedef UNALIGNED PROPPRG FAR *LPPROPPRG; typedef const UNALIGNED PROPPRG FAR *LPCPROPPRG; @@ -1023,7 +1020,7 @@ index 04174f87..803bb767 100644 SHSTDAPI_(LRESULT) SHShellFolderView_Message(_In_ HWND hwndMain, UINT uMsg, LPARAM lParam); // -@@ -2834,9 +3168,12 @@ SHSTDAPI_(LRESULT) SHShellFolderView_Message(_In_ HWND hwndMain, UINT uMsg, LPAR +@@ -2834,9 +3165,12 @@ SHSTDAPI_(LRESULT) SHShellFolderView_Message(_In_ HWND hwndMain, UINT uMsg, LPAR #undef INTERFACE #define INTERFACE IShellFolderViewCB @@ -1037,7 +1034,7 @@ index 04174f87..803bb767 100644 }; #include -@@ -2918,6 +3255,39 @@ typedef struct _ITEMSPACING +@@ -2918,6 +3252,39 @@ typedef struct _ITEMSPACING #define SFVM_GETPANE 59 // Pane ID DWORD* #define SFVM_GETHELPTOPIC 63 // - SFVM_HELPTOPIC_DATA * #define SFVM_GETANIMATION 68 // HINSTANCE * WCHAR * @@ -1077,7 +1074,7 @@ index 04174f87..803bb767 100644 + // IShellFolderView // -@@ -2946,10 +3316,17 @@ typedef struct _ITEMSPACING +@@ -2946,10 +3313,17 @@ typedef struct _ITEMSPACING #define SFVS_SELECT_NONE 0x0 // unselect all #define SFVS_SELECT_ALLITEMS 0x1 // select all #define SFVS_SELECT_INVERT 0x2 // Invert the selection @@ -1095,7 +1092,7 @@ index 04174f87..803bb767 100644 DECLARE_INTERFACE_IID_(IShellFolderView, IUnknown, "37A378C0-F82D-11CE-AE65-08002B2E1262") { STDMETHOD(Rearrange) (THIS_ LPARAM lParamSort) PURE; // use IFolderView2::SetSortColumns -@@ -2978,7 +3355,7 @@ DECLARE_INTERFACE_IID_(IShellFolderView, IUnknown, "37A378C0-F82D-11CE-AE65-0800 +@@ -2978,7 +3352,7 @@ DECLARE_INTERFACE_IID_(IShellFolderView, IUnknown, "37A378C0-F82D-11CE-AE65-0800 STDMETHOD(SetPoints) (THIS_ _In_ IDataObject *pDataObject) PURE; // copies points of current selection in to data object. Call is not needed if drag operation was originated by the IShellView. STDMETHOD(GetItemSpacing) (THIS_ _Out_ ITEMSPACING *pSpacing) PURE; // use IFolderView::GetSpacing instead. GetItemSpacing returns the spacing for small and large view modes only, returning S_OK if the current view mode is is positionable, S_FALSE otherwise. STDMETHOD(SetCallback) (THIS_ _In_opt_ IShellFolderViewCB* pNewCB, _Outptr_result_maybenull_ IShellFolderViewCB** ppOldCB) PURE; // replace the IShellFolderViewCB that the IShellView uses @@ -1104,7 +1101,7 @@ index 04174f87..803bb767 100644 STDMETHOD(QuerySupport) (THIS_ _Inout_ UINT * pdwSupport ) PURE; // does nothing, returns S_OK. STDMETHOD(SetAutomationObject)(THIS_ _In_opt_ IDispatch* pdisp) PURE; // replaces the IShellView's internal automation object. }; -@@ -2992,10 +3369,12 @@ typedef struct _SFV_CREATE +@@ -2992,10 +3366,12 @@ typedef struct _SFV_CREATE IShellFolderViewCB* psfvcb; // No callback if NULL } SFV_CREATE; @@ -1118,7 +1115,7 @@ index 04174f87..803bb767 100644 SHSTDAPI CDefFolderMenu_Create2(_In_opt_ PCIDLIST_ABSOLUTE pidlFolder, _In_opt_ HWND hwnd, UINT cidl, _In_reads_opt_(cidl) PCUITEMID_CHILD_ARRAY apidl, _In_opt_ IShellFolder *psf, _In_opt_ LPFNDFMCALLBACK pfn, -@@ -3017,7 +3396,8 @@ typedef struct { +@@ -3017,7 +3393,8 @@ typedef struct { // used in the implemetnation of ::GetUIObjectOf() #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -1128,7 +1125,7 @@ index 04174f87..803bb767 100644 #endif // NTDDI_VISTA // structure for lParam of DFM_INFOKECOMMANDEX -@@ -3061,7 +3441,14 @@ +@@ -3061,7 +3438,14 @@ #define DFM_GETVERBW 15 // idCmd,cchMax pszText -Unicode #define DFM_GETVERBA 16 // idCmd,cchMax pszText -Ansi #define DFM_MERGECONTEXTMENU_BOTTOM 17 // uFlags LPQCMINFO @@ -1143,7 +1140,7 @@ index 04174f87..803bb767 100644 // Commands from DFM_INVOKECOMMAND when strings are passed in #define DFM_CMD_DELETE ((UINT)-1) -@@ -3076,7 +3463,14 @@ +@@ -3076,7 +3460,14 @@ #define DFM_CMD_PASTELINK ((UINT)-10) #define DFM_CMD_PASTESPECIAL ((UINT)-11) #define DFM_CMD_MODALPROP ((UINT)-12) @@ -1158,7 +1155,7 @@ index 04174f87..803bb767 100644 typedef HRESULT (CALLBACK * LPFNVIEWCALLBACK)(_In_ IShellView *psvOuter, -@@ -3100,7 +3494,9 @@ typedef struct _CSFV +@@ -3100,7 +3491,9 @@ typedef struct _CSFV #include /* Return to byte packing */ @@ -1168,7 +1165,7 @@ index 04174f87..803bb767 100644 SHSTDAPI SHCreateShellFolderViewEx(_In_ CSFV *pcsfv, _Outptr_ IShellView **ppsv); -@@ -3131,7 +3527,13 @@ +@@ -3131,7 +3524,13 @@ #define PID_IS_AUTHOR 11 #define PID_IS_DESCRIPTION 12 #define PID_IS_COMMENT 13 @@ -1182,7 +1179,7 @@ index 04174f87..803bb767 100644 // PROPIDs for Internet Sites (FMTID_InternetSite) to be used with // IPropertySetStorage/IPropertyStorage -@@ -3176,25 +3578,45 @@ +@@ -3176,25 +3575,45 @@ #define PID_INTSITE_TRACKING 19 #define PID_INTSITE_ICONINDEX 20 #define PID_INTSITE_ICONFILE 21 @@ -1228,7 +1225,7 @@ index 04174f87..803bb767 100644 //////////////////////////////////////////////////////////////////// // -@@ -3313,7 +3735,8 @@ typedef struct { +@@ -3313,7 +3732,8 @@ typedef struct { #define SHELLSTATE_SIZE_IE4 FIELD_OFFSET(SHELLSTATE,uNotUsed) #define SHELLSTATE_SIZE_WIN2K sizeof(SHELLSTATE) @@ -1238,7 +1235,7 @@ index 04174f87..803bb767 100644 // // SysFiles are these windows special files: -@@ -3373,17 +3796,49 @@ typedef struct { +@@ -3373,17 +3793,49 @@ typedef struct { #define SSF_WEBVIEW 0x00020000 #define SSF_SHOWSUPERHIDDEN 0x00040000 #define SSF_SEPPROCESS 0x00080000 @@ -1288,7 +1285,7 @@ index 04174f87..803bb767 100644 +#endif #endif // NTDDI_VISTA -@@ -3394,24 +3849,29 @@ typedef struct { +@@ -3394,24 +3846,29 @@ typedef struct { // When these settings change, a WM_SETTINGCHANGE message is sent // with the string lParam value of "ShellState". // @@ -1322,7 +1319,7 @@ index 04174f87..803bb767 100644 #endif // NTDDI_VISTA -@@ -3445,6 +3905,7 @@ __inline BOOL IDListContainerIsConsistent(_In_reads_bytes_(cbAlloc) PCUIDLIST_RE +@@ -3445,6 +3902,7 @@ __inline BOOL IDListContainerIsConsistent(_In_reads_bytes_(cbAlloc) PCUIDLIST_RE // psfgaoOut is optional for SFGAO attributes // #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -1330,7 +1327,7 @@ index 04174f87..803bb767 100644 SHSTDAPI SHParseDisplayName(_In_ PCWSTR pszName, _In_opt_ IBindCtx *pbc, _Outptr_ PIDLIST_ABSOLUTE *ppidl, _In_ SFGAOF sfgaoIn, _Out_opt_ SFGAOF *psfgaoOut); #endif // NTDDI_WINXP -@@ -3475,7 +3936,9 @@ SHSTDAPI SHParseDisplayName(_In_ PCWSTR pszName, _In_opt_ IBindCtx *pbc, _Outptr +@@ -3475,7 +3933,9 @@ SHSTDAPI SHParseDisplayName(_In_ PCWSTR pszName, _In_opt_ IBindCtx *pbc, _Outptr #endif // NTDDI_WINXP @@ -1340,7 +1337,7 @@ index 04174f87..803bb767 100644 SHSTDAPI SHPathPrepareForWriteW(_In_opt_ HWND hwnd, _In_opt_ IUnknown *punkEnableModless, _In_ LPCWSTR pszPath, DWORD dwFlags); #ifdef UNICODE #define SHPathPrepareForWrite SHPathPrepareForWriteW -@@ -3491,6 +3954,9 @@ SHSTDAPI SHPathPrepareForWriteW(_In_opt_ HWND hwnd, _In_opt_ IUnknown *punkEnabl +@@ -3491,6 +3951,9 @@ SHSTDAPI SHPathPrepareForWriteW(_In_opt_ HWND hwnd, _In_opt_ IUnknown *punkEnabl //-------------------------------------------------------------------------- #undef INTERFACE #define INTERFACE INamedPropertyBag @@ -1350,7 +1347,7 @@ index 04174f87..803bb767 100644 DECLARE_INTERFACE_IID_(INamedPropertyBag, IUnknown, "FB700430-952C-11d1-946F-000000000000") { STDMETHOD(ReadPropertyNPB) (THIS_ _In_ PCWSTR pszBagname, -@@ -3521,6 +3987,7 @@ DECLARE_INTERFACE_IID_(INamedPropertyBag, IUnknown, "FB700430-952C-11d1-946F-000 +@@ -3521,6 +3984,7 @@ DECLARE_INTERFACE_IID_(INamedPropertyBag, IUnknown, "FB700430-952C-11d1-946F-000 // IPropertyStorage** ppstg, // Address to receive requested vtable // puCodePage // Optional address to receive the code page ID for the set. // @@ -1358,7 +1355,7 @@ index 04174f87..803bb767 100644 SHSTDAPI SHPropStgCreate(_In_ IPropertySetStorage* psstg, _In_ REFFMTID fmtid, _In_opt_ const CLSID *pclsid, DWORD grfFlags, DWORD grfMode, DWORD dwDisposition, _Outptr_ IPropertyStorage** ppstg, _Out_opt_ UINT* puCodePage); -@@ -3536,6 +4003,7 @@ SHSTDAPI SHPropStgCreate(_In_ IPropertySetStorage* psstg, _In_ REFFMTID fmtid, _ +@@ -3536,6 +4000,7 @@ SHSTDAPI SHPropStgCreate(_In_ IPropertySetStorage* psstg, _In_ REFFMTID fmtid, _ // rgpspec, //Array of the properties to be read // rgvar //Array of PROPVARIANTs containing the property values on return // @@ -1366,7 +1363,7 @@ index 04174f87..803bb767 100644 SHSTDAPI SHPropStgReadMultiple(_In_ IPropertyStorage* pps, UINT uCodePage, ULONG cpspec, _In_reads_(cpspec) PROPSPEC const rgpspec[], _Out_writes_all_(cpspec) PROPVARIANT rgvar[] ); -@@ -3552,35 +4020,43 @@ SHSTDAPI SHPropStgReadMultiple(_In_ IPropertyStorage* pps, UINT uCodePage, ULONG +@@ -3552,35 +4017,43 @@ SHSTDAPI SHPropStgReadMultiple(_In_ IPropertyStorage* pps, UINT uCodePage, ULONG // rgvar, // Array of PROPVARIANT values // propidNameFirst // Minimum value for property identifiers. This value should be >= PID_FIRST_USABLE // diff --git a/generation/WinSDK/patches/um/shobjidl_core.idl.patch b/generation/WinSDK/patches/um/shobjidl_core.idl.patch index 4af31b48f..3a2a02a7c 100644 --- a/generation/WinSDK/patches/um/shobjidl_core.idl.patch +++ b/generation/WinSDK/patches/um/shobjidl_core.idl.patch @@ -866,15 +866,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(602D4995-B13A-429b-A66E-1935E44F4317), object, -@@ -4814,6 +4995,7 @@ - - cpp_quote("#ifdef MIDL_PASS") - typedef IUnknown* HIMAGELIST; -+cpp_quote("/* Win32Metadata: type ::HIMAGELIST => NativeTypedef */") - cpp_quote("#endif") - - typedef [v1_enum] enum THUMBBUTTONFLAGS -@@ -4852,6 +5034,7 @@ +@@ -4852,6 +5033,7 @@ cpp_quote("#define THBN_CLICKED 0x1800") @@ -882,7 +874,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf), object, -@@ -4922,6 +5105,7 @@ +@@ -4922,6 +5104,7 @@ [in] RECT *prcClip); } @@ -890,7 +882,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(c43dc798-95d1-4bea-9030-bb99e2983a1a), object, -@@ -4949,6 +5133,7 @@ +@@ -4949,6 +5132,7 @@ cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") // Event sink interface for IExplorerBrowser events @@ -898,7 +890,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(361bbdc7-e6ee-4e13-be58-58e2240c810f), // IID_IExplorerBrowserEvents object -@@ -5004,6 +5189,7 @@ +@@ -5004,6 +5188,7 @@ // or host a view of a data object. Use either BrowseToIDList or BrowseToObject to navigate // the browser or use FillWithDataObject to create the view on the data object. // @@ -906,7 +898,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(dfd3b6b5-c10c-4be9-85f6-a66969f402f6), object, -@@ -5060,6 +5246,7 @@ +@@ -5060,6 +5245,7 @@ cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") // Unknown Object Enumerator @@ -914,7 +906,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(2c1c7e2e-2d0e-4059-831e-1e6f82335c2e), object, -@@ -5101,6 +5288,7 @@ +@@ -5101,6 +5287,7 @@ typedef DWORD OPPROGDLGF; // Shell Operations Engine Progress Dialog @@ -922,7 +914,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(0C9FB851-E5C9-43EB-A370-F0677B13874C), object, -@@ -5164,6 +5352,7 @@ +@@ -5164,6 +5351,7 @@ } // Handles the thread ID and message information used after cancelling progress UI @@ -930,7 +922,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(f5b0bf81-8cb5-4b1b-9449-1a159e0c733c), object, -@@ -5200,8 +5389,11 @@ +@@ -5200,8 +5388,11 @@ cpp_quote("#define FOFX_ADDUNDORECORD 0x20000000 // This is a user-invoked operation, and should be placed on the undo stack. This flag is preferred to FOF_ALLOWUNDO") cpp_quote("#define FOFX_COPYASDOWNLOAD 0x40000000 // Show Downloading instead of Copying") cpp_quote("#define FOFX_DONTDISPLAYLOCATIONS 0x80000000 // Hides the locations line in the progress dialog") @@ -942,7 +934,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(947aab5f-0a5c-4c13-b4d6-4bf7836fc9f8), object, -@@ -5302,6 +5494,7 @@ +@@ -5302,6 +5493,7 @@ } cpp_quote("#endif // (NTDDI_VERSION >= NTDDI_WIN10_RS4)") @@ -950,7 +942,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(a6087428-3be3-4d73-b308-7c04a540bf1a), object, -@@ -5319,6 +5512,7 @@ +@@ -5319,6 +5511,7 @@ cpp_quote("#endif // (_WIN32_IE >= _WIN32_IE_IE70)") // shell name space walking callback interface"), @@ -958,7 +950,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(d92995f8-cf5e-4a76-bf59-ead39ea2b97e), ] -@@ -5350,6 +5544,7 @@ +@@ -5350,6 +5543,7 @@ cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") @@ -966,7 +958,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(7ac7492b-c38e-438a-87db-68737844ff70), ] -@@ -5361,6 +5556,7 @@ +@@ -5361,6 +5555,7 @@ cpp_quote("#endif // (_WIN32_IE >= _WIN32_IE_IE70)") // shell name space walk, used to expand data objects, views or recurse folders @@ -974,7 +966,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(57ced8a7-3f4a-432c-9350-30f24483f74f), ] -@@ -5423,6 +5619,7 @@ +@@ -5423,6 +5618,7 @@ cpp_quote("#endif // NTDDI_WINXP || (_WIN32_IE >= _WIN32_IE_IE70)") cpp_quote("__inline void FreeIDListArray(_In_reads_(cItems) PIDLIST_RELATIVE *ppidls, UINT cItems)") @@ -982,7 +974,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{ ") cpp_quote(" UINT i; ") cpp_quote(" for (i = 0; i < cItems; i++) ") -@@ -5433,6 +5630,7 @@ +@@ -5433,6 +5629,7 @@ cpp_quote("} ") cpp_quote("#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)") cpp_quote("__inline void FreeIDListArrayFull(_In_reads_(cItems) PIDLIST_ABSOLUTE *ppidls, UINT cItems)") @@ -990,7 +982,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{ ") cpp_quote(" for (UINT i = 0; i < cItems; i++) ") cpp_quote(" { ") -@@ -5441,6 +5639,7 @@ +@@ -5441,6 +5638,7 @@ cpp_quote(" CoTaskMemFree(ppidls); ") cpp_quote("} ") cpp_quote("__inline void FreeIDListArrayChild(_In_reads_(cItems) PITEMID_CHILD *ppidls, UINT cItems)") @@ -998,7 +990,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{ ") cpp_quote(" for (UINT i = 0; i < cItems; i++) ") cpp_quote(" { ") -@@ -5536,6 +5735,7 @@ +@@ -5536,6 +5734,7 @@ cpp_quote("#define SID_SBandSite IID_IBandSite") cpp_quote("#define CGID_BandSite IID_IBandSite") @@ -1006,7 +998,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(4CF504B0-DE96-11D0-8B3F-00A0C911E8E5) -@@ -5584,6 +5784,7 @@ +@@ -5584,6 +5783,7 @@ cpp_quote("#if (NTDDI_VERSION >= NTDDI_WINXP)") // simple interface for showing a window @@ -1014,7 +1006,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(b4db1657-70d7-485e-8e3e-6fcb5a5c1802), object, -@@ -5600,6 +5801,7 @@ +@@ -5600,6 +5800,7 @@ // New for XP, but used by downlevel code //cpp_quote("#if (NTDDI_VERSION >= NTDDI_WINXP)") @@ -1022,7 +1014,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(0811AEBE-0B87-4C54-9E72-548CF649016B), object, -@@ -5651,6 +5853,7 @@ +@@ -5651,6 +5852,7 @@ // //------------------------------------------------------------------------- @@ -1030,7 +1022,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(568804CD-CBD7-11d0-9816-00C04FD91972), object, -@@ -5672,6 +5875,7 @@ +@@ -5672,6 +5874,7 @@ } // callback objects for CRegTreeOptions items @@ -1038,7 +1030,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(A9521922-0812-4d44-9EC3-7FD38C726F3D), local -@@ -5688,6 +5892,7 @@ +@@ -5688,6 +5891,7 @@ cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)") @@ -1046,7 +1038,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(EB0FE173-1A3A-11D0-89B3-00A0C90A90AC), object, -@@ -5729,6 +5934,7 @@ +@@ -5729,6 +5933,7 @@ // object's interface. Set fSet == FALSE to remove the submenu. // //------------------------------------------------------------------------- @@ -1054,7 +1046,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(D1E7AFEB-6A2E-11d0-8C78-00C04FD918B4), object, -@@ -5795,6 +6001,7 @@ +@@ -5795,6 +6000,7 @@ cpp_quote("#define OF_CAP_CANSWITCHTO 0x0001") cpp_quote("#define OF_CAP_CANCLOSE 0x0002") @@ -1062,7 +1054,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(64a1cbf0-3a1a-4461-9158-376969693950), pointer_default(unique) -@@ -5841,6 +6048,7 @@ +@@ -5841,6 +6047,7 @@ // Implemented by a client of the common file dialog browser, // for notification of events within the dialog. // @@ -1070,7 +1062,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(973510db-7d7f-452b-8975-74a85828d354), object, -@@ -5879,6 +6087,7 @@ +@@ -5879,6 +6086,7 @@ // Implemented by the common file dialog browser, used by clients to // initialize, show, and get results from the dialog. // @@ -1078,7 +1070,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(42f85136-db7e-439c-85f1-e4075d135fc8), object, -@@ -5886,6 +6095,9 @@ +@@ -5886,6 +6094,9 @@ ] interface IFileDialog : IModalWindow { @@ -1088,7 +1080,7 @@ index 3074ba74..a0a1b36c 100644 [v1_enum] enum _FILEOPENDIALOGOPTIONS { FOS_OVERWRITEPROMPT = 0x00000002, // (on by default in the save dialog) -@@ -5915,6 +6127,9 @@ +@@ -5915,6 +6126,9 @@ FOS_FORCEPREVIEWPANEON = 0x40000000, FOS_SUPPORTSTREAMABLEITEMS = 0x80000000, // Indicates the caller will use BHID_Stream to open contents, no need to download the file }; @@ -1098,7 +1090,7 @@ index 3074ba74..a0a1b36c 100644 typedef DWORD FILEOPENDIALOGOPTIONS; HRESULT SetFileTypes( -@@ -5973,6 +6188,7 @@ +@@ -5973,6 +6187,7 @@ // // Additional methods specific to the file save dialog // @@ -1106,7 +1098,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(84bccd23-5fde-4cdb-aea4-af64b83d78ab), object, -@@ -6001,6 +6217,7 @@ +@@ -6001,6 +6216,7 @@ // Additional methods specific to the file open dialog // (adding multiselect capability) // @@ -1114,7 +1106,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(d57c7288-d4ad-4768-be02-9d969532d960), object, -@@ -6035,6 +6252,7 @@ +@@ -6035,6 +6251,7 @@ // - Container controls have the notion of a "selected item", with the exception of the toolsmenu. // - radiobuttongroups behave exactly like comboboxes. The radio buttons within the group are treated exactly // like items in a combobox, one of which can be the "selected item". @@ -1122,7 +1114,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(e6fdd21a-163f-4975-9c8c-a69f1ba37034), object, -@@ -6175,6 +6393,7 @@ +@@ -6175,6 +6392,7 @@ } ASSOCIATIONTYPE; // Application File Extension and URL Protocol Registration @@ -1130,7 +1122,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(4e530b0a-e611-4c77-a3ac-9031d022281b), -@@ -6213,6 +6432,8 @@ +@@ -6213,6 +6431,8 @@ // SHCreateAssociationRegistration can be used to create an IApplicationAssociationRegistration cpp_quote("SHSTDAPI SHCreateAssociationRegistration(_In_ REFIID riid, _Outptr_ void **ppv);") @@ -1139,7 +1131,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("#endif // NTDDI_VISTA") -@@ -6242,6 +6463,7 @@ +@@ -6242,6 +6462,7 @@ cpp_quote("typedef UNALIGNED DELEGATEITEMID *PDELEGATEITEMID;") // shell name space delegate folder interface @@ -1147,7 +1139,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(ADD8BA80-002B-11D0-8F0F-00C04FD7D062), object, -@@ -6273,6 +6495,7 @@ +@@ -6273,6 +6494,7 @@ cpp_quote("// If the function fails, pdwOptions needs to be filled in with BFO_NONE.") cpp_quote("//") @@ -1155,7 +1147,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(10DF43C8-1DBE-11d3-8B34-006097DF5BD4), object, -@@ -6337,6 +6560,7 @@ +@@ -6337,6 +6559,7 @@ // Popup manager interface for WebOC hosts and Trident. cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager") @@ -1163,7 +1155,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(D2BC4C84-3F72-4a52-A604-7BCBF3982CBB), object, -@@ -6356,6 +6580,7 @@ +@@ -6356,6 +6579,7 @@ //------------------------------------------------------------------------- // IAttachmentExecute @@ -1171,7 +1163,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(73db1241-1e85-4581-8e4f-a81e1d0f8c57), // IID_IAttachmentExecute -@@ -6619,6 +6844,7 @@ +@@ -6619,6 +6843,7 @@ cpp_quote("#define SMAE_VALID 0x00000007") cpp_quote("#endif // _WIN32_IE_IE70") @@ -1179,7 +1171,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(4CA300A1-9B8D-11d1-8B22-00C04FD918D0), object, -@@ -6666,6 +6892,7 @@ +@@ -6666,6 +6891,7 @@ cpp_quote("#define SMINV_REFRESH 0x00000001") cpp_quote("#define SMINV_ID 0x00000008") @@ -1187,7 +1179,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(EE1F7637-E138-11d1-8379-00C04FD918D0), object, -@@ -6805,6 +7032,7 @@ +@@ -6805,6 +7031,7 @@ } KNOWNFOLDER_DEFINITION; // Known Folder Interface @@ -1195,7 +1187,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(3AA7AF7E-9B36-420c-A8E3-F77D4674A488), object, -@@ -6843,6 +7071,7 @@ +@@ -6843,6 +7070,7 @@ } // Known Folder Manager @@ -1203,7 +1195,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(8BE2D872-86AA-4d47-B776-32CCA40C7018), object, -@@ -6915,6 +7144,7 @@ +@@ -6915,6 +7143,7 @@ // use this to free the allocated fields in the result from IKnownFolderManager::GetFolderDefinition(&kfd) cpp_quote("__inline void FreeKnownFolderDefinitionFields(_In_ KNOWNFOLDER_DEFINITION *pKFD)") @@ -1211,7 +1203,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" CoTaskMemFree(pKFD->pszName);") cpp_quote(" CoTaskMemFree(pKFD->pszDescription);") -@@ -6946,6 +7176,7 @@ +@@ -6946,6 +7175,7 @@ DEF_SHARE_ID; // Sharing Configuration Manager @@ -1219,7 +1211,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(B4CD448A-9C86-4466-9201-2E62105B87AE) -@@ -6982,6 +7213,7 @@ +@@ -6982,6 +7212,7 @@ // Use with // IShellItem::BindToHandler, BHID_SFObject // IShellFolder::BindToObject @@ -1227,7 +1219,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(a73ce67a-8ab1-44f1-8d43-d2fcbf6b1cd0), -@@ -6996,6 +7228,7 @@ +@@ -6996,6 +7227,7 @@ // Used to obtain the true identity of the item, so it can be // determined if two items actually represent the same item. @@ -1235,7 +1227,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(7d903fca-d6f9-4810-8332-946c0177e247), -@@ -7009,6 +7242,7 @@ +@@ -7009,6 +7241,7 @@ // item is delegating to the underlying "delegate" item. // Unlike IIdentityName, IDelegateItem only "unwraps" one // level of aliasing. @@ -1243,7 +1235,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(3c5a1c94-c951-4cb7-bb6d-3b93f30cce93), -@@ -7020,6 +7254,7 @@ +@@ -7020,6 +7253,7 @@ // If an item represents a snapshot of an item taken at a previous time, // ICurrentItem will let you obtain the current version of the item. @@ -1251,7 +1243,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(240a7174-d653-4a1d-a6d3-d4943cfbfe3d), -@@ -7031,6 +7266,7 @@ +@@ -7031,6 +7265,7 @@ // used to find the transfer object. that is the object that should be // queried and enumerated for copy/move/delete. @@ -1259,7 +1251,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(77f295d5-2d6f-4e19-b8ae-322f3e721ab5), -@@ -7041,6 +7277,7 @@ +@@ -7041,6 +7276,7 @@ } // IDisplayItem provides the item to show UI on (used by the copy engine dialogs) @@ -1267,7 +1259,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(c6fd5997-9f6b-4888-8703-94e80e8cde3f), -@@ -7053,6 +7290,7 @@ +@@ -7053,6 +7289,7 @@ // IViewStateIdentityItem is used to provide a canonical persistence item // This is item for which view customizations will be remembered // (example: the orignal folder item minus the search query) @@ -1275,7 +1267,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(9D264146-A94F-4195-9F9F-3BB12CE0C955), -@@ -7063,6 +7301,7 @@ +@@ -7063,6 +7300,7 @@ } // IPreviewItem provides an item to show in the preview pane @@ -1283,7 +1275,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(36149969-0A8F-49c8-8B00-4AECB20222FB), -@@ -7074,6 +7313,7 @@ +@@ -7074,6 +7312,7 @@ cpp_quote("#endif // NTDDI_VISTA") @@ -1291,7 +1283,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(8a87781b-39a7-4a1f-aab3-a39b9c34a7d9), object, -@@ -7090,6 +7330,7 @@ +@@ -7090,6 +7329,7 @@ // A service implemented by callers of ShellExecute that lets them modify the inputs // of CreateProcess before it is called. // See SEE_MASK_FLAG_HINST_IS_SITE for details on how to provide this service. @@ -1299,7 +1291,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(F6EF6140-E26F-4D82-bAC4-E9BA5FD239A8), -@@ -7113,6 +7354,7 @@ +@@ -7113,6 +7353,7 @@ [in, string, annotation("_In_")] LPCWSTR pszValue); } @@ -1307,7 +1299,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(c2b937a9-3110-4398-8a56-f34c6342d244), local ] interface ICreatingProcess : IUnknown { -@@ -7164,6 +7406,7 @@ +@@ -7164,6 +7405,7 @@ }; typedef int NMCSAEI_FLAGS; @@ -1315,7 +1307,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(dcb07fdc-3bb5-451c-90be-966644fed7b0), pointer_default(unique) -@@ -7181,6 +7424,7 @@ +@@ -7181,6 +7423,7 @@ cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") @@ -1323,7 +1315,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(71c0d2bc-726d-45cc-a6c0-2e31c1db2159), -@@ -7191,6 +7435,7 @@ +@@ -7191,6 +7434,7 @@ HRESULT Initialize([in] IBindCtx *pbc); } @@ -1331,7 +1323,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(2659B475-EEB8-48b7-8F07-B378810F48CF), -@@ -7207,6 +7452,7 @@ +@@ -7207,6 +7451,7 @@ cpp_quote("#endif // (_WIN32_IE >= _WIN32_IE_IE70)") @@ -1339,7 +1331,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(028212A3-B627-47e9-8856-C14265554E4F) -@@ -7354,6 +7600,7 @@ +@@ -7354,6 +7599,7 @@ //cpp_quote("#endif // NTDDI_VISTA") cpp_quote("#if (NTDDI_VERSION >= NTDDI_VISTA)") @@ -1347,7 +1339,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(e9701183-e6b3-4ff2-8568-813615fec7be), -@@ -7382,6 +7629,7 @@ +@@ -7382,6 +7628,7 @@ cpp_quote("#define E_PREVIEWHANDLER_NOTFOUND _HRESULT_TYPEDEF_(0x86420003L)") // item was not found cpp_quote("#define E_PREVIEWHANDLER_CORRUPT _HRESULT_TYPEDEF_(0x86420004L)") // item was corrupt @@ -1355,7 +1347,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(8895b1c6-b41f-4c1c-a562-0d564250836f), -@@ -7405,6 +7653,7 @@ +@@ -7405,6 +7652,7 @@ HRESULT TranslateAccelerator([in] MSG* pmsg); } @@ -1363,7 +1355,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(fec87aaf-35f9-447a-adb7-20234491401a), -@@ -7439,6 +7688,7 @@ +@@ -7439,6 +7687,7 @@ cpp_quote("#define REFEXPLORERPANE const EXPLORERPANE * __MIDL_CONST") cpp_quote("#endif // __cplusplus") @@ -1371,7 +1363,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(e07010ec-bc17-44c0-97b0-46c7c95b9edc), -@@ -7475,6 +7725,7 @@ +@@ -7475,6 +7724,7 @@ // controls the behavior of the SHCreateDefaultContextMenu() @@ -1379,7 +1371,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(3409E930-5A39-11d1-83FA-00A0C90DC849), -@@ -7495,6 +7746,7 @@ +@@ -7495,6 +7745,7 @@ cpp_quote("#endif // NTDDI_VISTA") @@ -1387,7 +1379,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(41ded17d-d6b3-4261-997d-88c60e4b1d58), -@@ -7529,15 +7781,23 @@ +@@ -7529,15 +7780,23 @@ // "Default" IExtractIcon implementation useful for implementation of ::GetUIObjectOf(IID_IExtractIcon) cpp_quote("STDAPI SHCreateDefaultExtractIcon(_In_ REFIID riid, _Outptr_ void **ppv);") @@ -1411,7 +1403,7 @@ index 3074ba74..a0a1b36c 100644 [v1_enum] enum _EXPCMDSTATE { ECS_ENABLED = 0x00, -@@ -7547,8 +7807,14 @@ +@@ -7547,8 +7806,14 @@ ECS_CHECKED = 0x08, ECS_RADIOCHECK = 0x10, }; @@ -1426,7 +1418,7 @@ index 3074ba74..a0a1b36c 100644 [v1_enum] enum _EXPCMDFLAGS { ECF_DEFAULT = 0x000, -@@ -7563,6 +7829,9 @@ +@@ -7563,6 +7828,9 @@ ECF_TOGGLEABLE = 0x100, // New for NTDDI_WIN8 ECF_AUTOMENUICONS = 0x200, // New for NTDDI_WIN8 }; @@ -1436,7 +1428,7 @@ index 3074ba74..a0a1b36c 100644 typedef DWORD EXPCMDFLAGS; HRESULT GetTitle([in, unique] IShellItemArray *psiItemArray, [out, string] LPWSTR *ppszName); -@@ -7588,6 +7857,7 @@ +@@ -7588,6 +7856,7 @@ HRESULT EnumSubCommands([out] IEnumExplorerCommand **ppEnum); } @@ -1444,7 +1436,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(bddacb60-7657-47ae-8445-d23e1acf82ae), object, -@@ -7603,6 +7873,7 @@ +@@ -7603,6 +7872,7 @@ HRESULT GetState([in] IShellItemArray *psiItemArray, [in] BOOL fOkToBeSlow, [out] EXPCMDSTATE *pCmdState); } @@ -1452,7 +1444,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(85075acf-231f-40ea-9610-d26b7b58f638), -@@ -7623,6 +7894,7 @@ +@@ -7623,6 +7893,7 @@ HRESULT Initialize([in, string] LPCWSTR pszCommandName, [in] IPropertyBag *ppb); } @@ -1460,7 +1452,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(a88826f8-186f-4987-aade-ea0cef8fbfe8), object, -@@ -7648,7 +7920,9 @@ +@@ -7648,7 +7919,9 @@ HRESULT Clone([out] IEnumExplorerCommand **ppenum); } @@ -1471,15 +1463,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(64961751-0835-43c0-8ffe-d57686530e64), pointer_default(unique) -@@ -7669,6 +7943,7 @@ - } - - typedef HANDLE HTHEME; -+cpp_quote("/* Win32Metadata: type ::HTHEME => NativeTypedef */") - - typedef [v1_enum] enum CPVIEW - { -@@ -7678,6 +7953,7 @@ +@@ -7678,6 +7951,7 @@ CPVIEW_HOME = CPVIEW_CATEGORY, } CPVIEW; @@ -1487,7 +1471,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(D11AD862-66DE-4DF4-BF6C-1F5621996AF1), -@@ -7713,6 +7989,7 @@ +@@ -7713,6 +7987,7 @@ cpp_quote("#define STR_FILE_SYS_BIND_DATA_WIN7_FORMAT L\"Win7FileSystemIdList\"") @@ -1495,7 +1479,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(01E18D10-4D8B-11d2-855D-006008059367), -@@ -7725,6 +8002,7 @@ +@@ -7725,6 +8000,7 @@ HRESULT GetFindData([out] WIN32_FIND_DATAW *pfd); } @@ -1503,7 +1487,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(3acf075f-71db-4afa-81f0-3fc4fdf2a5b8), -@@ -7742,6 +8020,7 @@ +@@ -7742,6 +8018,7 @@ cpp_quote("#if (NTDDI_VERSION >= NTDDI_WIN7)") // Custom Destination List @@ -1511,7 +1495,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(6332debf-87b5-4670-90c0-5e57b408a49e), object, -@@ -7776,6 +8055,7 @@ +@@ -7776,6 +8053,7 @@ } // Used to remove items from the automatic destination lists created when apps or the system call SHAddToRecentDocs to report usage of a document. @@ -1519,7 +1503,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(12337d35-94c6-48a0-bce7-6a9c69d4d600), object, -@@ -7794,6 +8074,7 @@ +@@ -7794,6 +8072,7 @@ } // Allows an application to retrieve the most recent and frequent documents opened in that app, as reported via SHAddToRecentDocs @@ -1527,7 +1511,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(3c594f9f-9f30-47a1-979a-c9e83d3d0a06), object, -@@ -7816,6 +8097,7 @@ +@@ -7816,6 +8095,7 @@ } // Provides access to the App User Model ID on objects supporting this value @@ -1535,7 +1519,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(36db0196-9665-46d1-9ba7-d3709eecf9ed), object, -@@ -7839,6 +8121,7 @@ +@@ -7839,6 +8119,7 @@ } // Provides access to the ProgID associated with an object @@ -1543,7 +1527,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(71e806fb-8dee-46fc-bf8c-7748a8a1ae13), object, -@@ -7850,6 +8133,7 @@ +@@ -7850,6 +8131,7 @@ HRESULT GetProgID([out, string] LPWSTR *ppszProgID); } @@ -1551,7 +1535,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(6589b6d2-5f8d-4b9e-b7e0-23cdd9717d8c), local, -@@ -7868,16 +8152,19 @@ +@@ -7868,16 +8150,19 @@ // Sets the User Model AppID for the current process, enabling Windows to retrieve this ID cpp_quote("SHSTDAPI SetCurrentProcessExplicitAppUserModelID(_In_ PCWSTR AppID);") @@ -1571,7 +1555,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(B92B56A9-8B55-4E14-9A89-0199BBB6F93B), object -@@ -7992,6 +8279,7 @@ +@@ -7992,6 +8277,7 @@ cpp_quote("#define HOMEGROUP_SECURITY_GROUP L\"HomeUsers\"") // IHomeGroup @@ -1579,7 +1563,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(7a3bd1d9-35a9-4fb3-a467-f48cac35e2d0), object, -@@ -8014,6 +8302,7 @@ +@@ -8014,6 +8300,7 @@ HRESULT ShowSharingWizard([in] HWND owner, [out] HOMEGROUPSHARINGCHOICES *sharingchoices); } @@ -1587,7 +1571,7 @@ index 3074ba74..a0a1b36c 100644 [ helpstring("Initialize With IPropertyStore"), uuid(C3E12EB5-7D8D-44f8-B6DD-0E77B34D6DE4), -@@ -8025,6 +8314,7 @@ +@@ -8025,6 +8312,7 @@ HRESULT Initialize([in] IPropertyStore *pps); } @@ -1595,7 +1579,7 @@ index 3074ba74..a0a1b36c 100644 [ helpstring("OpenSearch Data Source API"), uuid(F0EE7333-E6FC-479b-9F25-A860C234A38E), -@@ -8044,6 +8334,7 @@ +@@ -8044,6 +8332,7 @@ } // Library API @@ -1603,7 +1587,7 @@ index 3074ba74..a0a1b36c 100644 [ helpstring("Shell Library API"), uuid(11a66efa-382e-451a-9234-1e0e12ef3085), -@@ -8151,6 +8442,7 @@ +@@ -8151,6 +8440,7 @@ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(DEFAULT_FOLDER_MENU_RESTRICTIONS)") @@ -1611,7 +1595,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(7690aa79-f8fc-4615-a327-36f7d18f5d91), -@@ -8206,6 +8498,7 @@ +@@ -8206,6 +8496,7 @@ // // Developers who are interested in using the Application Activation Manager do not need to implement the following // interface. An implementation is provided through the CoCreatable Object with CLSID_ApplicationActivationManager. @@ -1619,7 +1603,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(2e941141-7f97-4756-ba1d-9decde894a3d), -@@ -8235,6 +8528,7 @@ +@@ -8235,6 +8526,7 @@ cpp_quote("#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)") @@ -1627,7 +1611,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(a5cd92ff-29be-454c-8d04-d82879fb3f1b), object, -@@ -8388,7 +8682,9 @@ +@@ -8388,7 +8680,9 @@ cpp_quote("#if (NTDDI_VERSION >= NTDDI_VISTA)") cpp_quote("SHSTDAPI SHGetTemporaryPropertyForItem(_In_ IShellItem *psi, _In_ REFPROPERTYKEY propkey, _Out_ PROPVARIANT *ppropvar);") @@ -1637,7 +1621,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("#endif // NTDDI_VISTA") // helper APIs to simplify initializing an instance of IShellLibrary and working with file system paths -@@ -8404,7 +8700,9 @@ +@@ -8404,7 +8698,9 @@ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(LIBRARYMANAGEDIALOGOPTIONS)") cpp_quote("STDAPI SHShowManageLibraryUI(_In_ IShellItem *psiLibrary, _In_ HWND hwndOwner, _In_opt_ LPCWSTR pszTitle, _In_opt_ LPCWSTR pszInstruction, _In_ LIBRARYMANAGEDIALOGOPTIONS lmdOptions);") @@ -1647,7 +1631,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)") cpp_quote("") cpp_quote("// These functions properly initialize their _Outptr_ parameters to NULL, and only return NULL") -@@ -8415,11 +8713,13 @@ +@@ -8415,11 +8711,13 @@ cpp_quote("#pragma warning(disable:6387)") cpp_quote("") cpp_quote("__inline HRESULT SHCreateLibrary(_In_ REFIID riid, _Outptr_ void **ppv)") @@ -1661,7 +1645,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" *ppv = NULL;") cpp_quote(" IShellLibrary *plib;") -@@ -8437,6 +8737,7 @@ +@@ -8437,6 +8735,7 @@ cpp_quote("}") cpp_quote("") cpp_quote("__inline HRESULT SHLoadLibraryFromKnownFolder(_In_ REFKNOWNFOLDERID kfidLibrary, _In_ DWORD grfMode, _In_ REFIID riid, _Outptr_ void **ppv)") @@ -1669,7 +1653,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" *ppv = NULL;") cpp_quote(" IShellLibrary *plib;") -@@ -8454,6 +8755,7 @@ +@@ -8454,6 +8753,7 @@ cpp_quote("}") cpp_quote("") cpp_quote("__inline HRESULT SHLoadLibraryFromParsingName(_In_ PCWSTR pszParsingName, _In_ DWORD grfMode, _In_ REFIID riid, _Outptr_ void **ppv)") @@ -1677,7 +1661,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" *ppv = NULL;") cpp_quote(" IShellItem *psiLibrary;") -@@ -8467,6 +8769,7 @@ +@@ -8467,6 +8767,7 @@ cpp_quote("}") cpp_quote("") cpp_quote("__inline HRESULT SHAddFolderPathToLibrary(_In_ IShellLibrary *plib, _In_ PCWSTR pszFolderPath)") @@ -1685,7 +1669,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" IShellItem *psiFolder;") cpp_quote(" HRESULT hr = SHCreateItemFromParsingName(pszFolderPath, NULL, IID_PPV_ARGS(&psiFolder));") -@@ -8479,6 +8782,7 @@ +@@ -8479,6 +8780,7 @@ cpp_quote("}") cpp_quote("") cpp_quote("__inline HRESULT SHRemoveFolderPathFromLibrary(_In_ IShellLibrary *plib, _In_ PCWSTR pszFolderPath)") @@ -1693,7 +1677,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" PIDLIST_ABSOLUTE pidlFolder = SHSimpleIDListFromPath(pszFolderPath);") cpp_quote(" HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;") -@@ -8497,6 +8801,7 @@ +@@ -8497,6 +8799,7 @@ cpp_quote("}") cpp_quote("") cpp_quote("__inline HRESULT SHSaveLibraryInFolderPath(_In_ IShellLibrary *plib, _In_ PCWSTR pszFolderPath, _In_ PCWSTR pszLibraryName, _In_ LIBRARYSAVEFLAGS lsf, _Outptr_opt_ PWSTR *ppszSavedToPath)") @@ -1701,7 +1685,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" if (ppszSavedToPath)") cpp_quote(" {") -@@ -8532,6 +8837,7 @@ +@@ -8532,6 +8835,7 @@ // SHAssocEnumHandlers returns an IEnumAssocHandlers object. // // Invoke an associated app handler @@ -1709,7 +1693,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(92218CAB-ECAA-4335-8133-807FD234C2EE), object, -@@ -8562,6 +8868,7 @@ +@@ -8562,6 +8866,7 @@ // Association handlers // @@ -1717,7 +1701,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(F04061AC-1659-4a3f-A954-775AA57FC083), object, -@@ -8588,8 +8895,10 @@ +@@ -8588,8 +8893,10 @@ [in, annotation("_In_")] IDataObject *pdo, [out, annotation("_Outptr_")] IAssocHandlerInvoker **ppInvoker); } @@ -1728,7 +1712,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(973810ae-9599-4b88-9e4d-6ee98c9552da), object, -@@ -8612,15 +8921,19 @@ +@@ -8612,15 +8919,19 @@ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(ASSOC_FILTER)") cpp_quote("SHSTDAPI SHAssocEnumHandlers(_In_ PCWSTR pszExtra, _In_ ASSOC_FILTER afFilter, _Outptr_ IEnumAssocHandlers **ppEnumHandler);") @@ -1748,7 +1732,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(3D25F6D6-4B2A-433c-9184-7C33AD35D001), -@@ -8632,6 +8945,7 @@ +@@ -8632,6 +8943,7 @@ [local] HRESULT SetDataObject([in, annotation("_In_")] IDataObject *dataObject); } @@ -1756,7 +1740,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(3A3DCD6C-3EAB-43DC-BCDE-45671CE800C8), -@@ -8650,6 +8964,7 @@ +@@ -8650,6 +8962,7 @@ // Application Framework developers who are interested // in getting the position of the Input Pane (IHM) and in receiving Input Pane // change notifications must implement the following handler interface. @@ -1764,7 +1748,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(226C537B-1E76-4D9E-A760-33DB29922F18) -@@ -8674,6 +8989,7 @@ +@@ -8674,6 +8987,7 @@ // Application Framework creators can use this interface to: // 1) Listen to Input Pane state changes // 2) Get the current location of the Input Pane @@ -1772,7 +1756,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(5752238B-24F0-495A-82F1-2FD593056796) -@@ -8715,6 +9031,7 @@ +@@ -8715,6 +9029,7 @@ cpp_quote("// window is the current main window. Call this API when those windows change their state.") cpp_quote("") cpp_quote("__inline void SetContractDelegateWindow(_In_ HWND hwndSource, _In_opt_ HWND hwndDelegate)") @@ -1780,7 +1764,7 @@ index 3074ba74..a0a1b36c 100644 cpp_quote("{") cpp_quote(" if (hwndDelegate != NULL)") cpp_quote(" {") -@@ -8738,6 +9055,7 @@ +@@ -8738,6 +9053,7 @@ MAV_APP_VISIBLE = 2 } MONITOR_APP_VISIBILITY; @@ -1788,7 +1772,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(6584CE6B-7D82-49C2-89C9-C6BC02BA8C38) -@@ -8751,6 +9069,7 @@ +@@ -8751,6 +9067,7 @@ HRESULT LauncherVisibilityChange([in] BOOL currentVisibleState); } @@ -1796,7 +1780,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(2246EA2D-CAEA-4444-A3C4-6DE827E44313) -@@ -8776,6 +9095,7 @@ +@@ -8776,6 +9093,7 @@ PES_TERMINATED = 4 } PACKAGE_EXECUTION_STATE; @@ -1804,7 +1788,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(1BB12A62-2AD8-432B-8CCF-0C2C52AFCD5B) -@@ -8785,6 +9105,7 @@ +@@ -8785,6 +9103,7 @@ HRESULT OnStateChanged([in, string] LPCWSTR pszPackageFullName, [in] PACKAGE_EXECUTION_STATE pesNewState); } @@ -1812,7 +1796,7 @@ index 3074ba74..a0a1b36c 100644 [ object, local, -@@ -8837,6 +9158,7 @@ +@@ -8837,6 +9156,7 @@ [out, size_is(,*appCount), annotation("_Outptr_result_buffer_(*appCount)")] LPWSTR **appDisplayNames); } @@ -1820,7 +1804,7 @@ index 3074ba74..a0a1b36c 100644 [ object, local, -@@ -8856,6 +9178,7 @@ +@@ -8856,6 +9176,7 @@ AHE_IMMERSIVE = 1, } AHE_TYPE; @@ -1828,7 +1812,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(18B21AA9-E184-4FF0-9F5E-F882D03771B3) -@@ -8877,6 +9200,7 @@ +@@ -8877,6 +9198,7 @@ // reachable via the site chain provided to ShellExecuteEx() or the context menu and retrieved by // IServiceProvider::QueryService(..., SID_ExecuteCommandHost, ...). // IExecuteCommandHost::GetUIMode is called by an ExplorerCommand based verb handler to query the host UI mode. @@ -1836,7 +1820,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(4b6832a2-5f04-4c9d-b89d-727a15d103e7) -@@ -8907,6 +9231,7 @@ +@@ -8907,6 +9229,7 @@ EGK_MOUSE, } EDGE_GESTURE_KIND; @@ -1844,7 +1828,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(2A3DEE9A-E31D-46D6-8508-BCC597DB3557) -@@ -8956,6 +9281,7 @@ +@@ -8956,6 +9279,7 @@ AVMW_500 = 2, } APPLICATION_VIEW_MIN_WIDTH; @@ -1852,7 +1836,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(490514E1-675A-4D6E-A58D-E54901B4CA2F) -@@ -8984,6 +9310,7 @@ +@@ -8984,6 +9308,7 @@ // on IApplicationActivationManager is called. The monitor specified by the // ILaunchTargetMonitor interface tells Windows which monitor the launched // application should be shown on. @@ -1860,7 +1844,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(266FBC7E-490D-46ED-A96B-2274DB252003) -@@ -9017,6 +9344,7 @@ +@@ -9017,6 +9342,7 @@ // any method on IApplicationActivationManager is called. The size preference // information will be used by Windows in placing the source app window once // the target app is shown on screen. @@ -1868,7 +1852,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(E5AA01F7-1FB8-4830-8720-4E6734CBD5F3) -@@ -9036,6 +9364,7 @@ +@@ -9036,6 +9362,7 @@ // IApplicationActivationManager to launch the browser itself. Windows will // use the size preference information to decide how the browser window // should be shown once it is launched. @@ -1876,7 +1860,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(2F0666C6-12F7-4360-B511-A394A0553725) -@@ -9055,6 +9384,7 @@ +@@ -9055,6 +9382,7 @@ // QueryService(SID_LaunchSourceAppUserModelId, ...) on the site pointer // to retrieve the interface from which the AppUserModelId of the app that // launches the browser is available. @@ -1884,7 +1868,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(989191AC-28FF-4CF0-9584-E0D078BC2396) -@@ -9071,6 +9401,7 @@ +@@ -9071,6 +9399,7 @@ // Implemented by objects the need to be provided a window, often an owner window for displaying UI. // Used by clients of those objects to provide the window. @@ -1892,7 +1876,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(3E68D4BD-7135-4D10-8018-9FB6D9F33FA1), object, -@@ -9084,6 +9415,7 @@ +@@ -9084,6 +9413,7 @@ // Provided to the IHandlerActivationHost methods, provides information about the handler. // May also be retrieved using IServiceProvider::QueryService(SID_HandlerInfo) on the site // chain provided in ShellExecute and verb handler invocations. @@ -1900,7 +1884,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(997706ef-f880-453b-8118-39e1a2d2655a), object, -@@ -9124,6 +9456,7 @@ +@@ -9124,6 +9454,7 @@ // // Handlers are identified by either a COM CLSID or the .exe file that will be passed to // CreateProcess(). @@ -1908,7 +1892,7 @@ index 3074ba74..a0a1b36c 100644 [ uuid(35094a87-8bb1-4237-96c6-c417eebdb078), object, -@@ -9190,6 +9523,7 @@ +@@ -9190,6 +9521,7 @@ FP_RIGHT, } FLYOUT_PLACEMENT; @@ -1916,7 +1900,7 @@ index 3074ba74..a0a1b36c 100644 [ object, uuid(99eacba7-e073-43b6-a896-55afe48a0833), -@@ -9240,6 +9574,7 @@ +@@ -9240,6 +9572,7 @@ // IShellIconOverlayIdentifier::GetPriority(int * pIPriority) PURE; // pIPriority the priority of this Overlay Identifier diff --git a/generation/WinSDK/patches/um/swdevice.h.patch b/generation/WinSDK/patches/um/swdevice.h.patch index df26a0a8d..01a6c2af3 100644 --- a/generation/WinSDK/patches/um/swdevice.h.patch +++ b/generation/WinSDK/patches/um/swdevice.h.patch @@ -1,17 +1,7 @@ diff --git a/um/swdevice.h b/um/swdevice.h --- a/um/swdevice.h +++ b/um/swdevice.h -@@ -30,6 +30,9 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - - DECLARE_HANDLE(HSWDEVICE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSWDEVICE HSWDEVICE; -+#endif - typedef HSWDEVICE *PHSWDEVICE; - - typedef VOID (WINAPI *SW_DEVICE_CREATE_CALLBACK)( -@@ -38,6 +41,12 @@ +@@ -38,6 +38,12 @@ _In_opt_ PVOID pContext, _In_opt_ PCWSTR pszDeviceInstanceId); @@ -24,7 +14,7 @@ diff --git a/um/swdevice.h b/um/swdevice.h _Check_return_ HRESULT WINAPI SwDeviceCreate( _In_ PCWSTR pszEnumeratorName, -@@ -47,19 +56,17 @@ +@@ -47,19 +53,17 @@ _In_reads_opt_(cPropertyCount) const DEVPROPERTY *pProperties, _In_ SW_DEVICE_CREATE_CALLBACK pCallback, _In_opt_ PVOID pContext, @@ -47,7 +37,7 @@ diff --git a/um/swdevice.h b/um/swdevice.h _Check_return_ HRESULT WINAPI SwDeviceGetLifetime( _In_ HSWDEVICE hSwDevice, -@@ -67,12 +74,14 @@ +@@ -67,12 +71,14 @@ #endif @@ -62,7 +52,7 @@ diff --git a/um/swdevice.h b/um/swdevice.h _Check_return_ HRESULT WINAPI SwDeviceInterfaceRegister( _In_ HSWDEVICE hSwDevice, -@@ -83,16 +92,19 @@ +@@ -83,16 +89,19 @@ _In_ BOOL fEnabled, _Outptr_result_maybenull_ PWSTR* ppszDeviceInterfaceId); diff --git a/generation/WinSDK/patches/um/tdh.h.patch b/generation/WinSDK/patches/um/tdh.h.patch index 3f86b6a4e..13d404cdd 100644 --- a/generation/WinSDK/patches/um/tdh.h.patch +++ b/generation/WinSDK/patches/um/tdh.h.patch @@ -2,213 +2,203 @@ diff --git a/um/tdh.h b/um/tdh.h --- a/um/tdh.h +++ b/um/tdh.h @@ -18,6 +18,7 @@ - - #ifndef __TDH_H__ - #define __TDH_H__ -+#include - #include - - #pragma region Desktop Family or OneCore Family -@@ -43,6 +44,9 @@ - #define TDHAPI TDHSTATUS __stdcall - - typedef HANDLE TDH_HANDLE, *PTDH_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef TDH_HANDLE TDH_HANDLE; -+#endif - - typedef struct _EVENT_MAP_ENTRY { - ULONG OutputOffset; -@@ -720,6 +724,7 @@ - - #if (WINVER >= _WIN32_WINNT_WINBLUE) - -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhCreatePayloadFilter( -@@ -731,12 +736,14 @@ - _Outptr_result_maybenull_ PVOID* PayloadFilter - ); - -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhDeletePayloadFilter( - _Inout_ PVOID* PayloadFilter - ); - -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhAggregatePayloadFilters( -@@ -746,6 +753,7 @@ - _Out_ PEVENT_FILTER_DESCRIPTOR EventFilterDescriptor - ); - -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhCleanupPayloadEventFilterDescriptor( -@@ -857,6 +865,7 @@ - } TDH_CONTEXT; - typedef TDH_CONTEXT *PTDH_CONTEXT; - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhGetEventInformation( -@@ -867,6 +876,7 @@ - _Inout_ PULONG BufferSize - ); - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhGetEventMapInformation( -@@ -876,6 +886,7 @@ - _Inout_ ULONG* pBufferSize - ); - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhGetPropertySize( -@@ -887,6 +898,7 @@ - _Out_ ULONG* pPropertySize - ); - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhGetProperty( -@@ -899,6 +911,7 @@ - _Out_writes_bytes_(BufferSize) PBYTE pBuffer - ); - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhEnumerateProviders( -@@ -929,6 +942,7 @@ - ); - #endif - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhQueryProviderFieldInformation( -@@ -939,6 +953,7 @@ - _Inout_ ULONG* pBufferSize - ); - -+_Win32_SupportedOS_WindowsVista_ - TDHSTATUS - __stdcall - TdhEnumerateProviderFieldInformation( -@@ -955,6 +970,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - - #if (WINVER >= _WIN32_WINNT_WIN7) -+_Win32_SupportedOS_Windows7_ - TDHSTATUS - __stdcall - TdhEnumerateProviderFilters( -@@ -973,6 +989,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - - #if (WINVER >= _WIN32_WINNT_WIN7) -+_Win32_SupportedOS_Windows7_ - TDHSTATUS - __stdcall - TdhLoadManifest( -@@ -990,6 +1007,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN7) -+_Win32_SupportedOS_Windows7_ - TDHSTATUS - __stdcall - TdhUnloadManifest( -@@ -1007,6 +1025,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN7) -+_Win32_SupportedOS_Windows7_ - TDHSTATUS - __stdcall - TdhFormatProperty( -@@ -1031,14 +1050,16 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhOpenDecodingHandle( -- _Out_ PTDH_HANDLE Handle -+ _Win32_RAIIFree_(TdhCloseDecodingHandle, -1, 0) _Out_ PTDH_HANDLE Handle - ); - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhSetDecodingParameter( -@@ -1048,6 +1069,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhGetDecodingParameter( -@@ -1057,6 +1079,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhGetWppProperty( -@@ -1069,6 +1092,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhGetWppMessage( -@@ -1080,6 +1104,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhCloseDecodingHandle( -@@ -1088,6 +1113,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WIN8) -+_Win32_SupportedOS_Windows8_ - TDHSTATUS - __stdcall - TdhLoadManifestFromBinary( -@@ -1102,6 +1128,7 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) - - #if (WINVER >= _WIN32_WINNT_WINBLUE) -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhEnumerateManifestProviderEvents( -@@ -1112,6 +1139,7 @@ - #endif - - #if (WINVER >= _WIN32_WINNT_WINBLUE) -+_Win32_SupportedOS_Windows81_ - TDHSTATUS - __stdcall - TdhGetManifestEventInformation( + + #ifndef __TDH_H__ + #define __TDH_H__ ++#include + #include + + #pragma region Desktop Family or OneCore Family +@@ -720,6 +721,7 @@ + + #if (WINVER >= _WIN32_WINNT_WINBLUE) + ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhCreatePayloadFilter( +@@ -731,12 +733,14 @@ + _Outptr_result_maybenull_ PVOID* PayloadFilter + ); + ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhDeletePayloadFilter( + _Inout_ PVOID* PayloadFilter + ); + ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhAggregatePayloadFilters( +@@ -746,6 +750,7 @@ + _Out_ PEVENT_FILTER_DESCRIPTOR EventFilterDescriptor + ); + ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhCleanupPayloadEventFilterDescriptor( +@@ -857,6 +862,7 @@ + } TDH_CONTEXT; + typedef TDH_CONTEXT *PTDH_CONTEXT; + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhGetEventInformation( +@@ -867,6 +873,7 @@ + _Inout_ PULONG BufferSize + ); + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhGetEventMapInformation( +@@ -876,6 +883,7 @@ + _Inout_ ULONG* pBufferSize + ); + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhGetPropertySize( +@@ -887,6 +895,7 @@ + _Out_ ULONG* pPropertySize + ); + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhGetProperty( +@@ -899,6 +908,7 @@ + _Out_writes_bytes_(BufferSize) PBYTE pBuffer + ); + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhEnumerateProviders( +@@ -929,6 +939,7 @@ + ); + #endif + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhQueryProviderFieldInformation( +@@ -939,6 +950,7 @@ + _Inout_ ULONG* pBufferSize + ); + ++_Win32_SupportedOS_WindowsVista_ + TDHSTATUS + __stdcall + TdhEnumerateProviderFieldInformation( +@@ -955,6 +967,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + + #if (WINVER >= _WIN32_WINNT_WIN7) ++_Win32_SupportedOS_Windows7_ + TDHSTATUS + __stdcall + TdhEnumerateProviderFilters( +@@ -973,6 +986,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + + #if (WINVER >= _WIN32_WINNT_WIN7) ++_Win32_SupportedOS_Windows7_ + TDHSTATUS + __stdcall + TdhLoadManifest( +@@ -990,6 +1004,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN7) ++_Win32_SupportedOS_Windows7_ + TDHSTATUS + __stdcall + TdhUnloadManifest( +@@ -1007,6 +1022,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN7) ++_Win32_SupportedOS_Windows7_ + TDHSTATUS + __stdcall + TdhFormatProperty( +@@ -1031,14 +1047,16 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhOpenDecodingHandle( +- _Out_ PTDH_HANDLE Handle ++ _Win32_RAIIFree_(TdhCloseDecodingHandle, -1, 0) _Out_ PTDH_HANDLE Handle + ); + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhSetDecodingParameter( +@@ -1048,6 +1066,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhGetDecodingParameter( +@@ -1057,6 +1076,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhGetWppProperty( +@@ -1069,6 +1089,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhGetWppMessage( +@@ -1080,6 +1101,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhCloseDecodingHandle( +@@ -1088,6 +1110,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WIN8) ++_Win32_SupportedOS_Windows8_ + TDHSTATUS + __stdcall + TdhLoadManifestFromBinary( +@@ -1102,6 +1125,7 @@ + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) + + #if (WINVER >= _WIN32_WINNT_WINBLUE) ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhEnumerateManifestProviderEvents( +@@ -1112,6 +1136,7 @@ + #endif + + #if (WINVER >= _WIN32_WINNT_WINBLUE) ++_Win32_SupportedOS_Windows81_ + TDHSTATUS + __stdcall + TdhGetManifestEventInformation( diff --git a/generation/WinSDK/patches/um/tspi.h.patch b/generation/WinSDK/patches/um/tspi.h.patch deleted file mode 100644 index 33582a66f..000000000 --- a/generation/WinSDK/patches/um/tspi.h.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/um/tspi.h b/um/tspi.h ---- a/um/tspi.h -+++ b/um/tspi.h -@@ -62,10 +62,25 @@ - #endif - - DECLARE_OPAQUE(HDRVCALL); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVCALL HDRVCALL; -+#endif - DECLARE_OPAQUE(HDRVLINE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVLINE HDRVLINE; -+#endif - DECLARE_OPAQUE(HDRVPHONE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVPHONE HDRVPHONE; -+#endif - DECLARE_OPAQUE(HDRVMSPLINE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVMSPLINE HDRVMSPLINE; -+#endif - DECLARE_OPAQUE(HDRVDIALOGINSTANCE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVDIALOGINSTANCE HDRVDIALOGINSTANCE; -+#endif - - typedef HDRVCALL FAR * LPHDRVCALL; - typedef HDRVLINE FAR * LPHDRVLINE; -@@ -74,8 +89,17 @@ - typedef HDRVMSPLINE FAR * LPHDRVMSPLINE; - - DECLARE_OPAQUE(HTAPICALL); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTAPICALL HTAPICALL; -+#endif - DECLARE_OPAQUE(HTAPILINE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTAPILINE HTAPILINE; -+#endif - DECLARE_OPAQUE(HTAPIPHONE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTAPIPHONE HTAPIPHONE; -+#endif - - DECLARE_OPAQUE32(HTAPIDIALOGINSTANCE); - DECLARE_OPAQUE32(HTAPIMSPLINE); -@@ -88,6 +112,9 @@ - - - DECLARE_OPAQUE(HPROVIDER); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPROVIDER HPROVIDER; -+#endif - typedef HPROVIDER FAR * LPHPROVIDER; - - typedef DWORD DRV_REQUESTID; diff --git a/generation/WinSDK/patches/um/uianimation.idl.patch b/generation/WinSDK/patches/um/uianimation.idl.patch index f1d50d5ae..25b2d077f 100644 --- a/generation/WinSDK/patches/um/uianimation.idl.patch +++ b/generation/WinSDK/patches/um/uianimation.idl.patch @@ -26,15 +26,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -399,6 +402,7 @@ - - // Defines a keyframe, which represents a time offset within a storyboard - typedef struct { int _; } *UI_ANIMATION_KEYFRAME; -+cpp_quote("/* Win32Metadata: type ::UI_ANIMATION_KEYFRAME => NativeTypedef */") - - // Special value representing the implicit keyframe at the start of every storyboard - const UI_ANIMATION_KEYFRAME UI_ANIMATION_KEYFRAME_STORYBOARD_START = (UI_ANIMATION_KEYFRAME)(-1); -@@ -415,6 +419,7 @@ +@@ -415,6 +418,7 @@ const INT32 UI_ANIMATION_REPEAT_INDEFINITELY_CONCLUDE_AT_START = -2; // Defines a storyboard, which combines animation variables and transitions to define an animation @@ -42,7 +34,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -558,6 +563,7 @@ +@@ -558,6 +562,7 @@ }; // Defines a transition, which determines how an animation variable changes over time @@ -50,7 +42,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -596,6 +602,7 @@ +@@ -596,6 +601,7 @@ }; // Defines methods for handling animation manager status change events @@ -58,7 +50,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -615,6 +622,7 @@ +@@ -615,6 +621,7 @@ }; // Defines methods for handling animation variable update events @@ -66,7 +58,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -636,6 +644,7 @@ +@@ -636,6 +643,7 @@ }; // Defines methods for handling animation variable update events @@ -74,7 +66,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -657,6 +666,7 @@ +@@ -657,6 +665,7 @@ }; // Defines methods for handling animation variable update events @@ -82,7 +74,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -691,6 +701,7 @@ +@@ -691,6 +700,7 @@ } UI_ANIMATION_PRIORITY_EFFECT; // Defines a priority comparison that the animation manager uses to resolve scheduling conflicts @@ -90,7 +82,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -719,6 +730,7 @@ +@@ -719,6 +729,7 @@ } UI_ANIMATION_SLOPE; // Defines a library of standard transitions @@ -98,7 +90,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -859,6 +871,7 @@ +@@ -859,6 +870,7 @@ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(UI_ANIMATION_DEPENDENCIES);") // Defines methods for creating a custom interpolator @@ -106,7 +98,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -924,6 +937,7 @@ +@@ -924,6 +936,7 @@ }; // Defines methods for creating transitions from custom interpolators @@ -114,7 +106,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -954,6 +968,7 @@ +@@ -954,6 +967,7 @@ } UI_ANIMATION_IDLE_BEHAVIOR; // Defines an animation timer, which provides services for managing animation timing @@ -122,7 +114,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1012,6 +1027,7 @@ +@@ -1012,6 +1026,7 @@ }; // Defines methods for handling timing update events @@ -130,7 +122,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1051,6 +1067,7 @@ +@@ -1051,6 +1066,7 @@ } UI_ANIMATION_TIMER_CLIENT_STATUS; // Defines methods for handling events related to changes in timer client status @@ -138,7 +130,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1070,6 +1087,7 @@ +@@ -1070,6 +1086,7 @@ }; // Defines methods for handling timing events @@ -146,7 +138,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1110,6 +1128,7 @@ +@@ -1110,6 +1127,7 @@ const UI_ANIMATION_SECONDS UI_ANIMATION_SECONDS_INFINITE = -1.0; // Defines the animation manager, which provides a central interface for creating and managing UI animations @@ -154,7 +146,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1276,6 +1295,7 @@ +@@ -1276,6 +1294,7 @@ }; // Defines a WAM2 animation variable, which represents a value that may be animated @@ -162,7 +154,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1480,6 +1500,7 @@ +@@ -1480,6 +1499,7 @@ // value has not yet been determined const UINT UI_ANIMATION_DIMENSION_UNKNOWN = (UINT)(-1); @@ -170,7 +162,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1541,6 +1562,7 @@ +@@ -1541,6 +1561,7 @@ }; // Defines methods for handling animation manager status change events @@ -178,7 +170,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1559,6 +1581,7 @@ +@@ -1559,6 +1580,7 @@ ); }; @@ -186,7 +178,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1580,6 +1603,7 @@ +@@ -1580,6 +1602,7 @@ ); }; @@ -194,7 +186,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1601,6 +1625,7 @@ +@@ -1601,6 +1624,7 @@ ); }; @@ -202,7 +194,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1619,6 +1644,7 @@ +@@ -1619,6 +1643,7 @@ }; // Defines methods for handling animation storyboard update events @@ -210,7 +202,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1650,6 +1676,7 @@ +@@ -1650,6 +1675,7 @@ const UINT32 UI_ANIMATION_ITERATION_NONE = (UINT32)-1; // Defines methods for handling storyboard loop iteration events @@ -218,7 +210,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1671,6 +1698,7 @@ +@@ -1671,6 +1697,7 @@ }; // Defines a priority comparison that the animation manager uses to resolve scheduling conflicts @@ -226,7 +218,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1691,6 +1719,7 @@ +@@ -1691,6 +1718,7 @@ }; // Defines a library of standard transitions @@ -234,7 +226,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1897,6 +1926,7 @@ +@@ -1897,6 +1925,7 @@ // Interpolator API // Defines an interface for interpolators to propagate their curve information back to WAM @@ -242,7 +234,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -1934,6 +1964,7 @@ +@@ -1934,6 +1963,7 @@ }; // Defines methods for creating a custom interpolator @@ -250,7 +242,7 @@ index aa71fea3..8289b0a7 100644 [ local, object, -@@ -2019,6 +2050,7 @@ +@@ -2019,6 +2049,7 @@ }; // Defines methods for creating transitions from custom interpolators diff --git a/generation/WinSDK/patches/um/uiautomationcoreapi.h.patch b/generation/WinSDK/patches/um/uiautomationcoreapi.h.patch index f30f6676d..ea65292b1 100644 --- a/generation/WinSDK/patches/um/uiautomationcoreapi.h.patch +++ b/generation/WinSDK/patches/um/uiautomationcoreapi.h.patch @@ -1,29 +1,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h --- a/um/uiautomationcoreapi.h +++ b/um/uiautomationcoreapi.h -@@ -52,9 +52,21 @@ - #define UiaRootObjectId -25 - - DECLARE_HANDLE(HUIANODE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HUIANODE HUIANODE; -+#endif - DECLARE_HANDLE(HUIAPATTERNOBJECT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HUIAPATTERNOBJECT HUIAPATTERNOBJECT; -+#endif - DECLARE_HANDLE(HUIATEXTRANGE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HUIATEXTRANGE HUIATEXTRANGE; -+#endif - DECLARE_HANDLE(HUIAEVENT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HUIAEVENT HUIAEVENT; -+#endif - - #ifndef __uiautomationclient_h__ - enum TreeScope -@@ -476,6 +488,7 @@ +@@ -476,6 +476,7 @@ // // -------------------------------------------------------------------------- @@ -31,7 +9,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h BOOL WINAPI UiaGetErrorDescription(BSTR * pDescription); // -------------------------------------------------------------------------- -@@ -511,7 +524,7 @@ +@@ -511,7 +512,7 @@ struct UiaPropertyCondition { enum ConditionType ConditionType; @@ -40,7 +18,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h VARIANT Value; enum PropertyConditionFlags Flags; }; -@@ -556,9 +569,12 @@ +@@ -556,9 +557,12 @@ enum AutomationElementMode automationElementMode; }; @@ -56,7 +34,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h // -------------------------------------------------------------------------- // -@@ -605,24 +621,38 @@ +@@ -605,24 +609,38 @@ struct UiaCondition * pFindCondition; }; @@ -99,7 +77,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h inline void UiaRectSetEmpty(_Out_ UiaRect & rc) { rc.left = 0; -@@ -631,6 +661,7 @@ +@@ -631,6 +649,7 @@ rc.height = 0; } @@ -107,7 +85,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h inline bool UiaRectIsEmpty(const UiaRect & rc) { return rc.width <= 0 || rc.height <= 0; -@@ -652,6 +683,7 @@ +@@ -652,6 +671,7 @@ typedef SAFEARRAY * WINAPI UiaProviderCallback(HWND hwnd, enum ProviderType providerType); @@ -115,7 +93,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h void WINAPI UiaRegisterProviderCallback(UiaProviderCallback * pCallback); -@@ -674,6 +706,7 @@ +@@ -674,6 +694,7 @@ AutomationIdentifierType_Style, }; @@ -123,7 +101,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h int WINAPI UiaLookupId(enum AutomationIdentifierType type, const GUID* pGuid); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -682,7 +715,9 @@ +@@ -682,7 +703,9 @@ #pragma region Application Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) @@ -133,7 +111,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaGetReservedMixedAttributeValue(IUnknown **punkMixedAttributeValue); // -------------------------------------------------------------------------- -@@ -725,7 +760,7 @@ +@@ -725,7 +748,7 @@ struct UiaPropertyChangedEventArgs { enum EventArgsType Type; @@ -142,7 +120,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h PROPERTYID PropertyId; VARIANT OldValue; VARIANT NewValue; -@@ -774,19 +809,28 @@ +@@ -774,19 +797,28 @@ // // Provider Event APIs // @@ -173,7 +151,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaRaiseActiveTextPositionChangedEvent( _In_ IRawElementProviderSimple* provider, _In_opt_ ITextRangeProvider* textRange); -@@ -801,9 +845,13 @@ +@@ -801,9 +833,13 @@ // Client Event APIs // typedef void WINAPI UiaEventCallback(struct UiaEventArgs * pArgs, SAFEARRAY * pRequestedData, BSTR pTreeStructure); @@ -188,7 +166,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaEventRemoveWindow(HUIAEVENT hEvent, HWND hwnd); -@@ -813,65 +861,121 @@ +@@ -813,65 +849,121 @@ // // -------------------------------------------------------------------------- @@ -319,7 +297,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h BOOL WINAPI UiaTextRangeRelease(HUIATEXTRANGE hobj); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -887,8 +991,11 @@ +@@ -887,8 +979,11 @@ // // -------------------------------------------------------------------------- @@ -331,7 +309,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaProviderForNonClient(HWND hwnd, long idObject, long idChild, IRawElementProviderSimple ** ppProvider); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ -@@ -900,6 +1007,7 @@ +@@ -900,6 +995,7 @@ #define UIA_IAFP_DEFAULT 0x0000 #define UIA_IAFP_UNWRAP_BRIDGE 0x0001 @@ -339,7 +317,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaIAccessibleFromProvider( _In_ IRawElementProviderSimple * pProvider, _In_ DWORD dwFlags, -@@ -915,6 +1023,7 @@ +@@ -915,6 +1011,7 @@ #define UIA_PFIA_DEFAULT 0x0000 #define UIA_PFIA_UNWRAP_BRIDGE 0x0001 @@ -347,7 +325,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaProviderFromIAccessible( _In_ IAccessible * pAccessible, long idChild, -@@ -927,7 +1036,9 @@ +@@ -927,7 +1024,9 @@ // // -------------------------------------------------------------------------- @@ -357,7 +335,7 @@ diff --git a/um/uiautomationcoreapi.h b/um/uiautomationcoreapi.h HRESULT WINAPI UiaDisconnectProvider(IRawElementProviderSimple * pProvider); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */ -@@ -942,6 +1053,7 @@ +@@ -942,6 +1041,7 @@ // // -------------------------------------------------------------------------- diff --git a/generation/WinSDK/patches/um/urlmon.idl.patch b/generation/WinSDK/patches/um/urlmon.idl.patch index a02e14a56..ba13dd739 100644 --- a/generation/WinSDK/patches/um/urlmon.idl.patch +++ b/generation/WinSDK/patches/um/urlmon.idl.patch @@ -8,15 +8,7 @@ index c28def31..f68ea233 100644 //+--------------------------------------------------------------------------- // // Microsoft Windows -@@ -45,6 +47,7 @@ - - #ifdef UNIX - typedef unsigned long HANDLE_PTR; -+cpp_quote("/* Win32Metadata: type ::HANDLE_PTR => NativeTypedef */") - #endif /* UNIX */ - - import "objidl.idl"; -@@ -125,6 +128,7 @@ +@@ -125,6 +127,7 @@ #pragma midl_echo("STDAPI CreateURLMonikerEx(_In_opt_ LPMONIKER pMkCtx, _In_ LPCWSTR szURL, _Outptr_ LPMONIKER FAR * ppmk, DWORD dwFlags); ") #pragma midl_echo("STDAPI GetClassURL(_In_ LPCWSTR szURL, _Out_ CLSID *pClsID); ") #pragma midl_echo("STDAPI CreateAsyncBindCtx(DWORD reserved, _In_ IBindStatusCallback *pBSCb, ") @@ -24,7 +16,7 @@ index c28def31..f68ea233 100644 #pragma midl_echo(" _In_opt_ IEnumFORMATETC *pEFetc, _Outptr_ IBindCtx **ppBC); ") cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE70)") -@@ -148,6 +152,7 @@ +@@ -148,6 +151,7 @@ #pragma midl_echo(" _In_ LPCWSTR szCODE, DWORD dwFileVersionMS, ") #pragma midl_echo(" DWORD dwFileVersionLS, _In_ LPCWSTR szTYPE,") #pragma midl_echo(" _In_ LPBINDCTX pBindCtx, DWORD dwClsContext,") @@ -32,7 +24,7 @@ index c28def31..f68ea233 100644 #pragma midl_echo(" _Reserved_ LPVOID pvReserved, REFIID riid, _Outptr_ LPVOID * ppv);") #pragma midl_echo("STDAPI IEInstallScope(_Out_ LPDWORD pdwScope);") -@@ -178,6 +183,7 @@ +@@ -178,6 +182,7 @@ #pragma midl_echo("STDAPI RegisterMediaTypes(_In_ _In_range_(>, 0) UINT ctypes, _In_reads_(ctypes) const LPCSTR* rgszTypes, _Out_writes_(ctypes) CLIPFORMAT* rgcfTypes); ") #pragma midl_echo("STDAPI FindMediaType(_In_ LPCSTR rgszTypes, _Out_ CLIPFORMAT* rgcfTypes); ") #pragma midl_echo("STDAPI CreateFormatEnumerator( _In_ _In_range_(>, 0) UINT cfmtetc, _In_reads_(cfmtetc) FORMATETC* rgfmtetc, _Outptr_ IEnumFORMATETC** ppenumfmtetc); ") @@ -40,7 +32,7 @@ index c28def31..f68ea233 100644 #pragma midl_echo("STDAPI RegisterFormatEnumerator(_In_ LPBC pBC, _In_ IEnumFORMATETC *pEFetc, DWORD reserved); ") #pragma midl_echo("STDAPI RevokeFormatEnumerator(_In_ LPBC pBC, _In_ IEnumFORMATETC *pEFetc); ") #pragma midl_echo("STDAPI RegisterMediaTypeClass(_In_ LPBC pBC, _In_ _In_range_(>, 0) UINT ctypes, _In_reads_(ctypes) const LPCSTR* rgszTypes, _In_reads_(ctypes) CLSID *rgclsID, DWORD reserved); ") -@@ -541,6 +547,8 @@ +@@ -541,6 +546,8 @@ HRESULT GetCurMoniker( [out] IMoniker ** ppimkName); } @@ -49,7 +41,7 @@ index c28def31..f68ea233 100644 cpp_quote("#endif") -@@ -1576,8 +1584,12 @@ +@@ -1576,8 +1583,12 @@ [out] BOOL* pfEqual); } @@ -62,7 +54,7 @@ index c28def31..f68ea233 100644 #pragma midl_echo(" _Reserved_ DWORD_PTR dwReserved, // must be 0") #pragma midl_echo(" _Outptr_ IUri** ppURI);") #pragma midl_echo("") -@@ -1650,6 +1662,7 @@ +@@ -1650,6 +1661,7 @@ #pragma midl_echo("#define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x00008000 // Don't percent-encode characters that are forbidden by the RFC.") #pragma midl_echo("#define Uri_CREATE_NORMALIZE_INTL_CHARACTERS 0x00010000 // Percent encode all extended unicode charcters, then decode all percent encoded extended unicode characters (except those identified as dangerous)") #pragma midl_echo("#define Uri_CREATE_CANONICALIZE_ABSOLUTE 0x00020000 // Generate a fully UTF-8 encoded value for absoluteUri") diff --git a/generation/WinSDK/patches/um/uxtheme.h.patch b/generation/WinSDK/patches/um/uxtheme.h.patch index 3aa530105..6fa69264e 100644 --- a/generation/WinSDK/patches/um/uxtheme.h.patch +++ b/generation/WinSDK/patches/um/uxtheme.h.patch @@ -2,953 +2,943 @@ diff --git a/um/Uxtheme.h b/um/Uxtheme.h --- a/um/Uxtheme.h +++ b/um/Uxtheme.h @@ -8,6 +8,16 @@ - - #ifndef _UXTHEME_H_ - #define _UXTHEME_H_ -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long SET_THEME_APP_PROPERTIES_FLAGS; -+typedef unsigned long OPEN_THEME_DATA_FLAGS; -+typedef unsigned long GET_THEME_BITMAP_FLAGS; -+typedef unsigned long DRAW_THEME_PARENT_BACKGROUND_FLAGS; -+typedef unsigned long BP_PAINTPARAMS_FLAGS; -+typedef unsigned long DTTOPTS_FLAGS; -+typedef unsigned long HIT_TEST_BACKGROUND_OPTIONS; -+#endif - - #include - -@@ -28,6 +38,9 @@ - #endif /* THEMEAPI */ - - typedef HANDLE HTHEME; // handle to a section of theme data for class -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTHEME HTHEME; -+#endif - - #if (NTDDI_VERSION >= NTDDI_VISTA) - #define MAX_THEMECOLOR 64 -@@ -43,6 +56,7 @@ - // HWND hwnd - The handle to the Target window that will receive feedback - // - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_Windows7_ - THEMEAPI_(BOOL) - BeginPanningFeedback( - _In_ HWND hwnd); -@@ -74,6 +88,7 @@ - // the second call would be with the parameter as 20 pixels as opposed to 10 - // Eg : UpdatePanningFeedback(hwnd, 10, 10, TRUE) - // -+_Win32_SupportedOS_Windows7_ - THEMEAPI_(BOOL) - UpdatePanningFeedback( - _In_ HWND hwnd, -@@ -97,6 +112,7 @@ - // Either ways the method will try to restore the moved window. - // The latter case exists for compatibility with legacy apps. - // -+_Win32_SupportedOS_Windows7_ - THEMEAPI_(BOOL) - EndPanningFeedback( - _In_ HWND hwnd, -@@ -157,6 +173,7 @@ - // pcbSizeOut - pointer to a DWORD buffer to receive the returned - // byte size - // -+_Win32_SupportedOS_Windows8_ - THEMEAPI GetThemeAnimationProperty( - _In_ HTHEME hTheme, - _In_ int iStoryboardId, -@@ -252,6 +269,7 @@ - // pcbSizeOut - pointer to a DWORD buffer to receive returned - // byte-size of transform operation struct - // -+_Win32_SupportedOS_Windows8_ - THEMEAPI GetThemeAnimationTransform( - _In_ HTHEME hTheme, - _In_ int iStoryboardId, -@@ -298,6 +316,7 @@ - // pcbSizeOut - pointer to a DWORD buffer to receive byte-size of - // the timing function struct - // -+_Win32_SupportedOS_Windows8_ - THEMEAPI GetThemeTimingFunction( - _In_ HTHEME hTheme, - _In_ int iTimingFunctionId, -@@ -312,6 +331,12 @@ - // NOTE: PartId's and StateId's used in the theme API are defined in the - // hdr file using the TM_PART and TM_STATE macros. For - // example, "TM_PART(BP, PUSHBUTTON)" defines the PartId "BP_PUSHBUTTON". -+ -+_Win32_SupportedOS_WindowsVista_ -+THEMEAPI -+CloseThemeData( -+ _In_ HTHEME hTheme -+ ); - - //--------------------------------------------------------------------------- - // OpenThemeData() - Open the theme data for the specified HWND and -@@ -343,6 +368,8 @@ - // that will be used. Otherwise, we fall back on - // the normal Button entry. - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(CloseThemeData, 0) - THEMEAPI_(HTHEME) - OpenThemeData( - _In_opt_ HWND hwnd, -@@ -351,9 +378,16 @@ - - #define OTD_FORCE_RECT_SIZING 0x00000001 // make all parts size to rect - #define OTD_NONCLIENT 0x00000002 // set if hTheme to be used for nonclient area -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(OPEN_THEME_DATA_FLAGS, unsigned long, -+ OTD_FORCE_RECT_SIZING, -+ OTD_NONCLIENT); -+#endif - #define OTD_VALIDBITS (OTD_FORCE_RECT_SIZING | \ - OTD_NONCLIENT) - -+_Win32_SupportedOS_15063_ -+_Win32_RAIIFree_(CloseThemeData, 0) - THEMEAPI_(HTHEME) - OpenThemeDataForDpi( - _In_opt_ HWND hwnd, -@@ -395,11 +429,13 @@ - // dwFlags - allows certain overrides of std features - // (see OTD_XXX defines above) - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(CloseThemeData, 0) - THEMEAPI_(HTHEME) - OpenThemeDataEx( - _In_opt_ HWND hwnd, - _In_ LPCWSTR pszClassList, -- _In_ DWORD dwFlags -+ _Win32_AssociatedEnum_(OPEN_THEME_DATA_FLAGS) _In_ DWORD dwFlags - ); - - //--------------------------------------------------------------------------- -@@ -412,11 +448,6 @@ - // hTheme - open theme data handle (returned from prior call - // to OpenThemeData() API). - //--------------------------------------------------------------------------- --THEMEAPI --CloseThemeData( -- _In_ HTHEME hTheme -- ); -- - //--------------------------------------------------------------------------- - // functions for basic drawing support - //--------------------------------------------------------------------------- -@@ -451,6 +482,7 @@ - // pRect - defines the size/location of the part - // pClipRect - optional clipping rect (don't draw outside it) - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeBackground( - _In_ HTHEME hTheme, -@@ -503,6 +535,7 @@ - // pRect - defines the size/location of the part - // pOptions - ptr to optional params - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeBackgroundEx( - _In_ HTHEME hTheme, -@@ -533,6 +566,7 @@ - // dwTextFlags2 - additional drawing options - // pRect - defines the size/location of the part - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeText( - _In_ HTHEME hTheme, -@@ -541,7 +575,7 @@ - _In_ int iStateId, - _In_reads_(cchText) LPCWSTR pszText, - _In_ int cchText, -- _In_ DWORD dwTextFlags, -+ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, - _In_ DWORD dwTextFlags2, - _In_ LPCRECT pRect - ); -@@ -559,6 +593,7 @@ - // pBoundingRect - the outer RECT of the part being drawn - // pContentRect - RECT to receive the content area - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeBackgroundContentRect( - _In_ HTHEME hTheme, -@@ -581,6 +616,7 @@ - // pContentRect - RECT that defines the content area - // pBoundingRect - RECT to receive the overall size/location of part - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeBackgroundExtent( - _In_ HTHEME hTheme, -@@ -606,6 +642,7 @@ - // pRect - the RECT used to draw the part - // pRegion - receives handle to calculated region - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeBackgroundRegion( - _In_ HTHEME hTheme, -@@ -634,6 +671,7 @@ - // eSize - the type of size to be retreived - // psz - receives the specified size of the part - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemePartSize( - _In_ HTHEME hTheme, -@@ -659,6 +697,7 @@ - // pszBoundingRect - optional: to control layout of text - // pszExtentRect - receives the RECT for text size/location - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeTextExtent( - _In_ HTHEME hTheme, -@@ -667,7 +706,7 @@ - _In_ int iStateId, - _In_reads_(cchCharCount) LPCWSTR pszText, - _In_ int cchCharCount, -- _In_ DWORD dwTextFlags, -+ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, - _In_opt_ LPCRECT pBoundingRect, - _Out_ LPRECT pExtentRect - ); -@@ -683,6 +722,7 @@ - // iStateId - state number (of the part) - // ptm - receives the font info - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeTextMetrics( - _In_ HTHEME hTheme, -@@ -725,6 +765,19 @@ - // Use system resizing border width rather than theme content margins. - // This option is mutually exclusive with HTTB_SIZINGTEMPLATE, which takes precedence. - #define HTTB_SYSTEMSIZINGMARGINS 0x00000200 -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(HIT_TEST_BACKGROUND_OPTIONS, unsigned long, -+ HTTB_BACKGROUNDSEG, -+ HTTB_FIXEDBORDER, -+ HTTB_CAPTION, -+ HTTB_RESIZINGBORDER_LEFT, -+ HTTB_RESIZINGBORDER_TOP, -+ HTTB_RESIZINGBORDER_RIGHT, -+ HTTB_RESIZINGBORDER_BOTTOM, -+ HTTB_RESIZINGBORDER, -+ HTTB_SIZINGTEMPLATE, -+ HTTB_SYSTEMSIZINGMARGINS); -+#endif - - //------------------------------------------------------------------------- - // HitTestThemeBackground() -@@ -750,13 +803,14 @@ - // HTRIGHT, HTTOPRIGHT, HTBOTTOMRIGHT, - // HTTOP, HTBOTTOM, HTCLIENT - //------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - HitTestThemeBackground( - _In_ HTHEME hTheme, - _In_opt_ HDC hdc, - _In_ int iPartId, - _In_ int iStateId, -- _In_ DWORD dwOptions, -+ _Win32_AssociatedEnum_(HIT_TEST_BACKGROUND_OPTIONS) _In_ DWORD dwOptions, - _In_ LPCRECT pRect, - _In_opt_ HRGN hrgn, - _In_ POINT ptTest, -@@ -775,6 +829,7 @@ - // uFlags - Same as DrawEdge() API - // pContentRect - Receives the interior rect if (uFlags & BF_ADJUST) - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeEdge( - _In_ HTHEME hTheme, -@@ -782,8 +837,8 @@ - _In_ int iPartId, - _In_ int iStateId, - _In_ LPCRECT pDestRect, -- _In_ UINT uEdge, -- _In_ UINT uFlags, -+ _Win32_AssociatedEnum_(DRAWEDGE_FLAGS) _In_ UINT uEdge, -+ _Win32_AssociatedEnum_(DRAW_EDGE_FLAGS) _In_ UINT uFlags, - _Out_opt_ LPRECT pContentRect - ); - -@@ -799,6 +854,7 @@ - // himl - handle to IMAGELIST - // iImageIndex - index into IMAGELIST (which icon to draw) - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeIcon( - _In_ HTHEME hTheme, -@@ -818,6 +874,7 @@ - // iPartId - part number to find definition for - // iStateId - state number of part - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - IsThemePartDefined( - _In_ HTHEME hTheme, -@@ -835,6 +892,7 @@ - // iPartId - part number - // iStateId - state number of part - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - IsThemeBackgroundPartiallyTransparent( - _In_ HTHEME hTheme, -@@ -868,12 +926,13 @@ - // iPropId - the property number to get the value for - // pColor - receives the value of the property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeColor( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ COLORREF *pColor - ); - -@@ -888,13 +947,14 @@ - // iPropId - the property number to get the value for - // piVal - receives the value of the property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeMetric( - _In_ HTHEME hTheme, - _In_opt_ HDC hdc, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ int *piVal - ); - -@@ -908,6 +968,7 @@ - // pszBuff - receives the string property value - // cchMaxBuffChars - max. number of chars allowed in pszBuff - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeString( - _In_ HTHEME hTheme, -@@ -927,12 +988,13 @@ - // iPropId - the property number to get the value for - // pfVal - receives the value of the property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeBool( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ BOOL *pfVal - ); - -@@ -945,12 +1007,13 @@ - // iPropId - the property number to get the value for - // piVal - receives the value of the property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeInt( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ int *piVal - ); - -@@ -963,12 +1026,13 @@ - // iPropId - the property number to get the value for - // piVal - receives the value of the enum (cast to int*) - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeEnumValue( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ int *piVal - ); - -@@ -982,12 +1046,13 @@ - // iPropId - the property number to get the value for - // pPoint - receives the value of the position property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemePosition( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ POINT *pPoint - ); - -@@ -1002,6 +1067,7 @@ - // pFont - receives the value of the LOGFONT property - // (scaled for the current logical screen dpi) - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeFont( - _In_ HTHEME hTheme, -@@ -1021,6 +1087,7 @@ - // iPropId - the property number to get the value for - // pRect - receives the value of the RECT property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeRect( - _In_ HTHEME hTheme, -@@ -1050,13 +1117,14 @@ - // prc - RECT for area to be drawn into - // pMargins - receives the value of the MARGINS property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeMargins( - _In_ HTHEME hTheme, - _In_opt_ HDC hdc, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _In_opt_ LPCRECT prc, - _Out_ MARGINS *pMargins - ); -@@ -1082,12 +1150,13 @@ - // iPropId - the property number to get the value for - // pIntList - receives the value of the INTLIST property - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeIntList( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_ INTLIST *pIntList - ); - -@@ -1112,6 +1181,7 @@ - // iPropId - the property number to search for - // pOrigin - receives the value of the property origin - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemePropertyOrigin( - _In_ HTHEME hTheme, -@@ -1149,6 +1219,7 @@ - // the specified window, you can pass an empty string (L"") so it - // won't match any section entries. - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - SetWindowTheme( - _In_ HWND hwnd, -@@ -1167,12 +1238,13 @@ - // pszThemeFileName - output buffer to receive the filename - // cchMaxBuffChars - the size of the return buffer, in chars - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeFilename( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, - _Out_writes_(cchMaxBuffChars) LPWSTR pszThemeFileName, - _In_ int cchMaxBuffChars - ); -@@ -1186,6 +1258,7 @@ - // - // iColorId - the system color index defined in winuser.h - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(COLORREF) - GetThemeSysColor( - _In_opt_ HTHEME hTheme, -@@ -1203,10 +1276,11 @@ - // - // iColorId - the system color index defined in winuser.h - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(HBRUSH) - GetThemeSysColorBrush( - _In_opt_ HTHEME hTheme, -- _In_ int iColorId -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iColorId - ); - - //--------------------------------------------------------------------------- -@@ -1219,10 +1293,11 @@ - // iBoolId - the TMT_XXX BOOL number (first BOOL - // is TMT_FLATMENUS) - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - GetThemeSysBool( - _In_opt_ HTHEME hTheme, -- _In_ int iBoolId -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iBoolId - ); - - //--------------------------------------------------------------------------- -@@ -1250,6 +1325,7 @@ - // when hTheme is NULL, iSizeId is passed directly - // to the GetSystemMetrics() function - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(int) - GetThemeSysSize( - _In_opt_ HTHEME hTheme, -@@ -1269,10 +1345,11 @@ - // plf - ptr to LOGFONT to receive the font value. - // (scaled for the current logical screen dpi) - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeSysFont( - _In_opt_ HTHEME hTheme, -- _In_ int iFontId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iFontId, - _Out_ LOGFONTW *plf - ); - -@@ -1290,10 +1367,11 @@ - // - // cchMaxStringChars - max. number of chars that pszStringBuff can hold - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeSysString( - _In_ HTHEME hTheme, -- _In_ int iStringId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iStringId, - _Out_writes_(cchMaxStringChars) LPWSTR pszStringBuff, - _In_ int cchMaxStringChars - ); -@@ -1311,10 +1389,11 @@ - // - // piValue - ptr to int to receive value - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeSysInt( - _In_ HTHEME hTheme, -- _In_ int iIntId, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iIntId, - _Out_ int *piValue - ); - -@@ -1325,6 +1404,7 @@ - // use the API "IsAppThemed()" to test if a theme is - // active for the calling process. - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - IsThemeActive( - VOID -@@ -1334,6 +1414,7 @@ - // IsAppThemed() - returns TRUE if a theme is active and available to - // the current process - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - IsAppThemed( - VOID -@@ -1346,6 +1427,7 @@ - // - // hwnd - the window to get the HTHEME of - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(HTHEME) - GetWindowTheme( - _In_ HWND hwnd -@@ -1385,6 +1467,7 @@ - // ETDT_ENABLETAB to enable the theme-defined background - // texturing using the Tab texture - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - EnableThemeDialogTexture( - _In_ HWND hwnd, -@@ -1398,6 +1481,7 @@ - // - // hdlg - the window handle of the target dialog - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - IsThemeDialogTextureEnabled( - _In_ HWND hwnd -@@ -1412,11 +1496,19 @@ - #define STAP_VALIDBITS (STAP_ALLOW_NONCLIENT | \ - STAP_ALLOW_CONTROLS | \ - STAP_ALLOW_WEBCONTENT) -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef _WIN32META_ANNOTATION_("FlagsEnum(ALLOW_NONCLIENT, ALLOW_CONTROLS, ALLOW_WEBCONTENT, VALIDBITS)", -+ STAP_ALLOW_NONCLIENT, -+ STAP_ALLOW_CONTROLS, -+ STAP_ALLOW_WEBCONTENT, -+ STAP_VALIDBITS) unsigned long SET_THEME_APP_PROPERTIES_FLAGS; -+#endif - - //--------------------------------------------------------------------------- - // GetThemeAppProperties() - // - returns the app property flags that control theming - //--------------------------------------------------------------------------- -+_Win32_AssociatedEnum_(SET_THEME_APP_PROPERTIES_FLAGS) _Win32_SupportedOS_WindowsVista_ - THEMEAPI_(DWORD) - GetThemeAppProperties( - VOID -@@ -1428,9 +1520,10 @@ - // - // dwFlags - the flag values to be set - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(void) - SetThemeAppProperties( -- _In_ DWORD dwFlags -+ _Win32_AssociatedEnum_(SET_THEME_APP_PROPERTIES_FLAGS) _In_ DWORD dwFlags - ); - - //--------------------------------------------------------------------------- -@@ -1450,6 +1543,7 @@ - // (not the display name) - // cchMaxSizeChars - max chars allowed in pszSizeBuff - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI GetCurrentThemeName( - _Out_writes_(cchMaxNameChars) LPWSTR pszThemeFileName, - _In_ int cchMaxNameChars, -@@ -1464,6 +1558,7 @@ - #define SZ_THDOCPROP_TOOLTIP L"ToolTip" - #define SZ_THDOCPROP_AUTHOR L"author" - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeDocumentationProperty( - _In_ LPCWSTR pszThemeName, -@@ -1500,6 +1595,7 @@ - // prc - (optional) rect that defines the area to be - // drawn (CHILD coordinates) - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeParentBackground( - _In_ HWND hwnd, -@@ -1516,6 +1612,7 @@ - // - if TRUE, enable themeing and, if user previously - // had a theme active, make it active now. - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - EnableTheming( - _In_ BOOL fEnable -@@ -1525,12 +1622,24 @@ - #define GBF_COPY 0x00000002 // create a copy of the bitmap - #define GBF_VALIDBITS (GBF_DIRECT | \ - GBF_COPY) -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(GET_THEME_BITMAP_FLAGS, unsigned long, -+ GBF_DIRECT, -+ GBF_COPY, -+ GBF_VALIDBITS); -+#endif - - #if (NTDDI_VERSION >= NTDDI_VISTA) - - #define DTPB_WINDOWDC 0x00000001 - #define DTPB_USECTLCOLORSTATIC 0x00000002 - #define DTPB_USEERASEBKGND 0x00000004 -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(DRAW_THEME_PARENT_BACKGROUND_FLAGS, unsigned long, -+ DTPB_WINDOWDC, -+ DTPB_USECTLCOLORSTATIC, -+ DTPB_USEERASEBKGND); -+#endif - - //--------------------------------------------------------------------------- - // DrawThemeParentBackgroundEx() -@@ -1559,11 +1668,12 @@ - // - // Return value - S_OK if something was painted, S_FALSE if not. - //--------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeParentBackgroundEx( - _In_ HWND hwnd, - _In_ HDC hdc, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(DRAW_THEME_PARENT_BACKGROUND_FLAGS) _In_ DWORD dwFlags, - _In_opt_ const RECT* prc - ); - -@@ -1589,6 +1699,7 @@ - WTNCA_NOSYSMENU | \ - WTNCA_NOMIRRORHELP) - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - SetWindowThemeAttribute( - _In_ HWND hwnd, -@@ -1597,6 +1708,7 @@ - _In_ DWORD cbAttribute - ); - -+_Win32_SupportedOS_WindowsVista_ - __inline HRESULT SetWindowThemeNonClientAttributes(HWND hwnd, DWORD dwMask, DWORD dwAttributes) - { - WTA_OPTIONS wta; -@@ -1655,15 +1767,33 @@ - DTT_APPLYOVERLAY | \ - DTT_GLOWSIZE | \ - DTT_COMPOSITED) -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(DTTOPTS_FLAGS, unsigned long, -+ DTT_TEXTCOLOR, -+ DTT_BORDERCOLOR, -+ DTT_SHADOWCOLOR, -+ DTT_SHADOWTYPE, -+ DTT_SHADOWOFFSET, -+ DTT_BORDERSIZE, -+ DTT_FONTPROP, -+ DTT_COLORPROP, -+ DTT_STATEID, -+ DTT_CALCRECT, -+ DTT_APPLYOVERLAY, -+ DTT_GLOWSIZE, -+ DTT_CALLBACK, -+ DTT_COMPOSITED, -+ DTT_VALIDBITS); -+#endif - - typedef struct _DTTOPTS - { - DWORD dwSize; // size of the struct -- DWORD dwFlags; // which options have been specified -+ _Win32_AssociatedEnum_(DTTOPTS_FLAGS) DWORD dwFlags; // which options have been specified - COLORREF crText; // color to use for text fill - COLORREF crBorder; // color to use for text outline - COLORREF crShadow; // color to use for text shadow -- int iTextShadowType; // TST_SINGLE or TST_CONTINUOUS -+ _Win32_AssociatedEnum_(TEXTSHADOWTYPE) int iTextShadowType; // TST_SINGLE or TST_CONTINUOUS - POINT ptShadowOffset; // where shadow is drawn (relative to text) - int iBorderSize; // Border radius around text - int iFontPropId; // Font property to use for the text instead of TMT_FONT -@@ -1677,6 +1807,7 @@ - - #if (NTDDI_VERSION >= NTDDI_VISTA) - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - DrawThemeTextEx( - _In_ HTHEME hTheme, -@@ -1685,7 +1816,7 @@ - _In_ int iStateId, - _In_reads_(cchText) LPCWSTR pszText, - _In_ int cchText, -- _In_ DWORD dwTextFlags, -+ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, - _Inout_ LPRECT pRect, - _In_opt_ const DTTOPTS *pOptions - ); -@@ -1704,13 +1835,14 @@ - // file when iPropId==TMT_DISKSTREAM (use GetCurrentThemeName - // and LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE) - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeBitmap( - _In_ HTHEME hTheme, - _In_ int iPartId, - _In_ int iStateId, -- _In_ int iPropId, -- _In_ ULONG dwFlags, -+ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, -+ _Win32_AssociatedEnum_(GET_THEME_BITMAP_FLAGS) _In_ ULONG dwFlags, - _Out_ HBITMAP* phBitmap - ); - -@@ -1727,6 +1859,7 @@ - // file when iPropId==TMT_DISKSTREAM (use GetCurrentThemeName - // and LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE) - //----------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeStream( - _In_ HTHEME hTheme, -@@ -1744,6 +1877,7 @@ - // Should be called prior to BeginBufferedPaint, - // and should have a matching BufferedPaintUnInit. - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - BufferedPaintInit( - VOID -@@ -1754,6 +1888,7 @@ - // Should be called once for each call to BufferedPaintInit, - // when calls to BeginBufferedPaint are no longer needed. - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - BufferedPaintUnInit( - VOID -@@ -1806,17 +1941,25 @@ - #define BPPF_ERASE 0x0001 // Empty the buffer during BeginBufferedPaint() - #define BPPF_NOCLIP 0x0002 // Don't apply the target DC's clip region to the double buffer - #define BPPF_NONCLIENT 0x0004 // Using a non-client DC -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(BP_PAINTPARAMS_FLAGS, unsigned long, -+ BPPF_ERASE, -+ BPPF_NOCLIP, -+ BPPF_NONCLIENT); -+#endif - - - // BP_PAINTPARAMS - typedef struct _BP_PAINTPARAMS - { - DWORD cbSize; -- DWORD dwFlags; // BPPF_ flags -+ _Win32_AssociatedEnum_(BP_PAINTPARAMS_FLAGS) DWORD dwFlags; // BPPF_ flags - const RECT * prcExclude; - const BLENDFUNCTION * pBlendFunction; - } BP_PAINTPARAMS, *PBP_PAINTPARAMS; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(_Success_(return != NULL) HPAINTBUFFER) - BeginBufferedPaint( - _In_ HDC hdcTarget, -@@ -1833,6 +1976,7 @@ - // hBufferedPaint - handle to buffered paint context - // fUpdateTarget - update target DC - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - EndBufferedPaint( - _In_ HPAINTBUFFER hBufferedPaint, -@@ -1845,6 +1989,7 @@ - // hBufferedPaint - handle to buffered paint context - // prc - pointer to receive target rectangle - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetBufferedPaintTargetRect( - _In_ HPAINTBUFFER hBufferedPaint, -@@ -1856,6 +2001,7 @@ - // - // hBufferedPaint - handle to buffered paint context - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(HDC) - GetBufferedPaintTargetDC( - _In_ HPAINTBUFFER hBufferedPaint -@@ -1866,6 +2012,7 @@ - // - // hBufferedPaint - handle to buffered paint context - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(HDC) - GetBufferedPaintDC( - _In_ HPAINTBUFFER hBufferedPaint -@@ -1879,6 +2026,7 @@ - // pcxRow - pointer to receive width of buffer bitmap, in pixels; - // this value may not necessarily be equal to the buffer width - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetBufferedPaintBits( - _In_ HPAINTBUFFER hBufferedPaint, -@@ -1892,6 +2040,7 @@ - // hBufferedPaint - handle to buffered paint context - // prc - rectangle to clear; NULL specifies entire buffer - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - BufferedPaintClear( - _In_ HPAINTBUFFER hBufferedPaint, -@@ -1905,6 +2054,7 @@ - // prc - rectangle to set alpha in; NULL specifies entire buffer - // alpha - alpha value to set in the given rectangle - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - BufferedPaintSetAlpha( - _In_ HPAINTBUFFER hBufferedPaint, -@@ -1920,6 +2070,7 @@ - // - // hwnd - window on which to stop all animations - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - BufferedPaintStopAllAnimations( - _In_ HWND hwnd -@@ -1927,6 +2078,7 @@ - - typedef HANDLE HANIMATIONBUFFER; // handle to a buffered paint animation - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(HANIMATIONBUFFER) - BeginBufferedAnimation( - _In_ HWND hwnd, -@@ -1939,12 +2091,14 @@ - _Out_ HDC *phdcTo - ); - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - EndBufferedAnimation( - _In_ HANIMATIONBUFFER hbpAnimation, - _In_ BOOL fUpdateTarget - ); - -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) - BufferedPaintRenderAnimation( - _In_ HWND hwnd, -@@ -1956,6 +2110,7 @@ - // process (themes are active). - // Roughly equivalent to "DwmIsCompositionEnabled() && IsAppthemed()" - //---------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI_(BOOL) IsCompositionActive(); - - //------------------------------------------------------------------------ -@@ -1969,6 +2124,7 @@ - // iPropId - property id - // pdwDuration - receives the transition duration - //------------------------------------------------------------------------ -+_Win32_SupportedOS_WindowsVista_ - THEMEAPI - GetThemeTransitionDuration( - _In_ HTHEME hTheme, + + #ifndef _UXTHEME_H_ + #define _UXTHEME_H_ ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long SET_THEME_APP_PROPERTIES_FLAGS; ++typedef unsigned long OPEN_THEME_DATA_FLAGS; ++typedef unsigned long GET_THEME_BITMAP_FLAGS; ++typedef unsigned long DRAW_THEME_PARENT_BACKGROUND_FLAGS; ++typedef unsigned long BP_PAINTPARAMS_FLAGS; ++typedef unsigned long DTTOPTS_FLAGS; ++typedef unsigned long HIT_TEST_BACKGROUND_OPTIONS; ++#endif + + #include + +@@ -43,6 +53,7 @@ + // HWND hwnd - The handle to the Target window that will receive feedback + // + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_Windows7_ + THEMEAPI_(BOOL) + BeginPanningFeedback( + _In_ HWND hwnd); +@@ -74,6 +85,7 @@ + // the second call would be with the parameter as 20 pixels as opposed to 10 + // Eg : UpdatePanningFeedback(hwnd, 10, 10, TRUE) + // ++_Win32_SupportedOS_Windows7_ + THEMEAPI_(BOOL) + UpdatePanningFeedback( + _In_ HWND hwnd, +@@ -97,6 +109,7 @@ + // Either ways the method will try to restore the moved window. + // The latter case exists for compatibility with legacy apps. + // ++_Win32_SupportedOS_Windows7_ + THEMEAPI_(BOOL) + EndPanningFeedback( + _In_ HWND hwnd, +@@ -157,6 +170,7 @@ + // pcbSizeOut - pointer to a DWORD buffer to receive the returned + // byte size + // ++_Win32_SupportedOS_Windows8_ + THEMEAPI GetThemeAnimationProperty( + _In_ HTHEME hTheme, + _In_ int iStoryboardId, +@@ -252,6 +266,7 @@ + // pcbSizeOut - pointer to a DWORD buffer to receive returned + // byte-size of transform operation struct + // ++_Win32_SupportedOS_Windows8_ + THEMEAPI GetThemeAnimationTransform( + _In_ HTHEME hTheme, + _In_ int iStoryboardId, +@@ -298,6 +313,7 @@ + // pcbSizeOut - pointer to a DWORD buffer to receive byte-size of + // the timing function struct + // ++_Win32_SupportedOS_Windows8_ + THEMEAPI GetThemeTimingFunction( + _In_ HTHEME hTheme, + _In_ int iTimingFunctionId, +@@ -312,6 +328,12 @@ + // NOTE: PartId's and StateId's used in the theme API are defined in the + // hdr file using the TM_PART and TM_STATE macros. For + // example, "TM_PART(BP, PUSHBUTTON)" defines the PartId "BP_PUSHBUTTON". ++ ++_Win32_SupportedOS_WindowsVista_ ++THEMEAPI ++CloseThemeData( ++ _In_ HTHEME hTheme ++ ); + + //--------------------------------------------------------------------------- + // OpenThemeData() - Open the theme data for the specified HWND and +@@ -343,6 +365,8 @@ + // that will be used. Otherwise, we fall back on + // the normal Button entry. + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(CloseThemeData, 0) + THEMEAPI_(HTHEME) + OpenThemeData( + _In_opt_ HWND hwnd, +@@ -351,9 +375,16 @@ + + #define OTD_FORCE_RECT_SIZING 0x00000001 // make all parts size to rect + #define OTD_NONCLIENT 0x00000002 // set if hTheme to be used for nonclient area ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(OPEN_THEME_DATA_FLAGS, unsigned long, ++ OTD_FORCE_RECT_SIZING, ++ OTD_NONCLIENT); ++#endif + #define OTD_VALIDBITS (OTD_FORCE_RECT_SIZING | \ + OTD_NONCLIENT) + ++_Win32_SupportedOS_15063_ ++_Win32_RAIIFree_(CloseThemeData, 0) + THEMEAPI_(HTHEME) + OpenThemeDataForDpi( + _In_opt_ HWND hwnd, +@@ -395,11 +426,13 @@ + // dwFlags - allows certain overrides of std features + // (see OTD_XXX defines above) + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(CloseThemeData, 0) + THEMEAPI_(HTHEME) + OpenThemeDataEx( + _In_opt_ HWND hwnd, + _In_ LPCWSTR pszClassList, +- _In_ DWORD dwFlags ++ _Win32_AssociatedEnum_(OPEN_THEME_DATA_FLAGS) _In_ DWORD dwFlags + ); + + //--------------------------------------------------------------------------- +@@ -412,11 +445,6 @@ + // hTheme - open theme data handle (returned from prior call + // to OpenThemeData() API). + //--------------------------------------------------------------------------- +-THEMEAPI +-CloseThemeData( +- _In_ HTHEME hTheme +- ); +- + //--------------------------------------------------------------------------- + // functions for basic drawing support + //--------------------------------------------------------------------------- +@@ -451,6 +479,7 @@ + // pRect - defines the size/location of the part + // pClipRect - optional clipping rect (don't draw outside it) + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeBackground( + _In_ HTHEME hTheme, +@@ -503,6 +532,7 @@ + // pRect - defines the size/location of the part + // pOptions - ptr to optional params + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeBackgroundEx( + _In_ HTHEME hTheme, +@@ -533,6 +563,7 @@ + // dwTextFlags2 - additional drawing options + // pRect - defines the size/location of the part + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeText( + _In_ HTHEME hTheme, +@@ -541,7 +572,7 @@ + _In_ int iStateId, + _In_reads_(cchText) LPCWSTR pszText, + _In_ int cchText, +- _In_ DWORD dwTextFlags, ++ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, + _In_ DWORD dwTextFlags2, + _In_ LPCRECT pRect + ); +@@ -559,6 +590,7 @@ + // pBoundingRect - the outer RECT of the part being drawn + // pContentRect - RECT to receive the content area + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeBackgroundContentRect( + _In_ HTHEME hTheme, +@@ -581,6 +613,7 @@ + // pContentRect - RECT that defines the content area + // pBoundingRect - RECT to receive the overall size/location of part + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeBackgroundExtent( + _In_ HTHEME hTheme, +@@ -606,6 +639,7 @@ + // pRect - the RECT used to draw the part + // pRegion - receives handle to calculated region + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeBackgroundRegion( + _In_ HTHEME hTheme, +@@ -634,6 +668,7 @@ + // eSize - the type of size to be retreived + // psz - receives the specified size of the part + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemePartSize( + _In_ HTHEME hTheme, +@@ -659,6 +694,7 @@ + // pszBoundingRect - optional: to control layout of text + // pszExtentRect - receives the RECT for text size/location + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeTextExtent( + _In_ HTHEME hTheme, +@@ -667,7 +703,7 @@ + _In_ int iStateId, + _In_reads_(cchCharCount) LPCWSTR pszText, + _In_ int cchCharCount, +- _In_ DWORD dwTextFlags, ++ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, + _In_opt_ LPCRECT pBoundingRect, + _Out_ LPRECT pExtentRect + ); +@@ -683,6 +719,7 @@ + // iStateId - state number (of the part) + // ptm - receives the font info + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeTextMetrics( + _In_ HTHEME hTheme, +@@ -725,6 +762,19 @@ + // Use system resizing border width rather than theme content margins. + // This option is mutually exclusive with HTTB_SIZINGTEMPLATE, which takes precedence. + #define HTTB_SYSTEMSIZINGMARGINS 0x00000200 ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(HIT_TEST_BACKGROUND_OPTIONS, unsigned long, ++ HTTB_BACKGROUNDSEG, ++ HTTB_FIXEDBORDER, ++ HTTB_CAPTION, ++ HTTB_RESIZINGBORDER_LEFT, ++ HTTB_RESIZINGBORDER_TOP, ++ HTTB_RESIZINGBORDER_RIGHT, ++ HTTB_RESIZINGBORDER_BOTTOM, ++ HTTB_RESIZINGBORDER, ++ HTTB_SIZINGTEMPLATE, ++ HTTB_SYSTEMSIZINGMARGINS); ++#endif + + //------------------------------------------------------------------------- + // HitTestThemeBackground() +@@ -750,13 +800,14 @@ + // HTRIGHT, HTTOPRIGHT, HTBOTTOMRIGHT, + // HTTOP, HTBOTTOM, HTCLIENT + //------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + HitTestThemeBackground( + _In_ HTHEME hTheme, + _In_opt_ HDC hdc, + _In_ int iPartId, + _In_ int iStateId, +- _In_ DWORD dwOptions, ++ _Win32_AssociatedEnum_(HIT_TEST_BACKGROUND_OPTIONS) _In_ DWORD dwOptions, + _In_ LPCRECT pRect, + _In_opt_ HRGN hrgn, + _In_ POINT ptTest, +@@ -775,6 +826,7 @@ + // uFlags - Same as DrawEdge() API + // pContentRect - Receives the interior rect if (uFlags & BF_ADJUST) + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeEdge( + _In_ HTHEME hTheme, +@@ -782,8 +834,8 @@ + _In_ int iPartId, + _In_ int iStateId, + _In_ LPCRECT pDestRect, +- _In_ UINT uEdge, +- _In_ UINT uFlags, ++ _Win32_AssociatedEnum_(DRAWEDGE_FLAGS) _In_ UINT uEdge, ++ _Win32_AssociatedEnum_(DRAW_EDGE_FLAGS) _In_ UINT uFlags, + _Out_opt_ LPRECT pContentRect + ); + +@@ -799,6 +851,7 @@ + // himl - handle to IMAGELIST + // iImageIndex - index into IMAGELIST (which icon to draw) + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeIcon( + _In_ HTHEME hTheme, +@@ -818,6 +871,7 @@ + // iPartId - part number to find definition for + // iStateId - state number of part + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + IsThemePartDefined( + _In_ HTHEME hTheme, +@@ -835,6 +889,7 @@ + // iPartId - part number + // iStateId - state number of part + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + IsThemeBackgroundPartiallyTransparent( + _In_ HTHEME hTheme, +@@ -868,12 +923,13 @@ + // iPropId - the property number to get the value for + // pColor - receives the value of the property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeColor( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ COLORREF *pColor + ); + +@@ -888,13 +944,14 @@ + // iPropId - the property number to get the value for + // piVal - receives the value of the property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeMetric( + _In_ HTHEME hTheme, + _In_opt_ HDC hdc, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ int *piVal + ); + +@@ -908,6 +965,7 @@ + // pszBuff - receives the string property value + // cchMaxBuffChars - max. number of chars allowed in pszBuff + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeString( + _In_ HTHEME hTheme, +@@ -927,12 +985,13 @@ + // iPropId - the property number to get the value for + // pfVal - receives the value of the property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeBool( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ BOOL *pfVal + ); + +@@ -945,12 +1004,13 @@ + // iPropId - the property number to get the value for + // piVal - receives the value of the property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeInt( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ int *piVal + ); + +@@ -963,12 +1023,13 @@ + // iPropId - the property number to get the value for + // piVal - receives the value of the enum (cast to int*) + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeEnumValue( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ int *piVal + ); + +@@ -982,12 +1043,13 @@ + // iPropId - the property number to get the value for + // pPoint - receives the value of the position property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemePosition( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ POINT *pPoint + ); + +@@ -1002,6 +1064,7 @@ + // pFont - receives the value of the LOGFONT property + // (scaled for the current logical screen dpi) + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeFont( + _In_ HTHEME hTheme, +@@ -1021,6 +1084,7 @@ + // iPropId - the property number to get the value for + // pRect - receives the value of the RECT property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeRect( + _In_ HTHEME hTheme, +@@ -1050,13 +1114,14 @@ + // prc - RECT for area to be drawn into + // pMargins - receives the value of the MARGINS property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeMargins( + _In_ HTHEME hTheme, + _In_opt_ HDC hdc, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _In_opt_ LPCRECT prc, + _Out_ MARGINS *pMargins + ); +@@ -1082,12 +1147,13 @@ + // iPropId - the property number to get the value for + // pIntList - receives the value of the INTLIST property + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeIntList( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_ INTLIST *pIntList + ); + +@@ -1112,6 +1178,7 @@ + // iPropId - the property number to search for + // pOrigin - receives the value of the property origin + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemePropertyOrigin( + _In_ HTHEME hTheme, +@@ -1149,6 +1216,7 @@ + // the specified window, you can pass an empty string (L"") so it + // won't match any section entries. + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + SetWindowTheme( + _In_ HWND hwnd, +@@ -1167,12 +1235,13 @@ + // pszThemeFileName - output buffer to receive the filename + // cchMaxBuffChars - the size of the return buffer, in chars + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeFilename( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, + _Out_writes_(cchMaxBuffChars) LPWSTR pszThemeFileName, + _In_ int cchMaxBuffChars + ); +@@ -1186,6 +1255,7 @@ + // + // iColorId - the system color index defined in winuser.h + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(COLORREF) + GetThemeSysColor( + _In_opt_ HTHEME hTheme, +@@ -1203,10 +1273,11 @@ + // + // iColorId - the system color index defined in winuser.h + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(HBRUSH) + GetThemeSysColorBrush( + _In_opt_ HTHEME hTheme, +- _In_ int iColorId ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iColorId + ); + + //--------------------------------------------------------------------------- +@@ -1219,10 +1290,11 @@ + // iBoolId - the TMT_XXX BOOL number (first BOOL + // is TMT_FLATMENUS) + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + GetThemeSysBool( + _In_opt_ HTHEME hTheme, +- _In_ int iBoolId ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iBoolId + ); + + //--------------------------------------------------------------------------- +@@ -1250,6 +1322,7 @@ + // when hTheme is NULL, iSizeId is passed directly + // to the GetSystemMetrics() function + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(int) + GetThemeSysSize( + _In_opt_ HTHEME hTheme, +@@ -1269,10 +1342,11 @@ + // plf - ptr to LOGFONT to receive the font value. + // (scaled for the current logical screen dpi) + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeSysFont( + _In_opt_ HTHEME hTheme, +- _In_ int iFontId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iFontId, + _Out_ LOGFONTW *plf + ); + +@@ -1290,10 +1364,11 @@ + // + // cchMaxStringChars - max. number of chars that pszStringBuff can hold + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeSysString( + _In_ HTHEME hTheme, +- _In_ int iStringId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iStringId, + _Out_writes_(cchMaxStringChars) LPWSTR pszStringBuff, + _In_ int cchMaxStringChars + ); +@@ -1311,10 +1386,11 @@ + // + // piValue - ptr to int to receive value + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeSysInt( + _In_ HTHEME hTheme, +- _In_ int iIntId, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iIntId, + _Out_ int *piValue + ); + +@@ -1325,6 +1401,7 @@ + // use the API "IsAppThemed()" to test if a theme is + // active for the calling process. + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + IsThemeActive( + VOID +@@ -1334,6 +1411,7 @@ + // IsAppThemed() - returns TRUE if a theme is active and available to + // the current process + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + IsAppThemed( + VOID +@@ -1346,6 +1424,7 @@ + // + // hwnd - the window to get the HTHEME of + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(HTHEME) + GetWindowTheme( + _In_ HWND hwnd +@@ -1385,6 +1464,7 @@ + // ETDT_ENABLETAB to enable the theme-defined background + // texturing using the Tab texture + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + EnableThemeDialogTexture( + _In_ HWND hwnd, +@@ -1398,6 +1478,7 @@ + // + // hdlg - the window handle of the target dialog + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + IsThemeDialogTextureEnabled( + _In_ HWND hwnd +@@ -1412,11 +1493,19 @@ + #define STAP_VALIDBITS (STAP_ALLOW_NONCLIENT | \ + STAP_ALLOW_CONTROLS | \ + STAP_ALLOW_WEBCONTENT) ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef _WIN32META_ANNOTATION_("FlagsEnum(ALLOW_NONCLIENT, ALLOW_CONTROLS, ALLOW_WEBCONTENT, VALIDBITS)", ++ STAP_ALLOW_NONCLIENT, ++ STAP_ALLOW_CONTROLS, ++ STAP_ALLOW_WEBCONTENT, ++ STAP_VALIDBITS) unsigned long SET_THEME_APP_PROPERTIES_FLAGS; ++#endif + + //--------------------------------------------------------------------------- + // GetThemeAppProperties() + // - returns the app property flags that control theming + //--------------------------------------------------------------------------- ++_Win32_AssociatedEnum_(SET_THEME_APP_PROPERTIES_FLAGS) _Win32_SupportedOS_WindowsVista_ + THEMEAPI_(DWORD) + GetThemeAppProperties( + VOID +@@ -1428,9 +1517,10 @@ + // + // dwFlags - the flag values to be set + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(void) + SetThemeAppProperties( +- _In_ DWORD dwFlags ++ _Win32_AssociatedEnum_(SET_THEME_APP_PROPERTIES_FLAGS) _In_ DWORD dwFlags + ); + + //--------------------------------------------------------------------------- +@@ -1450,6 +1540,7 @@ + // (not the display name) + // cchMaxSizeChars - max chars allowed in pszSizeBuff + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI GetCurrentThemeName( + _Out_writes_(cchMaxNameChars) LPWSTR pszThemeFileName, + _In_ int cchMaxNameChars, +@@ -1464,6 +1555,7 @@ + #define SZ_THDOCPROP_TOOLTIP L"ToolTip" + #define SZ_THDOCPROP_AUTHOR L"author" + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeDocumentationProperty( + _In_ LPCWSTR pszThemeName, +@@ -1500,6 +1592,7 @@ + // prc - (optional) rect that defines the area to be + // drawn (CHILD coordinates) + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeParentBackground( + _In_ HWND hwnd, +@@ -1516,6 +1609,7 @@ + // - if TRUE, enable themeing and, if user previously + // had a theme active, make it active now. + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + EnableTheming( + _In_ BOOL fEnable +@@ -1525,12 +1619,24 @@ + #define GBF_COPY 0x00000002 // create a copy of the bitmap + #define GBF_VALIDBITS (GBF_DIRECT | \ + GBF_COPY) ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(GET_THEME_BITMAP_FLAGS, unsigned long, ++ GBF_DIRECT, ++ GBF_COPY, ++ GBF_VALIDBITS); ++#endif + + #if (NTDDI_VERSION >= NTDDI_VISTA) + + #define DTPB_WINDOWDC 0x00000001 + #define DTPB_USECTLCOLORSTATIC 0x00000002 + #define DTPB_USEERASEBKGND 0x00000004 ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(DRAW_THEME_PARENT_BACKGROUND_FLAGS, unsigned long, ++ DTPB_WINDOWDC, ++ DTPB_USECTLCOLORSTATIC, ++ DTPB_USEERASEBKGND); ++#endif + + //--------------------------------------------------------------------------- + // DrawThemeParentBackgroundEx() +@@ -1559,11 +1665,12 @@ + // + // Return value - S_OK if something was painted, S_FALSE if not. + //--------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeParentBackgroundEx( + _In_ HWND hwnd, + _In_ HDC hdc, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(DRAW_THEME_PARENT_BACKGROUND_FLAGS) _In_ DWORD dwFlags, + _In_opt_ const RECT* prc + ); + +@@ -1589,6 +1696,7 @@ + WTNCA_NOSYSMENU | \ + WTNCA_NOMIRRORHELP) + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + SetWindowThemeAttribute( + _In_ HWND hwnd, +@@ -1597,6 +1705,7 @@ + _In_ DWORD cbAttribute + ); + ++_Win32_SupportedOS_WindowsVista_ + __inline HRESULT SetWindowThemeNonClientAttributes(HWND hwnd, DWORD dwMask, DWORD dwAttributes) + { + WTA_OPTIONS wta; +@@ -1655,15 +1764,33 @@ + DTT_APPLYOVERLAY | \ + DTT_GLOWSIZE | \ + DTT_COMPOSITED) ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(DTTOPTS_FLAGS, unsigned long, ++ DTT_TEXTCOLOR, ++ DTT_BORDERCOLOR, ++ DTT_SHADOWCOLOR, ++ DTT_SHADOWTYPE, ++ DTT_SHADOWOFFSET, ++ DTT_BORDERSIZE, ++ DTT_FONTPROP, ++ DTT_COLORPROP, ++ DTT_STATEID, ++ DTT_CALCRECT, ++ DTT_APPLYOVERLAY, ++ DTT_GLOWSIZE, ++ DTT_CALLBACK, ++ DTT_COMPOSITED, ++ DTT_VALIDBITS); ++#endif + + typedef struct _DTTOPTS + { + DWORD dwSize; // size of the struct +- DWORD dwFlags; // which options have been specified ++ _Win32_AssociatedEnum_(DTTOPTS_FLAGS) DWORD dwFlags; // which options have been specified + COLORREF crText; // color to use for text fill + COLORREF crBorder; // color to use for text outline + COLORREF crShadow; // color to use for text shadow +- int iTextShadowType; // TST_SINGLE or TST_CONTINUOUS ++ _Win32_AssociatedEnum_(TEXTSHADOWTYPE) int iTextShadowType; // TST_SINGLE or TST_CONTINUOUS + POINT ptShadowOffset; // where shadow is drawn (relative to text) + int iBorderSize; // Border radius around text + int iFontPropId; // Font property to use for the text instead of TMT_FONT +@@ -1677,6 +1804,7 @@ + + #if (NTDDI_VERSION >= NTDDI_VISTA) + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + DrawThemeTextEx( + _In_ HTHEME hTheme, +@@ -1685,7 +1813,7 @@ + _In_ int iStateId, + _In_reads_(cchText) LPCWSTR pszText, + _In_ int cchText, +- _In_ DWORD dwTextFlags, ++ _Win32_AssociatedEnum_(DRAW_TEXT_FORMAT) _In_ DWORD dwTextFlags, + _Inout_ LPRECT pRect, + _In_opt_ const DTTOPTS *pOptions + ); +@@ -1704,13 +1832,14 @@ + // file when iPropId==TMT_DISKSTREAM (use GetCurrentThemeName + // and LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE) + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeBitmap( + _In_ HTHEME hTheme, + _In_ int iPartId, + _In_ int iStateId, +- _In_ int iPropId, +- _In_ ULONG dwFlags, ++ _Win32_AssociatedEnum_(THEME_PROPERTY_SYMBOL_ID) _In_ int iPropId, ++ _Win32_AssociatedEnum_(GET_THEME_BITMAP_FLAGS) _In_ ULONG dwFlags, + _Out_ HBITMAP* phBitmap + ); + +@@ -1727,6 +1856,7 @@ + // file when iPropId==TMT_DISKSTREAM (use GetCurrentThemeName + // and LoadLibraryEx(LOAD_LIBRARY_AS_DATAFILE) + //----------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeStream( + _In_ HTHEME hTheme, +@@ -1744,6 +1874,7 @@ + // Should be called prior to BeginBufferedPaint, + // and should have a matching BufferedPaintUnInit. + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + BufferedPaintInit( + VOID +@@ -1754,6 +1885,7 @@ + // Should be called once for each call to BufferedPaintInit, + // when calls to BeginBufferedPaint are no longer needed. + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + BufferedPaintUnInit( + VOID +@@ -1806,17 +1938,25 @@ + #define BPPF_ERASE 0x0001 // Empty the buffer during BeginBufferedPaint() + #define BPPF_NOCLIP 0x0002 // Don't apply the target DC's clip region to the double buffer + #define BPPF_NONCLIENT 0x0004 // Using a non-client DC ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(BP_PAINTPARAMS_FLAGS, unsigned long, ++ BPPF_ERASE, ++ BPPF_NOCLIP, ++ BPPF_NONCLIENT); ++#endif + + + // BP_PAINTPARAMS + typedef struct _BP_PAINTPARAMS + { + DWORD cbSize; +- DWORD dwFlags; // BPPF_ flags ++ _Win32_AssociatedEnum_(BP_PAINTPARAMS_FLAGS) DWORD dwFlags; // BPPF_ flags + const RECT * prcExclude; + const BLENDFUNCTION * pBlendFunction; + } BP_PAINTPARAMS, *PBP_PAINTPARAMS; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(_Success_(return != NULL) HPAINTBUFFER) + BeginBufferedPaint( + _In_ HDC hdcTarget, +@@ -1833,6 +1973,7 @@ + // hBufferedPaint - handle to buffered paint context + // fUpdateTarget - update target DC + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + EndBufferedPaint( + _In_ HPAINTBUFFER hBufferedPaint, +@@ -1845,6 +1986,7 @@ + // hBufferedPaint - handle to buffered paint context + // prc - pointer to receive target rectangle + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetBufferedPaintTargetRect( + _In_ HPAINTBUFFER hBufferedPaint, +@@ -1856,6 +1998,7 @@ + // + // hBufferedPaint - handle to buffered paint context + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(HDC) + GetBufferedPaintTargetDC( + _In_ HPAINTBUFFER hBufferedPaint +@@ -1866,6 +2009,7 @@ + // + // hBufferedPaint - handle to buffered paint context + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(HDC) + GetBufferedPaintDC( + _In_ HPAINTBUFFER hBufferedPaint +@@ -1879,6 +2023,7 @@ + // pcxRow - pointer to receive width of buffer bitmap, in pixels; + // this value may not necessarily be equal to the buffer width + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetBufferedPaintBits( + _In_ HPAINTBUFFER hBufferedPaint, +@@ -1892,6 +2037,7 @@ + // hBufferedPaint - handle to buffered paint context + // prc - rectangle to clear; NULL specifies entire buffer + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + BufferedPaintClear( + _In_ HPAINTBUFFER hBufferedPaint, +@@ -1905,6 +2051,7 @@ + // prc - rectangle to set alpha in; NULL specifies entire buffer + // alpha - alpha value to set in the given rectangle + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + BufferedPaintSetAlpha( + _In_ HPAINTBUFFER hBufferedPaint, +@@ -1920,6 +2067,7 @@ + // + // hwnd - window on which to stop all animations + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + BufferedPaintStopAllAnimations( + _In_ HWND hwnd +@@ -1927,6 +2075,7 @@ + + typedef HANDLE HANIMATIONBUFFER; // handle to a buffered paint animation + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(HANIMATIONBUFFER) + BeginBufferedAnimation( + _In_ HWND hwnd, +@@ -1939,12 +2088,14 @@ + _Out_ HDC *phdcTo + ); + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + EndBufferedAnimation( + _In_ HANIMATIONBUFFER hbpAnimation, + _In_ BOOL fUpdateTarget + ); + ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) + BufferedPaintRenderAnimation( + _In_ HWND hwnd, +@@ -1956,6 +2107,7 @@ + // process (themes are active). + // Roughly equivalent to "DwmIsCompositionEnabled() && IsAppthemed()" + //---------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI_(BOOL) IsCompositionActive(); + + //------------------------------------------------------------------------ +@@ -1969,6 +2121,7 @@ + // iPropId - property id + // pdwDuration - receives the transition duration + //------------------------------------------------------------------------ ++_Win32_SupportedOS_WindowsVista_ + THEMEAPI + GetThemeTransitionDuration( + _In_ HTHEME hTheme, diff --git a/generation/WinSDK/patches/um/vfw.h.patch b/generation/WinSDK/patches/um/vfw.h.patch index c97779ddb..e69bd3ba1 100644 --- a/generation/WinSDK/patches/um/vfw.h.patch +++ b/generation/WinSDK/patches/um/vfw.h.patch @@ -10,17 +10,7 @@ diff --git a/um/vfw.h b/um/vfw.h #include -@@ -128,6 +130,9 @@ - #define ICVERSION 0x0104 - - DECLARE_HANDLE(HIC); /* Handle to a Installable Compressor */ -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HIC HIC; -+#endif - - // - // this code in biCompression means the DIB must be accesed via -@@ -543,6 +548,7 @@ +@@ -543,6 +545,7 @@ ************************************************************************/ @@ -28,7 +18,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI ICInfo( -@@ -551,6 +557,7 @@ +@@ -551,6 +554,7 @@ _Out_ ICINFO FAR * lpicinfo ); @@ -36,7 +26,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI ICInstall( -@@ -561,6 +568,7 @@ +@@ -561,6 +565,7 @@ _In_ UINT wFlags ); @@ -44,7 +34,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI ICRemove( -@@ -569,6 +577,7 @@ +@@ -569,6 +574,7 @@ _In_ UINT wFlags ); @@ -52,7 +42,7 @@ diff --git a/um/vfw.h b/um/vfw.h _Success_(return != 0) LRESULT VFWAPI -@@ -578,7 +587,8 @@ +@@ -578,7 +584,8 @@ _In_ DWORD cb ); @@ -62,7 +52,7 @@ diff --git a/um/vfw.h b/um/vfw.h VFWAPI ICOpen( _In_ DWORD fccType, -@@ -586,7 +596,8 @@ +@@ -586,7 +593,8 @@ _In_ UINT wMode ); @@ -72,7 +62,7 @@ diff --git a/um/vfw.h b/um/vfw.h VFWAPI ICOpenFunction( _In_ DWORD fccType, -@@ -595,13 +606,14 @@ +@@ -595,13 +603,14 @@ _In_ FARPROC lpfnHandler ); @@ -88,7 +78,7 @@ diff --git a/um/vfw.h b/um/vfw.h VFWAPI ICSendMessage( _In_ HIC hic, -@@ -691,6 +703,7 @@ +@@ -691,6 +700,7 @@ * compress a single frame * */ @@ -96,7 +86,7 @@ diff --git a/um/vfw.h b/um/vfw.h DWORD VFWAPIV ICCompress( -@@ -768,6 +781,7 @@ +@@ -768,6 +778,7 @@ */ #define ICDECOMPRESS_HURRYUP 0x80000000L // don't draw just buffer (hurry up!) @@ -104,7 +94,7 @@ diff --git a/um/vfw.h b/um/vfw.h DWORD VFWAPIV ICDecompress( -@@ -847,7 +861,7 @@ +@@ -847,7 +858,7 @@ * decompress a single frame * */ @@ -113,7 +103,7 @@ diff --git a/um/vfw.h b/um/vfw.h ICDecompressEx( _In_ HIC hic, _In_ DWORD dwFlags, -@@ -893,7 +907,7 @@ +@@ -893,7 +904,7 @@ * format (lpbiOutput) is supported. * */ @@ -122,7 +112,7 @@ diff --git a/um/vfw.h b/um/vfw.h ICDecompressExBegin( _In_ HIC hic, _In_ DWORD dwFlags, -@@ -935,7 +949,7 @@ +@@ -935,7 +946,7 @@ * ICDecompressExQuery() * */ @@ -131,7 +121,7 @@ diff --git a/um/vfw.h b/um/vfw.h ICDecompressExQuery( _In_ HIC hic, _In_ DWORD dwFlags, -@@ -996,6 +1010,7 @@ +@@ -996,6 +1007,7 @@ #define ICDRAW_FULLSCREEN 0x00000002L // draw to full screen #define ICDRAW_HDC 0x00000004L // draw to a HDC/HWND @@ -139,7 +129,7 @@ diff --git a/um/vfw.h b/um/vfw.h DWORD VFWAPIV ICDrawBegin( -@@ -1027,6 +1042,7 @@ +@@ -1027,6 +1039,7 @@ #define ICDRAW_HURRYUP 0x80000000L // don't draw just buffer (hurry up!) #define ICDRAW_UPDATE 0x40000000L // don't draw just update screen @@ -147,7 +137,7 @@ diff --git a/um/vfw.h b/um/vfw.h DWORD VFWAPIV ICDraw( -@@ -1041,7 +1057,7 @@ +@@ -1041,7 +1054,7 @@ // ICMessage is not supported on Win32, so provide a static inline function // to do the same job @@ -156,7 +146,7 @@ diff --git a/um/vfw.h b/um/vfw.h ICDrawSuggestFormat( _In_ HIC hic, _In_ LPBITMAPINFOHEADER lpbiIn, -@@ -1128,7 +1144,7 @@ +@@ -1128,7 +1141,7 @@ // ICMessage is not supported on NT @@ -165,7 +155,7 @@ diff --git a/um/vfw.h b/um/vfw.h ICSetStatusProc( _In_ HIC hic, _In_ DWORD dwFlags, -@@ -1159,7 +1175,7 @@ +@@ -1159,7 +1172,7 @@ #define ICDrawOpen(fccType, fccHandler, lpbiIn) \ ICLocate(fccType, fccHandler, lpbiIn, NULL, ICMODE_DRAW) @@ -174,7 +164,7 @@ diff --git a/um/vfw.h b/um/vfw.h VFWAPI ICLocate( _In_ DWORD fccType, -@@ -1169,6 +1185,7 @@ +@@ -1169,6 +1182,7 @@ _In_ WORD wFlags ); @@ -182,7 +172,7 @@ diff --git a/um/vfw.h b/um/vfw.h HIC VFWAPI ICGetDisplayFormat( -@@ -1184,6 +1201,7 @@ +@@ -1184,6 +1198,7 @@ Higher level functions ************************************************************************/ @@ -190,7 +180,7 @@ diff --git a/um/vfw.h b/um/vfw.h HANDLE VFWAPI ICImageCompress( -@@ -1196,6 +1214,7 @@ +@@ -1196,6 +1211,7 @@ _Inout_opt_ LONG FAR * plSize // compress to this size (0=whatever) ); @@ -198,7 +188,7 @@ diff --git a/um/vfw.h b/um/vfw.h HANDLE VFWAPI ICImageDecompress( -@@ -1238,6 +1257,7 @@ +@@ -1238,6 +1254,7 @@ // // allows user to choose compressor, quality etc... // @@ -206,7 +196,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI ICCompressorChoose( -@@ -1257,6 +1277,7 @@ +@@ -1257,6 +1274,7 @@ // can handle the input format // or input data @@ -214,7 +204,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI ICSeqCompressFrameStart( -@@ -1264,12 +1285,14 @@ +@@ -1264,12 +1282,14 @@ _In_ LPBITMAPINFO lpbiIn ); @@ -229,7 +219,7 @@ diff --git a/um/vfw.h b/um/vfw.h LPVOID VFWAPI ICSeqCompressFrame( -@@ -1280,6 +1303,7 @@ +@@ -1280,6 +1300,7 @@ _Inout_opt_ LONG FAR *plSize // size to compress to/of returned image ); @@ -237,7 +227,7 @@ diff --git a/um/vfw.h b/um/vfw.h void VFWAPI ICCompressorFree( -@@ -1337,12 +1361,14 @@ +@@ -1337,12 +1358,14 @@ ** DrawDibOpen() ** */ @@ -252,7 +242,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1354,6 +1380,7 @@ +@@ -1354,6 +1377,7 @@ ** DrawDibGetBuffer() ** */ @@ -260,7 +250,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern LPVOID VFWAPI -@@ -1375,6 +1402,7 @@ +@@ -1375,6 +1399,7 @@ ** get the palette used for drawing DIBs ** */ @@ -268,7 +258,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern HPALETTE VFWAPI -@@ -1389,6 +1417,7 @@ +@@ -1389,6 +1414,7 @@ ** get the palette used for drawing DIBs ** */ @@ -276,7 +266,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1400,6 +1429,7 @@ +@@ -1400,6 +1426,7 @@ /* ** DrawDibChangePalette() */ @@ -284,7 +274,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1416,6 +1446,7 @@ +@@ -1416,6 +1443,7 @@ ** realize the palette in a HDD ** */ @@ -292,7 +282,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern UINT VFWAPI -@@ -1431,6 +1462,7 @@ +@@ -1431,6 +1459,7 @@ ** start of streaming playback ** */ @@ -300,7 +290,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1445,6 +1477,7 @@ +@@ -1445,6 +1474,7 @@ ** start of streaming playback ** */ @@ -308,7 +298,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1458,6 +1491,7 @@ +@@ -1458,6 +1488,7 @@ ** prepare to draw ** */ @@ -316,7 +306,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1478,6 +1512,7 @@ +@@ -1478,6 +1509,7 @@ ** actualy draw a DIB to the screen. ** */ @@ -324,7 +314,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1508,6 +1543,7 @@ +@@ -1508,6 +1540,7 @@ /* ** DrawDibEnd() */ @@ -332,7 +322,7 @@ diff --git a/um/vfw.h b/um/vfw.h extern BOOL VFWAPI -@@ -1528,6 +1564,7 @@ +@@ -1528,6 +1561,7 @@ LONG timeSetDIBits; } DRAWDIBTIME, FAR *LPDRAWDIBTIME; @@ -340,7 +330,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI DrawDibTime( -@@ -1542,6 +1579,7 @@ +@@ -1542,6 +1576,7 @@ #define PD_STRETCHDIB_1_2_OK 0x0008 /* ... */ #define PD_STRETCHDIB_1_N_OK 0x0010 /* ... */ @@ -348,7 +338,7 @@ diff --git a/um/vfw.h b/um/vfw.h LRESULT VFWAPI DrawDibProfileDisplay( -@@ -1550,7 +1588,7 @@ +@@ -1550,7 +1585,7 @@ #ifdef DRAWDIB_INCLUDE_STRETCHDIB @@ -357,7 +347,7 @@ diff --git a/um/vfw.h b/um/vfw.h _In_ LPBITMAPINFOHEADER biDst, _Out_ LPVOID lpDst, _In_ int DstX, -@@ -2061,6 +2099,9 @@ +@@ -2061,6 +2096,9 @@ #undef INTERFACE #define INTERFACE IAVIStream @@ -367,7 +357,7 @@ diff --git a/um/vfw.h b/um/vfw.h DECLARE_INTERFACE_(IAVIStream, IUnknown) { // *** IUnknown methods *** -@@ -2105,6 +2146,9 @@ +@@ -2105,6 +2143,9 @@ #undef INTERFACE #define INTERFACE IAVIStreaming @@ -377,7 +367,7 @@ diff --git a/um/vfw.h b/um/vfw.h DECLARE_INTERFACE_(IAVIStreaming, IUnknown) { // *** IUnknown methods *** -@@ -2127,6 +2171,9 @@ +@@ -2127,6 +2168,9 @@ #undef INTERFACE #define INTERFACE IAVIEditStream @@ -387,7 +377,7 @@ diff --git a/um/vfw.h b/um/vfw.h DECLARE_INTERFACE_(IAVIEditStream, IUnknown) { // *** IUnknown methods *** -@@ -2170,6 +2217,9 @@ +@@ -2170,6 +2214,9 @@ #define INTERFACE IAVIFile #define PAVIFILE IAVIFile FAR* @@ -397,7 +387,7 @@ diff --git a/um/vfw.h b/um/vfw.h DECLARE_INTERFACE_(IAVIFile, IUnknown) { // *** IUnknown methods *** -@@ -2211,6 +2261,9 @@ +@@ -2211,6 +2258,9 @@ #define INTERFACE IGetFrame #define PGETFRAME IGetFrame FAR* @@ -407,7 +397,7 @@ diff --git a/um/vfw.h b/um/vfw.h DECLARE_INTERFACE_(IGetFrame, IUnknown) { // *** IUnknown methods *** -@@ -2261,15 +2314,21 @@ +@@ -2261,15 +2311,21 @@ // functions // @@ -429,7 +419,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIFileOpenW (_Outptr_ PAVIFILE FAR * ppfile, _In_ LPCWSTR szFile, UINT uMode, _In_opt_ LPCLSID lpHandler); #ifdef UNICODE -@@ -2284,7 +2343,9 @@ +@@ -2284,7 +2340,9 @@ #endif #ifdef _WIN32 @@ -439,7 +429,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIFileInfoA (_In_ PAVIFILE pfile, _Out_writes_bytes_(lSize) LPAVIFILEINFOA pfi, _In_ LONG lSize); #ifdef UNICODE #define AVIFileInfo AVIFileInfoW -@@ -2297,11 +2358,14 @@ +@@ -2297,11 +2355,14 @@ #endif @@ -454,7 +444,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIFileCreateStreamA (_In_ PAVIFILE pfile, _Outptr_ PAVISTREAM FAR *ppavi, _In_ AVISTREAMINFOA FAR * psi); #ifdef UNICODE #define AVIFileCreateStream AVIFileCreateStreamW -@@ -2313,20 +2377,27 @@ +@@ -2313,20 +2374,27 @@ #define AVIFileCreateStreamW AVIFileCreateStream /* ;Internal */ #endif @@ -482,7 +472,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIStreamInfoA (_In_ PAVISTREAM pavi, _Out_writes_bytes_(lSize) LPAVISTREAMINFOA psi, _In_ LONG lSize); #ifdef UNICODE #define AVIStreamInfo AVIStreamInfoW -@@ -2334,21 +2405,24 @@ +@@ -2334,21 +2402,24 @@ #define AVIStreamInfo AVIStreamInfoA #endif @@ -512,7 +502,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIStreamWrite (_In_ PAVISTREAM pavi, _In_ LONG lStart, _In_ LONG lSamples, _In_reads_bytes_(cbBuffer) LPVOID lpBuffer, _In_ LONG cbBuffer, _In_ DWORD dwFlags, -@@ -2357,21 +2431,26 @@ +@@ -2357,21 +2428,26 @@ // Right now, these just use AVIStreamInfo() to get information, then // return some of it. Can they be more efficient? @@ -545,7 +535,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIStreamGetFrameClose(_In_ PGETFRAME pg); -@@ -2381,9 +2460,11 @@ +@@ -2381,9 +2457,11 @@ // Shortcut function @@ -557,7 +547,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIStreamOpenFromFileW(_Outptr_ PAVISTREAM FAR *ppavi, LPCWSTR szFile, _In_ DWORD fccType, _In_ LONG lParam, _In_ UINT mode, _In_opt_ CLSID FAR *pclsidHandler); -@@ -2394,6 +2475,7 @@ +@@ -2394,6 +2472,7 @@ #endif // Use to create disembodied streams @@ -565,7 +555,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIStreamCreate(_Outptr_ PAVISTREAM FAR *ppavi, _In_ LONG lParam1, _In_ LONG lParam2, _In_opt_ CLSID FAR *pclsidHandler); -@@ -2516,13 +2598,14 @@ +@@ -2516,13 +2595,14 @@ #define comptypeDIB mmioFOURCC('D', 'I', 'B', ' ') #endif @@ -581,7 +571,7 @@ diff --git a/um/vfw.h b/um/vfw.h _In_opt_ CLSID FAR *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, -@@ -2530,13 +2613,14 @@ +@@ -2530,13 +2610,14 @@ _In_ LPAVICOMPRESSOPTIONS lpOptions, ...); @@ -597,7 +587,7 @@ diff --git a/um/vfw.h b/um/vfw.h _In_opt_ CLSID FAR *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, _In_ int nStreams, -@@ -2544,6 +2628,7 @@ +@@ -2544,6 +2625,7 @@ _In_ LPAVICOMPRESSOPTIONS lpOptions, ...); @@ -605,7 +595,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVISaveVW(LPCWSTR szFile, _In_opt_ CLSID FAR *pclsidHandler, _In_ AVISAVECALLBACK lpfnCallback, -@@ -2560,12 +2645,14 @@ +@@ -2560,12 +2642,14 @@ @@ -620,7 +610,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVISaveOptionsFree(int nStreams, _In_reads_(nStreams) LPAVICOMPRESSOPTIONS FAR *plpOptions); -@@ -2575,17 +2662,21 @@ +@@ -2575,17 +2659,21 @@ // These determine what the compression options dialog for video streams // will look like. @@ -642,7 +632,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, _In_ HANDLE hGlobal, _Outptr_ PAVISTREAM FAR *ppstream); /**************************************************************************** -@@ -2594,10 +2685,13 @@ +@@ -2594,10 +2682,13 @@ * ***************************************************************************/ @@ -656,7 +646,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI AVIClearClipboard(void); /**************************************************************************** -@@ -2605,22 +2699,31 @@ +@@ -2605,22 +2696,31 @@ * Editing routines * ***************************************************************************/ @@ -688,7 +678,7 @@ diff --git a/um/vfw.h b/um/vfw.h STDAPI EditStreamSetInfoA(_In_ PAVISTREAM pavi, _In_reads_bytes_(cbInfo) LPAVISTREAMINFOA lpInfo, _In_ LONG cbInfo); #ifdef UNICODE #define EditStreamSetInfo EditStreamSetInfoW -@@ -2750,6 +2853,7 @@ +@@ -2750,6 +2850,7 @@ #define MCIWndSM SendMessage /* SendMessage in C */ #endif /* __cplusplus */ #define MCIWND_WINDOW_CLASS TEXT("MCIWndClass") @@ -696,7 +686,7 @@ diff --git a/um/vfw.h b/um/vfw.h HWND VFWAPIV MCIWndCreateA( -@@ -2759,6 +2863,7 @@ +@@ -2759,6 +2860,7 @@ _In_opt_ LPCSTR szFile ); @@ -704,7 +694,7 @@ diff --git a/um/vfw.h b/um/vfw.h HWND VFWAPIV MCIWndCreateW( -@@ -2773,6 +2878,7 @@ +@@ -2773,6 +2875,7 @@ #else #define MCIWndCreate MCIWndCreateA #endif @@ -712,17 +702,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPIV MCIWndRegisterClass(void); // Flags for the MCIWndOpen command -@@ -3095,6 +3201,9 @@ - - /* video data types */ - DECLARE_HANDLE(HVIDEO); // generic handle -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HVIDEO HVIDEO; -+#endif - typedef HVIDEO FAR * LPHVIDEO; - #endif // ifndef RCINVOKED - -@@ -3647,22 +3756,26 @@ +@@ -3647,22 +3750,26 @@ // The only exported functions from AVICAP.DLL // ------------------------------------------------------------------ @@ -749,7 +729,7 @@ diff --git a/um/vfw.h b/um/vfw.h BOOL VFWAPI capGetDriverDescriptionW (UINT wDriverIndex, _Out_writes_(cbName) LPWSTR lpszName, _In_ int cbName, _Out_writes_(cbVer) LPWSTR lpszVer, _In_ int cbVer); -@@ -3779,24 +3892,28 @@ +@@ -3779,24 +3886,28 @@ ***************************************************************************/ #ifdef OFN_READONLY diff --git a/generation/WinSDK/patches/um/wabapi.h.patch b/generation/WinSDK/patches/um/wabapi.h.patch index 3d44a0a66..b053c3c9c 100644 --- a/generation/WinSDK/patches/um/wabapi.h.patch +++ b/generation/WinSDK/patches/um/wabapi.h.patch @@ -1,17 +1,7 @@ diff --git a/um/wabapi.h b/um/wabapi.h --- a/um/wabapi.h +++ b/um/wabapi.h -@@ -14,6 +14,9 @@ - #endif - - typedef struct _WABACTIONITEM * LPWABACTIONITEM; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef LPWABACTIONITEM LPWABACTIONITEM; -+#endif - - /* IWABObject Interface ---------------------------------------------------- */ - -@@ -76,6 +79,9 @@ +@@ -76,6 +76,9 @@ #undef INTERFACE #define INTERFACE IWABObject @@ -21,7 +11,7 @@ diff --git a/um/wabapi.h b/um/wabapi.h DECLARE_MAPI_INTERFACE_(IWABObject, IUnknown) { BEGIN_INTERFACE -@@ -279,6 +285,9 @@ +@@ -279,6 +282,9 @@ #undef INTERFACE #define INTERFACE IWABExtInit diff --git a/generation/WinSDK/patches/um/websocket.h.patch b/generation/WinSDK/patches/um/websocket.h.patch index 90d32938e..953cd0518 100644 --- a/generation/WinSDK/patches/um/websocket.h.patch +++ b/generation/WinSDK/patches/um/websocket.h.patch @@ -1,17 +1,7 @@ diff --git a/um/websocket.h b/um/websocket.h --- a/um/websocket.h +++ b/um/websocket.h -@@ -32,6 +32,9 @@ - #if NTDDI_VERSION >= NTDDI_WIN8 - - DECLARE_HANDLE(WEB_SOCKET_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WEB_SOCKET_HANDLE WEB_SOCKET_HANDLE; -+#endif - - #define WEB_SOCKET_MAX_CLOSE_REASON_LENGTH 123 - -@@ -120,11 +123,17 @@ +@@ -120,11 +120,17 @@ } CloseStatus; } WEB_SOCKET_BUFFER, *PWEB_SOCKET_BUFFER; @@ -31,7 +21,7 @@ diff --git a/um/websocket.h b/um/websocket.h HRESULT WINAPI WebSocketBeginClientHandshake( _In_ WEB_SOCKET_HANDLE hWebSocket, _In_reads_opt_(ulSubprotocolCount) PCSTR *pszSubprotocols, -@@ -136,6 +145,7 @@ +@@ -136,6 +142,7 @@ _Out_writes_(*pulAdditionalHeaderCount) PWEB_SOCKET_HTTP_HEADER *pAdditionalHeaders, _Out_ ULONG *pulAdditionalHeaderCount); @@ -39,7 +29,7 @@ diff --git a/um/websocket.h b/um/websocket.h HRESULT WINAPI WebSocketEndClientHandshake( _In_ WEB_SOCKET_HANDLE hWebSocket, _In_reads_(ulReponseHeaderCount) const PWEB_SOCKET_HTTP_HEADER pResponseHeaders, -@@ -144,11 +154,13 @@ +@@ -144,11 +151,13 @@ _Inout_opt_ ULONG *pulSelectedExtensionCount, _Inout_opt_ ULONG *pulSelectedSubprotocol); @@ -55,7 +45,7 @@ diff --git a/um/websocket.h b/um/websocket.h HRESULT WINAPI WebSocketBeginServerHandshake( _In_ WEB_SOCKET_HANDLE hWebSocket, _In_opt_ PCSTR pszSubprotocolSelected, -@@ -159,20 +171,24 @@ +@@ -159,20 +168,24 @@ _Out_writes_(*pulResponseHeaderCount) PWEB_SOCKET_HTTP_HEADER *pResponseHeaders, _Out_ ULONG* pulResponseHeaderCount); @@ -80,7 +70,7 @@ diff --git a/um/websocket.h b/um/websocket.h HRESULT WINAPI WebSocketGetAction( _In_ WEB_SOCKET_HANDLE hWebSocket, _In_ WEB_SOCKET_ACTION_QUEUE eActionQueue, -@@ -183,17 +199,17 @@ +@@ -183,17 +196,17 @@ _Out_opt_ PVOID *pvApplicationContext, _Out_ PVOID *pvActionContext); diff --git a/generation/WinSDK/patches/um/wincontypes.h.patch b/generation/WinSDK/patches/um/wincontypes.h.patch deleted file mode 100644 index 5990954d4..000000000 --- a/generation/WinSDK/patches/um/wincontypes.h.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/um/wincontypes.h b/um/wincontypes.h ---- a/um/wincontypes.h -+++ b/um/wincontypes.h -@@ -154,6 +154,9 @@ - } CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO; - - typedef VOID* HPCON; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPCON HPCON; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ - #pragma endregion diff --git a/generation/WinSDK/patches/um/wincrypt.h.patch b/generation/WinSDK/patches/um/wincrypt.h.patch index 936dcf04b..7972d7c66 100644 --- a/generation/WinSDK/patches/um/wincrypt.h.patch +++ b/generation/WinSDK/patches/um/wincrypt.h.patch @@ -2,4337 +2,4280 @@ diff --git a/um/wincrypt.h b/um/wincrypt.h --- a/um/wincrypt.h +++ b/um/wincrypt.h @@ -32,6 +32,15 @@ - #endif - - #include -+#include -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_FIND_CHAIN_IN_STORE_FLAGS; -+typedef unsigned long CERT_SELECT_CRITERIA_TYPE; -+typedef unsigned long CRYPT_ENCODE_OBJECT_FLAGS; -+typedef unsigned long CRYPT_KEY_FLAGS; -+typedef unsigned long CRYPT_VERIFY_CERT_FLAGS; -+#endif - - #ifdef __cplusplus - extern "C" { + #endif + + #include ++#include ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_FIND_CHAIN_IN_STORE_FLAGS; ++typedef unsigned long CERT_SELECT_CRITERIA_TYPE; ++typedef unsigned long CRYPT_ENCODE_OBJECT_FLAGS; ++typedef unsigned long CRYPT_KEY_FLAGS; ++typedef unsigned long CRYPT_VERIFY_CERT_FLAGS; ++#endif + + #ifdef __cplusplus + extern "C" { @@ -288,7 +297,80 @@ - // certenrolls_begin -- PROV_ENUMALGS_EX - #ifndef ALGIDDEF - #define ALGIDDEF --typedef unsigned int ALG_ID; -+typedef -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_WIN32META_ANNOTATION_("Enum(CALG_MD2, CALG_MD4, CALG_MD5, CALG_SHA, CALG_SHA1, CALG_MAC, CALG_RSA_SIGN, CALG_DSS_SIGN)", -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC), -+ (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY), -+ (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)) -+#if (NTDDI_VERSION >= NTDDI_WINXP) -+_WIN32META_ANNOTATION_("Enum(CALG_NO_SIGN)", -+ (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY)) -+#endif -+_WIN32META_ANNOTATION_("Enum(CALG_RSA_KEYX, CALG_DES, CALG_3DES_112, CALG_3DES, CALG_DESX, CALG_RC2, CALG_RC4, CALG_SEAL, CALG_DH_SF, CALG_DH_EPHEM, CALG_AGREEDKEY_ANY, CALG_KEA_KEYX, CALG_HUGHES_MD5, CALG_SKIPJACK, CALG_TEK, CALG_CYLINK_MEK, CALG_SSL3_SHAMD5, CALG_SSL3_MASTER, CALG_SCHANNEL_MASTER_HASH, CALG_SCHANNEL_MAC_KEY, CALG_SCHANNEL_ENC_KEY, CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_TLS1_MASTER, CALG_RC5, CALG_HMAC, CALG_TLS1PRF)", -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL), -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF), -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM), -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY), -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA), -+ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER), -+ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC5), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)) -+#if (NTDDI_VERSION >= NTDDI_WINXP) -+_WIN32META_ANNOTATION_("Enum(CALG_HASH_REPLACE_OWF, CALG_AES_128, CALG_AES_192, CALG_AES_256, CALG_AES)", -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256), -+ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES)) -+#endif -+#if (NTDDI_VERSION > NTDDI_WINXPSP2) -+_WIN32META_ANNOTATION_("Enum(CALG_SHA_256, CALG_SHA_384, CALG_SHA_512)", -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384), -+ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)) -+#endif -+#if (NTDDI_VERSION >= NTDDI_VISTA) -+_WIN32META_ANNOTATION_("Enum(CALG_ECDH, CALG_ECDH_EPHEM, CALG_ECMQV, CALG_ECDSA, CALG_NULLCIPHER)", -+ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH), -+ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM), -+ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV), -+ (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA), -+ (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_ANY | 0)) -+#endif -+#if (NTDDI_VERSION >= NTDDI_WIN10_RS1) -+_WIN32META_ANNOTATION_("Enum(CALG_THIRDPARTY_KEY_EXCHANGE, CALG_THIRDPARTY_SIGNATURE, CALG_THIRDPARTY_CIPHER, CALG_THIRDPARTY_HASH)", -+ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), -+ (ALG_CLASS_SIGNATURE | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), -+ (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), -+ (ALG_CLASS_HASH | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY)) -+#endif -+#endif -+unsigned int ALG_ID; - #endif - // certenrolls_end - + // certenrolls_begin -- PROV_ENUMALGS_EX + #ifndef ALGIDDEF + #define ALGIDDEF +-typedef unsigned int ALG_ID; ++typedef ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_WIN32META_ANNOTATION_("Enum(CALG_MD2, CALG_MD4, CALG_MD5, CALG_SHA, CALG_SHA1, CALG_MAC, CALG_RSA_SIGN, CALG_DSS_SIGN)", ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC), ++ (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY), ++ (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)) ++#if (NTDDI_VERSION >= NTDDI_WINXP) ++_WIN32META_ANNOTATION_("Enum(CALG_NO_SIGN)", ++ (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY)) ++#endif ++_WIN32META_ANNOTATION_("Enum(CALG_RSA_KEYX, CALG_DES, CALG_3DES_112, CALG_3DES, CALG_DESX, CALG_RC2, CALG_RC4, CALG_SEAL, CALG_DH_SF, CALG_DH_EPHEM, CALG_AGREEDKEY_ANY, CALG_KEA_KEYX, CALG_HUGHES_MD5, CALG_SKIPJACK, CALG_TEK, CALG_CYLINK_MEK, CALG_SSL3_SHAMD5, CALG_SSL3_MASTER, CALG_SCHANNEL_MASTER_HASH, CALG_SCHANNEL_MAC_KEY, CALG_SCHANNEL_ENC_KEY, CALG_PCT1_MASTER, CALG_SSL2_MASTER, CALG_TLS1_MASTER, CALG_RC5, CALG_HMAC, CALG_TLS1PRF)", ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL), ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF), ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM), ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY), ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA), ++ (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER), ++ (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC5), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)) ++#if (NTDDI_VERSION >= NTDDI_WINXP) ++_WIN32META_ANNOTATION_("Enum(CALG_HASH_REPLACE_OWF, CALG_AES_128, CALG_AES_192, CALG_AES_256, CALG_AES)", ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256), ++ (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES)) ++#endif ++#if (NTDDI_VERSION > NTDDI_WINXPSP2) ++_WIN32META_ANNOTATION_("Enum(CALG_SHA_256, CALG_SHA_384, CALG_SHA_512)", ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384), ++ (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)) ++#endif ++#if (NTDDI_VERSION >= NTDDI_VISTA) ++_WIN32META_ANNOTATION_("Enum(CALG_ECDH, CALG_ECDH_EPHEM, CALG_ECMQV, CALG_ECDSA, CALG_NULLCIPHER)", ++ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH), ++ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM), ++ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV), ++ (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA), ++ (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_ANY | 0)) ++#endif ++#if (NTDDI_VERSION >= NTDDI_WIN10_RS1) ++_WIN32META_ANNOTATION_("Enum(CALG_THIRDPARTY_KEY_EXCHANGE, CALG_THIRDPARTY_SIGNATURE, CALG_THIRDPARTY_CIPHER, CALG_THIRDPARTY_HASH)", ++ (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), ++ (ALG_CLASS_SIGNATURE | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), ++ (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY), ++ (ALG_CLASS_HASH | ALG_TYPE_THIRDPARTY | ALG_SID_THIRDPARTY_ANY)) ++#endif ++#endif ++unsigned int ALG_ID; + #endif + // certenrolls_end + @@ -535,6 +617,18 @@ - #define KP_HIGHEST_VERSION 41 // for TLS protocol version setting - #if (NTDDI_VERSION >= NTDDI_WS03) - #define KP_GET_USE_COUNT 42 // for use with PP_CRYPT_COUNT_KEY_USE contexts -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_KEY_PARAM_ID, unsigned long, -+ KP_ALGID, -+ KP_CERTIFICATE, -+ KP_PERMISSIONS, -+ KP_SALT, -+ KP_SALT_EX, -+ KP_BLOCKLEN, -+ KP_GET_USE_COUNT, -+ KP_KEYLEN); -+#endif - #endif //(NTDDI_VERSION >= NTDDI_WS03) - #define KP_PIN_ID 43 - #define KP_PIN_INFO 44 + #define KP_HIGHEST_VERSION 41 // for TLS protocol version setting + #if (NTDDI_VERSION >= NTDDI_WS03) + #define KP_GET_USE_COUNT 42 // for use with PP_CRYPT_COUNT_KEY_USE contexts ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_KEY_PARAM_ID, unsigned long, ++ KP_ALGID, ++ KP_CERTIFICATE, ++ KP_PERMISSIONS, ++ KP_SALT, ++ KP_SALT_EX, ++ KP_BLOCKLEN, ++ KP_GET_USE_COUNT, ++ KP_KEYLEN); ++#endif + #endif //(NTDDI_VERSION >= NTDDI_WS03) + #define KP_PIN_ID 43 + #define KP_PIN_INFO 44 @@ -568,6 +662,12 @@ - #define HP_HASHVAL 0x0002 // Hash value - #define HP_HASHSIZE 0x0004 // Hash value size - #define HP_HMAC_INFO 0x0005 // information for creating an HMAC -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_SET_HASH_PARAM, unsigned long, -+ HP_HMAC_INFO, -+ HP_HASHVAL); -+#endif - #define HP_TLS1PRF_LABEL 0x0006 // label for TLS1 PRF - #define HP_TLS1PRF_SEED 0x0007 // seed for TLS1 PRF - + #define HP_HASHVAL 0x0002 // Hash value + #define HP_HASHSIZE 0x0004 // Hash value size + #define HP_HMAC_INFO 0x0005 // information for creating an HMAC ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_SET_HASH_PARAM, unsigned long, ++ HP_HMAC_INFO, ++ HP_HASHVAL); ++#endif + #define HP_TLS1PRF_LABEL 0x0006 // label for TLS1 PRF + #define HP_TLS1PRF_SEED 0x0007 // seed for TLS1 PRF + @@ -618,6 +718,13 @@ - #define PP_SMARTCARD_READER 43 - #define PP_SMARTCARD_GUID 45 - #define PP_ROOT_CERTSTORE 46 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, -+ PP_ROOT_CERTSTORE, -+ PP_USER_CERTSTORE, -+ PP_SMARTCARD_READER); -+#endif - #endif //(NTDDI_VERSION >= NTDDI_VISTA) - #if (NTDDI_VERSION >= NTDDI_WIN8) - #define PP_SMARTCARD_READER_ICON 47 + #define PP_SMARTCARD_READER 43 + #define PP_SMARTCARD_GUID 45 + #define PP_ROOT_CERTSTORE 46 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, ++ PP_ROOT_CERTSTORE, ++ PP_USER_CERTSTORE, ++ PP_SMARTCARD_READER); ++#endif + #endif //(NTDDI_VERSION >= NTDDI_VISTA) + #if (NTDDI_VERSION >= NTDDI_WIN8) + #define PP_SMARTCARD_READER_ICON 47 @@ -660,10 +767,32 @@ - #define PP_KEYEXCHANGE_ALG 14 - #define PP_SIGNATURE_ALG 15 - #define PP_DELETEKEY 24 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, -+ PP_CLIENT_HWND, -+ PP_DELETEKEY, -+ PP_KEYEXCHANGE_ALG, -+ PP_KEYEXCHANGE_PIN, -+ PP_KEYEXCHANGE_KEYSIZE, -+ PP_KEYSET_SEC_DESCR, -+ PP_SIGNATURE_ALG, -+ PP_SIGNATURE_PIN, -+ PP_SIGNATURE_KEYSIZE, -+ PP_UI_PROMPT, -+ PP_USE_HARDWARE_RNG); -+#endif - #if (NTDDI_VERSION >= NTDDI_VISTA) - #define PP_PIN_PROMPT_STRING 44 - #define PP_SECURE_KEYEXCHANGE_PIN 47 - #define PP_SECURE_SIGNATURE_PIN 48 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, -+ PP_PIN_PROMPT_STRING, -+ PP_SECURE_KEYEXCHANGE_PIN, -+ PP_SECURE_SIGNATURE_PIN); -+#endif - #endif //(NTDDI_VERSION >= NTDDI_VISTA) - #if (NTDDI_VERSION >= NTDDI_WIN10_RS5) - #define PP_DISMISS_PIN_UI_SEC 49 + #define PP_KEYEXCHANGE_ALG 14 + #define PP_SIGNATURE_ALG 15 + #define PP_DELETEKEY 24 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, ++ PP_CLIENT_HWND, ++ PP_DELETEKEY, ++ PP_KEYEXCHANGE_ALG, ++ PP_KEYEXCHANGE_PIN, ++ PP_KEYEXCHANGE_KEYSIZE, ++ PP_KEYSET_SEC_DESCR, ++ PP_SIGNATURE_ALG, ++ PP_SIGNATURE_PIN, ++ PP_SIGNATURE_KEYSIZE, ++ PP_UI_PROMPT, ++ PP_USE_HARDWARE_RNG); ++#endif + #if (NTDDI_VERSION >= NTDDI_VISTA) + #define PP_PIN_PROMPT_STRING 44 + #define PP_SECURE_KEYEXCHANGE_PIN 47 + #define PP_SECURE_SIGNATURE_PIN 48 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_SET_PROV_PARAM_ID, unsigned long, ++ PP_PIN_PROMPT_STRING, ++ PP_SECURE_KEYEXCHANGE_PIN, ++ PP_SECURE_SIGNATURE_PIN); ++#endif + #endif //(NTDDI_VERSION >= NTDDI_VISTA) + #if (NTDDI_VERSION >= NTDDI_WIN10_RS5) + #define PP_DISMISS_PIN_UI_SEC 49 @@ -1081,6 +1210,8 @@ - #pragma region Desktop Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #pragma region Desktop Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1091,6 +1222,8 @@ - _In_ DWORD dwProvType, - _In_ DWORD dwFlags - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwProvType, + _In_ DWORD dwFlags + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1113,6 +1246,8 @@ - #pragma region Application Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #pragma region Application Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1127,16 +1262,20 @@ - #pragma region Desktop Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - CryptGenKey( - _In_ HCRYPTPROV hProv, - _In_ ALG_ID Algid, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, - _Out_ HCRYPTKEY *phKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #pragma region Desktop Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + CryptGenKey( + _In_ HCRYPTPROV hProv, + _In_ ALG_ID Algid, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, + _Out_ HCRYPTKEY *phKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1148,6 +1287,8 @@ - _Out_ HCRYPTKEY *phKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Out_ HCRYPTKEY *phKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1155,37 +1296,45 @@ - _In_ HCRYPTKEY hKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - CryptSetKeyParam( - _In_ HCRYPTKEY hKey, -- _In_ DWORD dwParam, -+ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_PARAM_ID) DWORD dwParam, - _In_ CONST BYTE *pbData, - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - CryptGetKeyParam( - _In_ HCRYPTKEY hKey, -- _In_ DWORD dwParam, -+ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_PARAM_ID) DWORD dwParam, - _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, - _Inout_ DWORD *pdwDataLen, - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - CryptSetHashParam( - _In_ HCRYPTHASH hHash, -- _In_ DWORD dwParam, -+ _In_ _Win32_AssociatedEnum_(CRYPT_SET_HASH_PARAM) DWORD dwParam, - _In_ CONST BYTE *pbData, - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ HCRYPTKEY hKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + CryptSetKeyParam( + _In_ HCRYPTKEY hKey, +- _In_ DWORD dwParam, ++ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_PARAM_ID) DWORD dwParam, + _In_ CONST BYTE *pbData, + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + CryptGetKeyParam( + _In_ HCRYPTKEY hKey, +- _In_ DWORD dwParam, ++ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_PARAM_ID) DWORD dwParam, + _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, + _Inout_ DWORD *pdwDataLen, + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + CryptSetHashParam( + _In_ HCRYPTHASH hHash, +- _In_ DWORD dwParam, ++ _In_ _Win32_AssociatedEnum_(CRYPT_SET_HASH_PARAM) DWORD dwParam, + _In_ CONST BYTE *pbData, + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1197,16 +1346,20 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI - CryptSetProvParam( - _In_ HCRYPTPROV hProv, -- _In_ DWORD dwParam, -+ _Win32_AssociatedEnum_(CRYPT_SET_PROV_PARAM_ID) _In_ DWORD dwParam, - _In_ CONST BYTE *pbData, - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI + CryptSetProvParam( + _In_ HCRYPTPROV hProv, +- _In_ DWORD dwParam, ++ _Win32_AssociatedEnum_(CRYPT_SET_PROV_PARAM_ID) _In_ DWORD dwParam, + _In_ CONST BYTE *pbData, + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1218,6 +1371,8 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1227,6 +1382,8 @@ - _Inout_updates_bytes_(dwLen) BYTE *pbBuffer - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Inout_updates_bytes_(dwLen) BYTE *pbBuffer + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1236,6 +1393,8 @@ - _Out_ HCRYPTKEY *phUserKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Out_ HCRYPTKEY *phUserKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1243,11 +1402,13 @@ - _In_ HCRYPTKEY hKey, - _In_ HCRYPTKEY hExpKey, - _In_ DWORD dwBlobType, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, - _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, - _Inout_ DWORD *pdwDataLen - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ HCRYPTKEY hKey, + _In_ HCRYPTKEY hExpKey, + _In_ DWORD dwBlobType, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, + _Out_writes_bytes_to_opt_(*pdwDataLen, *pdwDataLen) BYTE *pbData, + _Inout_ DWORD *pdwDataLen + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1256,10 +1417,12 @@ - _In_reads_bytes_(dwDataLen) CONST BYTE *pbData, - _In_ DWORD dwDataLen, - _In_ HCRYPTKEY hPubKey, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, - _Out_ HCRYPTKEY *phKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + _In_reads_bytes_(dwDataLen) CONST BYTE *pbData, + _In_ DWORD dwDataLen, + _In_ HCRYPTKEY hPubKey, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, + _Out_ HCRYPTKEY *phKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1273,6 +1436,8 @@ - _In_ DWORD dwBufLen - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + _In_ DWORD dwBufLen + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1285,6 +1450,8 @@ - _Inout_ DWORD *pdwDataLen - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Inout_ DWORD *pdwDataLen + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1296,6 +1463,8 @@ - _Out_ HCRYPTHASH *phHash - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Out_ HCRYPTHASH *phHash + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1306,6 +1475,8 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1315,6 +1486,8 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1322,6 +1495,8 @@ - _In_ HCRYPTHASH hHash - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ HCRYPTHASH hHash + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1333,6 +1508,8 @@ - _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature, - _Inout_ DWORD *pdwSigLen - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Out_writes_bytes_to_opt_(*pdwSigLen, *pdwSigLen) BYTE *pbSignature, + _Inout_ DWORD *pdwSigLen + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1350,6 +1527,8 @@ - #define CryptSignHash CryptSignHashA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #define CryptSignHash CryptSignHashA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1361,6 +1540,8 @@ - _In_opt_ LPCSTR szDescription, - _In_ DWORD dwFlags - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_opt_ LPCSTR szDescription, + _In_ DWORD dwFlags + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1378,6 +1559,8 @@ - #define CryptVerifySignature CryptVerifySignatureA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #define CryptVerifySignature CryptVerifySignatureA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1385,6 +1568,8 @@ - _In_ LPCSTR pszProvName, - _In_ DWORD dwProvType - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ LPCSTR pszProvName, + _In_ DWORD dwProvType + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1398,6 +1583,8 @@ - #define CryptSetProvider CryptSetProviderA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #define CryptSetProvider CryptSetProviderA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1407,6 +1594,8 @@ - _Reserved_ DWORD *pdwReserved, - _In_ DWORD dwFlags - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Reserved_ DWORD *pdwReserved, + _In_ DWORD dwFlags + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1422,6 +1611,8 @@ - #define CryptSetProviderEx CryptSetProviderExA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + #define CryptSetProviderEx CryptSetProviderExA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1432,6 +1623,8 @@ - _Out_writes_bytes_to_opt_(*pcbProvName, *pcbProvName) LPSTR pszProvName, - _Inout_ DWORD *pcbProvName - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + _Out_writes_bytes_to_opt_(*pcbProvName, *pcbProvName) LPSTR pszProvName, + _Inout_ DWORD *pcbProvName + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1448,6 +1641,8 @@ - #define CryptGetDefaultProvider CryptGetDefaultProviderA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + #define CryptGetDefaultProvider CryptGetDefaultProviderA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1459,6 +1654,8 @@ - _Out_writes_bytes_to_opt_(*pcbTypeName, *pcbTypeName) LPSTR szTypeName, - _Inout_ DWORD *pcbTypeName - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + _Out_writes_bytes_to_opt_(*pcbTypeName, *pcbTypeName) LPSTR szTypeName, + _Inout_ DWORD *pcbTypeName + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1476,6 +1673,8 @@ - #define CryptEnumProviderTypes CryptEnumProviderTypesA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + #define CryptEnumProviderTypes CryptEnumProviderTypesA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1487,6 +1686,8 @@ - _Out_writes_bytes_to_opt_(*pcbProvName, *pcbProvName) LPSTR szProvName, - _Inout_ DWORD *pcbProvName - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - _Success_(0 != return) BOOL - WINAPI + _Out_writes_bytes_to_opt_(*pcbProvName, *pcbProvName) LPSTR szProvName, + _Inout_ DWORD *pcbProvName + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + _Success_(0 != return) BOOL + WINAPI @@ -1504,6 +1705,8 @@ - #define CryptEnumProviders CryptEnumProvidersA - #endif // !UNICODE - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + #define CryptEnumProviders CryptEnumProvidersA + #endif // !UNICODE + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1513,6 +1716,8 @@ - _In_ DWORD dwFlags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _In_ DWORD dwFlags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1523,6 +1728,8 @@ - _Out_ HCRYPTKEY *phKey - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINADVAPI - BOOL - WINAPI + _Out_ HCRYPTKEY *phKey + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINADVAPI + BOOL + WINAPI @@ -1546,6 +1753,7 @@ - // in Microsoft Windows XP, because Windows XP ships with the 128-bit - // encryption provider. - // -+_Win32_SupportedOS_WindowsXP_ - BOOL - __cdecl - GetEncSChannel( -@@ -1581,10 +1789,16 @@ - // the CNG NCRYPT_KEY_HANDLE. Where appropriate, the HCRYPTPROV will be - // converted to a NCRYPT_KEY_HANDLE via the CNG NCryptTranslateHandle(). - typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCRYPTPROV_OR_NCRYPT_KEY_HANDLE HCRYPTPROV_OR_NCRYPT_KEY_HANDLE; -+#endif - - // This type is used where the HCRYPTPROV parameter is no longer used. - // The caller should always pass in NULL. - typedef ULONG_PTR HCRYPTPROV_LEGACY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCRYPTPROV_LEGACY HCRYPTPROV_LEGACY; -+#endif - - //+------------------------------------------------------------------------- - // In a CRYPT_BIT_BLOB the last byte may contain 0-7 unused bits. Therefore, the -@@ -2006,9 +2220,13 @@ - // The interpretation of the Value depends on the dwValueType. - // See below for a list of the types. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef int CERT_RDN_ATTR_VALUE_TYPE; -+#endif -+ - typedef struct _CERT_RDN_ATTR { - LPSTR pszObjId; -- DWORD dwValueType; -+ _Win32_AssociatedEnum_(CERT_RDN_ATTR_VALUE_TYPE) DWORD dwValueType; - CERT_RDN_VALUE_BLOB Value; - } CERT_RDN_ATTR, *PCERT_RDN_ATTR; - -@@ -2146,6 +2364,28 @@ - #define CERT_RDN_UNICODE_STRING 12 - #define CERT_RDN_UTF8_STRING 13 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_RDN_ATTR_VALUE_TYPE, int, -+ CERT_RDN_ANY_TYPE, -+ CERT_RDN_NUMERIC_STRING, -+ CERT_RDN_PRINTABLE_STRING, -+ CERT_RDN_T61_STRING, -+ CERT_RDN_VIDEOTEX_STRING, -+ CERT_RDN_IA5_STRING, -+ CERT_RDN_GRAPHIC_STRING, -+ CERT_RDN_ISO646_STRING, -+ CERT_RDN_GENERAL_STRING, -+ CERT_RDN_INT4_STRING, -+ CERT_RDN_UNICODE_STRING, -+ CERT_RDN_BMP_STRING, -+ CERT_RDN_ENCODED_BLOB, -+ CERT_RDN_OCTET_STRING, -+ CERT_RDN_TELETEX_STRING, -+ CERT_RDN_UNIVERSAL_STRING, -+ CERT_RDN_UTF8_STRING, -+ CERT_RDN_VISIBLE_STRING); -+#endif -+ - #define CERT_RDN_TYPE_MASK 0x000000FF - #define CERT_RDN_FLAGS_MASK 0xFF000000 - -@@ -2383,7 +2623,7 @@ - CRYPT_BIT_BLOB IssuerUniqueId; - CRYPT_BIT_BLOB SubjectUniqueId; - DWORD cExtension; -- PCERT_EXTENSION rgExtension; -+ _Field_size_(cExtension) PCERT_EXTENSION rgExtension; - } CERT_INFO, *PCERT_INFO; - // certenrolls_end - -@@ -2615,6 +2855,12 @@ - #define X509_ASN_ENCODING 0x00000001 - #define X509_NDR_ENCODING 0x00000002 - #define PKCS_7_ASN_ENCODING 0x00010000 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_QUERY_ENCODING_TYPE, unsigned long, -+ X509_ASN_ENCODING, -+ PKCS_7_ASN_ENCODING); -+#endif - #define PKCS_7_NDR_ENCODING 0x00020000 - - //+------------------------------------------------------------------------- -@@ -2631,11 +2877,13 @@ - // for the lpszStructType, the hex dump of the encoded BLOB will be returned. - // User can set the flag CRYPT_FORMAT_STR_NO_HEX to disable the hex dump. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptFormatObject( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ DWORD dwFormatType, - _In_ DWORD dwFormatStrType, - _In_opt_ void *pFormatStruct, -@@ -2730,24 +2978,28 @@ - } CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA; - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptEncodeObjectEx( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR lpszStructType, - _In_ const void *pvStructInfo, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CRYPT_ENCODE_OBJECT_FLAGS) _In_ DWORD dwFlags, - _In_opt_ PCRYPT_ENCODE_PARA pEncodePara, - _Out_opt_ void *pvEncoded, - _Inout_ DWORD *pcbEncoded - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptEncodeObject( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR lpszStructType, - _In_ const void *pvStructInfo, - _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, -@@ -2812,6 +3064,15 @@ - // IA5String encoding of host name(in DNS Name/ URL/ EmailAddress) containing - // non-IA5 characters by encoding the host name in punycode first. - #define CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG 0x20000 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_ENCODE_OBJECT_FLAGS, unsigned long, -+ CRYPT_ENCODE_ALLOC_FLAG, -+ CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG, -+ CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG, -+ CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG, -+ CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG); -+#endif - - // The following flag is applicable when encoding structures that require - // IA5String encoding of a path (http URL/Ldap query) containing non-IA5 -@@ -2835,11 +3096,13 @@ - PFN_CRYPT_FREE pfnFree; // OPTIONAL - } CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptDecodeObjectEx( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR lpszStructType, - _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, - _In_ DWORD cbEncoded, -@@ -2850,16 +3113,18 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptDecodeObject( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR lpszStructType, - _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, - _In_ DWORD cbEncoded, - _In_ DWORD dwFlags, -- _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) void *pvStructInfo, -+ _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) _Win32_ContainsInteriorPointers_ void *pvStructInfo, - _Inout_ DWORD *pcbStructInfo - ); - -@@ -3643,6 +3908,13 @@ - - // Subject logotype - #define CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO 0x20 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_ROOT_PROGRAM_FLAGS, unsigned long, -+ CERT_ROOT_PROGRAM_FLAG_LSC, -+ CERT_ROOT_PROGRAM_FLAG_ORG, -+ CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO); -+#endif - - // Validation of the OrganizationalUnit (OU) field in the subject name - // meets Root Program Requirements for display. -@@ -4069,6 +4341,17 @@ - #define CERT_ALT_NAME_URL 7 - #define CERT_ALT_NAME_IP_ADDRESS 8 - #define CERT_ALT_NAME_REGISTERED_ID 9 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_ALT_NAME, int, -+ CERT_ALT_NAME_RFC822_NAME, -+ CERT_ALT_NAME_DNS_NAME, -+ CERT_ALT_NAME_URL, -+ CERT_ALT_NAME_REGISTERED_ID, -+ CERT_ALT_NAME_DIRECTORY_NAME, -+ CERT_ALT_NAME_IP_ADDRESS, -+ CERT_ALT_NAME_OTHER_NAME); -+#endif - // certenrolld_end - - // certenrolls_begin -- CERT_ALT_NAME_INFO -@@ -4493,6 +4776,18 @@ - #define CRL_REASON_CESSATION_OF_OPERATION 5 - #define CRL_REASON_CERTIFICATE_HOLD 6 - #define CRL_REASON_REMOVE_FROM_CRL 8 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_REVOCATION_STATUS_REASON, unsigned long, -+ CRL_REASON_UNSPECIFIED, -+ CRL_REASON_KEY_COMPROMISE, -+ CRL_REASON_CA_COMPROMISE, -+ CRL_REASON_AFFILIATION_CHANGED, -+ CRL_REASON_SUPERSEDED, -+ CRL_REASON_CESSATION_OF_OPERATION, -+ CRL_REASON_CERTIFICATE_HOLD, -+ CRL_REASON_REMOVE_FROM_CRL); -+#endif - #define CRL_REASON_PRIVILEGE_WITHDRAWN 9 - #define CRL_REASON_AA_COMPROMISE 10 - -@@ -5534,16 +5829,24 @@ - PCERT_HASHED_URL rgHashedUrl; - } CERT_LOGOTYPE_REFERENCE, *PCERT_LOGOTYPE_REFERENCE; - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_LOGOTYPE_IMAGE_INFO_TYPE; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_LOGOTYPE_CHOICE; -+#endif -+ - typedef struct _CERT_LOGOTYPE_IMAGE_INFO { - // CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE or - // CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE -- DWORD dwLogotypeImageInfoChoice; -+ _Win32_AssociatedEnum_(CERT_LOGOTYPE_IMAGE_INFO_TYPE) DWORD dwLogotypeImageInfoChoice; - - DWORD dwFileSize; // In octets - DWORD dwXSize; // Horizontal size in pixels - DWORD dwYSize; // Vertical size in pixels - -- DWORD dwLogotypeImageResolutionChoice; -+ _Win32_AssociatedEnum_(CERT_LOGOTYPE_CHOICE) DWORD dwLogotypeImageResolutionChoice; - union { - // CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE - // No resolution value -@@ -5561,9 +5864,22 @@ - #define CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE 1 - #define CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE 2 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_LOGOTYPE_IMAGE_INFO_TYPE, unsigned long, -+ CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE, -+ CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE); -+#endif -+ - #define CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE 0 - #define CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE 1 - #define CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_LOGOTYPE_CHOICE, unsigned long, -+ CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE, -+ CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE, -+ CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE); -+#endif - - typedef struct _CERT_LOGOTYPE_IMAGE { - CERT_LOGOTYPE_DETAILS LogotypeDetails; -@@ -5598,8 +5914,12 @@ - } CERT_LOGOTYPE_DATA, *PCERT_LOGOTYPE_DATA; - - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_LOGOTYPE_OPTION; -+#endif -+ - typedef struct _CERT_LOGOTYPE_INFO { -- DWORD dwLogotypeInfoChoice; -+ _Win32_AssociatedEnum_(CERT_LOGOTYPE_OPTION) DWORD dwLogotypeInfoChoice; - union { - // CERT_LOGOTYPE_DIRECT_INFO_CHOICE - PCERT_LOGOTYPE_DATA pLogotypeDirectInfo; -@@ -5611,6 +5931,12 @@ - - #define CERT_LOGOTYPE_DIRECT_INFO_CHOICE 1 - #define CERT_LOGOTYPE_INDIRECT_INFO_CHOICE 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_LOGOTYPE_OPTION, unsigned long, -+ CERT_LOGOTYPE_DIRECT_INFO_CHOICE, -+ CERT_LOGOTYPE_INDIRECT_INFO_CHOICE); -+#endif - - typedef struct _CERT_OTHER_LOGOTYPE_INFO { - LPSTR pszObjId; -@@ -5639,8 +5965,12 @@ - // pvStructInfo points to following CERT_BIOMETRIC_EXT_INFO data structure. - //========================================================================== - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_BIOMETRIC_DATA_TYPE; -+#endif -+ - typedef struct _CERT_BIOMETRIC_DATA { -- DWORD dwTypeOfBiometricDataChoice; -+ _Win32_AssociatedEnum_(CERT_BIOMETRIC_DATA_TYPE) DWORD dwTypeOfBiometricDataChoice; - union { - // CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE - DWORD dwPredefined; -@@ -5654,6 +5984,12 @@ - - #define CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE 1 - #define CERT_BIOMETRIC_OID_DATA_CHOICE 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_BIOMETRIC_DATA_TYPE, unsigned long, -+ CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE, -+ CERT_BIOMETRIC_OID_DATA_CHOICE); -+#endif - - #define CERT_BIOMETRIC_PICTURE_TYPE 0 - #define CERT_BIOMETRIC_SIGNATURE_TYPE 1 -@@ -5764,7 +6100,7 @@ - FILETIME RevocationDate; - - // See X509_CRL_REASON_CODE for list of reason codes -- DWORD dwCrlReasonCode; -+ _Win32_AssociatedEnum_(CERT_REVOCATION_STATUS_REASON) DWORD dwCrlReasonCode; - } OCSP_BASIC_REVOKED_INFO, *POCSP_BASIC_REVOKED_INFO; - - typedef struct _OCSP_BASIC_RESPONSE_ENTRY { -@@ -5950,6 +6286,7 @@ - // DEFAULT functions are installed by setting rgFuncEntry[].pszOID = - // CRYPT_DEFAULT_OID. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -5968,6 +6305,7 @@ - // - // If the set already exists, a handle to the existing set is returned. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCRYPTOIDFUNCSET - WINAPI -@@ -5994,6 +6332,8 @@ - // the registered function might handle a new special case and call the - // pre-installed function to handle the remaining cases. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -6017,6 +6357,8 @@ - // names. The list is terminated with an empty (L"\0") Dll file name. - // For example: L"first.dll" L"\0" L"second.dll" L"\0" L"\0" - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -6051,6 +6393,7 @@ - // be called to release it or CryptGetDefaultOIDFunctionAddress can also - // be called for a NULL pwszDll. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -6077,6 +6420,7 @@ - // STDAPI DllCanUnloadNow(void); - //-------------------------------------------------------------------------- - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6105,6 +6449,7 @@ - // This allows a Dll to export multiple OID functions for the same - // function name without needing to interpose its own OID dispatcher function. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6120,6 +6465,7 @@ - // Unregister the Dll containing the function to be called for the specified - // encoding type, function name and OID. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6143,6 +6489,7 @@ - // pwszDll may contain environment-variable strings - // which are ExpandEnvironmentStrings()'ed before loading the Dll. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6160,6 +6507,7 @@ - // Unregister the Dll containing the default function to be called for - // the specified encoding type and function name. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6177,6 +6525,7 @@ - // - // String types are UNICODE. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6185,7 +6534,7 @@ - _In_ LPCSTR pszFuncName, - _In_ LPCSTR pszOID, - _In_opt_ LPCWSTR pwszValueName, -- _In_ DWORD dwValueType, -+ _Win32_AssociatedEnum_(REG_VALUE_TYPE) _In_ DWORD dwValueType, - _In_reads_bytes_opt_(cbValueData) const BYTE *pbValueData, - _In_ DWORD cbValueData - ); -@@ -6205,6 +6554,8 @@ - #pragma region Application Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6243,6 +6594,8 @@ - // - // String types are UNICODE. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6519,6 +6872,7 @@ - // Setting dwGroupId to 0, searches all groups according to the dwKeyType. - // Otherwise, only the dwGroupId is searched. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRYPT_OID_INFO - WINAPI -@@ -6541,6 +6895,12 @@ - #define CRYPT_OID_INFO_OID_KEY_FLAGS_MASK 0xFFFF0000 - #define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000 - #define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_IMPORT_PUBLIC_KEY_FLAGS, unsigned long, -+ CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG, -+ CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG); -+#endif - - // Set the following in the above dwKeyType parameter to restrict public keys - // valid for "Pure" or "PreHash" signing -@@ -6600,6 +6960,7 @@ - // By default the registered OID information is installed after crypt32.dll's - // OID entries. Set CRYPT_INSTALL_OID_INFO_BEFORE_FLAG to install before. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6614,6 +6975,7 @@ - // Unregister OID information. Only the pszOID and dwGroupId fields are - // used to identify the OID information to be unregistered. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6643,6 +7005,7 @@ - // - // dwFlags currently isn't used and must be set to 0. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -6676,6 +7039,7 @@ - // - // The registered names are searched before the pre-installed names. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LPCWSTR - WINAPI -@@ -6690,8 +7054,12 @@ - // Certificate Strong Signature Defines and Data Structures - //========================================================================== - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_STRONG_SIGN_FLAGS; -+#endif -+ - typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO { -- DWORD dwFlags; -+ _Win32_AssociatedEnum_(CERT_STRONG_SIGN_FLAGS) DWORD dwFlags; - LPWSTR pwszCNGSignHashAlgids; - LPWSTR pwszCNGPubKeyMinBitLengths; // Optional - } CERT_STRONG_SIGN_SERIALIZED_INFO, *PCERT_STRONG_SIGN_SERIALIZED_INFO; -@@ -6744,6 +7112,12 @@ - // CRLs or OCSP responses. - #define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1 - #define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_STRONG_SIGN_FLAGS, unsigned long, -+ CERT_STRONG_SIGN_ENABLE_CRL_CHECK, -+ CERT_STRONG_SIGN_ENABLE_OCSP_CHECK); -+#endif - - - // -@@ -6829,6 +7203,15 @@ - #define CMSG_ENVELOPED 3 - #define CMSG_SIGNED_AND_ENVELOPED 4 - #define CMSG_HASHED 5 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_MSG_TYPE, unsigned long, -+ CMSG_DATA, -+ CMSG_SIGNED, -+ CMSG_ENVELOPED, -+ CMSG_SIGNED_AND_ENVELOPED, -+ CMSG_HASHED); -+#endif - #define CMSG_ENCRYPTED 6 - - //+------------------------------------------------------------------------- -@@ -6854,8 +7237,12 @@ - //+------------------------------------------------------------------------- - // Certificate Identifier - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_ID_OPTION; -+#endif -+ - typedef struct _CERT_ID { -- DWORD dwIdChoice; -+ _Win32_AssociatedEnum_(CERT_ID_OPTION) DWORD dwIdChoice; - union { - // CERT_ID_ISSUER_SERIAL_NUMBER - CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber; -@@ -6869,6 +7256,13 @@ - #define CERT_ID_ISSUER_SERIAL_NUMBER 1 - #define CERT_ID_KEY_IDENTIFIER 2 - #define CERT_ID_SHA1_HASH 3 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_ID_OPTION, unsigned long, -+ CERT_ID_ISSUER_SERIAL_NUMBER, -+ CERT_ID_KEY_IDENTIFIER, -+ CERT_ID_SHA1_HASH); -+#endif - - //+------------------------------------------------------------------------- - // The message encode information (pvMsgEncodeInfo) is message type dependent -@@ -7120,6 +7514,10 @@ - } CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO, - *PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO; - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CMSG_KEY_AGREE_OPTION; -+#endif -+ - typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO { - DWORD cbSize; - CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; -@@ -7136,7 +7534,7 @@ - HCRYPTPROV_LEGACY hCryptProv; - DWORD dwKeySpec; - -- DWORD dwKeyChoice; -+ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_OPTION) DWORD dwKeyChoice; - union { - // CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE - // -@@ -7156,6 +7554,12 @@ - - #define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1 - #define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CMSG_KEY_AGREE_OPTION, unsigned long, -+ CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE, -+ CMSG_KEY_AGREE_STATIC_KEY_CHOICE); -+#endif - - //+------------------------------------------------------------------------- - // Mail List Recipient Encode Info -@@ -7401,13 +7805,15 @@ - // The pStreamInfo parameter needs to be set to stream the encoded message - // output. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCRYPTMSG - WINAPI - CryptMsgOpenToEncode( - _In_ DWORD dwMsgEncodingType, - _In_ DWORD dwFlags, -- _In_ DWORD dwMsgType, -+ _In_ _Win32_AssociatedEnum_(CRYPT_MSG_TYPE) DWORD dwMsgType, - _In_ void const *pvMsgEncodeInfo, - _In_opt_ LPSTR pszInnerContentObjID, - _In_opt_ PCMSG_STREAM_INFO pStreamInfo -@@ -7421,6 +7827,8 @@ - // the data to be updated. Note, this might not be the exact length. However, - // it will always be greater than or equal to the actual length. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -7445,6 +7853,8 @@ - // The pStreamInfo parameter needs to be set to stream the decoded content - // output. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCRYPTMSG - WINAPI -@@ -7460,6 +7870,7 @@ - //+------------------------------------------------------------------------- - // Duplicate a cryptographic message handle - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCRYPTMSG - WINAPI -@@ -7472,6 +7883,8 @@ - // - // LastError is preserved unless FALSE is returned. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -7488,6 +7901,8 @@ - // is completed. The encoded/decoded content and the decoded parameters - // are valid until the open and all duplicated handles are closed. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -7522,6 +7937,8 @@ - // - // See below for a list of the parameters to get. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -7529,7 +7946,7 @@ - _In_ HCRYPTMSG hCryptMsg, - _In_ DWORD dwParamType, - _In_ DWORD dwIndex, -- _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, -+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) _Win32_ContainsInteriorPointers_ void *pvData, - _Inout_ DWORD *pcbData - ); - -@@ -7987,9 +8404,13 @@ - PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; - } CMSG_RECIPIENT_ENCRYPTED_KEY_INFO, *PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO; - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CMSG_KEY_AGREE_ORIGINATOR; -+#endif -+ - typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO { - DWORD dwVersion; -- DWORD dwOriginatorChoice; -+ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_ORIGINATOR) DWORD dwOriginatorChoice; - union { - // CMSG_KEY_AGREE_ORIGINATOR_CERT - CERT_ID OriginatorCertId; -@@ -8005,6 +8426,12 @@ - - #define CMSG_KEY_AGREE_ORIGINATOR_CERT 1 - #define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CMSG_KEY_AGREE_ORIGINATOR, unsigned long, -+ CMSG_KEY_AGREE_ORIGINATOR_CERT, -+ CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY); -+#endif - - - typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO { -@@ -8060,6 +8487,8 @@ - // See below for a list of the control operations and their pvCtrlPara - // type definition. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -8468,6 +8897,8 @@ - // The only fields referenced from pciCountersigner are SerialNumber, Issuer, - // and SubjectPublicKeyInfo. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - CryptMsgVerifyCountersignatureEncoded( -@@ -8491,6 +8922,8 @@ - // The signer can be a CERT_PUBLIC_KEY_INFO, certificate context or a - // chain context. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - CryptMsgVerifyCountersignatureEncodedEx( -@@ -8517,6 +8950,8 @@ - // - // dwIndex is a zero-based index of the SignerInfo to be countersigned. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - CryptMsgCountersign( -@@ -8532,6 +8967,8 @@ - // attribute in the unauthenticated attributes of a signed-data or - // signed-and-enveloped-data message. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - CryptMsgCountersignEncoded( -@@ -8805,7 +9242,7 @@ - DWORD dwRecipientIndex; - CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; - CRYPT_DATA_BLOB UserKeyingMaterial; -- DWORD dwOriginatorChoice; -+ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_ORIGINATOR) DWORD dwOriginatorChoice; - union { - // CMSG_KEY_AGREE_ORIGINATOR_CERT - CERT_ID OriginatorCertId; -@@ -9171,6 +9608,9 @@ - //-------------------------------------------------------------------------- - - typedef void *HCERTSTORE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCERTSTORE HCERTSTORE; -+#endif - - //+------------------------------------------------------------------------- - // Certificate context. -@@ -9183,7 +9623,7 @@ - //-------------------------------------------------------------------------- - // certenrolls_begin -- CERT_CONTEXT - typedef struct _CERT_CONTEXT { -- DWORD dwCertEncodingType; -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType; - BYTE *pbCertEncoded; - DWORD cbCertEncoded; - PCERT_INFO pCertInfo; -@@ -9202,7 +9642,7 @@ - // copy (which also must be freed by calling CertFreeCRLContext). - //-------------------------------------------------------------------------- - typedef struct _CRL_CONTEXT { -- DWORD dwCertEncodingType; -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType; - BYTE *pbCrlEncoded; - DWORD cbCrlEncoded; - PCRL_INFO pCrlInfo; -@@ -9526,11 +9966,15 @@ - DWORD dwFlags; - } CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM; - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_KEY_FLAGS; -+#endif -+ - typedef struct _CRYPT_KEY_PROV_INFO { - LPWSTR pwszContainerName; - LPWSTR pwszProvName; - DWORD dwProvType; -- DWORD dwFlags; -+ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) DWORD dwFlags; - DWORD cProvParam; - PCRYPT_KEY_PROV_PARAM rgProvParam; - DWORD dwKeySpec; -@@ -9550,6 +9994,13 @@ - // Special dwKeySpec indicating a CNG NCRYPT_KEY_HANDLE instead of a CAPI1 - // HCRYPTPROV - #define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_KEY_SPEC, unsigned long, -+ AT_KEYEXCHANGE, -+ AT_SIGNATURE, -+ CERT_NCRYPT_KEY_SPEC); -+#endif - - //+------------------------------------------------------------------------- - // Certificate Key Context -@@ -9672,6 +10123,22 @@ - #define CERT_STORE_CREATE_NEW_FLAG 0x00002000 - #define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x00001000 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_OPEN_STORE_FLAGS, unsigned long, -+ CERT_STORE_BACKUP_RESTORE_FLAG, -+ CERT_STORE_CREATE_NEW_FLAG, -+ CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG, -+ CERT_STORE_DELETE_FLAG, -+ CERT_STORE_ENUM_ARCHIVED_FLAG, -+ CERT_STORE_MAXIMUM_ALLOWED_FLAG, -+ CERT_STORE_NO_CRYPT_RELEASE_FLAG, -+ CERT_STORE_OPEN_EXISTING_FLAG, -+ CERT_STORE_READONLY_FLAG, -+ CERT_STORE_SET_LOCALIZED_NAME_FLAG, -+ CERT_STORE_SHARE_CONTEXT_FLAG, -+ CERT_STORE_UPDATE_KEYID_FLAG); -+#endif -+ - //+------------------------------------------------------------------------- - // Certificate Store Provider flags are in the HiWord (0xFFFF0000) - //-------------------------------------------------------------------------- -@@ -9707,6 +10174,12 @@ - - // Location of the system store: - #define CERT_SYSTEM_STORE_LOCATION_MASK 0x00FF0000 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_SYSTEM_STORE_FLAGS, unsigned long, -+ CERT_SYSTEM_STORE_LOCATION_MASK, -+ CERT_SYSTEM_STORE_RELOCATE_FLAG); -+#endif - #define CERT_SYSTEM_STORE_LOCATION_SHIFT 16 - - -@@ -10572,15 +11045,17 @@ - // attribute. - // - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Must_inspect_result_ - HCERTSTORE - WINAPI - CertOpenStore( - _In_ LPCSTR lpszStoreProvider, -- _In_ DWORD dwEncodingType, -- _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwEncodingType, -+ _Win32_Reserved_ _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -+ _Win32_AssociatedEnum_(CERT_OPEN_STORE_FLAGS) _In_ DWORD dwFlags, - _In_opt_ const void *pvPara - ); - -@@ -10590,6 +11065,9 @@ - - // Handle returned by the store provider when opened. - typedef void *HCERTSTOREPROV; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCERTSTOREPROV HCERTSTOREPROV; -+#endif - - // Store Provider OID function's pszFuncName. - #define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv" -@@ -10600,12 +11078,16 @@ - // zeroed with cbSize set before the provider is called. If the provider - // doesn't need to be called again after the open it doesn't need to - // make any updates to the CERT_STORE_PROV_INFO. -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_STORE_PROV_FLAGS; -+#endif -+ - typedef struct _CERT_STORE_PROV_INFO { - DWORD cbSize; - DWORD cStoreProvFunc; - void **rgpvStoreProvFunc; - HCERTSTOREPROV hStoreProv; -- DWORD dwStoreProvFlags; -+ _Win32_AssociatedEnum_(CERT_STORE_PROV_FLAGS) DWORD dwStoreProvFlags; - HCRYPTOIDFUNCADDR hStoreProvFuncAddr2; - } CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO; - -@@ -10618,9 +11100,9 @@ - // call the appropriate provider callback function. - typedef BOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)( - _In_ LPCSTR lpszStoreProvider, -- _In_ DWORD dwEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwEncodingType, - _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CERT_OPEN_STORE_FLAGS) _In_ DWORD dwFlags, - _In_opt_ const void *pvPara, - _In_ HCERTSTORE hCertStore, - _Inout_ PCERT_STORE_PROV_INFO pStoreProvInfo -@@ -10645,6 +11127,15 @@ - // The open callback sets the following flag if the contexts are persisted - // to a LocalMachine system store. - #define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_STORE_PROV_FLAGS, unsigned long, -+ CERT_STORE_PROV_EXTERNAL_FLAG, -+ CERT_STORE_PROV_DELETED_FLAG, -+ CERT_STORE_PROV_NO_PERSIST_FLAG, -+ CERT_STORE_PROV_SYSTEM_STORE_FLAG, -+ CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG); -+#endif - - // The open callback sets the following flag if the contexts are persisted - // to a GroupPolicy system store. -@@ -10941,6 +11432,7 @@ - //+------------------------------------------------------------------------- - // Duplicate a cert store handle - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCERTSTORE - WINAPI -@@ -10950,6 +11442,12 @@ - - #define CERT_STORE_SAVE_AS_STORE 1 - #define CERT_STORE_SAVE_AS_PKCS7 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_STORE_SAVE_AS, unsigned long, -+ CERT_STORE_SAVE_AS_PKCS7, -+ CERT_STORE_SAVE_AS_STORE); -+#endif - #define CERT_STORE_SAVE_AS_PKCS12 3 - - #define CERT_STORE_SAVE_TO_FILE 1 -@@ -10957,6 +11455,15 @@ - #define CERT_STORE_SAVE_TO_FILENAME_A 3 - #define CERT_STORE_SAVE_TO_FILENAME_W 4 - #define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_STORE_SAVE_TO, unsigned long, -+ CERT_STORE_SAVE_TO_FILE, -+ CERT_STORE_SAVE_TO_FILENAME, -+ CERT_STORE_SAVE_TO_FILENAME_A, -+ CERT_STORE_SAVE_TO_FILENAME_W, -+ CERT_STORE_SAVE_TO_MEMORY); -+#endif - - //+------------------------------------------------------------------------- - // Save the cert store. Extended version with lots of options. -@@ -11010,14 +11517,16 @@ - // Note, the default (without "_A" or "_W") is UNICODE. - // - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertSaveStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwEncodingType, -- _In_ DWORD dwSaveAs, -- _In_ DWORD dwSaveTo, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_STORE_SAVE_AS) DWORD dwSaveAs, -+ _In_ _Win32_AssociatedEnum_(CERT_STORE_SAVE_TO) DWORD dwSaveTo, - _Inout_ void *pvSaveToPara, - _In_ DWORD dwFlags - ); -@@ -11052,6 +11561,8 @@ - // LastError is preserved unless CERT_CLOSE_STORE_CHECK_FLAG is set and FALSE - // is returned. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -11072,12 +11583,14 @@ - // The returned certificate might not be valid. Normally, it would be - // verified when getting its issuer certificate (CertGetIssuerCertificateFromStore). - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI - CertGetSubjectCertificateFromStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_INFO pCertId // Only the Issuer and SerialNumber - // fields are used - ); -@@ -11098,6 +11611,8 @@ - // NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI -@@ -11130,14 +11645,16 @@ - // NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI - CertFindCertificateInStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ DWORD dwFindFlags, -- _In_ DWORD dwFindType, -+ _In_ _Win32_AssociatedEnum_(CERT_FIND_FLAGS) DWORD dwFindType, - _In_opt_ const void *pvFindPara, - _In_opt_ PCCERT_CONTEXT pPrevCertContext - ); -@@ -11413,6 +11930,54 @@ - #define CERT_FIND_OR_CTL_USAGE_FLAG CERT_FIND_OR_ENHKEY_USAGE_FLAG - #define CERT_FIND_VALID_CTL_USAGE_FLAG CERT_FIND_VALID_ENHKEY_USAGE_FLAG - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_FIND_FLAGS, unsigned long, -+ CERT_FIND_ANY, -+ CERT_FIND_CERT_ID, -+ CERT_FIND_CTL_USAGE, -+ CERT_FIND_ENHKEY_USAGE, -+ CERT_FIND_EXISTING, -+ CERT_FIND_HASH, -+ CERT_FIND_HAS_PRIVATE_KEY, -+ CERT_FIND_ISSUER_ATTR, -+ CERT_FIND_ISSUER_NAME, -+ CERT_FIND_ISSUER_OF, -+ CERT_FIND_ISSUER_STR, -+ CERT_FIND_KEY_IDENTIFIER, -+ CERT_FIND_KEY_SPEC, -+ CERT_FIND_MD5_HASH, -+ CERT_FIND_PROPERTY, -+ CERT_FIND_PUBLIC_KEY, -+ CERT_FIND_SHA1_HASH, -+ CERT_FIND_SIGNATURE_HASH, -+ CERT_FIND_SUBJECT_ATTR, -+ CERT_FIND_SUBJECT_CERT, -+ CERT_FIND_SUBJECT_NAME, -+ CERT_FIND_SUBJECT_STR, -+ CERT_FIND_CROSS_CERT_DIST_POINTS, -+ CERT_FIND_PUBKEY_MD5_HASH, -+ CERT_FIND_SHA256_HASH, -+ CERT_FIND_SHA1_SHA256_HASH, -+ CERT_FIND_SUBJECT_STR_A, -+ CERT_FIND_SUBJECT_STR_W, -+ CERT_FIND_ISSUER_STR_A, -+ CERT_FIND_ISSUER_STR_W, -+ CERT_FIND_SUBJECT_INFO_ACCESS, -+ CERT_FIND_HASH_STR, -+ CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG, -+ CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG, -+ CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG, -+ CERT_FIND_NO_ENHKEY_USAGE_FLAG, -+ CERT_FIND_OR_ENHKEY_USAGE_FLAG, -+ CERT_FIND_VALID_ENHKEY_USAGE_FLAG, -+ CERT_FIND_OPTIONAL_CTL_USAGE_FLAG, -+ CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG, -+ CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG, -+ CERT_FIND_NO_CTL_USAGE_FLAG, -+ CERT_FIND_OR_CTL_USAGE_FLAG, -+ CERT_FIND_VALID_CTL_USAGE_FLAG); -+#endif -+ - //+------------------------------------------------------------------------- - // CERT_FIND_CERT_ID - // -@@ -11503,6 +12068,8 @@ - // For a verification check failure, a pointer to the issuer's CERT_CONTEXT - // is still returned and SetLastError isn't updated. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI -@@ -11523,6 +12090,8 @@ - // - // For a verification check failure, SUCCESS is still returned. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -11535,6 +12104,7 @@ - //+------------------------------------------------------------------------- - // Duplicate a certificate context - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI -@@ -11556,11 +12126,13 @@ - // CertSetCertificateContextProperty and CertGetCertificateContextProperty can be called - // to store properties for the certificate. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI --CertCreateCertificateContext( -- _In_ DWORD dwCertEncodingType, -+_Win32_PreserveResult_ CertCreateCertificateContext( -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, - _In_ DWORD cbCertEncoded - ); -@@ -11571,6 +12143,7 @@ - // There needs to be a corresponding free for each context obtained by a - // get, find, duplicate or create. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -11719,6 +12292,8 @@ - // CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG can be set to ignore any - // provider write errors and always update the cached context's property. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -11796,13 +12371,15 @@ - // - // For all other PROP_IDs, pvData points to an encoded array of bytes. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertGetCertificateContextProperty( - _In_ PCCERT_CONTEXT pCertContext, - _In_ DWORD dwPropId, -- _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, -+ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) _Win32_ContainsInteriorPointers_ void *pvData, - _Inout_ DWORD *pcbData - ); - -@@ -11820,6 +12397,7 @@ - // properties are stored as fields in the CERT_KEY_CONTEXT_PROP_ID - // property, they aren't enumerated individually. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -11850,6 +12428,8 @@ - // CTL_ENTRY_FROM_PROP_CHAIN_FLAG can be set in dwFlags, to force the - // inclusion of the chain building hash properties as attributes. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -11860,7 +12440,7 @@ - _In_reads_opt_(cOptAttr) PCRYPT_ATTRIBUTE rgOptAttr, - _In_ DWORD dwFlags, - _Reserved_ void *pvReserved, -- _Out_writes_bytes_to_opt_(*pcbCtlEntry, *pcbCtlEntry) PCTL_ENTRY pCtlEntry, -+ _Out_writes_bytes_to_opt_(*pcbCtlEntry, *pcbCtlEntry) _Win32_ContainsInteriorPointers_ PCTL_ENTRY pCtlEntry, - _Inout_ DWORD *pcbCtlEntry - ); - -@@ -11879,6 +12459,8 @@ - // - // CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG may be set in dwFlags. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -11946,6 +12528,8 @@ - // For a verification check failure, a pointer to the first or next - // CRL_CONTEXT is still returned and SetLastError isn't updated. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRL_CONTEXT - WINAPI -@@ -11972,6 +12556,8 @@ - // NOTE: a NON-NULL pPrevCrlContext is always CertFreeCRLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRL_CONTEXT - WINAPI -@@ -12003,12 +12589,14 @@ - // NOTE: a NON-NULL pPrevCrlContext is always CertFreeCRLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRL_CONTEXT - WINAPI - CertFindCRLInStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ DWORD dwFindFlags, - _In_ DWORD dwFindType, - _In_opt_ const void *pvFindPara, -@@ -12107,6 +12695,7 @@ - //+------------------------------------------------------------------------- - // Duplicate a CRL context - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRL_CONTEXT - WINAPI -@@ -12128,11 +12717,13 @@ - // CertSetCRLContextProperty and CertGetCRLContextProperty can be called - // to store properties for the CRL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCRL_CONTEXT - WINAPI - CertCreateCRLContext( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded, - _In_ DWORD cbCrlEncoded - ); -@@ -12143,6 +12734,7 @@ - // There needs to be a corresponding free for each context obtained by a - // get, duplicate or create. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12155,6 +12747,8 @@ - // - // Same Property Ids and semantics as CertSetCertificateContextProperty. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12173,6 +12767,8 @@ - // CERT_SHA1_HASH_PROP_ID, CERT_MD5_HASH_PROP_ID or - // CERT_SIGNATURE_HASH_PROP_ID is the predefined property of most interest. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12193,6 +12789,7 @@ - // - // CertGetCRLContextProperty is called to get the property's data. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -12214,6 +12811,7 @@ - // - // dwFlags and pvReserved currently aren't used and must be set to 0 or NULL. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12237,6 +12835,7 @@ - // - // dwFlags and pvReserved currently aren't used and must be set to 0 and NULL. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12305,13 +12904,15 @@ - // ppCertContext can be NULL, indicating the caller isn't interested - // in getting the CERT_CONTEXT of the added or existing certificate. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL - WINAPI - CertAddEncodedCertificateToStore( - _In_opt_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, - _In_ DWORD cbCertEncoded, - _In_ DWORD dwAddDisposition, -@@ -12375,6 +12976,8 @@ - // ppStoreContext can be NULL, indicating the caller isn't interested - // in getting the CERT_CONTEXT of the added or existing certificate. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12429,6 +13032,8 @@ - // returned it must be freed by calling CertFreeCertificateContext or - // CertFreeCRLContext. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12459,6 +13064,8 @@ - // NOTE: the pCertContext is always CertFreeCertificateContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12482,13 +13089,15 @@ - // ppCrlContext can be NULL, indicating the caller isn't interested - // in getting the CRL_CONTEXT of the added or existing CRL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL - WINAPI - CertAddEncodedCRLToStore( - _In_opt_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded, - _In_ DWORD cbCrlEncoded, - _In_ DWORD dwAddDisposition, -@@ -12515,6 +13124,8 @@ - // ppStoreContext can be NULL, indicating the caller isn't interested - // in getting the CRL_CONTEXT of the added or existing CRL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12538,6 +13149,8 @@ - // NOTE: the pCrlContext is always CertFreeCRLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12549,6 +13162,8 @@ - // Serialize the certificate context's encoded certificate and its - // properties. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12563,6 +13178,8 @@ - //+------------------------------------------------------------------------- - // Serialize the CRL context's encoded CRL and its properties. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12582,6 +13199,7 @@ - //+------------------------------------------------------------------------- - // Duplicate a CTL context - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCTL_CONTEXT - WINAPI -@@ -12603,6 +13221,8 @@ - // CertSetCTLContextProperty and CertGetCTLContextProperty can be called - // to store properties for the CTL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCTL_CONTEXT - WINAPI -@@ -12618,6 +13238,7 @@ - // There needs to be a corresponding free for each context obtained by a - // get, duplicate or create. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12630,6 +13251,8 @@ - // - // Same Property Ids and semantics as CertSetCertificateContextProperty. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12648,6 +13271,8 @@ - // CERT_SHA1_HASH_PROP_ID or CERT_NEXT_UPDATE_LOCATION_PROP_ID are the - // predefined properties of most interest. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12661,6 +13286,7 @@ - //+------------------------------------------------------------------------- - // Enumerate the properties for the specified CTL context. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -12685,6 +13311,8 @@ - // NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCTL_CONTEXT - WINAPI -@@ -12711,6 +13339,8 @@ - // - // dwEncodingType isn't used for either of the above SubjectTypes. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCTL_ENTRY - WINAPI -@@ -12756,6 +13386,12 @@ - // NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_FIND_TYPE; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCTL_CONTEXT - WINAPI -@@ -12763,7 +13399,7 @@ - _In_ HCERTSTORE hCertStore, - _In_ DWORD dwMsgAndCertEncodingType, - _In_ DWORD dwFindFlags, -- _In_ DWORD dwFindType, -+ _In_ _Win32_AssociatedEnum_(CERT_FIND_TYPE) DWORD dwFindType, - _In_opt_ const void *pvFindPara, - _In_opt_ PCCTL_CONTEXT pPrevCtlContext - ); -@@ -12786,6 +13422,17 @@ - #define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO) -1) - - #define CTL_FIND_SAME_USAGE_FLAG 0x1 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_FIND_TYPE, unsigned long, -+ CTL_FIND_ANY, -+ CTL_FIND_SHA1_HASH, -+ CTL_FIND_MD5_HASH, -+ CTL_FIND_USAGE, -+ CTL_FIND_SAME_USAGE_FLAG, -+ CTL_FIND_EXISTING, -+ CTL_FIND_SUBJECT); -+#endif - - - typedef struct _CTL_FIND_SUBJECT_PARA { -@@ -12861,13 +13508,15 @@ - // ppCtlContext can be NULL, indicating the caller isn't interested - // in getting the CTL_CONTEXT of the added or existing CTL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL - WINAPI - CertAddEncodedCTLToStore( - _In_opt_ HCERTSTORE hCertStore, -- _In_ DWORD dwMsgAndCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwMsgAndCertEncodingType, - _In_reads_bytes_(cbCtlEncoded) const BYTE *pbCtlEncoded, - _In_ DWORD cbCtlEncoded, - _In_ DWORD dwAddDisposition, -@@ -12894,6 +13543,8 @@ - // ppStoreContext can be NULL, indicating the caller isn't interested - // in getting the CTL_CONTEXT of the added or existing CTL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12908,6 +13559,8 @@ - //+------------------------------------------------------------------------- - // Serialize the CTL context's encoded CTL and its properties. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12930,6 +13583,8 @@ - // NOTE: the pCtlContext is always CertFreeCTLContext'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12938,6 +13593,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12949,6 +13606,8 @@ - _Outptr_opt_ PCCERT_CONTEXT *ppStoreContext - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12960,6 +13619,8 @@ - _Outptr_opt_ PCCRL_CONTEXT *ppStoreContext - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -12971,6 +13632,7 @@ - _Outptr_opt_ PCCTL_CONTEXT *ppStoreContext - ); - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -12981,6 +13643,7 @@ - _In_ DWORD dwPriority - ); - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - void - WINAPI -@@ -12990,12 +13653,18 @@ - ); - - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_CONTROL_STORE_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertControlStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_CONTROL_STORE_FLAGS) DWORD dwFlags, - _In_ DWORD dwCtrlType, - _In_opt_ void const *pvCtrlPara - ); -@@ -13091,6 +13760,13 @@ - #define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1 - #define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_CONTROL_STORE_FLAGS, unsigned long, -+ CERT_STORE_CTRL_COMMIT_FORCE_FLAG, -+ CERT_STORE_CTRL_COMMIT_CLEAR_FLAG, -+ CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG); -+#endif -+ - - //+========================================================================= - // Cert Store Property Defines and APIs -@@ -13126,6 +13802,7 @@ - // If the property already exists, then, the old value is deleted and silently - // replaced. Setting, pvData to NULL, deletes the property. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13149,6 +13826,8 @@ - // If the property doesn't exist, returns FALSE and sets LastError to - // CRYPT_E_NOT_FOUND. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -13222,6 +13901,8 @@ - // free context API. The context can be duplicated by calling the - // appropriate duplicate context API. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - const void * - WINAPI -@@ -13380,6 +14061,7 @@ - // Set CERT_STORE_CREATE_NEW_FLAG to cause a failure if the system store - // already exists in the store location. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13406,6 +14088,7 @@ - // Set CERT_STORE_CREATE_NEW_FLAG to cause a failure if the physical store - // already exists in the system store. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13432,6 +14115,7 @@ - // - // CERT_STORE_DELETE_FLAG can optionally be set in dwFlags. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13455,6 +14139,7 @@ - // - // CERT_STORE_DELETE_FLAG can optionally be set in dwFlags. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13496,7 +14181,7 @@ - - typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE)( - _In_ const void *pvSystemStore, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CERT_SYSTEM_STORE_FLAGS) _In_ DWORD dwFlags, - _In_ PCERT_SYSTEM_STORE_INFO pStoreInfo, - _Reserved_ void *pvReserved, - _Inout_opt_ void *pvArg -@@ -13530,6 +14215,7 @@ - //+------------------------------------------------------------------------- - // Enumerate the system store locations. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13570,6 +14256,7 @@ - // the leading "\\" backslashes or a trailing backslash. Otherwise, its - // interpretted as the ServiceName or UserName. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13596,6 +14283,8 @@ - // If the system store location only supports system stores and doesn't - // support physical stores, LastError is set to ERROR_CALL_NOT_IMPLEMENTED. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13658,13 +14347,15 @@ - // If the CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG is set, then, only get the - // property. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertGetEnhancedKeyUsage( - _In_ PCCERT_CONTEXT pCertContext, - _In_ DWORD dwFlags, -- _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage, -+ _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) _Win32_ContainsInteriorPointers_ PCERT_ENHKEY_USAGE pUsage, - _Inout_ DWORD *pcbUsage - ); - -@@ -13677,6 +14368,8 @@ - //+------------------------------------------------------------------------- - // Set the enhanced key usage property for the certificate. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13688,6 +14381,8 @@ - //+------------------------------------------------------------------------- - // Add the usage identifier to the certificate's enhanced key usage property. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13701,6 +14396,8 @@ - // Remove the usage identifier from the certificate's enhanced key usage - // property. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13723,6 +14420,8 @@ - // If each cert is good for all possible usages then the cNumOIDs is set to -1. - // - //---------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -13763,6 +14462,8 @@ - // interested in getting the CertContext and/or index of the signer. - //-------------------------------------------------------------------------- - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return == TRUE) - BOOL -@@ -13795,6 +14496,8 @@ - // CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible - // V3 SignedData message. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13824,6 +14527,8 @@ - // CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible - // V3 SignedData message. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13851,6 +14556,7 @@ - // Returns TRUE if the SubjectIdentifier exists in the CTL. Optionally - // returns a pointer to and byte count of the Subject's encoded attributes. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13875,6 +14581,7 @@ - // Note, the returned DER_BLOBs point directly into the encoded - // bytes (not allocated, and must not be freed). - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -13977,6 +14684,8 @@ - // CRYPT_E_NOT_IN_CTL - // CRYPT_E_NO_TRUSTED_SIGNER - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14111,7 +14820,7 @@ - DWORD cbSize; - DWORD dwIndex; - DWORD dwError; -- DWORD dwReason; -+ _Win32_AssociatedEnum_(CERT_REVOCATION_STATUS_REASON) DWORD dwReason; - - // Depending on cbSize, the following fields may optionally be returned. - -@@ -14208,6 +14917,8 @@ - // advancing the start of the context array to the returned dwIndex and - // decrementing the count of remaining contexts. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14296,6 +15007,8 @@ - // Returns TRUE if the integer blobs are identical after removing leading - // 0 or 0xFF bytes. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - BOOL - WINAPI - CertCompareIntegerBlob( -@@ -14311,11 +15024,12 @@ - // - // Returns TRUE if the certificates are identical. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertCompareCertificate( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_INFO pCertId1, - _In_ PCERT_INFO pCertId2 - ); -@@ -14325,11 +15039,12 @@ - // - // Returns TRUE if the names are identical. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertCompareCertificateName( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_NAME_BLOB pCertName1, - _In_ PCERT_NAME_BLOB pCertName2 - ); -@@ -14358,11 +15073,13 @@ - // CERT_UNICODE_IS_RDN_ATTRS_FLAG should be set if the pRDN was initialized - // with unicode strings as for CryptEncodeObject(X509_UNICODE_NAME). - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertIsRDNAttrsInCertificateName( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ DWORD dwFlags, - _In_ PCERT_NAME_BLOB pCertName, - _In_ PCERT_RDN pRDN -@@ -14376,11 +15093,12 @@ - // - // Returns TRUE if the keys are identical. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertComparePublicKeyInfo( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pPublicKey1, - _In_ PCERT_PUBLIC_KEY_INFO pPublicKey2 - ); -@@ -14396,11 +15114,13 @@ - // - // Returns 0 if unable to determine the key's length. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI - CertGetPublicKeyLength( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pPublicKey - ); - -@@ -14419,13 +15139,15 @@ - // hCryptProv specifies the crypto provider to use to verify the signature. - // It doesn't need to use a private key. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Must_inspect_result_ - BOOL - WINAPI - CryptVerifyCertificateSignature( - _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, - _In_ DWORD cbEncoded, - _In_ PCERT_PUBLIC_KEY_INFO pPublicKey -@@ -14456,18 +15178,20 @@ - // to verify this no signature case. If any other dwIssuerType is - // specified, the verify will fail with LastError set to E_INVALIDARG. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Must_inspect_result_ - BOOL - WINAPI - CryptVerifyCertificateSignatureEx( - _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ DWORD dwSubjectType, - _In_ void *pvSubject, - _In_ DWORD dwIssuerType, - _In_opt_ void *pvIssuer, -- _In_ DWORD dwFlags, -+ _Win32_AssociatedEnum_(CRYPT_VERIFY_CERT_FLAGS) _In_ DWORD dwFlags, - _Inout_opt_ void *pvExtra - ); - -@@ -14536,6 +15260,13 @@ - // - #define CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 0x00000004 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_VERIFY_CERT_FLAGS, unsigned long, -+ CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG, -+ CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG, -+ CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG); -+#endif -+ - typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO { - // CERT_SIGN_HASH_CNG_ALG_PROP_ID - CRYPT_DATA_BLOB CertSignHashCNGAlgPropData; -@@ -14578,6 +15309,8 @@ - // The SigningCert can be NULL to only check if the CNG hash algorithm is - // strong. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows8_ - WINCRYPT32API - BOOL - WINAPI -@@ -14594,12 +15327,14 @@ - // hCryptProv specifies the crypto provider to use to compute the hash. - // It doesn't need to use a private key. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptHashToBeSigned( - _In_opt_ HCRYPTPROV_LEGACY hCryptProv, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, - _In_ DWORD cbEncoded, - _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, -@@ -14615,6 +15350,8 @@ - // Algid specifies the CAPI hash algorithm to use. If Algid is 0, then, the - // default hash algorithm (currently SHA1) is used. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14639,6 +15376,8 @@ - //+------------------------------------------------------------------------- - // Hash the encoded content using the CNG hash algorithm provider. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -14672,6 +15411,8 @@ - // dwKeySpec isn't used and hCryptProvOrNCryptKey can be NULL where an - // appropriate default provider will be used for hashing. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14682,7 +15423,7 @@ - _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, - #endif - _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned, - _In_ DWORD cbEncodedToBeSigned, - _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, -@@ -14703,6 +15444,8 @@ - // dwKeySpec isn't used and hCryptProv can be NULL where an appropriate - // default provider will be used for hashing. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14712,8 +15455,8 @@ - #else - _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, - #endif -- _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE -- _In_ DWORD dwCertEncodingType, -+ _In_opt_ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR lpszStructType, // "to be signed" - _In_ const void *pvStructInfo, - _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, -@@ -14748,7 +15491,7 @@ - #define CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC \ - "CryptDllExtractEncodedSignatureParameters" - typedef BOOL (WINAPI *PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC)( -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - _Outptr_result_maybenull_ void **ppvDecodedSignPara, // LocalFree() - _Outptr_ LPWSTR *ppwszCNGHashAlgid // LocalFree() -@@ -14759,7 +15502,7 @@ - "CryptDllSignAndEncodeHash" - typedef BOOL (WINAPI *PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC)( - _In_ NCRYPT_KEY_HANDLE hKey, -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - _In_opt_ void *pvDecodedSignPara, - _In_ LPCWSTR pwszCNGPubKeyAlgid, // obtained from signature OID -@@ -14775,7 +15518,7 @@ - #define CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC \ - "CryptDllVerifyEncodedSignature" - typedef BOOL (WINAPI *PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC)( -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pPubKeyInfo, - _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - _In_opt_ void *pvDecodedSignPara, -@@ -14796,6 +15539,7 @@ - // - // If pTimeToVerify is NULL, uses the current time. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LONG - WINAPI -@@ -14818,6 +15562,7 @@ - // - // If pTimeToVerify is NULL, uses the current time. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LONG - WINAPI -@@ -14832,6 +15577,7 @@ - // - // Returns TRUE if it nests. Otherwise, returns FALSE. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -14845,11 +15591,12 @@ - // - // Returns true if the certificate isn't on the CRL. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertVerifyCRLRevocation( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_INFO pCertId, // Only the Issuer and SerialNumber - // fields are used - _In_ DWORD cCrlInfo, -@@ -14861,6 +15608,7 @@ - // - // Returns NULL if there isn't an ObjId corresponding to the AlgId. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LPCSTR - WINAPI -@@ -14873,6 +15621,7 @@ - // - // Returns 0 if there isn't an AlgId corresponding to the ObjId. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -14891,6 +15640,7 @@ - #pragma region Application Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCERT_EXTENSION - WINAPI -@@ -14905,6 +15655,7 @@ - // - // If found, returns pointer to the attribute. Otherwise, returns NULL. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCRYPT_ATTRIBUTE - WINAPI -@@ -14920,6 +15671,7 @@ - // - // If found, returns pointer to the attribute. Otherwise, returns NULL. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCERT_RDN_ATTR - WINAPI -@@ -14936,11 +15688,13 @@ - // cbKeyUsage bytes are copied into *pbKeyUsage. Any remaining uncopied - // bytes are zeroed. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertGetIntendedKeyUsage( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_INFO pCertInfo, - _Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage, - _In_ DWORD cbKeyUsage -@@ -14981,14 +15735,24 @@ - // not CryptReleaseContext'ed if CryptUninstallDefaultContext is - // called. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_DEFAULT_CONTEXT_FLAGS; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_DEFAULT_CONTEXT_TYPE; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptInstallDefaultContext( - _In_ HCRYPTPROV hCryptProv, -- _In_ DWORD dwDefaultType, -+ _In_ _Win32_AssociatedEnum_(CRYPT_DEFAULT_CONTEXT_TYPE) DWORD dwDefaultType, - _In_opt_ const void *pvDefaultPara, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_DEFAULT_CONTEXT_FLAGS) DWORD dwFlags, - _Reserved_ void *pvReserved, - _Out_ HCRYPTDEFAULTCONTEXT *phDefaultContext - ); -@@ -14997,9 +15761,21 @@ - #define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x00000001 - #define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x00000002 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_DEFAULT_CONTEXT_FLAGS, unsigned long, -+ CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG, -+ CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG); -+#endif -+ - // List of dwDefaultType's - #define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 1 - #define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 2 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_DEFAULT_CONTEXT_TYPE, unsigned long, -+ CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID, -+ CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID); -+#endif - - //+------------------------------------------------------------------------- - // CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID -@@ -15034,6 +15810,8 @@ - // set, if any other threads are currently using this context, - // this function will block until they finish. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -15050,14 +15828,16 @@ - // Calls CryptExportPublicKeyInfoEx with pszPublicKeyObjId = NULL, - // dwFlags = 0 and pvAuxInfo = NULL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptExportPublicKeyInfo( - _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, - _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE -- _In_ DWORD dwCertEncodingType, -- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, -+ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, - _Inout_ DWORD *pcbInfo - ); - -@@ -15090,17 +15870,19 @@ - // CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG - //-------------------------------------------------------------------------- - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptExportPublicKeyInfoEx( - _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, - _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_opt_ LPSTR pszPublicKeyObjId, - _In_ DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, -+ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, - _Inout_ DWORD *pcbInfo - ); - -@@ -15115,7 +15897,7 @@ - "CryptDllExportPublicKeyInfoEx2" - typedef BOOL (WINAPI *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC) ( - _In_ NCRYPT_KEY_HANDLE hNCryptKey, -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ LPSTR pszPublicKeyObjId, - _In_ DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -@@ -15145,16 +15927,17 @@ - // CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG - //-------------------------------------------------------------------------- - -+_Win32_SupportedOS_Windows7_ - WINCRYPT32API - BOOL - WINAPI - CryptExportPublicKeyInfoFromBCryptKeyHandle( - _In_ BCRYPT_KEY_HANDLE hBCryptKey, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_opt_ LPSTR pszPublicKeyObjId, - _In_ DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, -+ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, - _Inout_ DWORD *pcbInfo - ); - -@@ -15167,7 +15950,7 @@ - "CryptDllExportPublicKeyInfoFromBCryptKeyHandle" - typedef BOOL (WINAPI *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC) ( - _In_ BCRYPT_KEY_HANDLE hBCryptKey, -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ LPSTR pszPublicKeyObjId, - _In_ DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -@@ -15184,12 +15967,14 @@ - // Calls CryptImportPublicKeyInfoEx with aiKeyAlg = 0, dwFlags = 0 and - // pvAuxInfo = NULL. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptImportPublicKeyInfo( - _In_ HCRYPTPROV hCryptProv, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pInfo, - _Out_ HCRYPTKEY *phKey - ); -@@ -15210,12 +15995,14 @@ - //-------------------------------------------------------------------------- - #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx" - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptImportPublicKeyInfoEx( - _In_ HCRYPTPROV hCryptProv, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pInfo, - _In_ ALG_ID aiKeyAlg, - _In_ DWORD dwFlags, -@@ -15246,15 +16033,17 @@ - // dwFlags can also have BCRYPT_NO_KEY_VALIDATION OR'd in. This flag is - // passed to BCryptImportKeyPair. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - BOOL - WINAPI - CryptImportPublicKeyInfoEx2( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pInfo, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_IMPORT_PUBLIC_KEY_FLAGS) DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -- _Out_ BCRYPT_KEY_HANDLE *phKey -+ _Win32_RAIIFree_(BCryptDestroyKey, 0) _Out_ BCRYPT_KEY_HANDLE *phKey - ); - - //+------------------------------------------------------------------------- -@@ -15263,7 +16052,7 @@ - #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC \ - "CryptDllImportPublicKeyInfoEx2" - typedef BOOL (WINAPI *PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC) ( -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pInfo, - _In_ DWORD dwFlags, - _In_opt_ void *pvAuxInfo, -@@ -15362,15 +16151,21 @@ - #pragma region Application Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_ACQUIRE_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptAcquireCertificatePrivateKey( - _In_ PCCERT_CONTEXT pCert, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_ACQUIRE_FLAGS) DWORD dwFlags, - _In_opt_ void *pvParameters, - _Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, -- _Out_opt_ DWORD *pdwKeySpec, -+ _Out_opt_ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD *pdwKeySpec, - _Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey - ); - -@@ -15387,6 +16182,20 @@ - #define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x00020000 - #define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x00040000 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_ACQUIRE_FLAGS, unsigned long, -+ CRYPT_ACQUIRE_CACHE_FLAG, -+ CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, -+ CRYPT_ACQUIRE_COMPARE_KEY_FLAG, -+ CRYPT_ACQUIRE_NO_HEALING, -+ CRYPT_ACQUIRE_SILENT_FLAG, -+ CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG, -+ CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK, -+ CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG, -+ CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG, -+ CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG); -+#endif -+ - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ - #pragma endregion -@@ -15416,18 +16225,31 @@ - // The above CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS can also be set. The default - // is CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_FIND_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptFindCertificateKeyProvInfo( - _In_ PCCERT_CONTEXT pCert, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_FIND_FLAGS) DWORD dwFlags, - _Reserved_ void *pvReserved - ); - - #define CRYPT_FIND_USER_KEYSET_FLAG 0x00000001 - #define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x00000002 - #define CRYPT_FIND_SILENT_KEYSET_FLAG 0x00000040 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_FIND_FLAGS, unsigned long, -+ CRYPT_FIND_USER_KEYSET_FLAG, -+ CRYPT_FIND_MACHINE_KEYSET_FLAG, -+ CRYPT_FIND_SILENT_KEYSET_FLAG); -+#endif - - - //+------------------------------------------------------------------------- -@@ -15471,12 +16293,14 @@ - // pvAuxInfo - This parameter is reserved for future use and should be set - // to NULL in the interim. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptImportPKCS8( - _In_ CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams, // in -- _In_ DWORD dwFlags, // in -+ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, // in - _Out_opt_ HCRYPTPROV *phCryptProv, // out, optional - _In_opt_ void* pvAuxInfo // in, optional - ); -@@ -15502,6 +16326,8 @@ - // - // Export the private key in PKCS8 format - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -15543,6 +16369,8 @@ - // pcbPrivateKeyBlob - A pointer to a DWORD that contains the size, in bytes, - // of the private key blob being exported. - //+------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -15565,6 +16393,8 @@ - // - // The public key info is encoded and then hashed. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -15572,7 +16402,7 @@ - _In_opt_ HCRYPTPROV_LEGACY hCryptProv, - _In_ ALG_ID Algid, - _In_ DWORD dwFlags, -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_PUBLIC_KEY_INFO pInfo, - _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, - _Inout_ DWORD *pcbComputedHash -@@ -15589,6 +16419,7 @@ - // - // Note: csz includes the NULL char. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -15609,6 +16440,7 @@ - // - // Note: csz includes the NULL char. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -15721,23 +16553,29 @@ - //+------------------------------------------------------------------------- - //-------------------------------------------------------------------------- - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_STRING_TYPE; -+#endif -+ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI - CertNameToStrA( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_NAME_BLOB pName, -- _In_ DWORD dwStrType, -+ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, - _Out_writes_to_opt_(csz, return) LPSTR psz, - _In_ DWORD csz - ); -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI - CertNameToStrW( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ PCERT_NAME_BLOB pName, -- _In_ DWORD dwStrType, -+ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, - _Out_writes_to_opt_(csz, return) LPWSTR psz, - _In_ DWORD csz - ); -@@ -15754,6 +16592,13 @@ - #define CERT_SIMPLE_NAME_STR 1 - #define CERT_OID_NAME_STR 2 - #define CERT_X500_NAME_STR 3 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_STRING_TYPE, unsigned long, -+ CERT_SIMPLE_NAME_STR, -+ CERT_OID_NAME_STR, -+ CERT_X500_NAME_STR); -+#endif - #define CERT_XML_NAME_STR 4 - - //+------------------------------------------------------------------------- -@@ -15887,13 +16732,15 @@ - - //+------------------------------------------------------------------------- - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertStrToNameA( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCSTR pszX500, -- _In_ DWORD dwStrType, -+ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, - _Reserved_ void *pvReserved, - _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, - _Inout_ DWORD *pcbEncoded, -@@ -15901,13 +16748,15 @@ - ); - //+------------------------------------------------------------------------- - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CertStrToNameW( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_ LPCWSTR pszX500, -- _In_ DWORD dwStrType, -+ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, - _Reserved_ void *pvReserved, - _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, - _Inout_ DWORD *pcbEncoded, -@@ -16012,6 +16861,7 @@ - - //+------------------------------------------------------------------------- - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -16025,6 +16875,7 @@ - ); - //+------------------------------------------------------------------------- - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - DWORD - WINAPI -@@ -16122,7 +16973,7 @@ - //-------------------------------------------------------------------------- - typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)( - _Inout_opt_ void *pvGetArg, -- _In_ DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, - _In_ PCERT_INFO pSignerId, // Only the Issuer and SerialNumber - // fields have been updated - _In_ HCERTSTORE hMsgCertStore -@@ -16374,7 +17225,7 @@ - //-------------------------------------------------------------------------- - typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA { - DWORD cbSize; -- DWORD dwMsgAndCertEncodingType; -+ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwMsgAndCertEncodingType; - - // NCryptIsKeyHandle() is called to determine the union choice. - union { -@@ -16383,7 +17234,7 @@ - } DUMMYUNIONNAME; - - // not applicable for hNCryptKey choice -- DWORD dwKeySpec; -+ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD dwKeySpec; - - CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; - void *pvHashAuxInfo; -@@ -16420,6 +17271,8 @@ - // If fDetachedSignature is TRUE, the "to be signed" content isn't included - // in the encoded signed blob. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16469,6 +17322,8 @@ - // Note, an alternative way to get the certificates and CRLs from a - // signed message is to call CryptGetMessageCertificates. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16486,6 +17341,8 @@ - // Returns the count of signers in the signed message. For no signers, returns - // 0. For an error returns -1 with LastError updated accordingly. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LONG - WINAPI -@@ -16499,6 +17356,8 @@ - // Returns the cert store containing the message's certs and CRLs. - // For an error, returns NULL with LastError updated. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCERTSTORE - WINAPI -@@ -16515,6 +17374,8 @@ - // The "to be signed" content is passed in separately. No - // decoded output. Otherwise, identical to CryptVerifyMessageSignature. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16532,6 +17393,8 @@ - //+------------------------------------------------------------------------- - // Encrypts the message for the recipient(s). - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16559,6 +17422,8 @@ - // ppXchgCert can be NULL, indicating the caller isn't interested - // in getting the CertContext used to decrypt. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16578,6 +17443,8 @@ - // Note: this isn't the CMSG_SIGNED_AND_ENVELOPED. Its a CMSG_SIGNED - // inside of an CMSG_ENVELOPED. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16619,6 +17486,8 @@ - // The message always needs to be decrypted to allow access to the - // signed message. Therefore, if ppXchgCert != NULL, its always updated. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16666,6 +17535,8 @@ - // CryptVerifyMessageSignature. - // For CMSG_HASHED: verifies the hash and returns decoded content. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16695,6 +17566,8 @@ - // pcbHashedBlob or pcbComputedHash can be NULL, indicating the caller - // isn't interested in getting the output. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16716,6 +17589,8 @@ - // pcbToBeHashed or pcbComputedHash can be NULL, - // indicating the caller isn't interested in getting the output. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16737,6 +17612,8 @@ - // pcbComputedHash can be NULL, indicating the caller isn't interested - // in getting the output. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16757,6 +17634,8 @@ - // - // Normally used until a certificate has been created for the key. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16781,6 +17660,8 @@ - // pcbDecoded can be NULL, indicating the caller isn't interested - // in getting the decoded content. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16825,6 +17706,8 @@ - //-------------------------------------------------------------------------- - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCERTSTORE - WINAPI -@@ -16832,6 +17715,8 @@ - _In_opt_ HCRYPTPROV_LEGACY hProv, - _In_ LPCSTR szSubsystemProtocol - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCERTSTORE - WINAPI -@@ -16851,6 +17736,8 @@ - #pragma region Desktop Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -16859,6 +17746,8 @@ - _In_reads_bytes_(cbCertEncoded) const BYTE * pbCertEncoded, - _In_ DWORD cbCertEncoded - ); -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -17048,18 +17937,40 @@ - // If the *pbObject is of type CERT_QUERY_CONTENT_PKCS10 or CERT_QUERY_CONTENT_PFX, CryptQueryObject - // will not return anything in *phCertstore, *phMsg, or *ppvContext. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_QUERY_CONTENT_TYPE; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_QUERY_FORMAT_TYPE; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_QUERY_CONTENT_TYPE_FLAGS; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_QUERY_OBJECT_TYPE; -+#endif -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_QUERY_FORMAT_TYPE_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptQueryObject( -- _In_ DWORD dwObjectType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_OBJECT_TYPE) DWORD dwObjectType, - _In_ const void *pvObject, -- _In_ DWORD dwExpectedContentTypeFlags, -- _In_ DWORD dwExpectedFormatTypeFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_CONTENT_TYPE_FLAGS) DWORD dwExpectedContentTypeFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_FORMAT_TYPE_FLAGS) DWORD dwExpectedFormatTypeFlags, - _In_ DWORD dwFlags, -- _Out_opt_ DWORD *pdwMsgAndCertEncodingType, -- _Out_opt_ DWORD *pdwContentType, -- _Out_opt_ DWORD *pdwFormatType, -+ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD *pdwMsgAndCertEncodingType, -+ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_CONTENT_TYPE) DWORD *pdwContentType, -+ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_FORMAT_TYPE) DWORD *pdwFormatType, - _Out_opt_ HCERTSTORE *phCertStore, - _Out_opt_ HCRYPTMSG *phMsg, - _Outptr_opt_result_maybenull_ const void **ppvContext -@@ -17071,6 +17982,12 @@ - //------------------------------------------------------------------------- - #define CERT_QUERY_OBJECT_FILE 0x00000001 - #define CERT_QUERY_OBJECT_BLOB 0x00000002 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_QUERY_OBJECT_TYPE, unsigned long, -+ CERT_QUERY_OBJECT_FILE, -+ CERT_QUERY_OBJECT_BLOB); -+#endif - - //------------------------------------------------------------------------- - //dwContentType for CryptQueryObject -@@ -17104,6 +18021,24 @@ - //an encoded PFX BLOB, which was loaded to phCertStore - #define CERT_QUERY_CONTENT_PFX_AND_LOAD 14 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_QUERY_CONTENT_TYPE, unsigned long, -+ CERT_QUERY_CONTENT_CERT, -+ CERT_QUERY_CONTENT_CTL, -+ CERT_QUERY_CONTENT_CRL, -+ CERT_QUERY_CONTENT_SERIALIZED_STORE, -+ CERT_QUERY_CONTENT_SERIALIZED_CERT, -+ CERT_QUERY_CONTENT_SERIALIZED_CTL, -+ CERT_QUERY_CONTENT_SERIALIZED_CRL, -+ CERT_QUERY_CONTENT_PKCS7_SIGNED, -+ CERT_QUERY_CONTENT_PKCS7_UNSIGNED, -+ CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED, -+ CERT_QUERY_CONTENT_PKCS10, -+ CERT_QUERY_CONTENT_PFX, -+ CERT_QUERY_CONTENT_CERT_PAIR, -+ CERT_QUERY_CONTENT_PFX_AND_LOAD); -+#endif -+ - - //------------------------------------------------------------------------- - //dwExpectedConentTypeFlags for CryptQueryObject -@@ -17190,6 +18125,26 @@ - CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | \ - CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED ) - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_QUERY_CONTENT_TYPE_FLAGS, unsigned long, -+ CERT_QUERY_CONTENT_FLAG_CERT, -+ CERT_QUERY_CONTENT_FLAG_CTL, -+ CERT_QUERY_CONTENT_FLAG_CRL, -+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE, -+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT, -+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL, -+ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL, -+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED, -+ CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED, -+ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, -+ CERT_QUERY_CONTENT_FLAG_PKCS10, -+ CERT_QUERY_CONTENT_FLAG_PFX, -+ CERT_QUERY_CONTENT_FLAG_CERT_PAIR, -+ CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD, -+ CERT_QUERY_CONTENT_FLAG_ALL, -+ CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT); -+#endif -+ - - //------------------------------------------------------------------------- - //dwFormatType for CryptQueryObject -@@ -17202,6 +18157,13 @@ - - //the content is ascii hex encoded with "{ASN}" prefix - #define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_QUERY_FORMAT_TYPE, unsigned long, -+ CERT_QUERY_FORMAT_BINARY, -+ CERT_QUERY_FORMAT_BASE64_ENCODED, -+ CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED); -+#endif - //------------------------------------------------------------------------- - //dwExpectedFormatTypeFlags for CryptQueryObject - //------------------------------------------------------------------------- -@@ -17223,6 +18185,14 @@ - CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \ - CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED ) - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_QUERY_FORMAT_TYPE_FLAGS, unsigned long, -+ CERT_QUERY_FORMAT_FLAG_BINARY, -+ CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED, -+ CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED, -+ CERT_QUERY_FORMAT_FLAG_ALL); -+#endif -+ - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ - #pragma endregion - -@@ -17235,6 +18205,7 @@ - // those buffers using CryptMemFree. Also included is CryptMemSize - // - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LPVOID - WINAPI -@@ -17242,6 +18213,7 @@ - _In_ ULONG cbSize - ); - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - LPVOID - WINAPI -@@ -17250,6 +18222,7 @@ - _In_ ULONG cbSize - ); - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - VOID - WINAPI -@@ -17268,6 +18241,9 @@ - // set to ERROR_CALL_NOT_IMPLEMENTED. - - typedef HANDLE HCRYPTASYNC, *PHCRYPTASYNC; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCRYPTASYNC HCRYPTASYNC; -+#endif - - typedef VOID (WINAPI *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) ( - _In_ LPSTR pszParamOid, -@@ -17279,7 +18255,7 @@ - WINAPI - CryptCreateAsyncHandle ( - _In_ DWORD dwFlags, -- _Out_ PHCRYPTASYNC phAsync -+ _Win32_RAIIFree_(CryptCloseAsyncHandle, -1, 0) _Out_ PHCRYPTASYNC phAsync - ); - - WINCRYPT32API -@@ -17732,6 +18708,7 @@ - #pragma region Desktop Family or OneCore or Games Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return == TRUE) - BOOL -@@ -17747,6 +18724,7 @@ - _In_opt_ LPVOID pvVerify, - _Inout_opt_ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo - ); -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return == TRUE) - BOOL -@@ -17873,6 +18851,14 @@ - #define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004 - #define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x00000008 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_GET_URL_FLAGS, unsigned long, -+ CRYPT_GET_URL_FROM_PROPERTY, -+ CRYPT_GET_URL_FROM_EXTENSION, -+ CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE, -+ CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE); -+#endif -+ - typedef struct _CRYPT_URL_ARRAY { - DWORD cUrl; - LPWSTR* rgwszUrl; -@@ -17891,14 +18877,16 @@ - DWORD *rgcGroupEntry; - } CRYPT_URL_INFO, *PCRYPT_URL_INFO; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptGetObjectUrl ( - _In_ LPCSTR pszUrlOid, - _In_ LPVOID pvPara, -- _In_ DWORD dwFlags, -- _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) PCRYPT_URL_ARRAY pUrlArray, -+ _In_ _Win32_AssociatedEnum_(CRYPT_GET_URL_FLAGS) DWORD dwFlags, -+ _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) _Win32_ContainsInteriorPointers_ PCRYPT_URL_ARRAY pUrlArray, - _Inout_ DWORD* pcbUrlArray, - _Out_writes_bytes_to_opt_(*pcbUrlInfo, *pcbUrlInfo) PCRYPT_URL_INFO pUrlInfo, - _Inout_opt_ DWORD* pcbUrlInfo, -@@ -18080,6 +19068,8 @@ - } CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO, - *PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - _Success_(return == TRUE) - BOOL -@@ -18224,13 +19214,19 @@ - // CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG - // CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_CREATE_SELFSIGN_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CONTEXT - WINAPI - CertCreateSelfSignCertificate( - _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, - _In_ PCERT_NAME_BLOB pSubjectIssuerBlob, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_CREATE_SELFSIGN_FLAGS) DWORD dwFlags, - _In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo, - _In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, - _In_opt_ PSYSTEMTIME pStartTime, -@@ -18241,6 +19237,12 @@ - #define CERT_CREATE_SELFSIGN_NO_SIGN 1 - #define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_CREATE_SELFSIGN_FLAGS, unsigned long, -+ CERT_CREATE_SELFSIGN_NO_KEY_INFO, -+ CERT_CREATE_SELFSIGN_NO_SIGN); -+#endif -+ - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ - #pragma endregion - -@@ -18276,6 +19278,8 @@ - // can also be set to specify the name of a remote computer to be searched - // instead of the local machine. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -18317,6 +19321,8 @@ - // exists. For an existing property, FALSE is returned with LastError set to - // CRYPT_E_EXISTS. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -18369,6 +19375,8 @@ - // Key Identifiers. Set pwszComputerName, to enumerate Key Identifiers on - // a remote computer. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -18393,11 +19401,13 @@ - // public key Object Identifier. pszPubKeyOID can be set to override - // the default OID obtained from the aiKeyAlg. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI - CryptCreateKeyIdentifierFromCSP( -- _In_ DWORD dwCertEncodingType, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, - _In_opt_ LPCSTR pszPubKeyOID, - _In_reads_bytes_(cbPubKeyStruc) const PUBLICKEYSTRUC *pPubKeyStruc, - _In_ DWORD cbPubKeyStruc, -@@ -19405,6 +20415,9 @@ - // - - typedef HANDLE HCERTCHAINENGINE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HCERTCHAINENGINE HCERTCHAINENGINE; -+#endif - - #define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL) - #define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1) -@@ -19525,19 +20538,22 @@ - #define CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG 0x00000001 - #endif - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL - WINAPI - CertCreateCertificateChainEngine ( - _In_ PCERT_CHAIN_ENGINE_CONFIG pConfig, -- _Out_ HCERTCHAINENGINE* phChainEngine -+ _Win32_RAIIFree_(CertFreeCertificateChainEngine, -1, 0) _Out_ HCERTCHAINENGINE* phChainEngine - ); - - // - // Free a certificate trust engine - // - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - VOID - WINAPI -@@ -19550,6 +20566,8 @@ - // the engine and updates the engine caches. - // - -+_Win32_SetLastError_ -+_Win32_SupportedOS_10240_ - WINCRYPT32API - BOOL - WINAPI -@@ -19990,6 +21008,8 @@ - // dwInfoStatus. - #define CERT_CHAIN_ENABLE_DISALLOWED_CA 0x00020000 - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -20009,6 +21029,7 @@ - // Free a certificate chain - // - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - VOID - WINAPI -@@ -20020,6 +21041,7 @@ - // Duplicate (add a reference to) a certificate chain - // - -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CHAIN_CONTEXT - WINAPI -@@ -20100,13 +21122,14 @@ - // NOTE: a NON-NULL pPrevChainContext is always CertFreeCertificateChain'ed by - // this function, even for an error. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - PCCERT_CHAIN_CONTEXT - WINAPI - CertFindChainInStore( - _In_ HCERTSTORE hCertStore, -- _In_ DWORD dwCertEncodingType, -- _In_ DWORD dwFindFlags, -+ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, -+ _Win32_AssociatedEnum_(CERT_FIND_CHAIN_IN_STORE_FLAGS) _In_ DWORD dwFindFlags, - _In_ DWORD dwFindType, - _In_opt_ const void *pvFindPara, - _In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext -@@ -20251,13 +21274,27 @@ - // stores. - #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_FIND_CHAIN_IN_STORE_FLAGS, unsigned long, -+ CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG, -+ CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG, -+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG, -+ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG, -+ CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG, -+ CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG); -+#endif -+ - - //+========================================================================= - // Certificate Chain Policy Data Structures and APIs - //========================================================================== -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CERT_CHAIN_POLICY_FLAGS; -+#endif -+ - typedef struct _CERT_CHAIN_POLICY_PARA { - DWORD cbSize; -- DWORD dwFlags; -+ _Win32_AssociatedEnum_(CERT_CHAIN_POLICY_FLAGS) DWORD dwFlags; - void *pvExtraPolicyPara; // pszPolicyOID specific - } CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA; - -@@ -20334,6 +21371,7 @@ - // In addition to returning dwError, in pPolicyStatus, policy OID specific - // extra status may be returned via pvExtraPolicyStatus. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -20431,6 +21469,10 @@ - //-------------------------------------------------------------------------- - - // fdwChecks flags are defined in wininet.h -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE; -+#endif -+ - typedef struct _HTTPSPolicyCallbackData - { - union { -@@ -20438,7 +21480,7 @@ - DWORD cbSize; // sizeof(HTTPSPolicyCallbackData); - } DUMMYUNIONNAME; - -- DWORD dwAuthType; -+ _Win32_AssociatedEnum_(HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE) DWORD dwAuthType; - # define AUTHTYPE_CLIENT 1 - # define AUTHTYPE_SERVER 2 - -@@ -20448,6 +21490,12 @@ - - } HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData, - SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA; -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE, unsigned long, -+ AUTHTYPE_CLIENT, -+ AUTHTYPE_SERVER); -+#endif - - //+------------------------------------------------------------------------- - // CERT_CHAIN_POLICY_BASIC_CONSTRAINTS -@@ -20536,6 +21584,34 @@ - #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000 - #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x00040000 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CERT_CHAIN_POLICY_FLAGS, unsigned long, -+ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS, -+ CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS, -+ CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG, -+ CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG, -+ CERT_CHAIN_POLICY_IGNORE_WEAK_SIGNATURE_FLAG, -+ BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG, -+ BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG, -+ MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, -+ MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, -+ MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG); -+#endif -+ - //+------------------------------------------------------------------------- - // CERT_CHAIN_POLICY_EV - // -@@ -20554,7 +21630,7 @@ - - typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA { - DWORD cbSize; -- DWORD dwRootProgramQualifierFlags; -+ _Win32_AssociatedEnum_(CERT_ROOT_PROGRAM_FLAGS) DWORD dwRootProgramQualifierFlags; - } EV_EXTRA_CERT_CHAIN_POLICY_PARA, - *PEV_EXTRA_CERT_CHAIN_POLICY_PARA; - -@@ -20830,6 +21906,12 @@ - // *pdwSkip returns the character count of skipped strings, optional - // *pdwFlags returns the actual format used in the conversion, optional - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_STRING; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return) - WINCRYPT32STRINGAPI - BOOL -@@ -20839,7 +21921,7 @@ - _When_(dwFlags == CRYPT_STRING_BINARY, _In_reads_bytes_(cchString)) - LPCSTR pszString, - _In_ DWORD cchString, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, - _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, - _Inout_ DWORD *pcbBinary, - _Out_opt_ DWORD *pdwSkip, -@@ -20856,6 +21938,8 @@ - // *pdwSkip returns the character count of skipped strings, optional - // *pdwFlags returns the actual format used in the conversion, optional - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - _Success_(return) - WINCRYPT32STRINGAPI - BOOL -@@ -20865,7 +21949,7 @@ - _When_(dwFlags == CRYPT_STRING_BINARY, _In_reads_bytes_(cchString)) - LPCWSTR pszString, - _In_ DWORD cchString, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, - _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, - _Inout_ DWORD *pcbBinary, - _Out_opt_ DWORD *pdwSkip, -@@ -20883,6 +21967,7 @@ - // if pszString is NULL, *pcchString returns size in characters - // including null-terminator - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - _Success_(return) - WINCRYPT32STRINGAPI - BOOL -@@ -20890,7 +21975,7 @@ - CryptBinaryToStringA( - _In_reads_bytes_(cbBinary) CONST BYTE *pbBinary, - _In_ DWORD cbBinary, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, - _Out_writes_to_opt_(*pcchString, *pcchString) LPSTR pszString, - _Inout_ DWORD *pcchString - ); -@@ -20900,6 +21985,7 @@ - // if pszString is NULL, *pcchString returns size in characters - // including null-terminator - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - _Success_(return) - WINCRYPT32STRINGAPI - BOOL -@@ -20907,7 +21993,7 @@ - CryptBinaryToStringW( - _In_reads_bytes_(cbBinary) CONST BYTE *pbBinary, - _In_ DWORD cbBinary, -- _In_ DWORD dwFlags, -+ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, - _Out_writes_to_opt_(*pcchString, *pcchString) LPWSTR pszString, - _Inout_ DWORD *pcchString - ); -@@ -20941,6 +22027,24 @@ - #define CRYPT_STRING_PERCENTESCAPE 0x08000000 // base64 formats only - #define CRYPT_STRING_HASHDATA 0x10000000 - #define CRYPT_STRING_STRICT 0x20000000 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_STRING, unsigned long, -+ CRYPT_STRING_BASE64HEADER, -+ CRYPT_STRING_BASE64, -+ CRYPT_STRING_BINARY, -+ CRYPT_STRING_BASE64REQUESTHEADER, -+ CRYPT_STRING_HEX, -+ CRYPT_STRING_HEXASCII, -+ CRYPT_STRING_BASE64X509CRLHEADER, -+ CRYPT_STRING_HEXADDR, -+ CRYPT_STRING_HEXASCIIADDR, -+ CRYPT_STRING_HEXRAW, -+ CRYPT_STRING_STRICT, -+ CRYPT_STRING_BASE64_ANY, -+ CRYPT_STRING_ANY, -+ CRYPT_STRING_HEX_ANY); -+#endif - #define CRYPT_STRING_NOCRLF 0x40000000 - #define CRYPT_STRING_NOCR 0x80000000 - // certenrolld_end -@@ -21056,13 +22160,19 @@ - // except, we won't fallback to - // using the password to decrypt. - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_KEY_FLAGS; -+#endif -+ -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - HCERTSTORE - WINAPI - PFXImportCertStore( - _In_ CRYPT_DATA_BLOB* pPFX, - _In_ LPCWSTR szPassword, -- _In_ DWORD dwFlags); -+ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) DWORD dwFlags); - - // dwFlags definitions for PFXImportCertStore - //#define CRYPT_EXPORTABLE 0x00000001 // CryptImportKey dwFlags -@@ -21099,6 +22209,7 @@ - // blob, and if that works it will return TRUE, it will return FALSE otherwise - // - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -21115,6 +22226,7 @@ - // Return value is TRUE if password appears correct, FALSE otherwise. - // - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -21181,6 +22293,8 @@ - // the memory pointed to by pPFX->pbData is updated with the encoded bytes - // and pPFX->cbData is updated with the encoded byte length. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -21197,6 +22311,41 @@ - #define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x0002 - #define EXPORT_PRIVATE_KEYS 0x0004 - #define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x0010 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_FlagsEnum_(CRYPT_KEY_FLAGS, unsigned long, -+ CRYPT_EXPORTABLE, -+ CRYPT_USER_PROTECTED, -+ CRYPT_ARCHIVABLE, -+ CRYPT_CREATE_IV, -+ CRYPT_CREATE_SALT, -+ CRYPT_DATA_KEY, -+ CRYPT_FORCE_KEY_PROTECTION_HIGH, -+ CRYPT_KEK, -+ CRYPT_INITIATOR, -+ CRYPT_NO_SALT, -+ CRYPT_ONLINE, -+ CRYPT_PREGEN, -+ CRYPT_RECIPIENT, -+ CRYPT_SF, -+ CRYPT_SGCKEY, -+ CRYPT_VOLATILE, -+ CRYPT_MACHINE_KEYSET, -+ CRYPT_USER_KEYSET, -+ PKCS12_PREFER_CNG_KSP, -+ PKCS12_ALWAYS_CNG_KSP, -+ PKCS12_ALLOW_OVERWRITE_KEY, -+ PKCS12_NO_PERSIST_KEY, -+ PKCS12_INCLUDE_EXTENDED_PROPERTIES, -+ CRYPT_OAEP, -+ CRYPT_BLOB_VER3, -+ CRYPT_DESTROYKEY, -+ CRYPT_SSL2_FALLBACK, -+ CRYPT_Y_ONLY, -+ CRYPT_IPSEC_HMAC_KEY, -+ CERT_SET_KEY_PROV_HANDLE_PROP_ID, -+ CERT_SET_KEY_CONTEXT_PROP_ID); -+#endif - #define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x0020 - #define PKCS12_EXPORT_SILENT 0x0040 - #define PKCS12_EXPORT_PBES2_PARAMS 0x0080 -@@ -21253,6 +22402,8 @@ - // This is an old API kept for compatibility with IE4 clients. New applications - // should call the above PfxExportCertStoreEx for enhanced security. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsXP_ - WINCRYPT32API - BOOL - WINAPI -@@ -21372,6 +22523,8 @@ - // CertCloseServerOcspResponse() must be called to close the returned - // handle. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - HCERT_SERVER_OCSP_RESPONSE - WINAPI -@@ -21390,6 +22543,7 @@ - // CertOpenServerOcspResponse(). Each Open and AddRef requires a - // corresponding CertCloseServerOcspResponse(). - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - VOID - WINAPI -@@ -21403,6 +22557,7 @@ - // - // dwFlags isn't currently used and must be set to 0. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - VOID - WINAPI -@@ -21424,6 +22579,7 @@ - // CertFreeServerOcspResponseContext() must be called to free the - // returned OCSP response context. - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - PCCERT_SERVER_OCSP_RESPONSE_CONTEXT - WINAPI -@@ -21438,6 +22594,7 @@ - // CertGetServerOcspResponseContext(). Each Get and AddRef requires a - // corresponding CertFreeServerOcspResponseContext(). - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - VOID - WINAPI -@@ -21449,6 +22606,7 @@ - // Free the OCSP response context returned by - // CertGetServerOcspResponseContext(). - //-------------------------------------------------------------------------- -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - VOID - WINAPI -@@ -21506,6 +22664,8 @@ - // *ppwszMimeType is always NULL for the biometric types. For success, - // the caller must always check if non-NULL before dereferencing. - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -21563,7 +22723,7 @@ - - typedef struct _CERT_SELECT_CRITERIA - { -- DWORD dwType; -+ _Win32_AssociatedEnum_(CERT_SELECT_CRITERIA_TYPE) DWORD dwType; - DWORD cPara; - _Field_size_(cPara) void** ppPara; - } -@@ -21585,6 +22745,21 @@ - #define CERT_SELECT_BY_PUBLIC_KEY 10 - #define CERT_SELECT_BY_TLS_SIGNATURES 11 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CERT_SELECT_CRITERIA_TYPE, unsigned long, -+ CERT_SELECT_BY_ENHKEY_USAGE, -+ CERT_SELECT_BY_KEY_USAGE, -+ CERT_SELECT_BY_POLICY_OID, -+ CERT_SELECT_BY_PROV_NAME, -+ CERT_SELECT_BY_EXTENSION, -+ CERT_SELECT_BY_SUBJECT_HOST_NAME, -+ CERT_SELECT_BY_ISSUER_ATTR, -+ CERT_SELECT_BY_SUBJECT_ATTR, -+ CERT_SELECT_BY_ISSUER_NAME, -+ CERT_SELECT_BY_PUBLIC_KEY, -+ CERT_SELECT_BY_TLS_SIGNATURES); -+#endif -+ - //add for WinRT - #define CERT_SELECT_BY_ISSUER_DISPLAYNAME 12 - #define CERT_SELECT_BY_FRIENDLYNAME 13 -@@ -21610,6 +22785,8 @@ - // the matching ones based on the flags and selection criteria. - //-------------------------------------------------------------------------- - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - WINCRYPT32API - _Success_(return != FALSE) - BOOL -@@ -21630,6 +22807,7 @@ - // CertFreeCertificateChain is NOT called for each entry. - //-------------------------------------------------------------------------- - -+_Win32_SupportedOS_Windows7_ - WINCRYPT32API - VOID - WINAPI -@@ -21651,9 +22829,14 @@ - //-------------------------------------------------------------------------- - #define TIMESTAMP_VERSION 1 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_TIMESTAMP_VERSION, unsigned long, -+ TIMESTAMP_VERSION); -+#endif -+ - typedef struct _CRYPT_TIMESTAMP_REQUEST - { -- DWORD dwVersion; // v1 -+ _Win32_AssociatedEnum_(CRYPT_TIMESTAMP_VERSION) DWORD dwVersion; // v1 - CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; - CRYPT_DER_BLOB HashedMessage; - LPSTR pszTSAPolicyId; // OPTIONAL -@@ -21668,9 +22851,13 @@ - // CRYPT_TIMESTAMP_RESPONSE - // - //-------------------------------------------------------------------------- -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+typedef unsigned long CRYPT_TIMESTAMP_RESPONSE_STATUS; -+#endif -+ - typedef struct _CRYPT_TIMESTAMP_RESPONSE - { -- DWORD dwStatus; -+ _Win32_AssociatedEnum_(CRYPT_TIMESTAMP_RESPONSE_STATUS) DWORD dwStatus; - DWORD cFreeText; // OPTIONAL - _Field_size_(cFreeText) - LPWSTR* rgFreeText; -@@ -21684,6 +22871,16 @@ - #define TIMESTAMP_STATUS_WAITING 3 - #define TIMESTAMP_STATUS_REVOCATION_WARNING 4 - #define TIMESTAMP_STATUS_REVOKED 5 -+ -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_TIMESTAMP_RESPONSE_STATUS, unsigned long, -+ TIMESTAMP_STATUS_GRANTED, -+ TIMESTAMP_STATUS_GRANTED_WITH_MODS, -+ TIMESTAMP_STATUS_REJECTED, -+ TIMESTAMP_STATUS_WAITING, -+ TIMESTAMP_STATUS_REVOCATION_WARNING, -+ TIMESTAMP_STATUS_REVOKED); -+#endif - - #define TIMESTAMP_FAILURE_BAD_ALG 0 - #define TIMESTAMP_FAILURE_BAD_REQUEST 2 -@@ -21811,6 +23008,8 @@ - // if fRequestCerts value is TRUE. - // - //-------------------------------------------------------------------------- -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - BOOL - WINAPI - CryptRetrieveTimeStamp( -@@ -21874,6 +23073,8 @@ - // The caller should also build a chain for ppTsSigner and validate the trust. - //-------------------------------------------------------------------------- - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows7_ - _Success_(return == TRUE) - BOOL - WINAPI -@@ -21926,6 +23127,14 @@ - #define CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT 3 - #define CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD 4 - -+#if defined(WIN32METADATA) && !defined(MIDL_PASS) -+_Win32_Enum_(CRYPT_OBJECT_LOCATOR_RELEASE_REASON, unsigned long, -+ CRYPT_OBJECT_LOCATOR_RELEASE_SYSTEM_SHUTDOWN, -+ CRYPT_OBJECT_LOCATOR_RELEASE_SERVICE_STOP, -+ CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT, -+ CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD); -+#endif -+ - - //-------------------------------------------------------------------------- - // The object locator provider receives this function when it is initialized. -@@ -22012,7 +23221,7 @@ - // it is initialized. - //-------------------------------------------------------------------------- - typedef void (WINAPI * PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE)( -- _In_ DWORD dwReason, -+ _Win32_AssociatedEnum_(CRYPT_OBJECT_LOCATOR_RELEASE_REASON) _In_ DWORD dwReason, - _In_opt_ LPVOID pPluginContext); - - + // in Microsoft Windows XP, because Windows XP ships with the 128-bit + // encryption provider. + // ++_Win32_SupportedOS_WindowsXP_ + BOOL + __cdecl + GetEncSChannel( +@@ -2006,9 +2214,13 @@ + // The interpretation of the Value depends on the dwValueType. + // See below for a list of the types. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef int CERT_RDN_ATTR_VALUE_TYPE; ++#endif ++ + typedef struct _CERT_RDN_ATTR { + LPSTR pszObjId; +- DWORD dwValueType; ++ _Win32_AssociatedEnum_(CERT_RDN_ATTR_VALUE_TYPE) DWORD dwValueType; + CERT_RDN_VALUE_BLOB Value; + } CERT_RDN_ATTR, *PCERT_RDN_ATTR; + +@@ -2146,6 +2358,28 @@ + #define CERT_RDN_UNICODE_STRING 12 + #define CERT_RDN_UTF8_STRING 13 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_RDN_ATTR_VALUE_TYPE, int, ++ CERT_RDN_ANY_TYPE, ++ CERT_RDN_NUMERIC_STRING, ++ CERT_RDN_PRINTABLE_STRING, ++ CERT_RDN_T61_STRING, ++ CERT_RDN_VIDEOTEX_STRING, ++ CERT_RDN_IA5_STRING, ++ CERT_RDN_GRAPHIC_STRING, ++ CERT_RDN_ISO646_STRING, ++ CERT_RDN_GENERAL_STRING, ++ CERT_RDN_INT4_STRING, ++ CERT_RDN_UNICODE_STRING, ++ CERT_RDN_BMP_STRING, ++ CERT_RDN_ENCODED_BLOB, ++ CERT_RDN_OCTET_STRING, ++ CERT_RDN_TELETEX_STRING, ++ CERT_RDN_UNIVERSAL_STRING, ++ CERT_RDN_UTF8_STRING, ++ CERT_RDN_VISIBLE_STRING); ++#endif ++ + #define CERT_RDN_TYPE_MASK 0x000000FF + #define CERT_RDN_FLAGS_MASK 0xFF000000 + +@@ -2383,7 +2617,7 @@ + CRYPT_BIT_BLOB IssuerUniqueId; + CRYPT_BIT_BLOB SubjectUniqueId; + DWORD cExtension; +- PCERT_EXTENSION rgExtension; ++ _Field_size_(cExtension) PCERT_EXTENSION rgExtension; + } CERT_INFO, *PCERT_INFO; + // certenrolls_end + +@@ -2615,6 +2849,12 @@ + #define X509_ASN_ENCODING 0x00000001 + #define X509_NDR_ENCODING 0x00000002 + #define PKCS_7_ASN_ENCODING 0x00010000 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_QUERY_ENCODING_TYPE, unsigned long, ++ X509_ASN_ENCODING, ++ PKCS_7_ASN_ENCODING); ++#endif + #define PKCS_7_NDR_ENCODING 0x00020000 + + //+------------------------------------------------------------------------- +@@ -2631,11 +2871,13 @@ + // for the lpszStructType, the hex dump of the encoded BLOB will be returned. + // User can set the flag CRYPT_FORMAT_STR_NO_HEX to disable the hex dump. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptFormatObject( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ DWORD dwFormatType, + _In_ DWORD dwFormatStrType, + _In_opt_ void *pFormatStruct, +@@ -2730,24 +2972,28 @@ + } CRYPT_ENCODE_PARA, *PCRYPT_ENCODE_PARA; + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptEncodeObjectEx( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR lpszStructType, + _In_ const void *pvStructInfo, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CRYPT_ENCODE_OBJECT_FLAGS) _In_ DWORD dwFlags, + _In_opt_ PCRYPT_ENCODE_PARA pEncodePara, + _Out_opt_ void *pvEncoded, + _Inout_ DWORD *pcbEncoded + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptEncodeObject( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR lpszStructType, + _In_ const void *pvStructInfo, + _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, +@@ -2812,6 +3058,15 @@ + // IA5String encoding of host name(in DNS Name/ URL/ EmailAddress) containing + // non-IA5 characters by encoding the host name in punycode first. + #define CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG 0x20000 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_ENCODE_OBJECT_FLAGS, unsigned long, ++ CRYPT_ENCODE_ALLOC_FLAG, ++ CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG, ++ CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG, ++ CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG, ++ CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG); ++#endif + + // The following flag is applicable when encoding structures that require + // IA5String encoding of a path (http URL/Ldap query) containing non-IA5 +@@ -2835,11 +3090,13 @@ + PFN_CRYPT_FREE pfnFree; // OPTIONAL + } CRYPT_DECODE_PARA, *PCRYPT_DECODE_PARA; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptDecodeObjectEx( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR lpszStructType, + _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, + _In_ DWORD cbEncoded, +@@ -2850,16 +3107,18 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptDecodeObject( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR lpszStructType, + _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, + _In_ DWORD cbEncoded, + _In_ DWORD dwFlags, +- _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) void *pvStructInfo, ++ _Out_writes_bytes_to_opt_(*pcbStructInfo, *pcbStructInfo) _Win32_ContainsInteriorPointers_ void *pvStructInfo, + _Inout_ DWORD *pcbStructInfo + ); + +@@ -3643,6 +3902,13 @@ + + // Subject logotype + #define CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO 0x20 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_ROOT_PROGRAM_FLAGS, unsigned long, ++ CERT_ROOT_PROGRAM_FLAG_LSC, ++ CERT_ROOT_PROGRAM_FLAG_ORG, ++ CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO); ++#endif + + // Validation of the OrganizationalUnit (OU) field in the subject name + // meets Root Program Requirements for display. +@@ -4069,6 +4335,17 @@ + #define CERT_ALT_NAME_URL 7 + #define CERT_ALT_NAME_IP_ADDRESS 8 + #define CERT_ALT_NAME_REGISTERED_ID 9 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_ALT_NAME, int, ++ CERT_ALT_NAME_RFC822_NAME, ++ CERT_ALT_NAME_DNS_NAME, ++ CERT_ALT_NAME_URL, ++ CERT_ALT_NAME_REGISTERED_ID, ++ CERT_ALT_NAME_DIRECTORY_NAME, ++ CERT_ALT_NAME_IP_ADDRESS, ++ CERT_ALT_NAME_OTHER_NAME); ++#endif + // certenrolld_end + + // certenrolls_begin -- CERT_ALT_NAME_INFO +@@ -4493,6 +4770,18 @@ + #define CRL_REASON_CESSATION_OF_OPERATION 5 + #define CRL_REASON_CERTIFICATE_HOLD 6 + #define CRL_REASON_REMOVE_FROM_CRL 8 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_REVOCATION_STATUS_REASON, unsigned long, ++ CRL_REASON_UNSPECIFIED, ++ CRL_REASON_KEY_COMPROMISE, ++ CRL_REASON_CA_COMPROMISE, ++ CRL_REASON_AFFILIATION_CHANGED, ++ CRL_REASON_SUPERSEDED, ++ CRL_REASON_CESSATION_OF_OPERATION, ++ CRL_REASON_CERTIFICATE_HOLD, ++ CRL_REASON_REMOVE_FROM_CRL); ++#endif + #define CRL_REASON_PRIVILEGE_WITHDRAWN 9 + #define CRL_REASON_AA_COMPROMISE 10 + +@@ -5534,16 +5823,24 @@ + PCERT_HASHED_URL rgHashedUrl; + } CERT_LOGOTYPE_REFERENCE, *PCERT_LOGOTYPE_REFERENCE; + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_LOGOTYPE_IMAGE_INFO_TYPE; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_LOGOTYPE_CHOICE; ++#endif ++ + typedef struct _CERT_LOGOTYPE_IMAGE_INFO { + // CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE or + // CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE +- DWORD dwLogotypeImageInfoChoice; ++ _Win32_AssociatedEnum_(CERT_LOGOTYPE_IMAGE_INFO_TYPE) DWORD dwLogotypeImageInfoChoice; + + DWORD dwFileSize; // In octets + DWORD dwXSize; // Horizontal size in pixels + DWORD dwYSize; // Vertical size in pixels + +- DWORD dwLogotypeImageResolutionChoice; ++ _Win32_AssociatedEnum_(CERT_LOGOTYPE_CHOICE) DWORD dwLogotypeImageResolutionChoice; + union { + // CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE + // No resolution value +@@ -5561,9 +5858,22 @@ + #define CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE 1 + #define CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE 2 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_LOGOTYPE_IMAGE_INFO_TYPE, unsigned long, ++ CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE, ++ CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE); ++#endif ++ + #define CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE 0 + #define CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE 1 + #define CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_LOGOTYPE_CHOICE, unsigned long, ++ CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE, ++ CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE, ++ CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE); ++#endif + + typedef struct _CERT_LOGOTYPE_IMAGE { + CERT_LOGOTYPE_DETAILS LogotypeDetails; +@@ -5598,8 +5908,12 @@ + } CERT_LOGOTYPE_DATA, *PCERT_LOGOTYPE_DATA; + + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_LOGOTYPE_OPTION; ++#endif ++ + typedef struct _CERT_LOGOTYPE_INFO { +- DWORD dwLogotypeInfoChoice; ++ _Win32_AssociatedEnum_(CERT_LOGOTYPE_OPTION) DWORD dwLogotypeInfoChoice; + union { + // CERT_LOGOTYPE_DIRECT_INFO_CHOICE + PCERT_LOGOTYPE_DATA pLogotypeDirectInfo; +@@ -5611,6 +5925,12 @@ + + #define CERT_LOGOTYPE_DIRECT_INFO_CHOICE 1 + #define CERT_LOGOTYPE_INDIRECT_INFO_CHOICE 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_LOGOTYPE_OPTION, unsigned long, ++ CERT_LOGOTYPE_DIRECT_INFO_CHOICE, ++ CERT_LOGOTYPE_INDIRECT_INFO_CHOICE); ++#endif + + typedef struct _CERT_OTHER_LOGOTYPE_INFO { + LPSTR pszObjId; +@@ -5639,8 +5959,12 @@ + // pvStructInfo points to following CERT_BIOMETRIC_EXT_INFO data structure. + //========================================================================== + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_BIOMETRIC_DATA_TYPE; ++#endif ++ + typedef struct _CERT_BIOMETRIC_DATA { +- DWORD dwTypeOfBiometricDataChoice; ++ _Win32_AssociatedEnum_(CERT_BIOMETRIC_DATA_TYPE) DWORD dwTypeOfBiometricDataChoice; + union { + // CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE + DWORD dwPredefined; +@@ -5654,6 +5978,12 @@ + + #define CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE 1 + #define CERT_BIOMETRIC_OID_DATA_CHOICE 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_BIOMETRIC_DATA_TYPE, unsigned long, ++ CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE, ++ CERT_BIOMETRIC_OID_DATA_CHOICE); ++#endif + + #define CERT_BIOMETRIC_PICTURE_TYPE 0 + #define CERT_BIOMETRIC_SIGNATURE_TYPE 1 +@@ -5764,7 +6094,7 @@ + FILETIME RevocationDate; + + // See X509_CRL_REASON_CODE for list of reason codes +- DWORD dwCrlReasonCode; ++ _Win32_AssociatedEnum_(CERT_REVOCATION_STATUS_REASON) DWORD dwCrlReasonCode; + } OCSP_BASIC_REVOKED_INFO, *POCSP_BASIC_REVOKED_INFO; + + typedef struct _OCSP_BASIC_RESPONSE_ENTRY { +@@ -5950,6 +6280,7 @@ + // DEFAULT functions are installed by setting rgFuncEntry[].pszOID = + // CRYPT_DEFAULT_OID. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -5968,6 +6299,7 @@ + // + // If the set already exists, a handle to the existing set is returned. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCRYPTOIDFUNCSET + WINAPI +@@ -5994,6 +6326,8 @@ + // the registered function might handle a new special case and call the + // pre-installed function to handle the remaining cases. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -6017,6 +6351,8 @@ + // names. The list is terminated with an empty (L"\0") Dll file name. + // For example: L"first.dll" L"\0" L"second.dll" L"\0" L"\0" + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -6051,6 +6387,7 @@ + // be called to release it or CryptGetDefaultOIDFunctionAddress can also + // be called for a NULL pwszDll. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -6077,6 +6414,7 @@ + // STDAPI DllCanUnloadNow(void); + //-------------------------------------------------------------------------- + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6105,6 +6443,7 @@ + // This allows a Dll to export multiple OID functions for the same + // function name without needing to interpose its own OID dispatcher function. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6120,6 +6459,7 @@ + // Unregister the Dll containing the function to be called for the specified + // encoding type, function name and OID. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6143,6 +6483,7 @@ + // pwszDll may contain environment-variable strings + // which are ExpandEnvironmentStrings()'ed before loading the Dll. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6160,6 +6501,7 @@ + // Unregister the Dll containing the default function to be called for + // the specified encoding type and function name. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6177,6 +6519,7 @@ + // + // String types are UNICODE. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6185,7 +6528,7 @@ + _In_ LPCSTR pszFuncName, + _In_ LPCSTR pszOID, + _In_opt_ LPCWSTR pwszValueName, +- _In_ DWORD dwValueType, ++ _Win32_AssociatedEnum_(REG_VALUE_TYPE) _In_ DWORD dwValueType, + _In_reads_bytes_opt_(cbValueData) const BYTE *pbValueData, + _In_ DWORD cbValueData + ); +@@ -6205,6 +6548,8 @@ + #pragma region Application Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6243,6 +6588,8 @@ + // + // String types are UNICODE. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6519,6 +6866,7 @@ + // Setting dwGroupId to 0, searches all groups according to the dwKeyType. + // Otherwise, only the dwGroupId is searched. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRYPT_OID_INFO + WINAPI +@@ -6541,6 +6889,12 @@ + #define CRYPT_OID_INFO_OID_KEY_FLAGS_MASK 0xFFFF0000 + #define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000 + #define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_IMPORT_PUBLIC_KEY_FLAGS, unsigned long, ++ CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG, ++ CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG); ++#endif + + // Set the following in the above dwKeyType parameter to restrict public keys + // valid for "Pure" or "PreHash" signing +@@ -6600,6 +6954,7 @@ + // By default the registered OID information is installed after crypt32.dll's + // OID entries. Set CRYPT_INSTALL_OID_INFO_BEFORE_FLAG to install before. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6614,6 +6969,7 @@ + // Unregister OID information. Only the pszOID and dwGroupId fields are + // used to identify the OID information to be unregistered. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6643,6 +6999,7 @@ + // + // dwFlags currently isn't used and must be set to 0. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -6676,6 +7033,7 @@ + // + // The registered names are searched before the pre-installed names. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LPCWSTR + WINAPI +@@ -6690,8 +7048,12 @@ + // Certificate Strong Signature Defines and Data Structures + //========================================================================== + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_STRONG_SIGN_FLAGS; ++#endif ++ + typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO { +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(CERT_STRONG_SIGN_FLAGS) DWORD dwFlags; + LPWSTR pwszCNGSignHashAlgids; + LPWSTR pwszCNGPubKeyMinBitLengths; // Optional + } CERT_STRONG_SIGN_SERIALIZED_INFO, *PCERT_STRONG_SIGN_SERIALIZED_INFO; +@@ -6744,6 +7106,12 @@ + // CRLs or OCSP responses. + #define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1 + #define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_STRONG_SIGN_FLAGS, unsigned long, ++ CERT_STRONG_SIGN_ENABLE_CRL_CHECK, ++ CERT_STRONG_SIGN_ENABLE_OCSP_CHECK); ++#endif + + + // +@@ -6829,6 +7197,15 @@ + #define CMSG_ENVELOPED 3 + #define CMSG_SIGNED_AND_ENVELOPED 4 + #define CMSG_HASHED 5 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_MSG_TYPE, unsigned long, ++ CMSG_DATA, ++ CMSG_SIGNED, ++ CMSG_ENVELOPED, ++ CMSG_SIGNED_AND_ENVELOPED, ++ CMSG_HASHED); ++#endif + #define CMSG_ENCRYPTED 6 + + //+------------------------------------------------------------------------- +@@ -6854,8 +7231,12 @@ + //+------------------------------------------------------------------------- + // Certificate Identifier + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_ID_OPTION; ++#endif ++ + typedef struct _CERT_ID { +- DWORD dwIdChoice; ++ _Win32_AssociatedEnum_(CERT_ID_OPTION) DWORD dwIdChoice; + union { + // CERT_ID_ISSUER_SERIAL_NUMBER + CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber; +@@ -6869,6 +7250,13 @@ + #define CERT_ID_ISSUER_SERIAL_NUMBER 1 + #define CERT_ID_KEY_IDENTIFIER 2 + #define CERT_ID_SHA1_HASH 3 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_ID_OPTION, unsigned long, ++ CERT_ID_ISSUER_SERIAL_NUMBER, ++ CERT_ID_KEY_IDENTIFIER, ++ CERT_ID_SHA1_HASH); ++#endif + + //+------------------------------------------------------------------------- + // The message encode information (pvMsgEncodeInfo) is message type dependent +@@ -7120,6 +7508,10 @@ + } CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO, + *PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO; + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CMSG_KEY_AGREE_OPTION; ++#endif ++ + typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO { + DWORD cbSize; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; +@@ -7136,7 +7528,7 @@ + HCRYPTPROV_LEGACY hCryptProv; + DWORD dwKeySpec; + +- DWORD dwKeyChoice; ++ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_OPTION) DWORD dwKeyChoice; + union { + // CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE + // +@@ -7156,6 +7548,12 @@ + + #define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1 + #define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CMSG_KEY_AGREE_OPTION, unsigned long, ++ CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE, ++ CMSG_KEY_AGREE_STATIC_KEY_CHOICE); ++#endif + + //+------------------------------------------------------------------------- + // Mail List Recipient Encode Info +@@ -7401,13 +7799,15 @@ + // The pStreamInfo parameter needs to be set to stream the encoded message + // output. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCRYPTMSG + WINAPI + CryptMsgOpenToEncode( + _In_ DWORD dwMsgEncodingType, + _In_ DWORD dwFlags, +- _In_ DWORD dwMsgType, ++ _In_ _Win32_AssociatedEnum_(CRYPT_MSG_TYPE) DWORD dwMsgType, + _In_ void const *pvMsgEncodeInfo, + _In_opt_ LPSTR pszInnerContentObjID, + _In_opt_ PCMSG_STREAM_INFO pStreamInfo +@@ -7421,6 +7821,8 @@ + // the data to be updated. Note, this might not be the exact length. However, + // it will always be greater than or equal to the actual length. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -7445,6 +7847,8 @@ + // The pStreamInfo parameter needs to be set to stream the decoded content + // output. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCRYPTMSG + WINAPI +@@ -7460,6 +7864,7 @@ + //+------------------------------------------------------------------------- + // Duplicate a cryptographic message handle + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCRYPTMSG + WINAPI +@@ -7472,6 +7877,8 @@ + // + // LastError is preserved unless FALSE is returned. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -7488,6 +7895,8 @@ + // is completed. The encoded/decoded content and the decoded parameters + // are valid until the open and all duplicated handles are closed. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -7522,6 +7931,8 @@ + // + // See below for a list of the parameters to get. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -7529,7 +7940,7 @@ + _In_ HCRYPTMSG hCryptMsg, + _In_ DWORD dwParamType, + _In_ DWORD dwIndex, +- _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, ++ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) _Win32_ContainsInteriorPointers_ void *pvData, + _Inout_ DWORD *pcbData + ); + +@@ -7987,9 +8398,13 @@ + PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr; + } CMSG_RECIPIENT_ENCRYPTED_KEY_INFO, *PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO; + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CMSG_KEY_AGREE_ORIGINATOR; ++#endif ++ + typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO { + DWORD dwVersion; +- DWORD dwOriginatorChoice; ++ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_ORIGINATOR) DWORD dwOriginatorChoice; + union { + // CMSG_KEY_AGREE_ORIGINATOR_CERT + CERT_ID OriginatorCertId; +@@ -8005,6 +8420,12 @@ + + #define CMSG_KEY_AGREE_ORIGINATOR_CERT 1 + #define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CMSG_KEY_AGREE_ORIGINATOR, unsigned long, ++ CMSG_KEY_AGREE_ORIGINATOR_CERT, ++ CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY); ++#endif + + + typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO { +@@ -8060,6 +8481,8 @@ + // See below for a list of the control operations and their pvCtrlPara + // type definition. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -8468,6 +8891,8 @@ + // The only fields referenced from pciCountersigner are SerialNumber, Issuer, + // and SubjectPublicKeyInfo. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + BOOL + WINAPI + CryptMsgVerifyCountersignatureEncoded( +@@ -8491,6 +8916,8 @@ + // The signer can be a CERT_PUBLIC_KEY_INFO, certificate context or a + // chain context. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + BOOL + WINAPI + CryptMsgVerifyCountersignatureEncodedEx( +@@ -8517,6 +8944,8 @@ + // + // dwIndex is a zero-based index of the SignerInfo to be countersigned. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + BOOL + WINAPI + CryptMsgCountersign( +@@ -8532,6 +8961,8 @@ + // attribute in the unauthenticated attributes of a signed-data or + // signed-and-enveloped-data message. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + BOOL + WINAPI + CryptMsgCountersignEncoded( +@@ -8805,7 +9236,7 @@ + DWORD dwRecipientIndex; + CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm; + CRYPT_DATA_BLOB UserKeyingMaterial; +- DWORD dwOriginatorChoice; ++ _Win32_AssociatedEnum_(CMSG_KEY_AGREE_ORIGINATOR) DWORD dwOriginatorChoice; + union { + // CMSG_KEY_AGREE_ORIGINATOR_CERT + CERT_ID OriginatorCertId; +@@ -9183,7 +9614,7 @@ + //-------------------------------------------------------------------------- + // certenrolls_begin -- CERT_CONTEXT + typedef struct _CERT_CONTEXT { +- DWORD dwCertEncodingType; ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType; + BYTE *pbCertEncoded; + DWORD cbCertEncoded; + PCERT_INFO pCertInfo; +@@ -9202,7 +9633,7 @@ + // copy (which also must be freed by calling CertFreeCRLContext). + //-------------------------------------------------------------------------- + typedef struct _CRL_CONTEXT { +- DWORD dwCertEncodingType; ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType; + BYTE *pbCrlEncoded; + DWORD cbCrlEncoded; + PCRL_INFO pCrlInfo; +@@ -9526,11 +9957,15 @@ + DWORD dwFlags; + } CRYPT_KEY_PROV_PARAM, *PCRYPT_KEY_PROV_PARAM; + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_KEY_FLAGS; ++#endif ++ + typedef struct _CRYPT_KEY_PROV_INFO { + LPWSTR pwszContainerName; + LPWSTR pwszProvName; + DWORD dwProvType; +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) DWORD dwFlags; + DWORD cProvParam; + PCRYPT_KEY_PROV_PARAM rgProvParam; + DWORD dwKeySpec; +@@ -9550,6 +9985,13 @@ + // Special dwKeySpec indicating a CNG NCRYPT_KEY_HANDLE instead of a CAPI1 + // HCRYPTPROV + #define CERT_NCRYPT_KEY_SPEC 0xFFFFFFFF ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_KEY_SPEC, unsigned long, ++ AT_KEYEXCHANGE, ++ AT_SIGNATURE, ++ CERT_NCRYPT_KEY_SPEC); ++#endif + + //+------------------------------------------------------------------------- + // Certificate Key Context +@@ -9672,6 +10114,22 @@ + #define CERT_STORE_CREATE_NEW_FLAG 0x00002000 + #define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x00001000 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_OPEN_STORE_FLAGS, unsigned long, ++ CERT_STORE_BACKUP_RESTORE_FLAG, ++ CERT_STORE_CREATE_NEW_FLAG, ++ CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG, ++ CERT_STORE_DELETE_FLAG, ++ CERT_STORE_ENUM_ARCHIVED_FLAG, ++ CERT_STORE_MAXIMUM_ALLOWED_FLAG, ++ CERT_STORE_NO_CRYPT_RELEASE_FLAG, ++ CERT_STORE_OPEN_EXISTING_FLAG, ++ CERT_STORE_READONLY_FLAG, ++ CERT_STORE_SET_LOCALIZED_NAME_FLAG, ++ CERT_STORE_SHARE_CONTEXT_FLAG, ++ CERT_STORE_UPDATE_KEYID_FLAG); ++#endif ++ + //+------------------------------------------------------------------------- + // Certificate Store Provider flags are in the HiWord (0xFFFF0000) + //-------------------------------------------------------------------------- +@@ -9707,6 +10165,12 @@ + + // Location of the system store: + #define CERT_SYSTEM_STORE_LOCATION_MASK 0x00FF0000 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_SYSTEM_STORE_FLAGS, unsigned long, ++ CERT_SYSTEM_STORE_LOCATION_MASK, ++ CERT_SYSTEM_STORE_RELOCATE_FLAG); ++#endif + #define CERT_SYSTEM_STORE_LOCATION_SHIFT 16 + + +@@ -10572,15 +11036,17 @@ + // attribute. + // + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Must_inspect_result_ + HCERTSTORE + WINAPI + CertOpenStore( + _In_ LPCSTR lpszStoreProvider, +- _In_ DWORD dwEncodingType, +- _In_opt_ HCRYPTPROV_LEGACY hCryptProv, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwEncodingType, ++ _Win32_Reserved_ _In_opt_ HCRYPTPROV_LEGACY hCryptProv, ++ _Win32_AssociatedEnum_(CERT_OPEN_STORE_FLAGS) _In_ DWORD dwFlags, + _In_opt_ const void *pvPara + ); + +@@ -10600,12 +11066,16 @@ + // zeroed with cbSize set before the provider is called. If the provider + // doesn't need to be called again after the open it doesn't need to + // make any updates to the CERT_STORE_PROV_INFO. ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_STORE_PROV_FLAGS; ++#endif ++ + typedef struct _CERT_STORE_PROV_INFO { + DWORD cbSize; + DWORD cStoreProvFunc; + void **rgpvStoreProvFunc; + HCERTSTOREPROV hStoreProv; +- DWORD dwStoreProvFlags; ++ _Win32_AssociatedEnum_(CERT_STORE_PROV_FLAGS) DWORD dwStoreProvFlags; + HCRYPTOIDFUNCADDR hStoreProvFuncAddr2; + } CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO; + +@@ -10618,9 +11088,9 @@ + // call the appropriate provider callback function. + typedef BOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)( + _In_ LPCSTR lpszStoreProvider, +- _In_ DWORD dwEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwEncodingType, + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CERT_OPEN_STORE_FLAGS) _In_ DWORD dwFlags, + _In_opt_ const void *pvPara, + _In_ HCERTSTORE hCertStore, + _Inout_ PCERT_STORE_PROV_INFO pStoreProvInfo +@@ -10645,6 +11115,15 @@ + // The open callback sets the following flag if the contexts are persisted + // to a LocalMachine system store. + #define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_STORE_PROV_FLAGS, unsigned long, ++ CERT_STORE_PROV_EXTERNAL_FLAG, ++ CERT_STORE_PROV_DELETED_FLAG, ++ CERT_STORE_PROV_NO_PERSIST_FLAG, ++ CERT_STORE_PROV_SYSTEM_STORE_FLAG, ++ CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG); ++#endif + + // The open callback sets the following flag if the contexts are persisted + // to a GroupPolicy system store. +@@ -10941,6 +11420,7 @@ + //+------------------------------------------------------------------------- + // Duplicate a cert store handle + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCERTSTORE + WINAPI +@@ -10950,6 +11430,12 @@ + + #define CERT_STORE_SAVE_AS_STORE 1 + #define CERT_STORE_SAVE_AS_PKCS7 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_STORE_SAVE_AS, unsigned long, ++ CERT_STORE_SAVE_AS_PKCS7, ++ CERT_STORE_SAVE_AS_STORE); ++#endif + #define CERT_STORE_SAVE_AS_PKCS12 3 + + #define CERT_STORE_SAVE_TO_FILE 1 +@@ -10957,6 +11443,15 @@ + #define CERT_STORE_SAVE_TO_FILENAME_A 3 + #define CERT_STORE_SAVE_TO_FILENAME_W 4 + #define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_STORE_SAVE_TO, unsigned long, ++ CERT_STORE_SAVE_TO_FILE, ++ CERT_STORE_SAVE_TO_FILENAME, ++ CERT_STORE_SAVE_TO_FILENAME_A, ++ CERT_STORE_SAVE_TO_FILENAME_W, ++ CERT_STORE_SAVE_TO_MEMORY); ++#endif + + //+------------------------------------------------------------------------- + // Save the cert store. Extended version with lots of options. +@@ -11010,14 +11505,16 @@ + // Note, the default (without "_A" or "_W") is UNICODE. + // + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertSaveStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwEncodingType, +- _In_ DWORD dwSaveAs, +- _In_ DWORD dwSaveTo, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_STORE_SAVE_AS) DWORD dwSaveAs, ++ _In_ _Win32_AssociatedEnum_(CERT_STORE_SAVE_TO) DWORD dwSaveTo, + _Inout_ void *pvSaveToPara, + _In_ DWORD dwFlags + ); +@@ -11052,6 +11549,8 @@ + // LastError is preserved unless CERT_CLOSE_STORE_CHECK_FLAG is set and FALSE + // is returned. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -11072,12 +11571,14 @@ + // The returned certificate might not be valid. Normally, it would be + // verified when getting its issuer certificate (CertGetIssuerCertificateFromStore). + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI + CertGetSubjectCertificateFromStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_INFO pCertId // Only the Issuer and SerialNumber + // fields are used + ); +@@ -11098,6 +11599,8 @@ + // NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI +@@ -11130,14 +11633,16 @@ + // NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI + CertFindCertificateInStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ DWORD dwFindFlags, +- _In_ DWORD dwFindType, ++ _In_ _Win32_AssociatedEnum_(CERT_FIND_FLAGS) DWORD dwFindType, + _In_opt_ const void *pvFindPara, + _In_opt_ PCCERT_CONTEXT pPrevCertContext + ); +@@ -11413,6 +11918,54 @@ + #define CERT_FIND_OR_CTL_USAGE_FLAG CERT_FIND_OR_ENHKEY_USAGE_FLAG + #define CERT_FIND_VALID_CTL_USAGE_FLAG CERT_FIND_VALID_ENHKEY_USAGE_FLAG + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_FIND_FLAGS, unsigned long, ++ CERT_FIND_ANY, ++ CERT_FIND_CERT_ID, ++ CERT_FIND_CTL_USAGE, ++ CERT_FIND_ENHKEY_USAGE, ++ CERT_FIND_EXISTING, ++ CERT_FIND_HASH, ++ CERT_FIND_HAS_PRIVATE_KEY, ++ CERT_FIND_ISSUER_ATTR, ++ CERT_FIND_ISSUER_NAME, ++ CERT_FIND_ISSUER_OF, ++ CERT_FIND_ISSUER_STR, ++ CERT_FIND_KEY_IDENTIFIER, ++ CERT_FIND_KEY_SPEC, ++ CERT_FIND_MD5_HASH, ++ CERT_FIND_PROPERTY, ++ CERT_FIND_PUBLIC_KEY, ++ CERT_FIND_SHA1_HASH, ++ CERT_FIND_SIGNATURE_HASH, ++ CERT_FIND_SUBJECT_ATTR, ++ CERT_FIND_SUBJECT_CERT, ++ CERT_FIND_SUBJECT_NAME, ++ CERT_FIND_SUBJECT_STR, ++ CERT_FIND_CROSS_CERT_DIST_POINTS, ++ CERT_FIND_PUBKEY_MD5_HASH, ++ CERT_FIND_SHA256_HASH, ++ CERT_FIND_SHA1_SHA256_HASH, ++ CERT_FIND_SUBJECT_STR_A, ++ CERT_FIND_SUBJECT_STR_W, ++ CERT_FIND_ISSUER_STR_A, ++ CERT_FIND_ISSUER_STR_W, ++ CERT_FIND_SUBJECT_INFO_ACCESS, ++ CERT_FIND_HASH_STR, ++ CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG, ++ CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG, ++ CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG, ++ CERT_FIND_NO_ENHKEY_USAGE_FLAG, ++ CERT_FIND_OR_ENHKEY_USAGE_FLAG, ++ CERT_FIND_VALID_ENHKEY_USAGE_FLAG, ++ CERT_FIND_OPTIONAL_CTL_USAGE_FLAG, ++ CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG, ++ CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG, ++ CERT_FIND_NO_CTL_USAGE_FLAG, ++ CERT_FIND_OR_CTL_USAGE_FLAG, ++ CERT_FIND_VALID_CTL_USAGE_FLAG); ++#endif ++ + //+------------------------------------------------------------------------- + // CERT_FIND_CERT_ID + // +@@ -11503,6 +12056,8 @@ + // For a verification check failure, a pointer to the issuer's CERT_CONTEXT + // is still returned and SetLastError isn't updated. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI +@@ -11523,6 +12078,8 @@ + // + // For a verification check failure, SUCCESS is still returned. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -11535,6 +12092,7 @@ + //+------------------------------------------------------------------------- + // Duplicate a certificate context + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI +@@ -11556,11 +12114,13 @@ + // CertSetCertificateContextProperty and CertGetCertificateContextProperty can be called + // to store properties for the certificate. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI +-CertCreateCertificateContext( +- _In_ DWORD dwCertEncodingType, ++_Win32_PreserveResult_ CertCreateCertificateContext( ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, + _In_ DWORD cbCertEncoded + ); +@@ -11571,6 +12131,7 @@ + // There needs to be a corresponding free for each context obtained by a + // get, find, duplicate or create. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -11719,6 +12280,8 @@ + // CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG can be set to ignore any + // provider write errors and always update the cached context's property. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -11796,13 +12359,15 @@ + // + // For all other PROP_IDs, pvData points to an encoded array of bytes. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertGetCertificateContextProperty( + _In_ PCCERT_CONTEXT pCertContext, + _In_ DWORD dwPropId, +- _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, ++ _Out_writes_bytes_to_opt_(*pcbData, *pcbData) _Win32_ContainsInteriorPointers_ void *pvData, + _Inout_ DWORD *pcbData + ); + +@@ -11820,6 +12385,7 @@ + // properties are stored as fields in the CERT_KEY_CONTEXT_PROP_ID + // property, they aren't enumerated individually. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -11850,6 +12416,8 @@ + // CTL_ENTRY_FROM_PROP_CHAIN_FLAG can be set in dwFlags, to force the + // inclusion of the chain building hash properties as attributes. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -11860,7 +12428,7 @@ + _In_reads_opt_(cOptAttr) PCRYPT_ATTRIBUTE rgOptAttr, + _In_ DWORD dwFlags, + _Reserved_ void *pvReserved, +- _Out_writes_bytes_to_opt_(*pcbCtlEntry, *pcbCtlEntry) PCTL_ENTRY pCtlEntry, ++ _Out_writes_bytes_to_opt_(*pcbCtlEntry, *pcbCtlEntry) _Win32_ContainsInteriorPointers_ PCTL_ENTRY pCtlEntry, + _Inout_ DWORD *pcbCtlEntry + ); + +@@ -11879,6 +12447,8 @@ + // + // CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG may be set in dwFlags. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -11946,6 +12516,8 @@ + // For a verification check failure, a pointer to the first or next + // CRL_CONTEXT is still returned and SetLastError isn't updated. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRL_CONTEXT + WINAPI +@@ -11972,6 +12544,8 @@ + // NOTE: a NON-NULL pPrevCrlContext is always CertFreeCRLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRL_CONTEXT + WINAPI +@@ -12003,12 +12577,14 @@ + // NOTE: a NON-NULL pPrevCrlContext is always CertFreeCRLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRL_CONTEXT + WINAPI + CertFindCRLInStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ DWORD dwFindFlags, + _In_ DWORD dwFindType, + _In_opt_ const void *pvFindPara, +@@ -12107,6 +12683,7 @@ + //+------------------------------------------------------------------------- + // Duplicate a CRL context + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRL_CONTEXT + WINAPI +@@ -12128,11 +12705,13 @@ + // CertSetCRLContextProperty and CertGetCRLContextProperty can be called + // to store properties for the CRL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCRL_CONTEXT + WINAPI + CertCreateCRLContext( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded, + _In_ DWORD cbCrlEncoded + ); +@@ -12143,6 +12722,7 @@ + // There needs to be a corresponding free for each context obtained by a + // get, duplicate or create. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12155,6 +12735,8 @@ + // + // Same Property Ids and semantics as CertSetCertificateContextProperty. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12173,6 +12755,8 @@ + // CERT_SHA1_HASH_PROP_ID, CERT_MD5_HASH_PROP_ID or + // CERT_SIGNATURE_HASH_PROP_ID is the predefined property of most interest. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12193,6 +12777,7 @@ + // + // CertGetCRLContextProperty is called to get the property's data. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -12214,6 +12799,7 @@ + // + // dwFlags and pvReserved currently aren't used and must be set to 0 or NULL. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12237,6 +12823,7 @@ + // + // dwFlags and pvReserved currently aren't used and must be set to 0 and NULL. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12305,13 +12892,15 @@ + // ppCertContext can be NULL, indicating the caller isn't interested + // in getting the CERT_CONTEXT of the added or existing certificate. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL + WINAPI + CertAddEncodedCertificateToStore( + _In_opt_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbCertEncoded) const BYTE *pbCertEncoded, + _In_ DWORD cbCertEncoded, + _In_ DWORD dwAddDisposition, +@@ -12375,6 +12964,8 @@ + // ppStoreContext can be NULL, indicating the caller isn't interested + // in getting the CERT_CONTEXT of the added or existing certificate. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12429,6 +13020,8 @@ + // returned it must be freed by calling CertFreeCertificateContext or + // CertFreeCRLContext. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12459,6 +13052,8 @@ + // NOTE: the pCertContext is always CertFreeCertificateContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12482,13 +13077,15 @@ + // ppCrlContext can be NULL, indicating the caller isn't interested + // in getting the CRL_CONTEXT of the added or existing CRL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL + WINAPI + CertAddEncodedCRLToStore( + _In_opt_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbCrlEncoded) const BYTE *pbCrlEncoded, + _In_ DWORD cbCrlEncoded, + _In_ DWORD dwAddDisposition, +@@ -12515,6 +13112,8 @@ + // ppStoreContext can be NULL, indicating the caller isn't interested + // in getting the CRL_CONTEXT of the added or existing CRL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12538,6 +13137,8 @@ + // NOTE: the pCrlContext is always CertFreeCRLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12549,6 +13150,8 @@ + // Serialize the certificate context's encoded certificate and its + // properties. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12563,6 +13166,8 @@ + //+------------------------------------------------------------------------- + // Serialize the CRL context's encoded CRL and its properties. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12582,6 +13187,7 @@ + //+------------------------------------------------------------------------- + // Duplicate a CTL context + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCTL_CONTEXT + WINAPI +@@ -12603,6 +13209,8 @@ + // CertSetCTLContextProperty and CertGetCTLContextProperty can be called + // to store properties for the CTL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCTL_CONTEXT + WINAPI +@@ -12618,6 +13226,7 @@ + // There needs to be a corresponding free for each context obtained by a + // get, duplicate or create. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12630,6 +13239,8 @@ + // + // Same Property Ids and semantics as CertSetCertificateContextProperty. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12648,6 +13259,8 @@ + // CERT_SHA1_HASH_PROP_ID or CERT_NEXT_UPDATE_LOCATION_PROP_ID are the + // predefined properties of most interest. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12661,6 +13274,7 @@ + //+------------------------------------------------------------------------- + // Enumerate the properties for the specified CTL context. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -12685,6 +13299,8 @@ + // NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCTL_CONTEXT + WINAPI +@@ -12711,6 +13327,8 @@ + // + // dwEncodingType isn't used for either of the above SubjectTypes. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCTL_ENTRY + WINAPI +@@ -12756,6 +13374,12 @@ + // NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_FIND_TYPE; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCTL_CONTEXT + WINAPI +@@ -12763,7 +13387,7 @@ + _In_ HCERTSTORE hCertStore, + _In_ DWORD dwMsgAndCertEncodingType, + _In_ DWORD dwFindFlags, +- _In_ DWORD dwFindType, ++ _In_ _Win32_AssociatedEnum_(CERT_FIND_TYPE) DWORD dwFindType, + _In_opt_ const void *pvFindPara, + _In_opt_ PCCTL_CONTEXT pPrevCtlContext + ); +@@ -12786,6 +13410,17 @@ + #define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO) -1) + + #define CTL_FIND_SAME_USAGE_FLAG 0x1 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_FIND_TYPE, unsigned long, ++ CTL_FIND_ANY, ++ CTL_FIND_SHA1_HASH, ++ CTL_FIND_MD5_HASH, ++ CTL_FIND_USAGE, ++ CTL_FIND_SAME_USAGE_FLAG, ++ CTL_FIND_EXISTING, ++ CTL_FIND_SUBJECT); ++#endif + + + typedef struct _CTL_FIND_SUBJECT_PARA { +@@ -12861,13 +13496,15 @@ + // ppCtlContext can be NULL, indicating the caller isn't interested + // in getting the CTL_CONTEXT of the added or existing CTL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL + WINAPI + CertAddEncodedCTLToStore( + _In_opt_ HCERTSTORE hCertStore, +- _In_ DWORD dwMsgAndCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwMsgAndCertEncodingType, + _In_reads_bytes_(cbCtlEncoded) const BYTE *pbCtlEncoded, + _In_ DWORD cbCtlEncoded, + _In_ DWORD dwAddDisposition, +@@ -12894,6 +13531,8 @@ + // ppStoreContext can be NULL, indicating the caller isn't interested + // in getting the CTL_CONTEXT of the added or existing CTL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12908,6 +13547,8 @@ + //+------------------------------------------------------------------------- + // Serialize the CTL context's encoded CTL and its properties. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12930,6 +13571,8 @@ + // NOTE: the pCtlContext is always CertFreeCTLContext'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12938,6 +13581,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12949,6 +13594,8 @@ + _Outptr_opt_ PCCERT_CONTEXT *ppStoreContext + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12960,6 +13607,8 @@ + _Outptr_opt_ PCCRL_CONTEXT *ppStoreContext + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -12971,6 +13620,7 @@ + _Outptr_opt_ PCCTL_CONTEXT *ppStoreContext + ); + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -12981,6 +13631,7 @@ + _In_ DWORD dwPriority + ); + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + void + WINAPI +@@ -12990,12 +13641,18 @@ + ); + + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_CONTROL_STORE_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertControlStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_CONTROL_STORE_FLAGS) DWORD dwFlags, + _In_ DWORD dwCtrlType, + _In_opt_ void const *pvCtrlPara + ); +@@ -13091,6 +13748,13 @@ + #define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1 + #define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_CONTROL_STORE_FLAGS, unsigned long, ++ CERT_STORE_CTRL_COMMIT_FORCE_FLAG, ++ CERT_STORE_CTRL_COMMIT_CLEAR_FLAG, ++ CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG); ++#endif ++ + + //+========================================================================= + // Cert Store Property Defines and APIs +@@ -13126,6 +13790,7 @@ + // If the property already exists, then, the old value is deleted and silently + // replaced. Setting, pvData to NULL, deletes the property. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13149,6 +13814,8 @@ + // If the property doesn't exist, returns FALSE and sets LastError to + // CRYPT_E_NOT_FOUND. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -13222,6 +13889,8 @@ + // free context API. The context can be duplicated by calling the + // appropriate duplicate context API. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + const void * + WINAPI +@@ -13380,6 +14049,7 @@ + // Set CERT_STORE_CREATE_NEW_FLAG to cause a failure if the system store + // already exists in the store location. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13406,6 +14076,7 @@ + // Set CERT_STORE_CREATE_NEW_FLAG to cause a failure if the physical store + // already exists in the system store. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13432,6 +14103,7 @@ + // + // CERT_STORE_DELETE_FLAG can optionally be set in dwFlags. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13455,6 +14127,7 @@ + // + // CERT_STORE_DELETE_FLAG can optionally be set in dwFlags. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13496,7 +14169,7 @@ + + typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE)( + _In_ const void *pvSystemStore, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CERT_SYSTEM_STORE_FLAGS) _In_ DWORD dwFlags, + _In_ PCERT_SYSTEM_STORE_INFO pStoreInfo, + _Reserved_ void *pvReserved, + _Inout_opt_ void *pvArg +@@ -13530,6 +14203,7 @@ + //+------------------------------------------------------------------------- + // Enumerate the system store locations. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13570,6 +14244,7 @@ + // the leading "\\" backslashes or a trailing backslash. Otherwise, its + // interpretted as the ServiceName or UserName. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13596,6 +14271,8 @@ + // If the system store location only supports system stores and doesn't + // support physical stores, LastError is set to ERROR_CALL_NOT_IMPLEMENTED. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13658,13 +14335,15 @@ + // If the CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG is set, then, only get the + // property. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertGetEnhancedKeyUsage( + _In_ PCCERT_CONTEXT pCertContext, + _In_ DWORD dwFlags, +- _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) PCERT_ENHKEY_USAGE pUsage, ++ _Out_writes_bytes_to_opt_(*pcbUsage, *pcbUsage) _Win32_ContainsInteriorPointers_ PCERT_ENHKEY_USAGE pUsage, + _Inout_ DWORD *pcbUsage + ); + +@@ -13677,6 +14356,8 @@ + //+------------------------------------------------------------------------- + // Set the enhanced key usage property for the certificate. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13688,6 +14369,8 @@ + //+------------------------------------------------------------------------- + // Add the usage identifier to the certificate's enhanced key usage property. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13701,6 +14384,8 @@ + // Remove the usage identifier from the certificate's enhanced key usage + // property. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13723,6 +14408,8 @@ + // If each cert is good for all possible usages then the cNumOIDs is set to -1. + // + //---------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -13763,6 +14450,8 @@ + // interested in getting the CertContext and/or index of the signer. + //-------------------------------------------------------------------------- + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return == TRUE) + BOOL +@@ -13795,6 +14484,8 @@ + // CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible + // V3 SignedData message. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13824,6 +14515,8 @@ + // CMSG_CMS_ENCAPSULATED_CTL_FLAG can be set to encode a CMS compatible + // V3 SignedData message. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13851,6 +14544,7 @@ + // Returns TRUE if the SubjectIdentifier exists in the CTL. Optionally + // returns a pointer to and byte count of the Subject's encoded attributes. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13875,6 +14569,7 @@ + // Note, the returned DER_BLOBs point directly into the encoded + // bytes (not allocated, and must not be freed). + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -13977,6 +14672,8 @@ + // CRYPT_E_NOT_IN_CTL + // CRYPT_E_NO_TRUSTED_SIGNER + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14111,7 +14808,7 @@ + DWORD cbSize; + DWORD dwIndex; + DWORD dwError; +- DWORD dwReason; ++ _Win32_AssociatedEnum_(CERT_REVOCATION_STATUS_REASON) DWORD dwReason; + + // Depending on cbSize, the following fields may optionally be returned. + +@@ -14208,6 +14905,8 @@ + // advancing the start of the context array to the returned dwIndex and + // decrementing the count of remaining contexts. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14296,6 +14995,8 @@ + // Returns TRUE if the integer blobs are identical after removing leading + // 0 or 0xFF bytes. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + BOOL + WINAPI + CertCompareIntegerBlob( +@@ -14311,11 +15012,12 @@ + // + // Returns TRUE if the certificates are identical. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertCompareCertificate( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_INFO pCertId1, + _In_ PCERT_INFO pCertId2 + ); +@@ -14325,11 +15027,12 @@ + // + // Returns TRUE if the names are identical. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertCompareCertificateName( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_NAME_BLOB pCertName1, + _In_ PCERT_NAME_BLOB pCertName2 + ); +@@ -14358,11 +15061,13 @@ + // CERT_UNICODE_IS_RDN_ATTRS_FLAG should be set if the pRDN was initialized + // with unicode strings as for CryptEncodeObject(X509_UNICODE_NAME). + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertIsRDNAttrsInCertificateName( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ DWORD dwFlags, + _In_ PCERT_NAME_BLOB pCertName, + _In_ PCERT_RDN pRDN +@@ -14376,11 +15081,12 @@ + // + // Returns TRUE if the keys are identical. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertComparePublicKeyInfo( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pPublicKey1, + _In_ PCERT_PUBLIC_KEY_INFO pPublicKey2 + ); +@@ -14396,11 +15102,13 @@ + // + // Returns 0 if unable to determine the key's length. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI + CertGetPublicKeyLength( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pPublicKey + ); + +@@ -14419,13 +15127,15 @@ + // hCryptProv specifies the crypto provider to use to verify the signature. + // It doesn't need to use a private key. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Must_inspect_result_ + BOOL + WINAPI + CryptVerifyCertificateSignature( + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, + _In_ DWORD cbEncoded, + _In_ PCERT_PUBLIC_KEY_INFO pPublicKey +@@ -14456,18 +15166,20 @@ + // to verify this no signature case. If any other dwIssuerType is + // specified, the verify will fail with LastError set to E_INVALIDARG. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Must_inspect_result_ + BOOL + WINAPI + CryptVerifyCertificateSignatureEx( + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ DWORD dwSubjectType, + _In_ void *pvSubject, + _In_ DWORD dwIssuerType, + _In_opt_ void *pvIssuer, +- _In_ DWORD dwFlags, ++ _Win32_AssociatedEnum_(CRYPT_VERIFY_CERT_FLAGS) _In_ DWORD dwFlags, + _Inout_opt_ void *pvExtra + ); + +@@ -14536,6 +15248,13 @@ + // + #define CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 0x00000004 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_VERIFY_CERT_FLAGS, unsigned long, ++ CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG, ++ CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG, ++ CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG); ++#endif ++ + typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO { + // CERT_SIGN_HASH_CNG_ALG_PROP_ID + CRYPT_DATA_BLOB CertSignHashCNGAlgPropData; +@@ -14578,6 +15297,8 @@ + // The SigningCert can be NULL to only check if the CNG hash algorithm is + // strong. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows8_ + WINCRYPT32API + BOOL + WINAPI +@@ -14594,12 +15315,14 @@ + // hCryptProv specifies the crypto provider to use to compute the hash. + // It doesn't need to use a private key. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptHashToBeSigned( + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbEncoded) const BYTE *pbEncoded, + _In_ DWORD cbEncoded, + _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, +@@ -14615,6 +15338,8 @@ + // Algid specifies the CAPI hash algorithm to use. If Algid is 0, then, the + // default hash algorithm (currently SHA1) is used. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14639,6 +15364,8 @@ + //+------------------------------------------------------------------------- + // Hash the encoded content using the CNG hash algorithm provider. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -14672,6 +15399,8 @@ + // dwKeySpec isn't used and hCryptProvOrNCryptKey can be NULL where an + // appropriate default provider will be used for hashing. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14682,7 +15411,7 @@ + _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, + #endif + _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_reads_bytes_(cbEncodedToBeSigned) const BYTE *pbEncodedToBeSigned, + _In_ DWORD cbEncodedToBeSigned, + _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, +@@ -14703,6 +15432,8 @@ + // dwKeySpec isn't used and hCryptProv can be NULL where an appropriate + // default provider will be used for hashing. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14712,8 +15443,8 @@ + #else + _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, + #endif +- _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE +- _In_ DWORD dwCertEncodingType, ++ _In_opt_ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR lpszStructType, // "to be signed" + _In_ const void *pvStructInfo, + _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, +@@ -14748,7 +15479,7 @@ + #define CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC \ + "CryptDllExtractEncodedSignatureParameters" + typedef BOOL (WINAPI *PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC)( +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + _Outptr_result_maybenull_ void **ppvDecodedSignPara, // LocalFree() + _Outptr_ LPWSTR *ppwszCNGHashAlgid // LocalFree() +@@ -14759,7 +15490,7 @@ + "CryptDllSignAndEncodeHash" + typedef BOOL (WINAPI *PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC)( + _In_ NCRYPT_KEY_HANDLE hKey, +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + _In_opt_ void *pvDecodedSignPara, + _In_ LPCWSTR pwszCNGPubKeyAlgid, // obtained from signature OID +@@ -14775,7 +15506,7 @@ + #define CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC \ + "CryptDllVerifyEncodedSignature" + typedef BOOL (WINAPI *PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC)( +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pPubKeyInfo, + _In_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + _In_opt_ void *pvDecodedSignPara, +@@ -14796,6 +15527,7 @@ + // + // If pTimeToVerify is NULL, uses the current time. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LONG + WINAPI +@@ -14818,6 +15550,7 @@ + // + // If pTimeToVerify is NULL, uses the current time. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LONG + WINAPI +@@ -14832,6 +15565,7 @@ + // + // Returns TRUE if it nests. Otherwise, returns FALSE. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -14845,11 +15579,12 @@ + // + // Returns true if the certificate isn't on the CRL. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertVerifyCRLRevocation( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_INFO pCertId, // Only the Issuer and SerialNumber + // fields are used + _In_ DWORD cCrlInfo, +@@ -14861,6 +15596,7 @@ + // + // Returns NULL if there isn't an ObjId corresponding to the AlgId. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LPCSTR + WINAPI +@@ -14873,6 +15609,7 @@ + // + // Returns 0 if there isn't an AlgId corresponding to the ObjId. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -14891,6 +15628,7 @@ + #pragma region Application Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCERT_EXTENSION + WINAPI +@@ -14905,6 +15643,7 @@ + // + // If found, returns pointer to the attribute. Otherwise, returns NULL. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCRYPT_ATTRIBUTE + WINAPI +@@ -14920,6 +15659,7 @@ + // + // If found, returns pointer to the attribute. Otherwise, returns NULL. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCERT_RDN_ATTR + WINAPI +@@ -14936,11 +15676,13 @@ + // cbKeyUsage bytes are copied into *pbKeyUsage. Any remaining uncopied + // bytes are zeroed. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertGetIntendedKeyUsage( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_INFO pCertInfo, + _Out_writes_bytes_all_(cbKeyUsage) BYTE *pbKeyUsage, + _In_ DWORD cbKeyUsage +@@ -14981,14 +15723,24 @@ + // not CryptReleaseContext'ed if CryptUninstallDefaultContext is + // called. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_DEFAULT_CONTEXT_FLAGS; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_DEFAULT_CONTEXT_TYPE; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptInstallDefaultContext( + _In_ HCRYPTPROV hCryptProv, +- _In_ DWORD dwDefaultType, ++ _In_ _Win32_AssociatedEnum_(CRYPT_DEFAULT_CONTEXT_TYPE) DWORD dwDefaultType, + _In_opt_ const void *pvDefaultPara, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_DEFAULT_CONTEXT_FLAGS) DWORD dwFlags, + _Reserved_ void *pvReserved, + _Out_ HCRYPTDEFAULTCONTEXT *phDefaultContext + ); +@@ -14997,9 +15749,21 @@ + #define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x00000001 + #define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x00000002 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_DEFAULT_CONTEXT_FLAGS, unsigned long, ++ CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG, ++ CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG); ++#endif ++ + // List of dwDefaultType's + #define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 1 + #define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 2 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_DEFAULT_CONTEXT_TYPE, unsigned long, ++ CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID, ++ CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID); ++#endif + + //+------------------------------------------------------------------------- + // CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID +@@ -15034,6 +15798,8 @@ + // set, if any other threads are currently using this context, + // this function will block until they finish. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -15050,14 +15816,16 @@ + // Calls CryptExportPublicKeyInfoEx with pszPublicKeyObjId = NULL, + // dwFlags = 0 and pvAuxInfo = NULL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptExportPublicKeyInfo( + _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, + _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE +- _In_ DWORD dwCertEncodingType, +- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, ++ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, + _Inout_ DWORD *pcbInfo + ); + +@@ -15090,17 +15858,19 @@ + // CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG + //-------------------------------------------------------------------------- + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptExportPublicKeyInfoEx( + _In_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, + _In_opt_ DWORD dwKeySpec, // not applicable for NCRYPT_KEY_HANDLE +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_opt_ LPSTR pszPublicKeyObjId, + _In_ DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, ++ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, + _Inout_ DWORD *pcbInfo + ); + +@@ -15115,7 +15885,7 @@ + "CryptDllExportPublicKeyInfoEx2" + typedef BOOL (WINAPI *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC) ( + _In_ NCRYPT_KEY_HANDLE hNCryptKey, +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ LPSTR pszPublicKeyObjId, + _In_ DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +@@ -15145,16 +15915,17 @@ + // CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG + //-------------------------------------------------------------------------- + ++_Win32_SupportedOS_Windows7_ + WINCRYPT32API + BOOL + WINAPI + CryptExportPublicKeyInfoFromBCryptKeyHandle( + _In_ BCRYPT_KEY_HANDLE hBCryptKey, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_opt_ LPSTR pszPublicKeyObjId, + _In_ DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +- _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) PCERT_PUBLIC_KEY_INFO pInfo, ++ _Out_writes_bytes_to_opt_(*pcbInfo, *pcbInfo) _Win32_ContainsInteriorPointers_ PCERT_PUBLIC_KEY_INFO pInfo, + _Inout_ DWORD *pcbInfo + ); + +@@ -15167,7 +15938,7 @@ + "CryptDllExportPublicKeyInfoFromBCryptKeyHandle" + typedef BOOL (WINAPI *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC) ( + _In_ BCRYPT_KEY_HANDLE hBCryptKey, +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ LPSTR pszPublicKeyObjId, + _In_ DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +@@ -15184,12 +15955,14 @@ + // Calls CryptImportPublicKeyInfoEx with aiKeyAlg = 0, dwFlags = 0 and + // pvAuxInfo = NULL. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptImportPublicKeyInfo( + _In_ HCRYPTPROV hCryptProv, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pInfo, + _Out_ HCRYPTKEY *phKey + ); +@@ -15210,12 +15983,14 @@ + //-------------------------------------------------------------------------- + #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx" + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptImportPublicKeyInfoEx( + _In_ HCRYPTPROV hCryptProv, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pInfo, + _In_ ALG_ID aiKeyAlg, + _In_ DWORD dwFlags, +@@ -15246,15 +16021,17 @@ + // dwFlags can also have BCRYPT_NO_KEY_VALIDATION OR'd in. This flag is + // passed to BCryptImportKeyPair. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + BOOL + WINAPI + CryptImportPublicKeyInfoEx2( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pInfo, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_IMPORT_PUBLIC_KEY_FLAGS) DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +- _Out_ BCRYPT_KEY_HANDLE *phKey ++ _Win32_RAIIFree_(BCryptDestroyKey, 0) _Out_ BCRYPT_KEY_HANDLE *phKey + ); + + //+------------------------------------------------------------------------- +@@ -15263,7 +16040,7 @@ + #define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC \ + "CryptDllImportPublicKeyInfoEx2" + typedef BOOL (WINAPI *PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC) ( +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pInfo, + _In_ DWORD dwFlags, + _In_opt_ void *pvAuxInfo, +@@ -15362,15 +16139,21 @@ + #pragma region Application Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_ACQUIRE_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptAcquireCertificatePrivateKey( + _In_ PCCERT_CONTEXT pCert, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_ACQUIRE_FLAGS) DWORD dwFlags, + _In_opt_ void *pvParameters, + _Out_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, +- _Out_opt_ DWORD *pdwKeySpec, ++ _Out_opt_ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD *pdwKeySpec, + _Out_opt_ BOOL *pfCallerFreeProvOrNCryptKey + ); + +@@ -15387,6 +16170,20 @@ + #define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x00020000 + #define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x00040000 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_ACQUIRE_FLAGS, unsigned long, ++ CRYPT_ACQUIRE_CACHE_FLAG, ++ CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, ++ CRYPT_ACQUIRE_COMPARE_KEY_FLAG, ++ CRYPT_ACQUIRE_NO_HEALING, ++ CRYPT_ACQUIRE_SILENT_FLAG, ++ CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG, ++ CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK, ++ CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG, ++ CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG, ++ CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG); ++#endif ++ + + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ + #pragma endregion +@@ -15416,18 +16213,31 @@ + // The above CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS can also be set. The default + // is CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_FIND_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptFindCertificateKeyProvInfo( + _In_ PCCERT_CONTEXT pCert, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_FIND_FLAGS) DWORD dwFlags, + _Reserved_ void *pvReserved + ); + + #define CRYPT_FIND_USER_KEYSET_FLAG 0x00000001 + #define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x00000002 + #define CRYPT_FIND_SILENT_KEYSET_FLAG 0x00000040 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_FIND_FLAGS, unsigned long, ++ CRYPT_FIND_USER_KEYSET_FLAG, ++ CRYPT_FIND_MACHINE_KEYSET_FLAG, ++ CRYPT_FIND_SILENT_KEYSET_FLAG); ++#endif + + + //+------------------------------------------------------------------------- +@@ -15471,12 +16281,14 @@ + // pvAuxInfo - This parameter is reserved for future use and should be set + // to NULL in the interim. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptImportPKCS8( + _In_ CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams, // in +- _In_ DWORD dwFlags, // in ++ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) _In_ DWORD dwFlags, // in + _Out_opt_ HCRYPTPROV *phCryptProv, // out, optional + _In_opt_ void* pvAuxInfo // in, optional + ); +@@ -15502,6 +16314,8 @@ + // + // Export the private key in PKCS8 format + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -15543,6 +16357,8 @@ + // pcbPrivateKeyBlob - A pointer to a DWORD that contains the size, in bytes, + // of the private key blob being exported. + //+------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -15565,6 +16381,8 @@ + // + // The public key info is encoded and then hashed. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -15572,7 +16390,7 @@ + _In_opt_ HCRYPTPROV_LEGACY hCryptProv, + _In_ ALG_ID Algid, + _In_ DWORD dwFlags, +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_PUBLIC_KEY_INFO pInfo, + _Out_writes_bytes_to_opt_(*pcbComputedHash, *pcbComputedHash) BYTE *pbComputedHash, + _Inout_ DWORD *pcbComputedHash +@@ -15589,6 +16407,7 @@ + // + // Note: csz includes the NULL char. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -15609,6 +16428,7 @@ + // + // Note: csz includes the NULL char. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -15721,23 +16541,29 @@ + //+------------------------------------------------------------------------- + //-------------------------------------------------------------------------- + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_STRING_TYPE; ++#endif ++ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI + CertNameToStrA( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_NAME_BLOB pName, +- _In_ DWORD dwStrType, ++ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, + _Out_writes_to_opt_(csz, return) LPSTR psz, + _In_ DWORD csz + ); ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI + CertNameToStrW( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ PCERT_NAME_BLOB pName, +- _In_ DWORD dwStrType, ++ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, + _Out_writes_to_opt_(csz, return) LPWSTR psz, + _In_ DWORD csz + ); +@@ -15754,6 +16580,13 @@ + #define CERT_SIMPLE_NAME_STR 1 + #define CERT_OID_NAME_STR 2 + #define CERT_X500_NAME_STR 3 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_STRING_TYPE, unsigned long, ++ CERT_SIMPLE_NAME_STR, ++ CERT_OID_NAME_STR, ++ CERT_X500_NAME_STR); ++#endif + #define CERT_XML_NAME_STR 4 + + //+------------------------------------------------------------------------- +@@ -15887,13 +16720,15 @@ + + //+------------------------------------------------------------------------- + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertStrToNameA( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCSTR pszX500, +- _In_ DWORD dwStrType, ++ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, + _Reserved_ void *pvReserved, + _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, + _Inout_ DWORD *pcbEncoded, +@@ -15901,13 +16736,15 @@ + ); + //+------------------------------------------------------------------------- + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CertStrToNameW( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_ LPCWSTR pszX500, +- _In_ DWORD dwStrType, ++ _In_ _Win32_AssociatedEnum_(CERT_STRING_TYPE) DWORD dwStrType, + _Reserved_ void *pvReserved, + _Out_writes_bytes_to_opt_(*pcbEncoded, *pcbEncoded) BYTE *pbEncoded, + _Inout_ DWORD *pcbEncoded, +@@ -16012,6 +16849,7 @@ + + //+------------------------------------------------------------------------- + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -16025,6 +16863,7 @@ + ); + //+------------------------------------------------------------------------- + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + DWORD + WINAPI +@@ -16122,7 +16961,7 @@ + //-------------------------------------------------------------------------- + typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)( + _Inout_opt_ void *pvGetArg, +- _In_ DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) _In_ DWORD dwCertEncodingType, + _In_ PCERT_INFO pSignerId, // Only the Issuer and SerialNumber + // fields have been updated + _In_ HCERTSTORE hMsgCertStore +@@ -16374,7 +17213,7 @@ + //-------------------------------------------------------------------------- + typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA { + DWORD cbSize; +- DWORD dwMsgAndCertEncodingType; ++ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwMsgAndCertEncodingType; + + // NCryptIsKeyHandle() is called to determine the union choice. + union { +@@ -16383,7 +17222,7 @@ + } DUMMYUNIONNAME; + + // not applicable for hNCryptKey choice +- DWORD dwKeySpec; ++ _Win32_AssociatedEnum_(CERT_KEY_SPEC) DWORD dwKeySpec; + + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + void *pvHashAuxInfo; +@@ -16420,6 +17259,8 @@ + // If fDetachedSignature is TRUE, the "to be signed" content isn't included + // in the encoded signed blob. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16469,6 +17310,8 @@ + // Note, an alternative way to get the certificates and CRLs from a + // signed message is to call CryptGetMessageCertificates. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16486,6 +17329,8 @@ + // Returns the count of signers in the signed message. For no signers, returns + // 0. For an error returns -1 with LastError updated accordingly. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LONG + WINAPI +@@ -16499,6 +17344,8 @@ + // Returns the cert store containing the message's certs and CRLs. + // For an error, returns NULL with LastError updated. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCERTSTORE + WINAPI +@@ -16515,6 +17362,8 @@ + // The "to be signed" content is passed in separately. No + // decoded output. Otherwise, identical to CryptVerifyMessageSignature. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16532,6 +17381,8 @@ + //+------------------------------------------------------------------------- + // Encrypts the message for the recipient(s). + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16559,6 +17410,8 @@ + // ppXchgCert can be NULL, indicating the caller isn't interested + // in getting the CertContext used to decrypt. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16578,6 +17431,8 @@ + // Note: this isn't the CMSG_SIGNED_AND_ENVELOPED. Its a CMSG_SIGNED + // inside of an CMSG_ENVELOPED. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16619,6 +17474,8 @@ + // The message always needs to be decrypted to allow access to the + // signed message. Therefore, if ppXchgCert != NULL, its always updated. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16666,6 +17523,8 @@ + // CryptVerifyMessageSignature. + // For CMSG_HASHED: verifies the hash and returns decoded content. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16695,6 +17554,8 @@ + // pcbHashedBlob or pcbComputedHash can be NULL, indicating the caller + // isn't interested in getting the output. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16716,6 +17577,8 @@ + // pcbToBeHashed or pcbComputedHash can be NULL, + // indicating the caller isn't interested in getting the output. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16737,6 +17600,8 @@ + // pcbComputedHash can be NULL, indicating the caller isn't interested + // in getting the output. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16757,6 +17622,8 @@ + // + // Normally used until a certificate has been created for the key. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16781,6 +17648,8 @@ + // pcbDecoded can be NULL, indicating the caller isn't interested + // in getting the decoded content. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16825,6 +17694,8 @@ + //-------------------------------------------------------------------------- + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCERTSTORE + WINAPI +@@ -16832,6 +17703,8 @@ + _In_opt_ HCRYPTPROV_LEGACY hProv, + _In_ LPCSTR szSubsystemProtocol + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCERTSTORE + WINAPI +@@ -16851,6 +17724,8 @@ + #pragma region Desktop Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -16859,6 +17734,8 @@ + _In_reads_bytes_(cbCertEncoded) const BYTE * pbCertEncoded, + _In_ DWORD cbCertEncoded + ); ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -17048,18 +17925,40 @@ + // If the *pbObject is of type CERT_QUERY_CONTENT_PKCS10 or CERT_QUERY_CONTENT_PFX, CryptQueryObject + // will not return anything in *phCertstore, *phMsg, or *ppvContext. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_QUERY_CONTENT_TYPE; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_QUERY_FORMAT_TYPE; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_QUERY_CONTENT_TYPE_FLAGS; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_QUERY_OBJECT_TYPE; ++#endif ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_QUERY_FORMAT_TYPE_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptQueryObject( +- _In_ DWORD dwObjectType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_OBJECT_TYPE) DWORD dwObjectType, + _In_ const void *pvObject, +- _In_ DWORD dwExpectedContentTypeFlags, +- _In_ DWORD dwExpectedFormatTypeFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_CONTENT_TYPE_FLAGS) DWORD dwExpectedContentTypeFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_FORMAT_TYPE_FLAGS) DWORD dwExpectedFormatTypeFlags, + _In_ DWORD dwFlags, +- _Out_opt_ DWORD *pdwMsgAndCertEncodingType, +- _Out_opt_ DWORD *pdwContentType, +- _Out_opt_ DWORD *pdwFormatType, ++ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD *pdwMsgAndCertEncodingType, ++ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_CONTENT_TYPE) DWORD *pdwContentType, ++ _Out_opt_ _Win32_AssociatedEnum_(CERT_QUERY_FORMAT_TYPE) DWORD *pdwFormatType, + _Out_opt_ HCERTSTORE *phCertStore, + _Out_opt_ HCRYPTMSG *phMsg, + _Outptr_opt_result_maybenull_ const void **ppvContext +@@ -17071,6 +17970,12 @@ + //------------------------------------------------------------------------- + #define CERT_QUERY_OBJECT_FILE 0x00000001 + #define CERT_QUERY_OBJECT_BLOB 0x00000002 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_QUERY_OBJECT_TYPE, unsigned long, ++ CERT_QUERY_OBJECT_FILE, ++ CERT_QUERY_OBJECT_BLOB); ++#endif + + //------------------------------------------------------------------------- + //dwContentType for CryptQueryObject +@@ -17104,6 +18009,24 @@ + //an encoded PFX BLOB, which was loaded to phCertStore + #define CERT_QUERY_CONTENT_PFX_AND_LOAD 14 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_QUERY_CONTENT_TYPE, unsigned long, ++ CERT_QUERY_CONTENT_CERT, ++ CERT_QUERY_CONTENT_CTL, ++ CERT_QUERY_CONTENT_CRL, ++ CERT_QUERY_CONTENT_SERIALIZED_STORE, ++ CERT_QUERY_CONTENT_SERIALIZED_CERT, ++ CERT_QUERY_CONTENT_SERIALIZED_CTL, ++ CERT_QUERY_CONTENT_SERIALIZED_CRL, ++ CERT_QUERY_CONTENT_PKCS7_SIGNED, ++ CERT_QUERY_CONTENT_PKCS7_UNSIGNED, ++ CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED, ++ CERT_QUERY_CONTENT_PKCS10, ++ CERT_QUERY_CONTENT_PFX, ++ CERT_QUERY_CONTENT_CERT_PAIR, ++ CERT_QUERY_CONTENT_PFX_AND_LOAD); ++#endif ++ + + //------------------------------------------------------------------------- + //dwExpectedConentTypeFlags for CryptQueryObject +@@ -17190,6 +18113,26 @@ + CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | \ + CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED ) + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_QUERY_CONTENT_TYPE_FLAGS, unsigned long, ++ CERT_QUERY_CONTENT_FLAG_CERT, ++ CERT_QUERY_CONTENT_FLAG_CTL, ++ CERT_QUERY_CONTENT_FLAG_CRL, ++ CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE, ++ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT, ++ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL, ++ CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL, ++ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED, ++ CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED, ++ CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, ++ CERT_QUERY_CONTENT_FLAG_PKCS10, ++ CERT_QUERY_CONTENT_FLAG_PFX, ++ CERT_QUERY_CONTENT_FLAG_CERT_PAIR, ++ CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD, ++ CERT_QUERY_CONTENT_FLAG_ALL, ++ CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT); ++#endif ++ + + //------------------------------------------------------------------------- + //dwFormatType for CryptQueryObject +@@ -17202,6 +18145,13 @@ + + //the content is ascii hex encoded with "{ASN}" prefix + #define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_QUERY_FORMAT_TYPE, unsigned long, ++ CERT_QUERY_FORMAT_BINARY, ++ CERT_QUERY_FORMAT_BASE64_ENCODED, ++ CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED); ++#endif + //------------------------------------------------------------------------- + //dwExpectedFormatTypeFlags for CryptQueryObject + //------------------------------------------------------------------------- +@@ -17223,6 +18173,14 @@ + CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | \ + CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED ) + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_QUERY_FORMAT_TYPE_FLAGS, unsigned long, ++ CERT_QUERY_FORMAT_FLAG_BINARY, ++ CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED, ++ CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED, ++ CERT_QUERY_FORMAT_FLAG_ALL); ++#endif ++ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ + #pragma endregion + +@@ -17235,6 +18193,7 @@ + // those buffers using CryptMemFree. Also included is CryptMemSize + // + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LPVOID + WINAPI +@@ -17242,6 +18201,7 @@ + _In_ ULONG cbSize + ); + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + LPVOID + WINAPI +@@ -17250,6 +18210,7 @@ + _In_ ULONG cbSize + ); + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + VOID + WINAPI +@@ -17279,7 +18240,7 @@ + WINAPI + CryptCreateAsyncHandle ( + _In_ DWORD dwFlags, +- _Out_ PHCRYPTASYNC phAsync ++ _Win32_RAIIFree_(CryptCloseAsyncHandle, -1, 0) _Out_ PHCRYPTASYNC phAsync + ); + + WINCRYPT32API +@@ -17732,6 +18693,7 @@ + #pragma region Desktop Family or OneCore or Games Family + #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP|WINAPI_PARTITION_PHONE_RESTRICTED | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return == TRUE) + BOOL +@@ -17747,6 +18709,7 @@ + _In_opt_ LPVOID pvVerify, + _Inout_opt_ PCRYPT_RETRIEVE_AUX_INFO pAuxInfo + ); ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return == TRUE) + BOOL +@@ -17873,6 +18836,14 @@ + #define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x00000004 + #define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x00000008 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_GET_URL_FLAGS, unsigned long, ++ CRYPT_GET_URL_FROM_PROPERTY, ++ CRYPT_GET_URL_FROM_EXTENSION, ++ CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE, ++ CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE); ++#endif ++ + typedef struct _CRYPT_URL_ARRAY { + DWORD cUrl; + LPWSTR* rgwszUrl; +@@ -17891,14 +18862,16 @@ + DWORD *rgcGroupEntry; + } CRYPT_URL_INFO, *PCRYPT_URL_INFO; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptGetObjectUrl ( + _In_ LPCSTR pszUrlOid, + _In_ LPVOID pvPara, +- _In_ DWORD dwFlags, +- _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) PCRYPT_URL_ARRAY pUrlArray, ++ _In_ _Win32_AssociatedEnum_(CRYPT_GET_URL_FLAGS) DWORD dwFlags, ++ _Out_writes_bytes_to_opt_(*pcbUrlArray, *pcbUrlArray) _Win32_ContainsInteriorPointers_ PCRYPT_URL_ARRAY pUrlArray, + _Inout_ DWORD* pcbUrlArray, + _Out_writes_bytes_to_opt_(*pcbUrlInfo, *pcbUrlInfo) PCRYPT_URL_INFO pUrlInfo, + _Inout_opt_ DWORD* pcbUrlInfo, +@@ -18080,6 +19053,8 @@ + } CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO, + *PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + _Success_(return == TRUE) + BOOL +@@ -18224,13 +19199,19 @@ + // CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG + // CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_CREATE_SELFSIGN_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CONTEXT + WINAPI + CertCreateSelfSignCertificate( + _In_opt_ HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, + _In_ PCERT_NAME_BLOB pSubjectIssuerBlob, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_CREATE_SELFSIGN_FLAGS) DWORD dwFlags, + _In_opt_ PCRYPT_KEY_PROV_INFO pKeyProvInfo, + _In_opt_ PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + _In_opt_ PSYSTEMTIME pStartTime, +@@ -18241,6 +19222,12 @@ + #define CERT_CREATE_SELFSIGN_NO_SIGN 1 + #define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_CREATE_SELFSIGN_FLAGS, unsigned long, ++ CERT_CREATE_SELFSIGN_NO_KEY_INFO, ++ CERT_CREATE_SELFSIGN_NO_SIGN); ++#endif ++ + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES)*/ + #pragma endregion + +@@ -18276,6 +19263,8 @@ + // can also be set to specify the name of a remote computer to be searched + // instead of the local machine. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -18317,6 +19306,8 @@ + // exists. For an existing property, FALSE is returned with LastError set to + // CRYPT_E_EXISTS. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -18369,6 +19360,8 @@ + // Key Identifiers. Set pwszComputerName, to enumerate Key Identifiers on + // a remote computer. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -18393,11 +19386,13 @@ + // public key Object Identifier. pszPubKeyOID can be set to override + // the default OID obtained from the aiKeyAlg. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI + CryptCreateKeyIdentifierFromCSP( +- _In_ DWORD dwCertEncodingType, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, + _In_opt_ LPCSTR pszPubKeyOID, + _In_reads_bytes_(cbPubKeyStruc) const PUBLICKEYSTRUC *pPubKeyStruc, + _In_ DWORD cbPubKeyStruc, +@@ -19525,19 +20520,22 @@ + #define CERT_CHAIN_EXCLUSIVE_ENABLE_CA_FLAG 0x00000001 + #endif + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL + WINAPI + CertCreateCertificateChainEngine ( + _In_ PCERT_CHAIN_ENGINE_CONFIG pConfig, +- _Out_ HCERTCHAINENGINE* phChainEngine ++ _Win32_RAIIFree_(CertFreeCertificateChainEngine, -1, 0) _Out_ HCERTCHAINENGINE* phChainEngine + ); + + // + // Free a certificate trust engine + // + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + VOID + WINAPI +@@ -19550,6 +20548,8 @@ + // the engine and updates the engine caches. + // + ++_Win32_SetLastError_ ++_Win32_SupportedOS_10240_ + WINCRYPT32API + BOOL + WINAPI +@@ -19990,6 +20990,8 @@ + // dwInfoStatus. + #define CERT_CHAIN_ENABLE_DISALLOWED_CA 0x00020000 + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -20009,6 +21011,7 @@ + // Free a certificate chain + // + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + VOID + WINAPI +@@ -20020,6 +21023,7 @@ + // Duplicate (add a reference to) a certificate chain + // + ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CHAIN_CONTEXT + WINAPI +@@ -20100,13 +21104,14 @@ + // NOTE: a NON-NULL pPrevChainContext is always CertFreeCertificateChain'ed by + // this function, even for an error. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + PCCERT_CHAIN_CONTEXT + WINAPI + CertFindChainInStore( + _In_ HCERTSTORE hCertStore, +- _In_ DWORD dwCertEncodingType, +- _In_ DWORD dwFindFlags, ++ _In_ _Win32_AssociatedEnum_(CERT_QUERY_ENCODING_TYPE) DWORD dwCertEncodingType, ++ _Win32_AssociatedEnum_(CERT_FIND_CHAIN_IN_STORE_FLAGS) _In_ DWORD dwFindFlags, + _In_ DWORD dwFindType, + _In_opt_ const void *pvFindPara, + _In_opt_ PCCERT_CHAIN_CONTEXT pPrevChainContext +@@ -20251,13 +21256,27 @@ + // stores. + #define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_FIND_CHAIN_IN_STORE_FLAGS, unsigned long, ++ CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG, ++ CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG, ++ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG, ++ CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG, ++ CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG, ++ CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG); ++#endif ++ + + //+========================================================================= + // Certificate Chain Policy Data Structures and APIs + //========================================================================== ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CERT_CHAIN_POLICY_FLAGS; ++#endif ++ + typedef struct _CERT_CHAIN_POLICY_PARA { + DWORD cbSize; +- DWORD dwFlags; ++ _Win32_AssociatedEnum_(CERT_CHAIN_POLICY_FLAGS) DWORD dwFlags; + void *pvExtraPolicyPara; // pszPolicyOID specific + } CERT_CHAIN_POLICY_PARA, *PCERT_CHAIN_POLICY_PARA; + +@@ -20334,6 +21353,7 @@ + // In addition to returning dwError, in pPolicyStatus, policy OID specific + // extra status may be returned via pvExtraPolicyStatus. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -20431,6 +21451,10 @@ + //-------------------------------------------------------------------------- + + // fdwChecks flags are defined in wininet.h ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE; ++#endif ++ + typedef struct _HTTPSPolicyCallbackData + { + union { +@@ -20438,7 +21462,7 @@ + DWORD cbSize; // sizeof(HTTPSPolicyCallbackData); + } DUMMYUNIONNAME; + +- DWORD dwAuthType; ++ _Win32_AssociatedEnum_(HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE) DWORD dwAuthType; + # define AUTHTYPE_CLIENT 1 + # define AUTHTYPE_SERVER 2 + +@@ -20448,6 +21472,12 @@ + + } HTTPSPolicyCallbackData, *PHTTPSPolicyCallbackData, + SSL_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_EXTRA_CERT_CHAIN_POLICY_PARA; ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(HTTPSPOLICY_CALLBACK_DATA_AUTH_TYPE, unsigned long, ++ AUTHTYPE_CLIENT, ++ AUTHTYPE_SERVER); ++#endif + + //+------------------------------------------------------------------------- + // CERT_CHAIN_POLICY_BASIC_CONSTRAINTS +@@ -20536,6 +21566,34 @@ + #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000 + #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x00040000 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CERT_CHAIN_POLICY_FLAGS, unsigned long, ++ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS, ++ CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS, ++ CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG, ++ CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG, ++ CERT_CHAIN_POLICY_IGNORE_WEAK_SIGNATURE_FLAG, ++ BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG, ++ BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG, ++ MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, ++ MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, ++ MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG); ++#endif ++ + //+------------------------------------------------------------------------- + // CERT_CHAIN_POLICY_EV + // +@@ -20554,7 +21612,7 @@ + + typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA { + DWORD cbSize; +- DWORD dwRootProgramQualifierFlags; ++ _Win32_AssociatedEnum_(CERT_ROOT_PROGRAM_FLAGS) DWORD dwRootProgramQualifierFlags; + } EV_EXTRA_CERT_CHAIN_POLICY_PARA, + *PEV_EXTRA_CERT_CHAIN_POLICY_PARA; + +@@ -20830,6 +21888,12 @@ + // *pdwSkip returns the character count of skipped strings, optional + // *pdwFlags returns the actual format used in the conversion, optional + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_STRING; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return) + WINCRYPT32STRINGAPI + BOOL +@@ -20839,7 +21903,7 @@ + _When_(dwFlags == CRYPT_STRING_BINARY, _In_reads_bytes_(cchString)) + LPCSTR pszString, + _In_ DWORD cchString, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, + _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, + _Inout_ DWORD *pcbBinary, + _Out_opt_ DWORD *pdwSkip, +@@ -20856,6 +21920,8 @@ + // *pdwSkip returns the character count of skipped strings, optional + // *pdwFlags returns the actual format used in the conversion, optional + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + _Success_(return) + WINCRYPT32STRINGAPI + BOOL +@@ -20865,7 +21931,7 @@ + _When_(dwFlags == CRYPT_STRING_BINARY, _In_reads_bytes_(cchString)) + LPCWSTR pszString, + _In_ DWORD cchString, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, + _Out_writes_bytes_to_opt_(*pcbBinary, *pcbBinary) BYTE *pbBinary, + _Inout_ DWORD *pcbBinary, + _Out_opt_ DWORD *pdwSkip, +@@ -20883,6 +21949,7 @@ + // if pszString is NULL, *pcchString returns size in characters + // including null-terminator + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + _Success_(return) + WINCRYPT32STRINGAPI + BOOL +@@ -20890,7 +21957,7 @@ + CryptBinaryToStringA( + _In_reads_bytes_(cbBinary) CONST BYTE *pbBinary, + _In_ DWORD cbBinary, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, + _Out_writes_to_opt_(*pcchString, *pcchString) LPSTR pszString, + _Inout_ DWORD *pcchString + ); +@@ -20900,6 +21967,7 @@ + // if pszString is NULL, *pcchString returns size in characters + // including null-terminator + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + _Success_(return) + WINCRYPT32STRINGAPI + BOOL +@@ -20907,7 +21975,7 @@ + CryptBinaryToStringW( + _In_reads_bytes_(cbBinary) CONST BYTE *pbBinary, + _In_ DWORD cbBinary, +- _In_ DWORD dwFlags, ++ _In_ _Win32_AssociatedEnum_(CRYPT_STRING) DWORD dwFlags, + _Out_writes_to_opt_(*pcchString, *pcchString) LPWSTR pszString, + _Inout_ DWORD *pcchString + ); +@@ -20941,6 +22009,24 @@ + #define CRYPT_STRING_PERCENTESCAPE 0x08000000 // base64 formats only + #define CRYPT_STRING_HASHDATA 0x10000000 + #define CRYPT_STRING_STRICT 0x20000000 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_STRING, unsigned long, ++ CRYPT_STRING_BASE64HEADER, ++ CRYPT_STRING_BASE64, ++ CRYPT_STRING_BINARY, ++ CRYPT_STRING_BASE64REQUESTHEADER, ++ CRYPT_STRING_HEX, ++ CRYPT_STRING_HEXASCII, ++ CRYPT_STRING_BASE64X509CRLHEADER, ++ CRYPT_STRING_HEXADDR, ++ CRYPT_STRING_HEXASCIIADDR, ++ CRYPT_STRING_HEXRAW, ++ CRYPT_STRING_STRICT, ++ CRYPT_STRING_BASE64_ANY, ++ CRYPT_STRING_ANY, ++ CRYPT_STRING_HEX_ANY); ++#endif + #define CRYPT_STRING_NOCRLF 0x40000000 + #define CRYPT_STRING_NOCR 0x80000000 + // certenrolld_end +@@ -21056,13 +22142,19 @@ + // except, we won't fallback to + // using the password to decrypt. + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_KEY_FLAGS; ++#endif ++ ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + HCERTSTORE + WINAPI + PFXImportCertStore( + _In_ CRYPT_DATA_BLOB* pPFX, + _In_ LPCWSTR szPassword, +- _In_ DWORD dwFlags); ++ _In_ _Win32_AssociatedEnum_(CRYPT_KEY_FLAGS) DWORD dwFlags); + + // dwFlags definitions for PFXImportCertStore + //#define CRYPT_EXPORTABLE 0x00000001 // CryptImportKey dwFlags +@@ -21099,6 +22191,7 @@ + // blob, and if that works it will return TRUE, it will return FALSE otherwise + // + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -21115,6 +22208,7 @@ + // Return value is TRUE if password appears correct, FALSE otherwise. + // + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -21181,6 +22275,8 @@ + // the memory pointed to by pPFX->pbData is updated with the encoded bytes + // and pPFX->cbData is updated with the encoded byte length. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -21197,6 +22293,41 @@ + #define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x0002 + #define EXPORT_PRIVATE_KEYS 0x0004 + #define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x0010 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_FlagsEnum_(CRYPT_KEY_FLAGS, unsigned long, ++ CRYPT_EXPORTABLE, ++ CRYPT_USER_PROTECTED, ++ CRYPT_ARCHIVABLE, ++ CRYPT_CREATE_IV, ++ CRYPT_CREATE_SALT, ++ CRYPT_DATA_KEY, ++ CRYPT_FORCE_KEY_PROTECTION_HIGH, ++ CRYPT_KEK, ++ CRYPT_INITIATOR, ++ CRYPT_NO_SALT, ++ CRYPT_ONLINE, ++ CRYPT_PREGEN, ++ CRYPT_RECIPIENT, ++ CRYPT_SF, ++ CRYPT_SGCKEY, ++ CRYPT_VOLATILE, ++ CRYPT_MACHINE_KEYSET, ++ CRYPT_USER_KEYSET, ++ PKCS12_PREFER_CNG_KSP, ++ PKCS12_ALWAYS_CNG_KSP, ++ PKCS12_ALLOW_OVERWRITE_KEY, ++ PKCS12_NO_PERSIST_KEY, ++ PKCS12_INCLUDE_EXTENDED_PROPERTIES, ++ CRYPT_OAEP, ++ CRYPT_BLOB_VER3, ++ CRYPT_DESTROYKEY, ++ CRYPT_SSL2_FALLBACK, ++ CRYPT_Y_ONLY, ++ CRYPT_IPSEC_HMAC_KEY, ++ CERT_SET_KEY_PROV_HANDLE_PROP_ID, ++ CERT_SET_KEY_CONTEXT_PROP_ID); ++#endif + #define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x0020 + #define PKCS12_EXPORT_SILENT 0x0040 + #define PKCS12_EXPORT_PBES2_PARAMS 0x0080 +@@ -21253,6 +22384,8 @@ + // This is an old API kept for compatibility with IE4 clients. New applications + // should call the above PfxExportCertStoreEx for enhanced security. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsXP_ + WINCRYPT32API + BOOL + WINAPI +@@ -21372,6 +22505,8 @@ + // CertCloseServerOcspResponse() must be called to close the returned + // handle. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + HCERT_SERVER_OCSP_RESPONSE + WINAPI +@@ -21390,6 +22525,7 @@ + // CertOpenServerOcspResponse(). Each Open and AddRef requires a + // corresponding CertCloseServerOcspResponse(). + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + VOID + WINAPI +@@ -21403,6 +22539,7 @@ + // + // dwFlags isn't currently used and must be set to 0. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + VOID + WINAPI +@@ -21424,6 +22561,7 @@ + // CertFreeServerOcspResponseContext() must be called to free the + // returned OCSP response context. + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + PCCERT_SERVER_OCSP_RESPONSE_CONTEXT + WINAPI +@@ -21438,6 +22576,7 @@ + // CertGetServerOcspResponseContext(). Each Get and AddRef requires a + // corresponding CertFreeServerOcspResponseContext(). + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + VOID + WINAPI +@@ -21449,6 +22588,7 @@ + // Free the OCSP response context returned by + // CertGetServerOcspResponseContext(). + //-------------------------------------------------------------------------- ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + VOID + WINAPI +@@ -21506,6 +22646,8 @@ + // *ppwszMimeType is always NULL for the biometric types. For success, + // the caller must always check if non-NULL before dereferencing. + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -21563,7 +22705,7 @@ + + typedef struct _CERT_SELECT_CRITERIA + { +- DWORD dwType; ++ _Win32_AssociatedEnum_(CERT_SELECT_CRITERIA_TYPE) DWORD dwType; + DWORD cPara; + _Field_size_(cPara) void** ppPara; + } +@@ -21585,6 +22727,21 @@ + #define CERT_SELECT_BY_PUBLIC_KEY 10 + #define CERT_SELECT_BY_TLS_SIGNATURES 11 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CERT_SELECT_CRITERIA_TYPE, unsigned long, ++ CERT_SELECT_BY_ENHKEY_USAGE, ++ CERT_SELECT_BY_KEY_USAGE, ++ CERT_SELECT_BY_POLICY_OID, ++ CERT_SELECT_BY_PROV_NAME, ++ CERT_SELECT_BY_EXTENSION, ++ CERT_SELECT_BY_SUBJECT_HOST_NAME, ++ CERT_SELECT_BY_ISSUER_ATTR, ++ CERT_SELECT_BY_SUBJECT_ATTR, ++ CERT_SELECT_BY_ISSUER_NAME, ++ CERT_SELECT_BY_PUBLIC_KEY, ++ CERT_SELECT_BY_TLS_SIGNATURES); ++#endif ++ + //add for WinRT + #define CERT_SELECT_BY_ISSUER_DISPLAYNAME 12 + #define CERT_SELECT_BY_FRIENDLYNAME 13 +@@ -21610,6 +22767,8 @@ + // the matching ones based on the flags and selection criteria. + //-------------------------------------------------------------------------- + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + WINCRYPT32API + _Success_(return != FALSE) + BOOL +@@ -21630,6 +22789,7 @@ + // CertFreeCertificateChain is NOT called for each entry. + //-------------------------------------------------------------------------- + ++_Win32_SupportedOS_Windows7_ + WINCRYPT32API + VOID + WINAPI +@@ -21651,9 +22811,14 @@ + //-------------------------------------------------------------------------- + #define TIMESTAMP_VERSION 1 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_TIMESTAMP_VERSION, unsigned long, ++ TIMESTAMP_VERSION); ++#endif ++ + typedef struct _CRYPT_TIMESTAMP_REQUEST + { +- DWORD dwVersion; // v1 ++ _Win32_AssociatedEnum_(CRYPT_TIMESTAMP_VERSION) DWORD dwVersion; // v1 + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_DER_BLOB HashedMessage; + LPSTR pszTSAPolicyId; // OPTIONAL +@@ -21668,9 +22833,13 @@ + // CRYPT_TIMESTAMP_RESPONSE + // + //-------------------------------------------------------------------------- ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++typedef unsigned long CRYPT_TIMESTAMP_RESPONSE_STATUS; ++#endif ++ + typedef struct _CRYPT_TIMESTAMP_RESPONSE + { +- DWORD dwStatus; ++ _Win32_AssociatedEnum_(CRYPT_TIMESTAMP_RESPONSE_STATUS) DWORD dwStatus; + DWORD cFreeText; // OPTIONAL + _Field_size_(cFreeText) + LPWSTR* rgFreeText; +@@ -21684,6 +22853,16 @@ + #define TIMESTAMP_STATUS_WAITING 3 + #define TIMESTAMP_STATUS_REVOCATION_WARNING 4 + #define TIMESTAMP_STATUS_REVOKED 5 ++ ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_TIMESTAMP_RESPONSE_STATUS, unsigned long, ++ TIMESTAMP_STATUS_GRANTED, ++ TIMESTAMP_STATUS_GRANTED_WITH_MODS, ++ TIMESTAMP_STATUS_REJECTED, ++ TIMESTAMP_STATUS_WAITING, ++ TIMESTAMP_STATUS_REVOCATION_WARNING, ++ TIMESTAMP_STATUS_REVOKED); ++#endif + + #define TIMESTAMP_FAILURE_BAD_ALG 0 + #define TIMESTAMP_FAILURE_BAD_REQUEST 2 +@@ -21811,6 +22990,8 @@ + // if fRequestCerts value is TRUE. + // + //-------------------------------------------------------------------------- ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + BOOL + WINAPI + CryptRetrieveTimeStamp( +@@ -21874,6 +23055,8 @@ + // The caller should also build a chain for ppTsSigner and validate the trust. + //-------------------------------------------------------------------------- + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows7_ + _Success_(return == TRUE) + BOOL + WINAPI +@@ -21926,6 +23109,14 @@ + #define CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT 3 + #define CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD 4 + ++#if defined(WIN32METADATA) && !defined(MIDL_PASS) ++_Win32_Enum_(CRYPT_OBJECT_LOCATOR_RELEASE_REASON, unsigned long, ++ CRYPT_OBJECT_LOCATOR_RELEASE_SYSTEM_SHUTDOWN, ++ CRYPT_OBJECT_LOCATOR_RELEASE_SERVICE_STOP, ++ CRYPT_OBJECT_LOCATOR_RELEASE_PROCESS_EXIT, ++ CRYPT_OBJECT_LOCATOR_RELEASE_DLL_UNLOAD); ++#endif ++ + + //-------------------------------------------------------------------------- + // The object locator provider receives this function when it is initialized. +@@ -22012,7 +23203,7 @@ + // it is initialized. + //-------------------------------------------------------------------------- + typedef void (WINAPI * PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE)( +- _In_ DWORD dwReason, ++ _Win32_AssociatedEnum_(CRYPT_OBJECT_LOCATOR_RELEASE_REASON) _In_ DWORD dwReason, + _In_opt_ LPVOID pPluginContext); + + diff --git a/generation/WinSDK/patches/um/winddi.h.patch b/generation/WinSDK/patches/um/winddi.h.patch index 80c6af786..c844de572 100644 --- a/generation/WinSDK/patches/um/winddi.h.patch +++ b/generation/WinSDK/patches/um/winddi.h.patch @@ -10,37 +10,7 @@ diff --git a/um/winddi.h b/um/winddi.h #pragma once #include -@@ -195,11 +197,29 @@ - - - DECLARE_HANDLE(HBM); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HBM HBM; -+#endif - DECLARE_HANDLE(HDEV); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDEV HDEV; -+#endif - DECLARE_HANDLE(HSURF); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSURF HSURF; -+#endif - DECLARE_HANDLE(DHSURF); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef DHSURF DHSURF; -+#endif - DECLARE_HANDLE(DHPDEV); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef DHPDEV DHPDEV; -+#endif - DECLARE_HANDLE(HDRVOBJ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDRVOBJ HDRVOBJ; -+#endif - - #define LTOFX(x) ((x)<<4) - -@@ -1747,22 +1767,26 @@ +@@ -1747,22 +1749,26 @@ * BRUSHOBJ callbacks */ @@ -67,7 +37,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HANDLE APIENTRY BRUSHOBJ_hGetColorTransform( BRUSHOBJ *pbo -@@ -1802,6 +1826,7 @@ +@@ -1802,6 +1808,7 @@ RECTL arcl[1]; } ENUMRECTS; @@ -75,7 +45,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY CLIPOBJ_cEnumStart( CLIPOBJ *pco, -@@ -1811,6 +1836,7 @@ +@@ -1811,6 +1818,7 @@ __in_data_source(USER_MODE) ULONG cLimit ); @@ -83,7 +53,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY CLIPOBJ_bEnum( CLIPOBJ *pco, -@@ -1818,6 +1844,7 @@ +@@ -1818,6 +1826,7 @@ ULONG *pul ); @@ -91,7 +61,7 @@ diff --git a/um/winddi.h b/um/winddi.h PATHOBJ* APIENTRY CLIPOBJ_ppoGetPath( CLIPOBJ* pco ); -@@ -1932,17 +1959,20 @@ +@@ -1932,17 +1941,20 @@ ULONG cjMaxGlyph32; } FONTINFO, *PFONTINFO; @@ -112,7 +82,7 @@ diff --git a/um/winddi.h b/um/winddi.h ULONG APIENTRY FONTOBJ_cGetGlyphs( FONTOBJ *pfo, __in_data_source(USER_MODE) ULONG iMode, -@@ -1956,29 +1986,35 @@ +@@ -1956,29 +1968,35 @@ FONTOBJ *pfo); #endif // (NTDDI_VERSION <= NTDDI_WINXP) @@ -148,7 +118,7 @@ diff --git a/um/winddi.h b/um/winddi.h LPWSTR APIENTRY FONTOBJ_pwszFontFilePaths ( FONTOBJ *pfo, ULONG *pcwc -@@ -1988,6 +2024,7 @@ +@@ -1988,6 +2006,7 @@ #define FO_ATTR_MODE_ROTATE 1 @@ -156,7 +126,7 @@ diff --git a/um/winddi.h b/um/winddi.h PFD_GLYPHATTR APIENTRY FONTOBJ_pQueryGlyphAttrs( FONTOBJ *pfo, __in_data_source(USER_MODE) ULONG iMode -@@ -2003,6 +2040,7 @@ +@@ -2003,6 +2022,7 @@ #define PAL_BGR 0x00000008 #define PAL_CMYK 0x00000010 @@ -164,7 +134,7 @@ diff --git a/um/winddi.h b/um/winddi.h ULONG APIENTRY PALOBJ_cGetColors( PALOBJ *ppalo, ULONG iStart, -@@ -2055,17 +2093,20 @@ +@@ -2055,17 +2075,20 @@ RUN arun[1]; } CLIPLINE, *PCLIPLINE; @@ -185,7 +155,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY PATHOBJ_vEnumStartClipLines( PATHOBJ *ppo, -@@ -2074,6 +2115,7 @@ +@@ -2074,6 +2097,7 @@ LINEATTRS *pla ); @@ -193,7 +163,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY PATHOBJ_bEnumClipLines( PATHOBJ *ppo, -@@ -2081,12 +2123,14 @@ +@@ -2081,12 +2105,14 @@ CLIPLINE *pcl ); @@ -208,7 +178,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY PATHOBJ_bPolyLineTo( _In_ PATHOBJ *ppo, -@@ -2094,6 +2138,7 @@ +@@ -2094,6 +2120,7 @@ _In_ ULONG cptfx ); @@ -216,7 +186,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY PATHOBJ_bPolyBezierTo( _In_ PATHOBJ *ppo, -@@ -2101,11 +2146,13 @@ +@@ -2101,11 +2128,13 @@ _In_ ULONG cptfx ); @@ -230,7 +200,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY PATHOBJ_vGetBounds( PATHOBJ *ppo, -@@ -2116,11 +2163,13 @@ +@@ -2116,11 +2145,13 @@ * STROBJ callbacks */ @@ -244,7 +214,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY STROBJ_bEnum( STROBJ *pstro, -@@ -2128,6 +2177,7 @@ +@@ -2128,6 +2159,7 @@ PGLYPHPOS *ppgpos ); @@ -252,7 +222,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY STROBJ_bEnumPositionsOnly( STROBJ *pstro, -@@ -2135,21 +2185,25 @@ +@@ -2135,21 +2167,25 @@ PGLYPHPOS *ppgpos ); @@ -278,7 +248,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY STROBJ_bGetAdvanceWidths( STROBJ *pso, -@@ -2227,12 +2281,14 @@ +@@ -2227,12 +2263,14 @@ #define XF_LTOFX 2L #define XF_INV_FXTOL 3L @@ -293,7 +263,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY XFORMOBJ_bApplyXform( XFORMOBJ *pxo, -@@ -2265,17 +2321,20 @@ +@@ -2265,17 +2303,20 @@ #define XO_SRCBITFIELDS 4 #define XO_DESTBITFIELDS 5 @@ -314,7 +284,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY XLATEOBJ_cGetPalette( XLATEOBJ *pxlo, -@@ -2284,6 +2343,7 @@ +@@ -2284,6 +2325,7 @@ ULONG *pPal ); @@ -322,7 +292,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HANDLE APIENTRY XLATEOBJ_hGetColorTransform( XLATEOBJ *pxlo -@@ -2300,9 +2360,11 @@ +@@ -2300,9 +2342,11 @@ #else // !USERMODE_DRIVER @@ -334,7 +304,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY EngGetLastError(); -@@ -2335,6 +2397,7 @@ +@@ -2335,6 +2379,7 @@ #define HOOK_FLAGS 0x0003b5ef #endif @@ -342,7 +312,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HBITMAP APIENTRY EngCreateBitmap( SIZEL sizl, -@@ -2344,6 +2407,7 @@ +@@ -2344,6 +2389,7 @@ __in_data_source(USER_MODE) PVOID pvBits ); @@ -350,7 +320,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HSURF APIENTRY EngCreateDeviceSurface( __in_data_source(USER_MODE) DHSURF dhsurf, -@@ -2351,6 +2415,7 @@ +@@ -2351,6 +2397,7 @@ ULONG iFormatCompat ); @@ -358,7 +328,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HBITMAP APIENTRY EngCreateDeviceBitmap( __in_data_source(USER_MODE) DHSURF dhsurf, -@@ -2367,21 +2432,25 @@ +@@ -2367,21 +2414,25 @@ ); #endif // (NTDDI_VERSION >= NTDDI_WIN7) @@ -384,7 +354,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngEraseSurface( SURFOBJ *pso, -@@ -2389,6 +2458,7 @@ +@@ -2389,6 +2440,7 @@ __in_data_source(USER_MODE) ULONG iColor ); @@ -392,7 +362,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngAssociateSurface( HSURF hsurf, -@@ -2403,6 +2473,7 @@ +@@ -2403,6 +2455,7 @@ #define MS_REUSEDDEVICEBITMAP 0x0008 #endif // (NTDDI_VERSION >= NTDDI_WIN10_RS2) @@ -400,7 +370,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngModifySurface( HSURF hsurf, -@@ -2415,11 +2486,13 @@ +@@ -2415,11 +2468,13 @@ VOID* pvReserved ); @@ -414,7 +384,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngCheckAbort( SURFOBJ *pso -@@ -2429,9 +2502,11 @@ +@@ -2429,9 +2484,11 @@ * Engine callbacks - Paths */ @@ -426,7 +396,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngDeletePath( PATHOBJ *ppo -@@ -2441,6 +2516,7 @@ +@@ -2441,6 +2498,7 @@ * Engine callbacks - Palettes */ @@ -434,7 +404,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HPALETTE APIENTRY EngCreatePalette( __in_data_source(USER_MODE) ULONG iMode, -@@ -2451,6 +2527,7 @@ +@@ -2451,6 +2509,7 @@ __in_data_source(USER_MODE) FLONG flBlue ); @@ -442,7 +412,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY EngQueryPalette( HPALETTE hpal, -@@ -2458,6 +2535,7 @@ +@@ -2458,6 +2517,7 @@ ULONG cColors, ULONG *pulColors); @@ -450,7 +420,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngDeletePalette( __in_data_source(USER_MODE) HPALETTE hpal -@@ -2467,9 +2545,11 @@ +@@ -2467,9 +2527,11 @@ * Engine callbacks - Clipping */ @@ -462,7 +432,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngDeleteClip( _In_opt_ CLIPOBJ *pco -@@ -3391,6 +3471,7 @@ +@@ -3391,6 +3453,7 @@ #define WO_RGN_SPRITE 0x0200 #endif // (NTDDI_VERSION >= NTDDI_VISTA) @@ -470,7 +440,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI WNDOBJ * APIENTRY EngCreateWnd( SURFOBJ *pso, -@@ -3400,11 +3481,13 @@ +@@ -3400,11 +3463,13 @@ int iPixelFormat ); @@ -484,7 +454,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY WNDOBJ_cEnumStart( WNDOBJ *pwo, -@@ -3413,6 +3496,7 @@ +@@ -3413,6 +3478,7 @@ ULONG cLimit ); @@ -492,7 +462,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY WNDOBJ_bEnum( WNDOBJ *pwo, -@@ -3420,6 +3504,7 @@ +@@ -3420,6 +3486,7 @@ ULONG *pul ); @@ -500,7 +470,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY WNDOBJ_vSetConsumer( WNDOBJ *pwo, -@@ -3450,6 +3535,7 @@ +@@ -3450,6 +3517,7 @@ #define EHN_RESTORED 0 #define EHN_ERROR 1 @@ -508,7 +478,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY EngHangNotification( HDEV hdev, -@@ -3461,6 +3547,7 @@ +@@ -3461,6 +3529,7 @@ * Engine callbacks - tracking driver managed resources */ @@ -516,7 +486,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HDRVOBJ APIENTRY EngCreateDriverObj( PVOID pvObj, -@@ -3468,6 +3555,7 @@ +@@ -3468,6 +3537,7 @@ HDEV hdev ); @@ -524,7 +494,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngDeleteDriverObj( HDRVOBJ hdo, -@@ -3475,11 +3563,13 @@ +@@ -3475,11 +3545,13 @@ BOOL bLocked ); @@ -538,7 +508,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngUnlockDriverObj( HDRVOBJ hdo -@@ -3489,6 +3579,7 @@ +@@ -3489,6 +3561,7 @@ * Engine callback - return current process handle. */ @@ -546,7 +516,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HANDLE APIENTRY EngGetProcessHandle(); -@@ -3496,6 +3587,7 @@ +@@ -3496,6 +3569,7 @@ * Engine callback - return current thread id */ @@ -554,7 +524,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HANDLE APIENTRY EngGetCurrentThreadId(); -@@ -3503,6 +3595,7 @@ +@@ -3503,6 +3577,7 @@ * Engine callback - return current process id */ @@ -562,7 +532,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI HANDLE APIENTRY EngGetCurrentProcessId(); -@@ -3536,6 +3629,7 @@ +@@ -3536,6 +3611,7 @@ * Function prototypes - Engine Simulations */ @@ -570,7 +540,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngBitBlt( _In_ SURFOBJ *psoTrg, -@@ -3551,6 +3645,7 @@ +@@ -3551,6 +3627,7 @@ __in_data_source(USER_MODE) ROP4 rop4 ); @@ -578,7 +548,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngLineTo( SURFOBJ *pso, -@@ -3564,6 +3659,7 @@ +@@ -3564,6 +3641,7 @@ __in_data_source(USER_MODE) MIX mix ); @@ -586,7 +556,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngStretchBlt( SURFOBJ *psoDest, -@@ -3579,6 +3675,7 @@ +@@ -3579,6 +3657,7 @@ __in_data_source(USER_MODE) ULONG iMode ); @@ -594,7 +564,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngStretchBltROP( SURFOBJ *psoDest, -@@ -3596,6 +3693,7 @@ +@@ -3596,6 +3675,7 @@ __in_data_source(USER_MODE) DWORD rop4 ); @@ -602,7 +572,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngAlphaBlend( SURFOBJ *psoDest, -@@ -3607,6 +3705,7 @@ +@@ -3607,6 +3687,7 @@ BLENDOBJ *pBlendObj ); @@ -610,7 +580,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngGradientFill( SURFOBJ *psoDest, -@@ -3621,6 +3720,7 @@ +@@ -3621,6 +3702,7 @@ __in_data_source(USER_MODE) ULONG ulMode ); @@ -618,7 +588,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngTransparentBlt( _In_ SURFOBJ *psoDst, -@@ -3633,6 +3733,7 @@ +@@ -3633,6 +3715,7 @@ __in_data_source(USER_MODE) ULONG bCalledFromBitBlt ); @@ -626,7 +596,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngTextOut( SURFOBJ *pso, -@@ -3647,6 +3748,7 @@ +@@ -3647,6 +3730,7 @@ __in_data_source(USER_MODE) MIX mix ); @@ -634,7 +604,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngStrokePath( SURFOBJ *pso, -@@ -3659,6 +3761,7 @@ +@@ -3659,6 +3743,7 @@ __in_data_source(USER_MODE) MIX mix ); @@ -642,7 +612,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngFillPath( SURFOBJ *pso, -@@ -3670,6 +3773,7 @@ +@@ -3670,6 +3755,7 @@ __in_data_source(USER_MODE) FLONG flOptions ); @@ -650,7 +620,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngStrokeAndFillPath( SURFOBJ *pso, -@@ -3684,6 +3788,7 @@ +@@ -3684,6 +3770,7 @@ __in_data_source(USER_MODE) FLONG flOptions ); @@ -658,7 +628,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngPaint( SURFOBJ *pso, -@@ -3693,6 +3798,7 @@ +@@ -3693,6 +3780,7 @@ __in_data_source(USER_MODE) MIX mix ); @@ -666,7 +636,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngCopyBits( SURFOBJ *psoDest, -@@ -3703,6 +3809,7 @@ +@@ -3703,6 +3791,7 @@ __in_data_source(USER_MODE) POINTL *pptlSrc ); @@ -674,7 +644,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY EngSetPointerShape( SURFOBJ *pso, -@@ -3717,6 +3824,7 @@ +@@ -3717,6 +3806,7 @@ FLONG fl ); @@ -682,7 +652,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngMovePointer( SURFOBJ *pso, -@@ -3725,6 +3833,7 @@ +@@ -3725,6 +3815,7 @@ RECTL *prcl ); @@ -690,7 +660,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngPlgBlt( SURFOBJ *psoTrg, -@@ -3740,6 +3849,7 @@ +@@ -3740,6 +3831,7 @@ __in_data_source(USER_MODE) ULONG iMode ); @@ -698,7 +668,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI ULONG APIENTRY EngDitherColor( HDEV hdev, -@@ -3775,6 +3885,7 @@ +@@ -3775,6 +3867,7 @@ #define ECS_TEARDOWN 0x0001 #define ECS_REDRAW 0x0002 @@ -706,7 +676,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngControlSprites( WNDOBJ *pwo, -@@ -3786,6 +3897,7 @@ +@@ -3786,6 +3879,7 @@ // Halftone releated APIs // @@ -714,7 +684,7 @@ diff --git a/um/winddi.h b/um/winddi.h LONG APIENTRY HT_ComputeRGBGammaTable( _In_ USHORT GammaTableEntries, _In_ USHORT GammaTableType, -@@ -3795,6 +3907,7 @@ +@@ -3795,6 +3889,7 @@ _Out_writes_bytes_(GammaTableEntries * 3) LPBYTE pGammaTable ); @@ -722,7 +692,7 @@ diff --git a/um/winddi.h b/um/winddi.h LONG APIENTRY HT_Get8BPPFormatPalette( _Out_opt_ LPPALETTEENTRY pPaletteEntry, _In_ USHORT RedGamma, -@@ -3802,6 +3915,7 @@ +@@ -3802,6 +3897,7 @@ _In_ USHORT BlueGamma ); @@ -730,7 +700,7 @@ diff --git a/um/winddi.h b/um/winddi.h LONG APIENTRY HT_Get8BPPMaskPalette( _Out_opt_ LPPALETTEENTRY pPaletteEntry, _In_ BOOL Use8BPPMaskPal, -@@ -3829,6 +3943,7 @@ +@@ -3829,6 +3925,7 @@ PDEVHTINFO pAdjHTInfo; } DEVHTADJDATA, *PDEVHTADJDATA; @@ -738,7 +708,7 @@ diff --git a/um/winddi.h b/um/winddi.h LONG APIENTRY HTUI_DeviceColorAdjustment( -@@ -3841,6 +3956,7 @@ +@@ -3841,6 +3938,7 @@ // General support APIS // @@ -746,7 +716,7 @@ diff --git a/um/winddi.h b/um/winddi.h __analysis_noreturn ENGAPI VOID APIENTRY EngDebugBreak( -@@ -3858,6 +3974,7 @@ +@@ -3858,6 +3956,7 @@ ); #endif // (NTDDI_VERSION >= NTDDI_WINXPSP2) @@ -754,7 +724,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngDebugPrint( _In_z_ PCHAR StandardPrefix, -@@ -3865,16 +3982,19 @@ +@@ -3865,16 +3964,19 @@ _In_ va_list ap ); @@ -774,7 +744,7 @@ diff --git a/um/winddi.h b/um/winddi.h __drv_preferredFunction("(see documentation)", "Obsolete, always returns false. ") ENGAPI BOOL APIENTRY EngSetPointerTag( -@@ -3908,6 +4028,7 @@ +@@ -3908,6 +4010,7 @@ #else // !USERMODE_DRIVER @@ -782,7 +752,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI _Post_writable_byte_size_(MemSize) PVOID APIENTRY EngAllocMem( -@@ -3917,10 +4038,11 @@ +@@ -3917,10 +4020,11 @@ ); ENGAPI @@ -795,7 +765,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI _Post_writable_byte_size_(cj) PVOID APIENTRY EngAllocUserMem( -@@ -3929,10 +4051,11 @@ +@@ -3929,10 +4033,11 @@ ); ENGAPI @@ -808,7 +778,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI _Post_writable_byte_size_(cj) PVOID APIENTRY EngAllocPrivateUserMem( -@@ -3942,7 +4065,7 @@ +@@ -3942,7 +4047,7 @@ ); ENGAPI @@ -817,7 +787,7 @@ diff --git a/um/winddi.h b/um/winddi.h EngFreePrivateUserMem( _In_ PDD_SURFACE_LOCAL psl, _In_ PVOID pv -@@ -3958,6 +4081,7 @@ +@@ -3958,6 +4063,7 @@ ); #endif // (NTDDI_VERSION >= NTDDI_WINXP) @@ -825,7 +795,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI int APIENTRY EngMulDiv( _In_ int a, -@@ -3972,6 +4096,7 @@ +@@ -3972,6 +4078,7 @@ // User mode memory Operations // @@ -833,7 +803,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngProbeForRead( _In_reads_bytes_(Length) PVOID Address, -@@ -3983,6 +4108,7 @@ +@@ -3983,6 +4090,7 @@ _In_ ULONG Alignment ); @@ -841,7 +811,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngProbeForReadAndWrite( _Inout_updates_bytes_(Length) PVOID Address, -@@ -3994,17 +4120,20 @@ +@@ -3994,17 +4102,20 @@ _In_ ULONG Alignment ); @@ -862,7 +832,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI DWORD APIENTRY EngDeviceIoControl( _In_ HANDLE hDevice, -@@ -4028,11 +4157,13 @@ +@@ -4028,11 +4139,13 @@ #else // !USERMODE_DRIVER @@ -876,7 +846,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI PVOID APIENTRY EngFindImageProcAddress( HANDLE hModule, -@@ -4040,10 +4171,11 @@ +@@ -4040,10 +4153,11 @@ ); ENGAPI @@ -889,7 +859,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI PVOID APIENTRY EngMapModule( _In_ HANDLE h, -@@ -4057,11 +4189,13 @@ +@@ -4057,11 +4171,13 @@ // callback for extra PDEV information // @@ -903,7 +873,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI LPWSTR APIENTRY EngGetDriverName( _In_ HDEV hdev -@@ -4074,6 +4208,7 @@ +@@ -4074,6 +4190,7 @@ ULONG ulIdentifier; } TYPE1_FONT; @@ -911,7 +881,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngGetType1FontList( _In_ HDEV hdev, -@@ -4088,11 +4223,13 @@ +@@ -4088,11 +4205,13 @@ // Manipulating resource sections // @@ -925,7 +895,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI PVOID APIENTRY EngFindResource( _In_ HANDLE h, -@@ -4101,11 +4238,13 @@ +@@ -4101,11 +4220,13 @@ _Out_ PULONG pulSize ); @@ -939,7 +909,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY -@@ -4113,6 +4252,7 @@ +@@ -4113,6 +4234,7 @@ _In_ LPWSTR pwszFileName ); @@ -947,7 +917,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI _Success_(return != 0) _When_(cjSize != 0, _At_(return, _Out_writes_bytes_(cjSize))) -@@ -4124,6 +4264,7 @@ +@@ -4124,6 +4246,7 @@ _Out_ ULONG_PTR *piFile ); @@ -955,7 +925,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY -@@ -4135,12 +4276,14 @@ +@@ -4135,12 +4258,14 @@ // FontFile Callbacks // @@ -970,7 +940,7 @@ diff --git a/um/winddi.h b/um/winddi.h __drv_preferredFunction("EngMapFontFileFD", "Obsolete") ENGAPI BOOL APIENTRY EngMapFontFile( -@@ -4149,11 +4292,13 @@ +@@ -4149,11 +4274,13 @@ _Out_ ULONG *pcjBuf ); @@ -984,7 +954,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngMapFontFileFD( _In_ ULONG_PTR iFile, -@@ -4161,6 +4306,7 @@ +@@ -4161,6 +4288,7 @@ _Out_ ULONG *pcjBuf ); @@ -992,14 +962,11 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngLpkInstalled(); -@@ -4169,27 +4315,40 @@ +@@ -4169,27 +4297,35 @@ // DECLARE_HANDLE(HSEMAPHORE); - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSEMAPHORE HSEMAPHORE; -+#endif + +#if (defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus)) +_Win32_RAIIFree_(EngDeleteSemaphore, -1, 0) @@ -1028,13 +995,11 @@ diff --git a/um/winddi.h b/um/winddi.h _In_ HSEMAPHORE hsem ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + #if (NTDDI_VERSION >= NTDDI_LONGHORN) ENGAPI VOID APIENTRY EngAcquireSemaphoreShared( -@@ -4209,11 +4368,13 @@ +@@ -4209,11 +4345,13 @@ #endif #if (NTDDI_VERSION >= NTDDI_WINXP) @@ -1048,17 +1013,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngIsSemaphoreOwnedByCurrentThread( _In_ HSEMAPHORE hsem -@@ -4229,6 +4390,9 @@ - - #if (NTDDI_VERSION >= NTDDI_LONGHORN) - DECLARE_HANDLE(HFASTMUTEX); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HFASTMUTEX HFASTMUTEX; -+#endif - - ENGAPI - HFASTMUTEX APIENTRY EngCreateFastMutex(); -@@ -4260,16 +4424,19 @@ +@@ -4260,16 +4398,19 @@ LONG lCount; } ENGSAFESEMAPHORE; @@ -1078,7 +1033,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngMultiByteToUnicodeN( _Out_writes_bytes_to_(MaxBytesInUnicodeString, *BytesInUnicodeString) LPWSTR UnicodeString, -@@ -4279,6 +4446,7 @@ +@@ -4279,6 +4420,7 @@ _In_ ULONG BytesInMultiByteString ); @@ -1086,7 +1041,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngUnicodeToMultiByteN( _Out_writes_bytes_to_(MaxBytesInMultiByteString, *BytesInMultiByteString) PCHAR MultiByteString, -@@ -4302,6 +4470,7 @@ +@@ -4302,6 +4444,7 @@ #else // !USERMODE_DRIVER @@ -1094,7 +1049,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngGetPrinterDriver( _In_ HANDLE hPrinter, -@@ -4312,6 +4481,7 @@ +@@ -4312,6 +4455,7 @@ _Out_ DWORD *pcbNeeded ); @@ -1102,7 +1057,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI DWORD APIENTRY EngGetPrinterData( _In_ HANDLE hPrinter, -@@ -4322,6 +4492,7 @@ +@@ -4322,6 +4466,7 @@ _Out_ LPDWORD pcbNeeded ); @@ -1110,7 +1065,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI DWORD APIENTRY EngSetPrinterData( _In_ HANDLE hPrinter, -@@ -4331,6 +4502,7 @@ +@@ -4331,6 +4476,7 @@ _In_ DWORD cjPrinterData ); @@ -1118,7 +1073,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngGetForm( _In_ HANDLE hPrinter, -@@ -4341,6 +4513,7 @@ +@@ -4341,6 +4487,7 @@ _Out_ LPDWORD pcbNeeded ); @@ -1126,7 +1081,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngWritePrinter( _In_ HANDLE hPrinter, -@@ -4349,6 +4522,7 @@ +@@ -4349,6 +4496,7 @@ _Out_ LPDWORD pcWritten ); @@ -1134,7 +1089,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngGetPrinter( _In_ HANDLE hPrinter, -@@ -4358,6 +4532,7 @@ +@@ -4358,6 +4506,7 @@ _Out_ LPDWORD pcbNeeded ); @@ -1142,7 +1097,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngEnumForms( _In_ HANDLE hPrinter, -@@ -4379,36 +4554,44 @@ +@@ -4379,36 +4528,44 @@ ULONG ul2; } FLOATOBJ, *PFLOATOBJ; @@ -1208,7 +1163,7 @@ diff --git a/um/winddi.h b/um/winddi.h BOOL APIENTRY FLOATOBJ_LessThan(PFLOATOBJ,PFLOATOBJ); #else -@@ -4472,6 +4655,7 @@ +@@ -4472,6 +4629,7 @@ FLOATOBJ eDy; } FLOATOBJ_XFORM, *PFLOATOBJ_XFORM, FAR *LPFLOATOBJ_XFORM; @@ -1216,7 +1171,7 @@ diff --git a/um/winddi.h b/um/winddi.h ULONG APIENTRY XFORMOBJ_iGetFloatObjXform( XFORMOBJ *pxo, FLOATOBJ_XFORM * pfxo -@@ -4484,6 +4668,7 @@ +@@ -4484,6 +4642,7 @@ typedef int (__cdecl *SORTCOMP)(const void *pv1, const void *pv2); @@ -1224,7 +1179,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngSort( _Inout_updates_bytes_(c * cjElem) PBYTE pjBuf, -@@ -4503,11 +4688,13 @@ +@@ -4503,11 +4662,13 @@ USHORT usWeekday; // range [0..6] == [Sunday..Saturday] } ENG_TIME_FIELDS, *PENG_TIME_FIELDS; @@ -1238,7 +1193,7 @@ diff --git a/um/winddi.h b/um/winddi.h _Success_(return != 0) ENGAPI FD_GLYPHSET* APIENTRY EngComputeGlyphSet( -@@ -4516,6 +4703,7 @@ +@@ -4516,6 +4677,7 @@ _In_ INT cChars ); @@ -1246,7 +1201,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI INT APIENTRY EngMultiByteToWideChar( _In_ UINT CodePage, -@@ -4525,6 +4713,7 @@ +@@ -4525,6 +4687,7 @@ _In_ INT BytesInMultiByteString ); @@ -1254,7 +1209,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI INT APIENTRY EngWideCharToMultiByte( _In_ UINT CodePage, -@@ -4534,23 +4723,27 @@ +@@ -4534,23 +4697,27 @@ _In_ INT BytesInMultiByteString ); @@ -1282,7 +1237,7 @@ diff --git a/um/winddi.h b/um/winddi.h _Success_(return) ENGAPI BOOL APIENTRY EngGetFileChangeTime( -@@ -4558,6 +4751,7 @@ +@@ -4558,6 +4725,7 @@ _Out_ LARGE_INTEGER *pChangeTime ); @@ -1290,7 +1245,7 @@ diff --git a/um/winddi.h b/um/winddi.h _Success_(return) ENGAPI BOOL APIENTRY EngGetFilePath( -@@ -4575,7 +4769,7 @@ +@@ -4575,7 +4743,7 @@ _Kernel_float_saved_ _At_(*pBuffer, _Post_valid_ _Kernel_acquires_resource_(EngFloatState))) _On_failure_(_Post_satisfies_(return == 0)) @@ -1299,7 +1254,7 @@ diff --git a/um/winddi.h b/um/winddi.h ULONG #pragma warning(suppress: 6001 6101 28104) // Suppress PREfast warnings for not acquiring EngFloatState and filling out pBuffer EngSaveFloatingPointState ( -@@ -4594,7 +4788,7 @@ +@@ -4594,7 +4762,7 @@ _Kernel_float_restored_ _At_(*pBuffer, _Kernel_requires_resource_held_(EngFloatState) _Kernel_releases_resource_(EngFloatState)) @@ -1308,7 +1263,7 @@ diff --git a/um/winddi.h b/um/winddi.h BOOL #pragma warning(suppress: 28103) // Suppress PREfast warning for not releasing EngFloatState EngRestoreFloatingPointState ( -@@ -4616,7 +4810,7 @@ +@@ -4616,7 +4784,7 @@ _At_(*pBuffer, _Post_valid_ _Kernel_acquires_resource_(EngFloatState))) _On_failure_(_Post_satisfies_(return == 0)) ENGAPI @@ -1317,7 +1272,7 @@ diff --git a/um/winddi.h b/um/winddi.h _At_(*pBuffer, _Kernel_requires_resource_not_held_(EngFloatState)) _Out_writes_bytes_opt_(cjBufferSize) VOID *pBuffer, -@@ -4629,7 +4823,7 @@ +@@ -4629,7 +4797,7 @@ _At_(*pBuffer, _Kernel_requires_resource_held_(EngFloatState) _Kernel_releases_resource_(EngFloatState)) ENGAPI @@ -1326,7 +1281,7 @@ diff --git a/um/winddi.h b/um/winddi.h _In_reads_(_Inexpressible_(statesize)) VOID *pBuffer ); -@@ -4640,11 +4834,13 @@ +@@ -4640,11 +4808,13 @@ // DirectDraw surface locking // @@ -1340,7 +1295,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngUnlockDirectDrawSurface( _In_ PDD_SURFACE_LOCAL pSurface -@@ -4660,21 +4856,25 @@ +@@ -4660,21 +4830,25 @@ typedef struct _ENG_EVENT *PEVENT; @@ -1366,7 +1321,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI PEVENT APIENTRY EngMapEvent( _In_ HDEV hDev, -@@ -4684,24 +4884,28 @@ +@@ -4684,24 +4858,28 @@ _Reserved_ PVOID Reserved3 ); @@ -1395,7 +1350,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI LONG APIENTRY EngReadStateEvent ( -@@ -4732,6 +4936,7 @@ +@@ -4732,6 +4910,7 @@ #endif // (NTDDI_VERSION >= NTDDI_LONGHORN) @@ -1403,7 +1358,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI BOOL APIENTRY EngQuerySystemAttribute( -@@ -4741,6 +4946,7 @@ +@@ -4741,6 +4920,7 @@ #define ENG_FNT_CACHE_READ_FAULT 0x1 #define ENG_FNT_CACHE_WRITE_FAULT 0x2 @@ -1411,7 +1366,7 @@ diff --git a/um/winddi.h b/um/winddi.h _Success_(return != nullptr) ENGAPI _Post_writable_byte_size_(*pulSize) -@@ -4755,11 +4961,13 @@ +@@ -4755,11 +4935,13 @@ _In_ BOOL DiscardContent); +_Win32_SupportedOS_WindowsXP_ @@ -1425,7 +1380,7 @@ diff --git a/um/winddi.h b/um/winddi.h ENGAPI VOID APIENTRY EngFntCacheFault( _In_ ULONG ulFastCheckSum, -@@ -4771,6 +4979,7 @@ +@@ -4771,6 +4953,7 @@ QDA_ACCELERATION_LEVEL = 1 } ENG_DEVICE_ATTRIBUTE; diff --git a/generation/WinSDK/patches/um/windows.ui.xaml.hosting.referencetracker.idl.patch b/generation/WinSDK/patches/um/windows.ui.xaml.hosting.referencetracker.idl.patch deleted file mode 100644 index d5dd6c31b..000000000 --- a/generation/WinSDK/patches/um/windows.ui.xaml.hosting.referencetracker.idl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/um/windows.ui.xaml.hosting.referencetracker.idl b/um/windows.ui.xaml.hosting.referencetracker.idl -index d22e7673..c96c1271 100644 ---- a/um/windows.ui.xaml.hosting.referencetracker.idl -+++ b/um/windows.ui.xaml.hosting.referencetracker.idl -@@ -123,6 +123,7 @@ - } TrackerHandle__; - - typedef [unique] TrackerHandle__* TrackerHandle; -+cpp_quote("/* Win32Metadata: type ::TrackerHandle => NativeTypedef */") - - [ - object, diff --git a/generation/WinSDK/patches/um/winevt.h.patch b/generation/WinSDK/patches/um/winevt.h.patch index de46a57ec..dc3d7180b 100644 --- a/generation/WinSDK/patches/um/winevt.h.patch +++ b/generation/WinSDK/patches/um/winevt.h.patch @@ -2,411 +2,401 @@ diff --git a/um/winevt.h b/um/winevt.h --- a/um/winevt.h +++ b/um/winevt.h @@ -14,6 +14,8 @@ - - #ifndef __WINEVT_H__ - #define __WINEVT_H__ -+ -+#include - #include - - #pragma region Desktop Family or EventLogService Package -@@ -27,6 +29,9 @@ - #if (WINVER >= _WIN32_WINNT_LONGHORN) - - typedef HANDLE EVT_HANDLE, *PEVT_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef EVT_HANDLE EVT_HANDLE; -+#endif - - typedef enum _EVT_VARIANT_TYPE - { -@@ -154,7 +159,9 @@ - - - // Timeout and Flags must currently be 0 --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenSession( - EVT_LOGIN_CLASS LoginClass, -@@ -169,6 +176,8 @@ - // - //////////////////////////////////////////////////////////////////////////////// - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -177,12 +186,15 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtCancel( - _In_opt_ EVT_HANDLE Object - ); - -+_Win32_SupportedOS_WindowsVista_ - _Success_(return == ERROR_SUCCESS) - DWORD - WINAPI -@@ -223,7 +235,9 @@ - } EVT_SEEK_FLAGS; - - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtQuery( - _In_opt_ EVT_HANDLE Session, -@@ -232,6 +246,8 @@ - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -245,6 +261,8 @@ - ); - - // Timeout must currently be 0 -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtSeek( -@@ -286,7 +304,9 @@ - _Maybenull_ PVOID UserContext, - _In_ EVT_HANDLE Event ); - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtSubscribe( - _In_opt_ EVT_HANDLE Session, -@@ -345,7 +365,9 @@ - - } EVT_RENDER_FLAGS; - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtCreateRenderContext( - DWORD ValuePathsCount, -@@ -353,6 +375,8 @@ - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -361,7 +385,7 @@ - _In_ EVT_HANDLE Fragment, - DWORD Flags, - DWORD BufferSize, -- _Out_writes_bytes_to_opt_(BufferSize, *BufferUsed) PVOID Buffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(BufferSize, *BufferUsed) PVOID Buffer, - _Out_ PDWORD BufferUsed, - _Out_ PDWORD PropertyCount - ); -@@ -382,6 +406,8 @@ - - - // PublisherMetadata is NULL for forwarded events -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -423,7 +449,9 @@ - - } EVT_LOG_PROPERTY_ID; - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenLog( - _In_opt_ EVT_HANDLE Session, -@@ -431,6 +459,8 @@ - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -442,6 +472,8 @@ - _Out_ PDWORD PropertyValueBufferUsed - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtClearLog( -@@ -461,6 +493,8 @@ - - } EVT_EXPORTLOG_FLAGS; - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtExportLog( -@@ -472,6 +506,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtArchiveExportedLog( -@@ -546,13 +582,17 @@ - } EVT_CHANNEL_SID_TYPE; - - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenChannelEnum( - _In_opt_ EVT_HANDLE Session, - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -563,7 +603,9 @@ - _Out_ PDWORD ChannelPathBufferUsed - ); - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenChannelConfig( - _In_opt_ EVT_HANDLE Session, -@@ -572,6 +614,8 @@ - ); - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtSaveChannelConfig( -@@ -579,6 +623,8 @@ - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtSetChannelConfigProperty( -@@ -588,6 +634,8 @@ - _In_ PEVT_VARIANT PropertyValue - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -596,7 +644,7 @@ - EVT_CHANNEL_CONFIG_PROPERTY_ID PropertyId, - DWORD Flags, - DWORD PropertyValueBufferSize, -- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, - _Out_ PDWORD PropertyValueBufferUsed - ); - -@@ -654,13 +702,17 @@ - } EVT_PUBLISHER_METADATA_PROPERTY_ID; - - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenPublisherEnum( - _In_opt_ EVT_HANDLE Session, - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -671,7 +723,9 @@ - _Out_ PDWORD PublisherIdBufferUsed - ); - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenPublisherMetadata( - _In_opt_ EVT_HANDLE Session, -@@ -681,6 +735,8 @@ - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -689,7 +745,7 @@ - EVT_PUBLISHER_METADATA_PROPERTY_ID PropertyId, - DWORD Flags, - DWORD PublisherMetadataPropertyBufferSize, -- _Out_writes_bytes_to_opt_(PublisherMetadataPropertyBufferSize, *PublisherMetadataPropertyBufferUsed) PEVT_VARIANT PublisherMetadataPropertyBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PublisherMetadataPropertyBufferSize, *PublisherMetadataPropertyBufferUsed) PEVT_VARIANT PublisherMetadataPropertyBuffer, - _Out_ PDWORD PublisherMetadataPropertyBufferUsed - ); - -@@ -715,20 +771,26 @@ - } EVT_EVENT_METADATA_PROPERTY_ID; - - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtOpenEventMetadataEnum( - _In_ EVT_HANDLE PublisherMetadata, - DWORD Flags - ); - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtNextEventMetadata( - _In_ EVT_HANDLE EventMetadataEnum, - DWORD Flags - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -737,7 +799,7 @@ - EVT_EVENT_METADATA_PROPERTY_ID PropertyId, - DWORD Flags, - DWORD EventMetadataPropertyBufferSize, -- _Out_writes_bytes_to_opt_(EventMetadataPropertyBufferSize, *EventMetadataPropertyBufferUsed) PEVT_VARIANT EventMetadataPropertyBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(EventMetadataPropertyBufferSize, *EventMetadataPropertyBufferUsed) PEVT_VARIANT EventMetadataPropertyBuffer, - _Out_ PDWORD EventMetadataPropertyBufferUsed - ); - -@@ -750,6 +812,8 @@ - typedef HANDLE EVT_OBJECT_ARRAY_PROPERTY_HANDLE; - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -758,6 +822,8 @@ - _Out_ PDWORD ObjectArraySize - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -767,7 +833,7 @@ - DWORD ArrayIndex, - DWORD Flags, - DWORD PropertyValueBufferSize, -- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, - _Out_ PDWORD PropertyValueBufferUsed - ); - -@@ -805,6 +871,8 @@ - } EVT_EVENT_PROPERTY_ID; - - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -812,16 +880,20 @@ - _In_ EVT_HANDLE QueryOrSubscription, - EVT_QUERY_PROPERTY_ID PropertyId, - DWORD PropertyValueBufferSize, -- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, - _Out_ PDWORD PropertyValueBufferUsed - ); - --EVT_HANDLE -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ -+_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE - WINAPI - EvtCreateBookmark( - _In_opt_z_ LPCWSTR BookmarkXml - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - BOOL - WINAPI - EvtUpdateBookmark( -@@ -829,6 +901,8 @@ - _In_ EVT_HANDLE Event - ); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_WindowsVista_ - _Success_(return != 0) - BOOL - WINAPI -@@ -836,7 +910,7 @@ - _In_ EVT_HANDLE Event, - EVT_EVENT_PROPERTY_ID PropertyId, - DWORD PropertyValueBufferSize, -- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, -+ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, - _Out_ PDWORD PropertyValueBufferUsed - ); - + + #ifndef __WINEVT_H__ + #define __WINEVT_H__ ++ ++#include + #include + + #pragma region Desktop Family or EventLogService Package +@@ -154,7 +156,9 @@ + + + // Timeout and Flags must currently be 0 +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenSession( + EVT_LOGIN_CLASS LoginClass, +@@ -169,6 +173,8 @@ + // + //////////////////////////////////////////////////////////////////////////////// + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -177,12 +183,15 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtCancel( + _In_opt_ EVT_HANDLE Object + ); + ++_Win32_SupportedOS_WindowsVista_ + _Success_(return == ERROR_SUCCESS) + DWORD + WINAPI +@@ -223,7 +232,9 @@ + } EVT_SEEK_FLAGS; + + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtQuery( + _In_opt_ EVT_HANDLE Session, +@@ -232,6 +243,8 @@ + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -245,6 +258,8 @@ + ); + + // Timeout must currently be 0 ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtSeek( +@@ -286,7 +301,9 @@ + _Maybenull_ PVOID UserContext, + _In_ EVT_HANDLE Event ); + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtSubscribe( + _In_opt_ EVT_HANDLE Session, +@@ -345,7 +362,9 @@ + + } EVT_RENDER_FLAGS; + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtCreateRenderContext( + DWORD ValuePathsCount, +@@ -353,6 +372,8 @@ + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -361,7 +382,7 @@ + _In_ EVT_HANDLE Fragment, + DWORD Flags, + DWORD BufferSize, +- _Out_writes_bytes_to_opt_(BufferSize, *BufferUsed) PVOID Buffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(BufferSize, *BufferUsed) PVOID Buffer, + _Out_ PDWORD BufferUsed, + _Out_ PDWORD PropertyCount + ); +@@ -382,6 +403,8 @@ + + + // PublisherMetadata is NULL for forwarded events ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -423,7 +446,9 @@ + + } EVT_LOG_PROPERTY_ID; + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenLog( + _In_opt_ EVT_HANDLE Session, +@@ -431,6 +456,8 @@ + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -442,6 +469,8 @@ + _Out_ PDWORD PropertyValueBufferUsed + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtClearLog( +@@ -461,6 +490,8 @@ + + } EVT_EXPORTLOG_FLAGS; + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtExportLog( +@@ -472,6 +503,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtArchiveExportedLog( +@@ -546,13 +579,17 @@ + } EVT_CHANNEL_SID_TYPE; + + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenChannelEnum( + _In_opt_ EVT_HANDLE Session, + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -563,7 +600,9 @@ + _Out_ PDWORD ChannelPathBufferUsed + ); + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenChannelConfig( + _In_opt_ EVT_HANDLE Session, +@@ -572,6 +611,8 @@ + ); + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtSaveChannelConfig( +@@ -579,6 +620,8 @@ + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtSetChannelConfigProperty( +@@ -588,6 +631,8 @@ + _In_ PEVT_VARIANT PropertyValue + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -596,7 +641,7 @@ + EVT_CHANNEL_CONFIG_PROPERTY_ID PropertyId, + DWORD Flags, + DWORD PropertyValueBufferSize, +- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, + _Out_ PDWORD PropertyValueBufferUsed + ); + +@@ -654,13 +699,17 @@ + } EVT_PUBLISHER_METADATA_PROPERTY_ID; + + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenPublisherEnum( + _In_opt_ EVT_HANDLE Session, + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -671,7 +720,9 @@ + _Out_ PDWORD PublisherIdBufferUsed + ); + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenPublisherMetadata( + _In_opt_ EVT_HANDLE Session, +@@ -681,6 +732,8 @@ + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -689,7 +742,7 @@ + EVT_PUBLISHER_METADATA_PROPERTY_ID PropertyId, + DWORD Flags, + DWORD PublisherMetadataPropertyBufferSize, +- _Out_writes_bytes_to_opt_(PublisherMetadataPropertyBufferSize, *PublisherMetadataPropertyBufferUsed) PEVT_VARIANT PublisherMetadataPropertyBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PublisherMetadataPropertyBufferSize, *PublisherMetadataPropertyBufferUsed) PEVT_VARIANT PublisherMetadataPropertyBuffer, + _Out_ PDWORD PublisherMetadataPropertyBufferUsed + ); + +@@ -715,20 +768,26 @@ + } EVT_EVENT_METADATA_PROPERTY_ID; + + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtOpenEventMetadataEnum( + _In_ EVT_HANDLE PublisherMetadata, + DWORD Flags + ); + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtNextEventMetadata( + _In_ EVT_HANDLE EventMetadataEnum, + DWORD Flags + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -737,7 +796,7 @@ + EVT_EVENT_METADATA_PROPERTY_ID PropertyId, + DWORD Flags, + DWORD EventMetadataPropertyBufferSize, +- _Out_writes_bytes_to_opt_(EventMetadataPropertyBufferSize, *EventMetadataPropertyBufferUsed) PEVT_VARIANT EventMetadataPropertyBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(EventMetadataPropertyBufferSize, *EventMetadataPropertyBufferUsed) PEVT_VARIANT EventMetadataPropertyBuffer, + _Out_ PDWORD EventMetadataPropertyBufferUsed + ); + +@@ -750,6 +809,8 @@ + typedef HANDLE EVT_OBJECT_ARRAY_PROPERTY_HANDLE; + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -758,6 +819,8 @@ + _Out_ PDWORD ObjectArraySize + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -767,7 +830,7 @@ + DWORD ArrayIndex, + DWORD Flags, + DWORD PropertyValueBufferSize, +- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, + _Out_ PDWORD PropertyValueBufferUsed + ); + +@@ -805,6 +868,8 @@ + } EVT_EVENT_PROPERTY_ID; + + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -812,16 +877,20 @@ + _In_ EVT_HANDLE QueryOrSubscription, + EVT_QUERY_PROPERTY_ID PropertyId, + DWORD PropertyValueBufferSize, +- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, + _Out_ PDWORD PropertyValueBufferUsed + ); + +-EVT_HANDLE ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ ++_Win32_RAIIFree_(EvtClose, 0) EVT_HANDLE + WINAPI + EvtCreateBookmark( + _In_opt_z_ LPCWSTR BookmarkXml + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + BOOL + WINAPI + EvtUpdateBookmark( +@@ -829,6 +898,8 @@ + _In_ EVT_HANDLE Event + ); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_WindowsVista_ + _Success_(return != 0) + BOOL + WINAPI +@@ -836,7 +907,7 @@ + _In_ EVT_HANDLE Event, + EVT_EVENT_PROPERTY_ID PropertyId, + DWORD PropertyValueBufferSize, +- _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, ++ _Win32_ContainsInteriorPointers_ _Out_writes_bytes_to_opt_(PropertyValueBufferSize, *PropertyValueBufferUsed) PEVT_VARIANT PropertyValueBuffer, + _Out_ PDWORD PropertyValueBufferUsed + ); + diff --git a/generation/WinSDK/patches/um/winineti.h.patch b/generation/WinSDK/patches/um/winineti.h.patch index 5fc8be830..0da985926 100644 --- a/generation/WinSDK/patches/um/winineti.h.patch +++ b/generation/WinSDK/patches/um/winineti.h.patch @@ -1,17 +1,7 @@ diff --git a/um/winineti.h b/um/winineti.h --- a/um/winineti.h +++ b/um/winineti.h -@@ -670,6 +670,9 @@ - // - - DECLARE_HANDLE(HTTP_PUSH_WAIT_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTTP_PUSH_WAIT_HANDLE HTTP_PUSH_WAIT_HANDLE; -+#endif - - typedef struct _HTTP_PUSH_TRANSPORT_SETTING - { -@@ -1042,6 +1045,8 @@ +@@ -1042,6 +1042,8 @@ #define INTERNET_CACHE_CONTAINER_SHARE_READ (0x100) #define INTERNET_CACHE_CONTAINER_SHARE_READ_WRITE (0x300) @@ -20,7 +10,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI CreateUrlCacheContainerA( _In_ LPCSTR Name, _In_ LPCSTR lpCachePrefix, -@@ -1052,6 +1057,8 @@ +@@ -1052,6 +1054,8 @@ _Reserved_ LPVOID pvBuffer, _Reserved_ LPDWORD cbBuffer ); @@ -29,7 +19,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI CreateUrlCacheContainerW( _In_ LPCWSTR Name, _In_ LPCWSTR lpCachePrefix, -@@ -1068,10 +1075,14 @@ +@@ -1068,10 +1072,14 @@ #define CreateUrlCacheContainer CreateUrlCacheContainerA #endif // !UNICODE @@ -44,7 +34,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI DeleteUrlCacheContainerW( _In_ LPCWSTR Name, _In_ DWORD dwOptions -@@ -1161,11 +1172,15 @@ +@@ -1161,11 +1169,15 @@ } WININET_SYNC_MODE; @@ -60,7 +50,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI FreeUrlCacheSpaceW( _In_opt_ LPCWSTR lpszCachePath, _In_ DWORD dwSize, -@@ -1229,17 +1244,42 @@ +@@ -1229,17 +1241,42 @@ #define CACHE_CONFIG_CONTENT_USAGE_FC 0x00002000 #define CACHE_CONFIG_STICKY_CONTENT_USAGE_FC 0x00004000 @@ -106,7 +96,7 @@ diff --git a/um/winineti.h b/um/winineti.h ); #ifdef UNICODE #define GetUrlCacheConfigInfo GetUrlCacheConfigInfoW -@@ -1737,6 +1777,7 @@ +@@ -1737,6 +1774,7 @@ // Autodial APIs // @@ -114,7 +104,7 @@ diff --git a/um/winineti.h b/um/winineti.h INTERNETAPI_(DWORD) InternetDialA( _In_ HWND hwndParent, _In_opt_ LPSTR lpszConnectoid, -@@ -1745,7 +1786,7 @@ +@@ -1745,7 +1783,7 @@ _Reserved_ DWORD dwReserved ); @@ -123,7 +113,7 @@ diff --git a/um/winineti.h b/um/winineti.h _In_ HWND hwndParent, _In_opt_ LPWSTR lpszConnectoid, _In_ DWORD dwFlags, -@@ -1759,6 +1800,7 @@ +@@ -1759,6 +1797,7 @@ #ifdef _WINX32_ #define InternetDial InternetDialA #else @@ -131,7 +121,7 @@ diff --git a/um/winineti.h b/um/winineti.h INTERNETAPI_(DWORD) InternetDial( _In_ HWND hwndParent, _In_opt_ LPSTR lpszConnectoid, -@@ -1775,7 +1817,7 @@ +@@ -1775,7 +1814,7 @@ #define INTERNET_DIAL_SHOW_OFFLINE 0x4000 #define INTERNET_DIAL_UNATTENDED 0x8000 @@ -140,7 +130,7 @@ diff --git a/um/winineti.h b/um/winineti.h _In_ DWORD_PTR dwConnection, _Reserved_ DWORD dwReserved); -@@ -1783,12 +1825,16 @@ +@@ -1783,12 +1822,16 @@ #define INTERENT_GOONLINE_NOPROMPT 0x00000002 #define INTERENT_GOONLINE_MASK 0x00000003 @@ -157,7 +147,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI InternetGoOnlineW( _In_opt_ LPCWSTR lpszURL, _In_ HWND hwndParent, -@@ -1801,6 +1847,8 @@ +@@ -1801,6 +1844,8 @@ #ifdef _WINX32_ #define InternetGoOnline InternetGoOnlineA #else @@ -166,7 +156,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI InternetGoOnline( _In_opt_ LPSTR lpszURL, _In_ HWND hwndParent, -@@ -1809,8 +1857,10 @@ +@@ -1809,8 +1854,10 @@ #endif // _WINX32_ #endif // !UNICODE @@ -178,7 +168,7 @@ diff --git a/um/winineti.h b/um/winineti.h _In_opt_ HWND hwndParent); // Flags for InternetAutodial -@@ -1821,24 +1871,32 @@ +@@ -1821,24 +1868,32 @@ #define INTERNET_AUTODIAL_FLAGS_MASK (INTERNET_AUTODIAL_FORCE_ONLINE | INTERNET_AUTODIAL_FORCE_UNATTENDED | INTERNET_AUTODIAL_FAILIFSECURITYCHECK | INTERNET_AUTODIAL_OVERRIDE_NET_PRESENT) @@ -214,7 +204,7 @@ diff --git a/um/winineti.h b/um/winineti.h _Out_writes_opt_(cchNameLen) LPWSTR lpszConnectionName, _In_ DWORD cchNameLen, _Reserved_ DWORD dwReserved -@@ -1880,16 +1938,21 @@ +@@ -1880,16 +1935,21 @@ #define INTERNET_AUTOPROXY_INIT_MASK (INTERNET_AUTOPROXY_INIT_DEFAULT|INTERNET_AUTOPROXY_INIT_DOWNLOADSYNC|INTERNET_AUTOPROXY_INIT_QUERYSTATE|INTERNET_AUTOPROXY_INIT_ONLYQUERY) @@ -236,7 +226,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI CreateMD5SSOHash ( _In_ PWSTR pszChallengeInfo, _In_ PWSTR pwszRealm, -@@ -1903,8 +1966,10 @@ +@@ -1903,8 +1963,10 @@ #ifdef _WINX32_ #define InternetGetConnectedStateEx InternetGetConnectedStateExA #else @@ -248,7 +238,7 @@ diff --git a/um/winineti.h b/um/winineti.h _Out_writes_opt_(dwNameLen) LPSTR lpszConnectionName, _In_ DWORD dwNameLen, _In_ DWORD dwReserved -@@ -2107,12 +2172,14 @@ +@@ -2107,12 +2169,14 @@ #endif // !UNICODE @@ -263,7 +253,7 @@ diff --git a/um/winineti.h b/um/winineti.h BOOLAPI InternetEnumPerSiteCookieDecisionW( _Out_writes_to_(*pcSiteNameSize, *pcSiteNameSize) LPWSTR pszSiteName, _Inout_ unsigned long *pcSiteNameSize, -@@ -2145,6 +2212,7 @@ +@@ -2145,6 +2209,7 @@ #define PRIVACY_TYPE_FIRST_PARTY 0 #define PRIVACY_TYPE_THIRD_PARTY 1 @@ -271,7 +261,7 @@ diff --git a/um/winineti.h b/um/winineti.h INTERNETAPI_(DWORD) PrivacySetZonePreferenceW( _In_ DWORD dwZone, -@@ -2153,6 +2221,7 @@ +@@ -2153,6 +2218,7 @@ _In_opt_ LPCWSTR pszPreference ); diff --git a/generation/WinSDK/patches/um/winldap.h.patch b/generation/WinSDK/patches/um/winldap.h.patch index 2dd7dead5..f9340aa70 100644 --- a/generation/WinSDK/patches/um/winldap.h.patch +++ b/generation/WinSDK/patches/um/winldap.h.patch @@ -1158,17 +1158,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI int LDAPAPI LdapUnicodeToUTF8( -@@ -2538,6 +2728,9 @@ - #define LDAP_SERVER_RESP_SORT_OID_W L"1.2.840.113556.1.4.474" - - typedef struct ldapsearch LDAPSearch, *PLDAPSearch; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PLDAPSearch PLDAPSearch; -+#endif - - typedef struct ldapsortkeyW { - -@@ -2570,6 +2763,7 @@ +@@ -2570,6 +2760,7 @@ // Use this one rather than ldap_encode_sort_control as this is per RFC. // @@ -1176,7 +1166,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_sort_controlA ( PLDAP ExternalHandle, PLDAPSortKeyA *SortKeys, -@@ -2577,6 +2771,7 @@ +@@ -2577,6 +2768,7 @@ PLDAPControlA *Control ); @@ -1184,7 +1174,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_sort_controlW ( PLDAP ExternalHandle, PLDAPSortKeyW *SortKeys, -@@ -2589,6 +2784,7 @@ +@@ -2589,6 +2781,7 @@ // to free the attribute value, if it's returned. // @@ -1192,7 +1182,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_controlA ( PLDAP ExternalHandle, PLDAPControlA *Control, -@@ -2596,6 +2792,7 @@ +@@ -2596,6 +2789,7 @@ _Outptr_opt_result_maybenull_ PCHAR *Attribute ); @@ -1200,7 +1190,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_controlW ( PLDAP ExternalHandle, PLDAPControlW *Control, -@@ -2610,6 +2807,7 @@ +@@ -2610,6 +2804,7 @@ #else @@ -1208,7 +1198,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_sort_control ( PLDAP ExternalHandle, PLDAPSortKeyA *SortKeys, -@@ -2617,6 +2815,7 @@ +@@ -2617,6 +2812,7 @@ PLDAPControlA *Control ); @@ -1216,7 +1206,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_sort_control ( PLDAP ExternalHandle, PLDAPControlA *Control, -@@ -2634,6 +2833,7 @@ +@@ -2634,6 +2830,7 @@ // ldap_create_sort_control defined above. // @@ -1224,7 +1214,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_controlW ( PLDAP ExternalHandle, PLDAPSortKeyW *SortKeys, -@@ -2641,6 +2841,7 @@ +@@ -2641,6 +2838,7 @@ BOOLEAN Criticality ); @@ -1232,7 +1222,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_controlA ( PLDAP ExternalHandle, PLDAPSortKeyA *SortKeys, -@@ -2654,6 +2855,7 @@ +@@ -2654,6 +2852,7 @@ #else @@ -1240,7 +1230,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_encode_sort_control ( PLDAP ExternalHandle, PLDAPSortKeyA *SortKeys, -@@ -2668,6 +2870,7 @@ +@@ -2668,6 +2867,7 @@ // ldap_create_page_control. // @@ -1248,7 +1238,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_page_controlW( PLDAP ExternalHandle, ULONG PageSize, -@@ -2676,6 +2879,7 @@ +@@ -2676,6 +2876,7 @@ PLDAPControlW *Control ); @@ -1256,7 +1246,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_page_controlA( PLDAP ExternalHandle, ULONG PageSize, -@@ -2684,6 +2888,7 @@ +@@ -2684,6 +2885,7 @@ PLDAPControlA *Control ); @@ -1264,7 +1254,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_page_controlW ( PLDAP ExternalHandle, PLDAPControlW *ServerControls, -@@ -2691,6 +2896,7 @@ +@@ -2691,6 +2893,7 @@ struct berval **Cookie // Use ber_bvfree to free ); @@ -1272,7 +1262,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_page_controlA ( PLDAP ExternalHandle, PLDAPControlA *ServerControls, -@@ -2705,6 +2911,7 @@ +@@ -2705,6 +2908,7 @@ #else @@ -1280,7 +1270,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_create_page_control( PLDAP ExternalHandle, ULONG PageSize, -@@ -2713,6 +2920,7 @@ +@@ -2713,6 +2917,7 @@ PLDAPControlA *Control ); @@ -1288,7 +1278,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_page_control ( PLDAP ExternalHandle, PLDAPControlA *ServerControls, -@@ -2756,6 +2964,8 @@ +@@ -2756,6 +2961,8 @@ #define LDAP_PAGED_RESULT_OID_STRING "1.2.840.113556.1.4.319" #define LDAP_PAGED_RESULT_OID_STRING_W L"1.2.840.113556.1.4.319" @@ -1297,7 +1287,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_pageW( PLDAP ExternalHandle, _In_ const PWSTR DistinguishedName, -@@ -2770,6 +2980,8 @@ +@@ -2770,6 +2977,8 @@ PLDAPSortKeyW *SortKeys ); @@ -1306,7 +1296,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_pageA( PLDAP ExternalHandle, _In_ const PSTR DistinguishedName, -@@ -2790,6 +3002,8 @@ +@@ -2790,6 +2999,8 @@ #else @@ -1315,7 +1305,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI PLDAPSearch LDAPAPI ldap_search_init_page( PLDAP ExternalHandle, const PSTR DistinguishedName, -@@ -2806,6 +3020,7 @@ +@@ -2806,6 +3017,7 @@ #endif @@ -1323,7 +1313,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_get_next_page( PLDAP ExternalHandle, PLDAPSearch SearchHandle, -@@ -2813,6 +3028,7 @@ +@@ -2813,6 +3025,7 @@ ULONG *MessageNumber ); @@ -1331,7 +1321,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_get_next_page_s( PLDAP ExternalHandle, PLDAPSearch SearchHandle, -@@ -2822,6 +3038,7 @@ +@@ -2822,6 +3035,7 @@ LDAPMessage **Results ); @@ -1339,7 +1329,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_get_paged_count( PLDAP ExternalHandle, PLDAPSearch SearchBlock, -@@ -2829,6 +3046,7 @@ +@@ -2829,6 +3043,7 @@ PLDAPMessage Results ); @@ -1347,7 +1337,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_search_abandon_page( PLDAP ExternalHandle, PLDAPSearch SearchBlock -@@ -2872,6 +3090,7 @@ +@@ -2872,6 +3087,7 @@ } LDAPVLVInfo, *PLDAPVLVInfo; @@ -1355,7 +1345,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI INT LDAPAPI ldap_create_vlv_controlW ( PLDAP ExternalHandle, PLDAPVLVInfo VlvInfo, -@@ -2879,6 +3098,7 @@ +@@ -2879,6 +3095,7 @@ PLDAPControlW *Control ); @@ -1363,7 +1353,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI INT LDAPAPI ldap_create_vlv_controlA ( PLDAP ExternalHandle, PLDAPVLVInfo VlvInfo, -@@ -2886,6 +3106,7 @@ +@@ -2886,6 +3103,7 @@ PLDAPControlA *Control ); @@ -1371,7 +1361,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI INT LDAPAPI ldap_parse_vlv_controlW ( PLDAP ExternalHandle, PLDAPControlW *Control, -@@ -2895,6 +3116,7 @@ +@@ -2895,6 +3113,7 @@ PINT ErrCode ); @@ -1379,7 +1369,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI INT LDAPAPI ldap_parse_vlv_controlA ( PLDAP ExternalHandle, PLDAPControlA *Control, -@@ -2940,6 +3162,7 @@ +@@ -2940,6 +3159,7 @@ // The operation has a default timeout of about 30 seconds. // @@ -1387,7 +1377,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_start_tls_sW ( IN PLDAP ExternalHandle, OUT PULONG ServerReturnValue, -@@ -2949,6 +3172,7 @@ +@@ -2949,6 +3169,7 @@ ); @@ -1395,7 +1385,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_start_tls_sA ( IN PLDAP ExternalHandle, OUT PULONG ServerReturnValue, -@@ -2970,6 +3194,7 @@ +@@ -2970,6 +3191,7 @@ // The operation has a default timeout of about 30 seconds. // @@ -1403,7 +1393,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI BOOLEAN LDAPAPI ldap_stop_tls_s ( IN PLDAP ExternalHandle ); -@@ -3009,6 +3234,7 @@ +@@ -3009,6 +3231,7 @@ // freed so should not be freed explicitly. // @@ -1411,7 +1401,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI LDAPMessage *LDAPAPI ldap_first_reference( LDAP *ld, LDAPMessage *res ); // -@@ -3016,6 +3242,7 @@ +@@ -3016,6 +3239,7 @@ // freed so should not be freed explicitly. // @@ -1419,7 +1409,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI LDAPMessage *LDAPAPI ldap_next_reference( LDAP *ld, LDAPMessage *entry ); // -@@ -3023,18 +3250,21 @@ +@@ -3023,18 +3247,21 @@ // response to a search request. // @@ -1441,7 +1431,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_referenceA ( LDAP *Connection, LDAPMessage *ResultMessage, -@@ -3047,6 +3277,7 @@ +@@ -3047,6 +3274,7 @@ #else @@ -1449,7 +1439,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_parse_reference ( LDAP *Connection, LDAPMessage *ResultMessage, -@@ -3066,6 +3297,7 @@ +@@ -3066,6 +3294,7 @@ // These are thread safe. // @@ -1457,7 +1447,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_extended_operationW( LDAP *ld, _In_ const PWSTR Oid, -@@ -3075,6 +3307,7 @@ +@@ -3075,6 +3304,7 @@ ULONG *MessageNumber ); @@ -1465,7 +1455,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_extended_operationA( LDAP *ld, _In_ const PSTR Oid, -@@ -3084,6 +3317,7 @@ +@@ -3084,6 +3314,7 @@ ULONG *MessageNumber ); @@ -1473,7 +1463,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_extended_operation_sA ( LDAP *ExternalHandle, _In_ PSTR Oid, -@@ -3094,6 +3328,7 @@ +@@ -3094,6 +3325,7 @@ struct berval **ReturnedData ); @@ -1481,7 +1471,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_extended_operation_sW ( LDAP *ExternalHandle, _In_ PWSTR Oid, -@@ -3113,6 +3348,7 @@ +@@ -3113,6 +3345,7 @@ #else @@ -1489,7 +1479,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_extended_operation( LDAP *ld, const PSTR Oid, -@@ -3126,6 +3362,7 @@ +@@ -3126,6 +3359,7 @@ #endif @@ -1497,7 +1487,7 @@ diff --git a/um/winldap.h b/um/winldap.h WINLDAPAPI ULONG LDAPAPI ldap_close_extended_op( LDAP *ld, ULONG MessageNumber -@@ -3225,13 +3462,16 @@ +@@ -3225,13 +3459,16 @@ // LdapGetLastError(); // @@ -1515,7 +1505,7 @@ diff --git a/um/winldap.h b/um/winldap.h // // This is an arrangement for specifying client certificates while establishing -@@ -3289,6 +3529,7 @@ +@@ -3289,6 +3526,7 @@ // came from. It can return NULL if the connection has already been freed. // diff --git a/generation/WinSDK/patches/um/winnls.h.patch b/generation/WinSDK/patches/um/winnls.h.patch index 0723fbbda..e341e3c29 100644 --- a/generation/WinSDK/patches/um/winnls.h.patch +++ b/generation/WinSDK/patches/um/winnls.h.patch @@ -850,17 +850,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2584,6 +2817,9 @@ - #if (NTDDI_VERSION >= NTDDI_WIN10_VB) - - DECLARE_HANDLE(HSAVEDUILANGUAGES); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSAVEDUILANGUAGES HSAVEDUILANGUAGES; -+#endif - - WINBASEAPI - BOOL -@@ -2609,6 +2845,7 @@ +@@ -2609,6 +2842,7 @@ #if(WINVER >= 0x0600) @@ -868,7 +858,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2616,7 +2853,7 @@ +@@ -2616,7 +2850,7 @@ _In_ DWORD dwFlags, _In_opt_ PCWSTR pcwstrNewLanguage, _In_opt_ PCWSTR pcwstrPreviousLanguage, @@ -877,7 +867,7 @@ diff --git a/um/winnls.h b/um/winnls.h _Out_opt_ PDWORD pdwStatusRtrn ); -@@ -2658,6 +2895,8 @@ +@@ -2658,6 +2892,8 @@ // // GetStringTypeEx (above) should be used instead. // @@ -886,7 +876,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2668,11 +2907,13 @@ +@@ -2668,11 +2904,13 @@ _In_ int cchSrc, _Out_ LPWORD lpCharType); @@ -901,7 +891,7 @@ diff --git a/um/winnls.h b/um/winnls.h _In_reads_(cchSrc) LPCSTR lpSrcStr, _In_ int cchSrc, _Out_writes_opt_(cchDest) LPSTR lpDestStr, -@@ -2690,6 +2931,8 @@ +@@ -2690,6 +2928,8 @@ #if(WINVER >= 0x0500) // DEPRECATED, please use Locale Names and call EnumSystemLocalesEx @@ -910,7 +900,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2697,6 +2940,8 @@ +@@ -2697,6 +2937,8 @@ _In_ LOCALE_ENUMPROCA lpLocaleEnumProc, _In_ DWORD dwFlags); // DEPRECATED, please use Locale Names and call EnumSystemLocalesEx @@ -919,7 +909,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2720,20 +2965,24 @@ +@@ -2720,20 +2962,24 @@ #if(WINVER >= 0x0500) DEPRECATED("The Language Group concept is obsolete and no longer supported. Set DISABLE_NLS_DEPRECATION to disable this warning.") @@ -946,7 +936,7 @@ diff --git a/um/winnls.h b/um/winnls.h _In_ LONG_PTR lParam); #ifdef UNICODE #define EnumSystemLanguageGroups EnumSystemLanguageGroupsW -@@ -2742,6 +2991,8 @@ +@@ -2742,6 +2988,8 @@ #endif // !UNICODE DEPRECATED("The Language Group concept is obsolete and no longer supported. Set DISABLE_NLS_DEPRECATION to disable this warning.") @@ -955,7 +945,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2751,6 +3002,8 @@ +@@ -2751,6 +2999,8 @@ _In_ DWORD dwFlags, _In_ LONG_PTR lParam); DEPRECATED("The Language Group concept is obsolete and no longer supported. Set DISABLE_NLS_DEPRECATION to disable this warning.") @@ -964,7 +954,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2772,6 +3025,8 @@ +@@ -2772,6 +3022,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) // DEPRECATED: use the user language profile instead. @@ -973,7 +963,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2780,6 +3035,8 @@ +@@ -2780,6 +3032,8 @@ _In_ DWORD dwFlags, _In_ LONG_PTR lParam); // DEPRECATED: use the user language profile instead. @@ -982,7 +972,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -2802,19 +3059,23 @@ +@@ -2802,19 +3056,23 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP | WINAPI_PARTITION_SYSTEM) // Please use Unicode instead. Use of other code pages/encodings is discouraged. @@ -1008,7 +998,7 @@ diff --git a/um/winnls.h b/um/winnls.h #ifdef UNICODE #define EnumSystemCodePages EnumSystemCodePagesW #else -@@ -2836,6 +3097,8 @@ +@@ -2836,6 +3094,8 @@ // // IDN (International Domain Name) Functions // @@ -1017,7 +1007,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINNORMALIZEAPI int WINAPI IdnToAscii(_In_ DWORD dwFlags, -@@ -2844,6 +3107,8 @@ +@@ -2844,6 +3104,8 @@ _Out_writes_opt_(cchASCIIChar) LPWSTR lpASCIICharStr, _In_ int cchASCIIChar); @@ -1026,7 +1016,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINNORMALIZEAPI int WINAPI IdnToUnicode(_In_ DWORD dwFlags, -@@ -2852,6 +3117,8 @@ +@@ -2852,6 +3114,8 @@ _Out_writes_opt_(cchUnicodeChar) LPWSTR lpUnicodeCharStr, _In_ int cchUnicodeChar); @@ -1035,7 +1025,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINNORMALIZEAPI int WINAPI IdnToNameprepUnicode(_In_ DWORD dwFlags, -@@ -2870,6 +3137,8 @@ +@@ -2870,6 +3134,8 @@ #if (WINVER >= 0x0600) @@ -1044,7 +1034,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINNORMALIZEAPI int WINAPI NormalizeString( _In_ NORM_FORM NormForm, -@@ -2878,12 +3147,16 @@ +@@ -2878,12 +3144,16 @@ _Out_writes_opt_(cwDstLength) LPWSTR lpDstString, _In_ int cwDstLength ); @@ -1061,7 +1051,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI VerifyScripts( -@@ -2893,6 +3166,8 @@ +@@ -2893,6 +3163,8 @@ _In_ LPCWSTR lpTestScripts, // test scripts string _In_ int cchTestScripts); // size of test list string @@ -1070,7 +1060,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI GetStringScripts( -@@ -2920,6 +3195,8 @@ +@@ -2920,6 +3192,8 @@ #define LOCALE_NAME_INVARIANT L"" #define LOCALE_NAME_SYSTEM_DEFAULT L"!x-sys-default-locale" @@ -1079,7 +1069,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -2936,13 +3213,15 @@ +@@ -2936,13 +3210,15 @@ #pragma region Desktop or PC Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP | WINAPI_PARTITION_SYSTEM) @@ -1096,7 +1086,7 @@ diff --git a/um/winnls.h b/um/winnls.h _In_ CALTYPE CalType, _Out_writes_opt_(cchData) LPWSTR lpCalData, _In_ int cchData, -@@ -2956,7 +3235,7 @@ +@@ -2956,7 +3232,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #ifndef GetDurationFormatEx_DEFINED @@ -1105,7 +1095,7 @@ diff --git a/um/winnls.h b/um/winnls.h int WINAPI GetDurationFormatEx( -@@ -2976,6 +3255,8 @@ +@@ -2976,6 +3252,8 @@ #pragma region Application Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -1114,7 +1104,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -2988,6 +3269,8 @@ +@@ -2988,6 +3266,8 @@ _In_ int cchNumber ); @@ -1123,7 +1113,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -3000,6 +3283,8 @@ +@@ -3000,6 +3280,8 @@ _In_ int cchCurrency ); @@ -1132,7 +1122,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -3014,6 +3299,8 @@ +@@ -3014,6 +3296,8 @@ #pragma region Desktop or PC Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP | WINAPI_PARTITION_SYSTEM) @@ -1141,7 +1131,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -3022,6 +3309,8 @@ +@@ -3022,6 +3306,8 @@ _In_ int cchLocaleName ); @@ -1150,7 +1140,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3032,6 +3321,8 @@ +@@ -3032,6 +3318,8 @@ _In_reads_(cchStr) LPCWSTR lpString, _In_ INT cchStr); @@ -1159,7 +1149,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3042,6 +3333,7 @@ +@@ -3042,6 +3330,7 @@ ); #if (WINVER >= _WIN32_WINNT_WIN8) @@ -1167,7 +1157,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI DWORD WINAPI -@@ -3058,6 +3350,8 @@ +@@ -3058,6 +3347,8 @@ #pragma region Application Family or OneCore or Gamaes Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) @@ -1176,7 +1166,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI int WINAPI -@@ -3070,11 +3364,13 @@ +@@ -3070,11 +3361,13 @@ _In_ int cchValue, _Out_opt_ LPINT pcchFound, _In_opt_ LPNLSVERSIONINFO lpVersionInformation, @@ -1191,7 +1181,7 @@ diff --git a/um/winnls.h b/um/winnls.h _When_((dwMapFlags & (LCMAP_SORTKEY | LCMAP_BYTEREV | LCMAP_HASH | LCMAP_SORTHANDLE)) != 0, _At_((LPBYTE) lpDestStr, _Out_writes_bytes_opt_(cchDest))) #else _When_((dwMapFlags & (LCMAP_SORTKEY | LCMAP_BYTEREV)) != 0, _At_((LPBYTE) lpDestStr, _Out_writes_bytes_opt_(cchDest))) -@@ -3092,10 +3388,11 @@ +@@ -3092,10 +3385,11 @@ _Out_writes_opt_(cchDest) LPWSTR lpDestStr, _In_ int cchDest, _In_opt_ LPNLSVERSIONINFO lpVersionInformation, @@ -1204,7 +1194,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3111,6 +3408,8 @@ +@@ -3111,6 +3405,8 @@ typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXEX)(LPWSTR, CALID, LPWSTR, LPARAM); @@ -1213,7 +1203,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3118,25 +3417,29 @@ +@@ -3118,25 +3414,29 @@ _In_ CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx, _In_opt_ LPCWSTR lpLocaleName, _In_ CALID Calendar, @@ -1245,7 +1235,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3155,6 +3458,8 @@ +@@ -3155,6 +3455,8 @@ typedef BOOL (CALLBACK* LOCALE_ENUMPROCEX)(LPWSTR, DWORD, LPARAM); @@ -1254,7 +1244,7 @@ diff --git a/um/winnls.h b/um/winnls.h WINBASEAPI BOOL WINAPI -@@ -3162,7 +3467,7 @@ +@@ -3162,7 +3464,7 @@ _In_ LOCALE_ENUMPROCEX lpLocaleEnumProcEx, _In_ DWORD dwFlags, _In_ LPARAM lParam, @@ -1263,7 +1253,7 @@ diff --git a/um/winnls.h b/um/winnls.h ); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) */ -@@ -3175,6 +3480,8 @@ +@@ -3175,6 +3477,8 @@ #pragma region Application Family or OneCore or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_GAMES) diff --git a/generation/WinSDK/patches/um/winnt.h.patch b/generation/WinSDK/patches/um/winnt.h.patch index 75cf141d4..384625bae 100644 --- a/generation/WinSDK/patches/um/winnt.h.patch +++ b/generation/WinSDK/patches/um/winnt.h.patch @@ -49,66 +49,7 @@ diff --git a/um/winnt.h b/um/winnt.h #if _MSC_VER >= 1200 #pragma warning(push) -@@ -492,6 +533,7 @@ - #ifndef VOID - #define VOID void -+_Win32_NativeTypedef_ - typedef char CHAR; - typedef short SHORT; - typedef long LONG; - #if !defined(MIDL_PASS) -@@ -513,7 +555,10 @@ - typedef WCHAR *PWCHAR, *LPWCH, *PWCH; - typedef CONST WCHAR *LPCWCH, *PCWCH; - - typedef _Null_terminated_ WCHAR *NWPSTR, *LPWSTR, *PWSTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PWSTR PWSTR; -+#endif - typedef _Null_terminated_ PWSTR *PZPWSTR; - typedef _Null_terminated_ CONST PWSTR *PCZPWSTR; - typedef _Null_terminated_ WCHAR UNALIGNED *LPUWSTR, *PUWSTR; -@@ -582,7 +627,10 @@ - typedef CHAR *PCHAR, *LPCH, *PCH; - typedef CONST CHAR *LPCCH, *PCCH; - - typedef _Null_terminated_ CHAR *NPSTR, *LPSTR, *PSTR; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PSTR PSTR; -+#endif - typedef _Null_terminated_ PSTR *PZPSTR; - typedef _Null_terminated_ CONST PSTR *PCZPSTR; - typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; -@@ -709,15 +757,17 @@ - // - - #ifdef STRICT -+_Win32_NativeTypedef_ - typedef void *HANDLE; - #if 0 && (_MSC_VER > 1000) - #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name - #else - #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name - #endif - #else -+_Win32_NativeTypedef_ - typedef PVOID HANDLE; - #define DECLARE_HANDLE(name) typedef HANDLE name - #endif - typedef HANDLE *PHANDLE; - -@@ -738,8 +788,10 @@ - #ifndef _HRESULT_DEFINED - #define _HRESULT_DEFINED - #ifdef __midl -+_Win32_NativeTypedef_ - typedef LONG HRESULT; - #else -+_Win32_NativeTypedef_ - typedef _Return_type_success_(return >= 0) long HRESULT; - #endif // __midl - #endif // !_HRESULT_DEFINED -@@ -1030,21 +1082,21 @@ +@@ -1030,21 +1071,21 @@ ULONGLONG NTAPI @@ -133,7 +74,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ ULONGLONG Value, _In_ DWORD ShiftCount ); -@@ -1056,7 +1108,7 @@ +@@ -1056,7 +1097,7 @@ __inline ULONGLONG NTAPI @@ -142,7 +83,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ ULONGLONG Value, _In_ DWORD ShiftCount ) -@@ -1072,7 +1124,7 @@ +@@ -1072,7 +1113,7 @@ __inline LONGLONG NTAPI @@ -151,7 +92,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ LONGLONG Value, _In_ DWORD ShiftCount ) -@@ -1088,7 +1140,7 @@ +@@ -1088,7 +1129,7 @@ __inline ULONGLONG NTAPI @@ -160,16 +101,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ ULONGLONG Value, _In_ DWORD ShiftCount ) -@@ -1215,7 +1267,8 @@ - #define UNICODE_STRING_MAX_BYTES ((WORD ) 65534) - #define UNICODE_STRING_MAX_CHARS (32767) -+_Win32_NativeTypedef_ - typedef BYTE BOOLEAN; - typedef BOOLEAN *PBOOLEAN; - // - // Doubly linked list structure. Can be used as either a list head, or - // as link words. -@@ -3597,7 +3650,7 @@ +@@ -3597,7 +3638,7 @@ #if !defined(_M_ARM64EC) VOID @@ -178,7 +110,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ); -@@ -3625,7 +3678,7 @@ +@@ -3625,7 +3666,7 @@ ); VOID @@ -187,7 +119,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ); -@@ -4253,5 +4306,21 @@ +@@ -4253,5 +4294,21 @@ #define CONTEXT_UNWOUND_TO_CALL 0x20000000L +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) @@ -209,7 +141,7 @@ diff --git a/um/winnt.h b/um/winnt.h #endif // !defined(RC_INVOKED) // -@@ -4321,7 +4390,7 @@ +@@ -4321,7 +4378,7 @@ // Control flags. // @@ -218,7 +150,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD MxCsr; // -@@ -4439,7 +4508,11 @@ +@@ -4439,7 +4496,11 @@ #define UNW_FLAG_NHANDLER 0x0 #define UNW_FLAG_EHANDLER 0x1 #define UNW_FLAG_UHANDLER 0x2 @@ -230,7 +162,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define UNW_FLAG_NO_EPILOGUE 0x80000000UL // Software only flag -@@ -4642,7 +4715,7 @@ +@@ -4642,7 +4703,7 @@ FORCEINLINE VOID @@ -239,7 +171,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -5177,7 +5250,7 @@ +@@ -5177,7 +5238,7 @@ #if defined(_M_CEE_PURE) FORCEINLINE VOID @@ -248,7 +180,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -5229,4 +5302,13 @@ +@@ -5229,4 +5290,13 @@ #define CONTEXT_UNWOUND_TO_CALL 0x20000000L +#if defined(WIN32METADATA) && defined(__clang__) && !defined(MIDL_PASS) @@ -262,7 +194,7 @@ diff --git a/um/winnt.h b/um/winnt.h + // begin_wx86 -@@ -5290,7 +5372,7 @@ +@@ -5290,7 +5360,7 @@ // Control flags. // @@ -271,7 +203,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Integer registers -@@ -5357,7 +5439,11 @@ +@@ -5357,7 +5427,11 @@ #define UNW_FLAG_NHANDLER 0x0 /* any handler */ #define UNW_FLAG_EHANDLER 0x1 /* filter handler */ @@ -283,7 +215,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Define exception dispatch context structure. -@@ -5822,7 +5908,7 @@ +@@ -5822,7 +5896,7 @@ FORCEINLINE VOID @@ -292,7 +224,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -5838,7 +5924,7 @@ +@@ -5838,7 +5912,7 @@ FORCEINLINE VOID @@ -301,7 +233,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -6625,7 +6711,7 @@ +@@ -6625,7 +6699,7 @@ #if defined(_M_CEE_PURE) FORCEINLINE VOID @@ -310,7 +242,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -6814,7 +6900,7 @@ +@@ -6814,7 +6888,7 @@ // Control flags. // @@ -319,7 +251,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Integer registers -@@ -6911,7 +6997,7 @@ +@@ -6911,7 +6985,7 @@ // Control flags. // @@ -328,7 +260,7 @@ diff --git a/um/winnt.h b/um/winnt.h /* +0x034 */ DWORD AMD64_MxCsr_copy; -@@ -7092,7 +7178,11 @@ +@@ -7092,7 +7166,11 @@ #define UNW_FLAG_NHANDLER 0x0 /* any handler */ #define UNW_FLAG_EHANDLER 0x1 /* filter handler */ @@ -340,7 +272,7 @@ diff --git a/um/winnt.h b/um/winnt.h #if defined(_ARM64_) || defined(_CHPE_X86_ARM64_) -@@ -8299,7 +8389,7 @@ +@@ -8299,7 +8377,7 @@ #if !defined(_MANAGED) && !defined(_M_HYBRID_X86_ARM64) VOID @@ -349,7 +281,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ); -@@ -8327,7 +8417,7 @@ +@@ -8327,7 +8405,7 @@ #pragma warning(disable: 4793) FORCEINLINE VOID @@ -358,7 +290,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -8411,8 +8501,8 @@ +@@ -8411,8 +8489,8 @@ #if !defined(_MANAGED) @@ -369,7 +301,7 @@ diff --git a/um/winnt.h b/um/winnt.h #endif // !defined(_MANAGED) -@@ -8538,7 +8628,7 @@ +@@ -8538,7 +8616,7 @@ // The context record is never used as an OUT only parameter. // @@ -378,7 +310,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is -@@ -9913,7 +10003,41 @@ +@@ -9913,7 +9991,41 @@ #define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000 #define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000 #define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000 @@ -420,7 +352,7 @@ diff --git a/um/winnt.h b/um/winnt.h + #endif // !defined(RC_INVOKED) -@@ -9971,7 +10095,7 @@ +@@ -9971,7 +10083,7 @@ // The context record is never used as an OUT only parameter. // @@ -429,18 +361,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is -@@ -10157,8 +10281,10 @@ - #endif - - typedef PVOID PACCESS_TOKEN; -+_Win32_NativeTypedef_ - typedef PVOID PSECURITY_DESCRIPTOR; -+_Win32_NativeTypedef_ - typedef PVOID PSID; - typedef PVOID PCLAIMS_BLOB; - //////////////////////////////////////////////////////////////////////// - // // -@@ -10254,6 +10380,14 @@ +@@ -10254,6 +10366,14 @@ #define GENERIC_EXECUTE (0x20000000L) #define GENERIC_ALL (0x10000000L) @@ -455,7 +376,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Define the generic mapping array. This is used to denote the // mapping of each generic access right to a specific access mask. -@@ -10282,7 +10416,7 @@ +@@ -10282,7 +10402,7 @@ typedef struct _LUID_AND_ATTRIBUTES { LUID Luid; @@ -464,7 +385,7 @@ diff --git a/um/winnt.h b/um/winnt.h } LUID_AND_ATTRIBUTES, * PLUID_AND_ATTRIBUTES; typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; -@@ -11046,6 +11180,12 @@ +@@ -11046,6 +11166,12 @@ #define ACL_REVISION (2) #define ACL_REVISION_DS (4) @@ -477,7 +398,7 @@ diff --git a/um/winnt.h b/um/winnt.h // This is the history of ACL revisions. Add a new one whenever // ACL_REVISION is updated -@@ -11179,6 +11319,17 @@ +@@ -11179,6 +11305,17 @@ #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) #define FAILED_ACCESS_ACE_FLAG (0x80) @@ -495,7 +416,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // SYSTEM_ACCESS_FILTER_ACE AceFlags -@@ -11306,7 +11457,7 @@ +@@ -11306,7 +11443,7 @@ typedef struct _ACCESS_ALLOWED_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -504,7 +425,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11315,7 +11466,7 @@ +@@ -11315,7 +11452,7 @@ typedef struct _ACCESS_DENIED_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -513,7 +434,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11324,7 +11475,7 @@ +@@ -11324,7 +11461,7 @@ typedef struct _SYSTEM_AUDIT_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -522,7 +443,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11375,7 +11526,7 @@ +@@ -11375,7 +11512,7 @@ typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -531,7 +452,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11385,7 +11536,7 @@ +@@ -11385,7 +11522,7 @@ typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -540,7 +461,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11395,7 +11546,7 @@ +@@ -11395,7 +11532,7 @@ typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -549,7 +470,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11405,7 +11556,7 @@ +@@ -11405,7 +11542,7 @@ typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { ACE_HEADER Header; ACCESS_MASK Mask; @@ -558,7 +479,7 @@ diff --git a/um/winnt.h b/um/winnt.h GUID ObjectType; GUID InheritedObjectType; DWORD SidStart; -@@ -11418,6 +11569,12 @@ +@@ -11418,6 +11555,12 @@ #define ACE_OBJECT_TYPE_PRESENT 0x1 #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2 @@ -571,7 +492,7 @@ diff --git a/um/winnt.h b/um/winnt.h // -@@ -11494,6 +11651,24 @@ +@@ -11494,6 +11637,24 @@ #define SE_RM_CONTROL_VALID (0x4000) #define SE_SELF_RELATIVE (0x8000) @@ -596,7 +517,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Where: // -@@ -11570,7 +11745,7 @@ +@@ -11570,7 +11731,7 @@ typedef struct _SECURITY_DESCRIPTOR_RELATIVE { BYTE Revision; BYTE Sbz1; @@ -605,7 +526,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD Owner; DWORD Group; DWORD Sacl; -@@ -11580,7 +11755,7 @@ +@@ -11580,7 +11741,7 @@ typedef struct _SECURITY_DESCRIPTOR { BYTE Revision; BYTE Sbz1; @@ -614,7 +535,7 @@ diff --git a/um/winnt.h b/um/winnt.h PSID Owner; PSID Group; PACL Sacl; -@@ -11696,6 +11871,14 @@ +@@ -11696,6 +11857,14 @@ #define SE_PRIVILEGE_ENABLED (0x00000002L) #define SE_PRIVILEGE_REMOVED (0X00000004L) #define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L) @@ -629,7 +550,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | \ SE_PRIVILEGE_ENABLED | \ -@@ -12017,6 +12200,56 @@ +@@ -12017,6 +12186,56 @@ #define TOKEN_ACCESS_PSEUDO_HANDLE TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 @@ -686,7 +607,7 @@ diff --git a/um/winnt.h b/um/winnt.h #endif // // end_access -@@ -12202,12 +12435,20 @@ +@@ -12202,12 +12421,20 @@ #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) @@ -708,7 +629,7 @@ diff --git a/um/winnt.h b/um/winnt.h } TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; typedef PVOID PSECURITY_ATTRIBUTES_OPAQUE; -@@ -12365,6 +12606,17 @@ +@@ -12365,6 +12592,17 @@ #define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10 @@ -726,7 +647,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Attribute Flags // -@@ -12407,6 +12659,16 @@ +@@ -12407,6 +12645,16 @@ // #define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020 @@ -743,7 +664,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS ( \ -@@ -12442,7 +12704,7 @@ +@@ -12442,7 +12690,7 @@ // Data type of attribute. // @@ -752,7 +673,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Pass 0 in a set operation and check for 0 in -@@ -12494,7 +12756,7 @@ +@@ -12494,7 +12742,7 @@ // Data type of attribute. // @@ -761,7 +682,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Pass 0 in a set operation and check for 0 in -@@ -12507,7 +12769,7 @@ +@@ -12507,7 +12755,7 @@ // Attribute Flags // @@ -770,7 +691,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Number of values. -@@ -12607,6 +12869,14 @@ +@@ -12607,6 +12855,14 @@ #define SANDBOX_INERT 0x2 #define LUA_TOKEN 0x4 #define WRITE_RESTRICTED 0x8 @@ -785,7 +706,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; -@@ -12625,6 +12895,22 @@ +@@ -12625,6 +12881,22 @@ #define PROTECTED_SACL_SECURITY_INFORMATION (0x40000000L) #define UNPROTECTED_DACL_SECURITY_INFORMATION (0x20000000L) #define UNPROTECTED_SACL_SECURITY_INFORMATION (0x10000000L) @@ -808,7 +729,7 @@ diff --git a/um/winnt.h b/um/winnt.h // -@@ -12706,6 +12992,32 @@ +@@ -12706,6 +12978,32 @@ 0xFFF) #endif @@ -841,7 +762,7 @@ diff --git a/um/winnt.h b/um/winnt.h // #define THREAD_TERMINATE (0x0001) #define THREAD_SUSPEND_RESUME (0x0002) -@@ -12726,6 +13038,30 @@ +@@ -12726,6 +13024,30 @@ #else #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ 0x3FF) @@ -872,7 +793,7 @@ diff --git a/um/winnt.h b/um/winnt.h #endif // -@@ -12869,6 +13205,15 @@ +@@ -12869,6 +13191,15 @@ #define MEMORY_PRIORITY_BELOW_NORMAL 4 #define MEMORY_PRIORITY_NORMAL 5 @@ -888,7 +809,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -12955,6 +13300,14 @@ +@@ -12955,6 +13286,14 @@ #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002 #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004 #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008 @@ -903,7 +824,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010 typedef union _RATE_QUOTA_LIMIT { -@@ -13342,7 +13695,7 @@ +@@ -13342,7 +13681,7 @@ typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { LARGE_INTEGER PerProcessUserTimeLimit; LARGE_INTEGER PerJobUserTimeLimit; @@ -912,7 +833,7 @@ diff --git a/um/winnt.h b/um/winnt.h SIZE_T MinimumWorkingSetSize; SIZE_T MaximumWorkingSetSize; DWORD ActiveProcessLimit; -@@ -13372,7 +13725,7 @@ +@@ -13372,7 +13711,7 @@ } JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST; typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { @@ -921,7 +842,7 @@ diff --git a/um/winnt.h b/um/winnt.h } JOBOBJECT_BASIC_UI_RESTRICTIONS, *PJOBOBJECT_BASIC_UI_RESTRICTIONS; // -@@ -13380,7 +13733,7 @@ +@@ -13380,7 +13719,7 @@ // typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { @@ -930,7 +851,7 @@ diff --git a/um/winnt.h b/um/winnt.h HANDLE JobToken ; PTOKEN_GROUPS SidsToDisable ; PTOKEN_PRIVILEGES PrivilegesToDelete ; -@@ -13388,7 +13741,7 @@ +@@ -13388,7 +13727,7 @@ } JOBOBJECT_SECURITY_LIMIT_INFORMATION, *PJOBOBJECT_SECURITY_LIMIT_INFORMATION ; typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { @@ -939,7 +860,7 @@ diff --git a/um/winnt.h b/um/winnt.h } JOBOBJECT_END_OF_JOB_TIME_INFORMATION, *PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { -@@ -13430,7 +13783,7 @@ +@@ -13430,7 +13769,7 @@ DWORD64 JobMemoryLimit; JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance; JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval; @@ -948,7 +869,7 @@ diff --git a/um/winnt.h b/um/winnt.h } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION; typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 { -@@ -13453,7 +13806,7 @@ +@@ -13453,7 +13792,7 @@ CpuRateControlToleranceInterval; } DUMMYUNIONNAME3; @@ -957,7 +878,7 @@ diff --git a/um/winnt.h b/um/winnt.h JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance; DWORD64 JobLowMemoryLimit; JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval; -@@ -13465,7 +13818,7 @@ +@@ -13465,7 +13804,7 @@ // typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION { @@ -967,7 +888,7 @@ diff --git a/um/winnt.h b/um/winnt.h + _Win32_AssociatedEnum_(JOB_OBJECT_LIMIT) DWORD ViolationLimitFlags; DWORD64 IoReadBytes; DWORD64 IoReadBytesLimit; -@@ -13480,7 +13833,7 @@ +@@ -13480,7 +13819,7 @@ } JOBOBJECT_LIMIT_VIOLATION_INFORMATION, *PJOBOBJECT_LIMIT_VIOLATION_INFORMATION; typedef struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 { @@ -977,7 +898,7 @@ diff --git a/um/winnt.h b/um/winnt.h + _Win32_AssociatedEnum_(JOB_OBJECT_LIMIT) DWORD ViolationLimitFlags; DWORD64 IoReadBytes; DWORD64 IoReadBytesLimit; -@@ -13515,7 +13868,7 @@ +@@ -13515,7 +13854,7 @@ // typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION { @@ -986,7 +907,7 @@ diff --git a/um/winnt.h b/um/winnt.h union { DWORD CpuRate; DWORD Weight; -@@ -13530,7 +13883,11 @@ +@@ -13530,7 +13869,11 @@ // Control flags for network rate control. // @@ -999,7 +920,7 @@ diff --git a/um/winnt.h b/um/winnt.h JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1, JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2, JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4, -@@ -13662,6 +14019,12 @@ +@@ -13662,6 +14005,12 @@ #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 #define JOB_OBJECT_POST_AT_END_OF_JOB 1 @@ -1012,7 +933,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Completion Port Messages for job objects // -@@ -13746,7 +14109,17 @@ +@@ -13746,7 +14095,17 @@ JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH | \ JOB_OBJECT_LIMIT_CPU_RATE_CONTROL | \ JOB_OBJECT_LIMIT_IO_RATE_CONTROL | \ @@ -1030,7 +951,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -13773,14 +14146,26 @@ +@@ -13773,14 +14132,26 @@ #define JOB_OBJECT_UILIMIT_ALL 0x000003FF @@ -1057,7 +978,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Control flags for CPU rate control. -@@ -13793,6 +14178,16 @@ +@@ -13793,6 +14164,16 @@ #define JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE 0x10 #define JOB_OBJECT_CPU_RATE_CONTROL_PER_PROCESSOR_CAPS 0x20 #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0x3f @@ -1074,7 +995,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -13945,6 +14340,23 @@ +@@ -13945,6 +14326,23 @@ #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\ TIMER_QUERY_STATE|TIMER_MODIFY_STATE) @@ -1098,7 +1019,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -14179,6 +14591,31 @@ +@@ -14179,6 +14577,31 @@ #define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF @@ -1130,7 +1051,7 @@ diff --git a/um/winnt.h b/um/winnt.h // #define PF_FLOATING_POINT_PRECISION_ERRATA 0 -@@ -14270,7 +14707,100 @@ +@@ -14270,7 +14693,100 @@ #define PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE 86 #define PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE 87 #define PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE 88 @@ -1231,7 +1152,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -14877,7 +15407,7 @@ +@@ -14877,7 +15393,7 @@ SIZE_T RegionSize; DWORD State; DWORD Protect; @@ -1240,7 +1161,7 @@ diff --git a/um/winnt.h b/um/winnt.h } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; // end_ntifs -@@ -14889,7 +15419,7 @@ +@@ -14889,7 +15405,7 @@ DWORD RegionSize; DWORD State; DWORD Protect; @@ -1249,7 +1170,7 @@ diff --git a/um/winnt.h b/um/winnt.h } MEMORY_BASIC_INFORMATION32, *PMEMORY_BASIC_INFORMATION32; typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 { -@@ -14900,7 +15430,7 @@ +@@ -14900,7 +15416,7 @@ ULONGLONG RegionSize; DWORD State; DWORD Protect; @@ -1258,7 +1179,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD __alignment2; } MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64; -@@ -14959,6 +15489,17 @@ +@@ -14959,6 +15475,17 @@ SECTION_MAP_READ | \ SECTION_MAP_EXECUTE | \ SECTION_EXTEND_SIZE) @@ -1276,7 +1197,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Session Specific Access Rights. -@@ -15017,9 +15558,35 @@ +@@ -15017,9 +15544,35 @@ #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x00000001 #define MEM_COALESCE_PLACEHOLDERS 0x00000001 #define MEM_PRESERVE_PLACEHOLDER 0x00000002 @@ -1312,7 +1233,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define MEM_EXTENDED_PARAMETER_GRAPHICS 0x00000001 #define MEM_EXTENDED_PARAMETER_NONPAGED 0x00000002 #define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x00000004 -@@ -15096,6 +15663,49 @@ +@@ -15096,6 +15649,49 @@ #define SEC_WRITECOMBINE 0x40000000 #define SEC_LARGE_PAGES 0x80000000 #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE) @@ -1362,7 +1283,7 @@ diff --git a/um/winnt.h b/um/winnt.h // begin_wdm typedef enum MEM_SECTION_EXTENDED_PARAMETER_TYPE { -@@ -15109,6 +15719,13 @@ +@@ -15109,6 +15705,13 @@ #define MEM_PRIVATE 0x00020000 #define MEM_MAPPED 0x00040000 #define MEM_IMAGE 0x01000000 @@ -1376,7 +1297,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define WRITE_WATCH_FLAG_RESET 0x01 #define VM_PREFETCH_TO_WORKING_SET 0x1 -@@ -15300,9 +15917,51 @@ +@@ -15300,9 +15903,51 @@ FILE_EXECUTE |\ SYNCHRONIZE) @@ -1428,7 +1349,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define FILE_ATTRIBUTE_READONLY 0x00000001 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 -@@ -15325,6 +15984,32 @@ +@@ -15325,6 +15970,32 @@ #define FILE_ATTRIBUTE_UNPINNED 0x00100000 #define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000 #define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000 @@ -1461,7 +1382,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define TREE_CONNECT_ATTRIBUTE_PRIVACY 0x00004000 #define TREE_CONNECT_ATTRIBUTE_INTEGRITY 0x00008000 #define TREE_CONNECT_ATTRIBUTE_GLOBAL 0x00000004 -@@ -15338,11 +16023,32 @@ +@@ -15338,11 +16009,32 @@ #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 @@ -1494,7 +1415,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define MAILSLOT_NO_MESSAGE ((DWORD)-1) #define MAILSLOT_WAIT_FOREVER ((DWORD)-1) #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 -@@ -15388,7 +16094,7 @@ +@@ -15388,7 +16080,7 @@ typedef struct _FILE_NOTIFY_INFORMATION { DWORD NextEntryOffset; @@ -1503,7 +1424,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD FileNameLength; WCHAR FileName[1]; } FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION; -@@ -15396,7 +16102,7 @@ +@@ -15396,7 +16088,7 @@ #if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS3) typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION { DWORD NextEntryOffset; @@ -1512,7 +1433,7 @@ diff --git a/um/winnt.h b/um/winnt.h LARGE_INTEGER CreationTime; LARGE_INTEGER LastModificationTime; LARGE_INTEGER LastChangeTime; -@@ -16372,6 +17078,12 @@ +@@ -16372,6 +17064,12 @@ #define DUPLICATE_CLOSE_SOURCE 0x00000001 #define DUPLICATE_SAME_ACCESS 0x00000002 @@ -1525,7 +1446,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // ========================================= // Define GUIDs which represent well-known power schemes -@@ -18447,6 +19159,15 @@ +@@ -18447,6 +19145,15 @@ #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040) #define ES_CONTINUOUS ((DWORD)0x80000000) @@ -1541,7 +1462,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE; typedef enum { -@@ -18470,6 +19191,12 @@ +@@ -18470,6 +19177,12 @@ #define POWER_REQUEST_CONTEXT_SIMPLE_STRING DIAGNOSTIC_REASON_SIMPLE_STRING #define POWER_REQUEST_CONTEXT_DETAILED_STRING DIAGNOSTIC_REASON_DETAILED_STRING @@ -1554,7 +1475,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef enum _POWER_REQUEST_TYPE { PowerRequestDisplayRequired, -@@ -18496,6 +19223,19 @@ +@@ -18496,6 +19209,19 @@ #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040 #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080 #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100 @@ -1574,7 +1495,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef struct CM_Power_Data_s { DWORD PD_Size; -@@ -18923,6 +19663,12 @@ +@@ -18923,6 +19649,12 @@ #define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1) #define POWER_PLATFORM_ROLE_V2 (0x00000002) @@ -1587,7 +1508,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1) #if (NTDDI_VERSION >= NTDDI_WIN8) -@@ -19269,7 +20015,7 @@ +@@ -19269,7 +20001,7 @@ typedef struct { POWER_ACTION Action; DWORD Flags; @@ -1596,7 +1517,7 @@ diff --git a/um/winnt.h b/um/winnt.h } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY; // POWER_ACTION_POLICY->Flags: -@@ -19296,6 +20042,16 @@ +@@ -19296,6 +20028,16 @@ #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 // Application and Services are intimated of shutdown. #define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020 // Immediate shutdown - Application and Services are not intimated. #define POWER_FORCE_TRIGGER_RESET 0x80000000 @@ -1613,7 +1534,7 @@ diff --git a/um/winnt.h b/um/winnt.h // Note: for battery alarm EventCodes, the ID of the battery alarm << 16 is ORed // into the flags. For example: DISCHARGE_POLICY_LOW << 16 -@@ -19773,14 +20529,18 @@ +@@ -19773,14 +20515,18 @@ // File header format. // @@ -1634,7 +1555,7 @@ diff --git a/um/winnt.h b/um/winnt.h } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; #define IMAGE_SIZEOF_FILE_HEADER 20 -@@ -19800,6 +20560,33 @@ +@@ -19800,6 +20546,33 @@ #define IMAGE_FILE_DLL 0x2000 // File is a DLL. #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000 // File should only be run on a UP machine #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000 // Bytes of machine word are reversed. @@ -1668,7 +1589,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define IMAGE_FILE_MACHINE_UNKNOWN 0 #define IMAGE_FILE_MACHINE_TARGET_HOST 0x0001 // Useful for indicating we want to interact with the host and not a WoW guest. -@@ -19834,6 +20621,42 @@ +@@ -19834,6 +20607,42 @@ #define IMAGE_FILE_MACHINE_ARM64 0xAA64 // ARM64 Little-Endian #define IMAGE_FILE_MACHINE_CEE 0xC0EE @@ -1711,7 +1632,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Directory format. -@@ -19849,6 +20672,14 @@ +@@ -19849,6 +20658,14 @@ // // Optional header format. // @@ -1726,7 +1647,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef struct _IMAGE_OPTIONAL_HEADER { // -@@ -19882,12 +20713,15 @@ +@@ -19882,12 +20699,15 @@ DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; @@ -1744,7 +1665,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; -@@ -19931,12 +20765,15 @@ +@@ -19931,12 +20751,15 @@ DWORD SizeOfImage; DWORD SizeOfHeaders; DWORD CheckSum; @@ -1762,7 +1683,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD LoaderFlags; DWORD NumberOfRvaAndSizes; IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; -@@ -19954,6 +20791,14 @@ +@@ -19954,6 +20777,14 @@ typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC @@ -1777,7 +1698,7 @@ diff --git a/um/winnt.h b/um/winnt.h #endif typedef struct _IMAGE_NT_HEADERS64 { -@@ -20006,6 +20851,25 @@ +@@ -20006,6 +20837,25 @@ #define IMAGE_SUBSYSTEM_XBOX 14 #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16 #define IMAGE_SUBSYSTEM_XBOX_CODE_CATALOG 17 @@ -1803,7 +1724,7 @@ diff --git a/um/winnt.h b/um/winnt.h // DllCharacteristics Entries -@@ -20044,6 +20908,25 @@ +@@ -20044,6 +20894,25 @@ #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 // Delay Load Import Descriptors #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 // COM Runtime descriptor @@ -1829,7 +1750,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Non-COFF Object file header // -@@ -20095,6 +20978,10 @@ +@@ -20095,6 +20964,10 @@ // #define IMAGE_SIZEOF_SHORT_NAME 8 @@ -1840,7 +1761,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; -@@ -20109,7 +20996,7 @@ +@@ -20109,7 +20982,7 @@ DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; @@ -1849,7 +1770,7 @@ diff --git a/um/winnt.h b/um/winnt.h } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; #define IMAGE_SIZEOF_SECTION_HEADER 40 -@@ -20174,6 +21061,49 @@ +@@ -20174,6 +21047,49 @@ // TLS Characteristic Flags // #define IMAGE_SCN_SCALE_INDEX 0x00000001 // Tls index is scaled @@ -1899,7 +1820,7 @@ diff --git a/um/winnt.h b/um/winnt.h #ifndef _MAC #include "pshpack2.h" // Symbols, relocs, and linenumbers are 2 byte packed -@@ -21901,7 +22831,7 @@ +@@ -21901,7 +22817,7 @@ DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; @@ -1908,7 +1829,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD SizeOfData; DWORD AddressOfRawData; DWORD PointerToRawData; -@@ -21917,6 +22847,18 @@ +@@ -21917,6 +22833,18 @@ #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 #define IMAGE_DEBUG_TYPE_BORLAND 9 @@ -1927,7 +1848,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define IMAGE_DEBUG_TYPE_RESERVED10 10 #define IMAGE_DEBUG_TYPE_BBT IMAGE_DEBUG_TYPE_RESERVED10 #define IMAGE_DEBUG_TYPE_CLSID 11 -@@ -21936,6 +22878,29 @@ +@@ -21936,6 +22864,29 @@ #define IMAGE_DLLCHARACTERISTICS_EX_CET_RESERVED_2 0x20 // Reserved for CET policy *downgrade* only! #define IMAGE_DLLCHARACTERISTICS_EX_FORWARD_CFI_COMPAT 0x40 #define IMAGE_DLLCHARACTERISTICS_EX_HOTPATCH_COMPATIBLE 0x80 @@ -1957,7 +1878,7 @@ diff --git a/um/winnt.h b/um/winnt.h typedef struct _IMAGE_COFF_SYMBOLS_HEADER { -@@ -22239,7 +23204,7 @@ +@@ -22239,7 +23190,7 @@ _Success_(return != 0) WORD NTAPI @@ -1966,7 +1887,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ DWORD FramesToSkip, _In_ DWORD FramesToCapture, _Out_writes_to_(FramesToCapture,return) PVOID* BackTrace, -@@ -22253,7 +23218,7 @@ +@@ -22253,7 +23204,7 @@ NTSYSAPI VOID NTAPI @@ -1975,7 +1896,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Out_ PCONTEXT ContextRecord ); -@@ -22317,7 +23282,7 @@ +@@ -22317,7 +23268,7 @@ NTSYSAPI VOID NTAPI @@ -1984,7 +1905,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_opt_ PVOID TargetFrame, _In_opt_ PVOID TargetIp, _In_opt_ PEXCEPTION_RECORD ExceptionRecord, -@@ -22371,7 +23336,7 @@ +@@ -22371,7 +23322,7 @@ NTSYSAPI DWORD NTAPI @@ -1993,7 +1914,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Out_ PVOID* DynamicTable, _In_reads_(MaximumEntryCount) PRUNTIME_FUNCTION FunctionTable, _In_ DWORD EntryCount, -@@ -22383,7 +23348,7 @@ +@@ -22383,7 +23334,7 @@ NTSYSAPI VOID NTAPI @@ -2002,7 +1923,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Inout_ PVOID DynamicTable, _In_ DWORD NewEntryCount ); -@@ -22391,7 +23356,7 @@ +@@ -22391,7 +23342,7 @@ NTSYSAPI VOID NTAPI @@ -2011,7 +1932,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ PVOID DynamicTable ); -@@ -22436,7 +23401,7 @@ +@@ -22436,7 +23387,7 @@ PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind( @@ -2020,7 +1941,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ DWORD64 ImageBase, _In_ DWORD64 ControlPc, _In_ PRUNTIME_FUNCTION FunctionEntry, -@@ -22508,7 +23473,7 @@ +@@ -22508,7 +23459,7 @@ NTSYSAPI DWORD NTAPI @@ -2029,7 +1950,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Out_ PVOID* DynamicTable, _In_reads_(MaximumEntryCount) PRUNTIME_FUNCTION FunctionTable, _In_ DWORD EntryCount, -@@ -22520,7 +23485,7 @@ +@@ -22520,7 +23471,7 @@ NTSYSAPI VOID NTAPI @@ -2038,7 +1959,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Inout_ PVOID DynamicTable, _In_ DWORD NewEntryCount ); -@@ -22528,7 +23493,7 @@ +@@ -22528,7 +23479,7 @@ NTSYSAPI VOID NTAPI @@ -2047,7 +1968,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ PVOID DynamicTable ); -@@ -22573,7 +23538,7 @@ +@@ -22573,7 +23524,7 @@ PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind( @@ -2056,7 +1977,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ DWORD ImageBase, _In_ DWORD ControlPc, _In_ PRUNTIME_FUNCTION FunctionEntry, -@@ -22634,7 +23599,7 @@ +@@ -22634,7 +23585,7 @@ NTSYSAPI DWORD NTAPI @@ -2065,7 +1986,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Out_ PVOID* DynamicTable, _In_reads_(MaximumEntryCount) PRUNTIME_FUNCTION FunctionTable, _In_ DWORD EntryCount, -@@ -22646,7 +23611,7 @@ +@@ -22646,7 +23597,7 @@ NTSYSAPI VOID NTAPI @@ -2074,7 +1995,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Inout_ PVOID DynamicTable, _In_ DWORD NewEntryCount ); -@@ -22654,7 +23619,7 @@ +@@ -22654,7 +23605,7 @@ NTSYSAPI VOID NTAPI @@ -2083,7 +2004,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ PVOID DynamicTable ); -@@ -22699,7 +23664,7 @@ +@@ -22699,7 +23650,7 @@ PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind( @@ -2092,7 +2013,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ ULONG_PTR ImageBase, _In_ ULONG_PTR ControlPc, _In_ PRUNTIME_FUNCTION FunctionEntry, -@@ -22918,7 +23883,7 @@ +@@ -22918,7 +23869,7 @@ NTSYSAPI VOID NTAPI @@ -2101,7 +2022,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Out_ PSLIST_HEADER ListHead ); -@@ -22926,21 +23891,21 @@ +@@ -22926,21 +23877,21 @@ NTSYSAPI PSLIST_ENTRY NTAPI @@ -2126,7 +2047,7 @@ diff --git a/um/winnt.h b/um/winnt.h _Inout_ PSLIST_HEADER ListHead, _Inout_ __drv_aliasesMem PSLIST_ENTRY ListEntry ); -@@ -22958,14 +23923,14 @@ +@@ -22958,14 +23909,14 @@ NTSYSAPI PSLIST_ENTRY NTAPI @@ -2143,7 +2064,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ PSLIST_HEADER ListHead ); -@@ -23143,6 +24108,28 @@ +@@ -23143,6 +24094,28 @@ #define HEAP_TAG_SHIFT 18 #define HEAP_CREATE_SEGMENT_HEAP 0x00000100 #define HEAP_CREATE_HARDENED 0x00000200 @@ -2172,7 +2093,7 @@ diff --git a/um/winnt.h b/um/winnt.h #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if !defined(MIDL_PASS) -@@ -23183,6 +24170,25 @@ +@@ -23183,6 +24156,25 @@ #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000 @@ -2198,7 +2119,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define COMPRESSION_FORMAT_NONE (0x0000) #define COMPRESSION_FORMAT_DEFAULT (0x0001) #define COMPRESSION_FORMAT_LZNT1 (0x0002) -@@ -23192,6 +24198,19 @@ +@@ -23192,6 +24184,19 @@ #define COMPRESSION_FORMAT_LZ4 (0x0006) #define COMPRESSION_FORMAT_DEFLATE (0x0007) #define COMPRESSION_FORMAT_ZLIB (0x0008) @@ -2218,7 +2139,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define COMPRESSION_ENGINE_STANDARD (0x0000) #define COMPRESSION_ENGINE_MAXIMUM (0x0100) #define COMPRESSION_ENGINE_HIBER (0x0200) -@@ -23457,6 +24476,21 @@ +@@ -23457,6 +24462,21 @@ #define SEF_MACL_NO_EXECUTE_UP 0x400 #define SEF_AI_USE_EXTRA_PARAMS 0x800 #define SEF_AVOID_OWNER_RESTRICTION 0x1000 @@ -2240,7 +2161,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define SEF_FORCE_USER_MODE 0x2000 #define SEF_NORMALIZE_OUTPUT_DESCRIPTOR 0x4000 -@@ -23582,6 +24616,18 @@ +@@ -23582,6 +24602,18 @@ #define VER_SUITENAME 0x0000040 #define VER_PRODUCT_TYPE 0x0000080 @@ -2259,7 +2180,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // RtlVerifyVersionInfo() os product type values // -@@ -23598,6 +24644,13 @@ +@@ -23598,6 +24630,13 @@ #define VER_PLATFORM_WIN32_WINDOWS 1 #define VER_PLATFORM_WIN32_NT 2 @@ -2273,7 +2194,7 @@ diff --git a/um/winnt.h b/um/winnt.h #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) -@@ -23620,9 +24673,9 @@ +@@ -23620,9 +24659,9 @@ NTSYSAPI ULONGLONG NTAPI @@ -2285,7 +2206,7 @@ diff --git a/um/winnt.h b/um/winnt.h _In_ BYTE Condition ); -@@ -24443,6 +25496,18 @@ +@@ -24443,6 +25482,18 @@ #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 #define WT_TRANSFER_IMPERSONATION 0x00000100 @@ -2304,7 +2225,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit)<<16) typedef VOID (NTAPI * WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN ); typedef VOID (NTAPI * WORKERCALLBACKFUNC) (PVOID ); -@@ -24680,6 +25745,29 @@ +@@ -24680,6 +25731,29 @@ #define DEVICEFAMILYINFOENUM_WINDOWS_CORE_HEADLESS 0x00000011 #define DEVICEFAMILYINFOENUM_MAX 0x00000011 @@ -2334,7 +2255,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define DEVICEFAMILYDEVICEFORM_UNKNOWN 0x00000000 #define DEVICEFAMILYDEVICEFORM_PHONE 0x00000001 -@@ -24735,12 +25823,65 @@ +@@ -24735,12 +25809,65 @@ #define DEVICEFAMILYDEVICEFORM_MAX 0x0000002F @@ -2402,7 +2323,7 @@ diff --git a/um/winnt.h b/um/winnt.h ); DWORD -@@ -24780,6 +25921,14 @@ +@@ -24780,6 +25907,14 @@ #define EVENTLOG_FORWARDS_READ 0x0004 #define EVENTLOG_BACKWARDS_READ 0x0008 @@ -2417,7 +2338,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // The types of events that can be logged. // -@@ -24789,6 +25938,16 @@ +@@ -24789,6 +25924,16 @@ #define EVENTLOG_INFORMATION_TYPE 0x0004 #define EVENTLOG_AUDIT_SUCCESS 0x0008 #define EVENTLOG_AUDIT_FAILURE 0x0010 @@ -2434,7 +2355,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Defines for the WRITE flags used by Auditing for paired events -@@ -24816,7 +25975,7 @@ +@@ -24816,7 +25961,7 @@ DWORD TimeGenerated; // Seconds since 1-1-1970 DWORD TimeWritten; // Seconds since 1-1-1970 DWORD EventID; @@ -2443,7 +2364,7 @@ diff --git a/um/winnt.h b/um/winnt.h WORD NumStrings; WORD EventCategory; WORD ReservedFlags; -@@ -24923,6 +26082,23 @@ +@@ -24923,6 +26068,23 @@ & \ (~SYNCHRONIZE)) @@ -2467,7 +2388,7 @@ diff --git a/um/winnt.h b/um/winnt.h // end_access // -@@ -24966,12 +26142,29 @@ +@@ -24966,12 +26128,29 @@ REG_OPTION_OPEN_LINK |\ REG_OPTION_DONT_VIRTUALIZE) @@ -2497,7 +2418,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // hive format to be used by Reg(Nt)SaveKeyEx -@@ -24979,6 +26172,13 @@ +@@ -24979,6 +26158,13 @@ #define REG_STANDARD_FORMAT 1 #define REG_LATEST_FORMAT 2 #define REG_NO_COMPRESSION 4 @@ -2511,7 +2432,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Key restore & hive load flags -@@ -24988,6 +26188,12 @@ +@@ -24988,6 +26174,12 @@ #define REG_REFRESH_HIVE (0x00000002L) // Unwind changes to last flush #define REG_NO_LAZY_FLUSH (0x00000004L) // Never lazy flush this hive #define REG_FORCE_RESTORE (0x00000008L) // Force the restore process even when we have open handles on subkeys @@ -2524,7 +2445,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define REG_APP_HIVE (0x00000010L) // Loads the hive visible to the calling process #define REG_PROCESS_PRIVATE (0x00000020L) // Hive cannot be mounted by any other process while in use #define REG_START_JOURNAL (0x00000040L) // Starts Hive Journal -@@ -25017,6 +26223,15 @@ +@@ -25017,6 +26209,15 @@ #define REG_NOTIFY_CHANGE_LAST_SET (0x00000004L) // time stamp #define REG_NOTIFY_CHANGE_SECURITY (0x00000008L) #define REG_NOTIFY_THREAD_AGNOSTIC (0x10000000L) // Not associated with a calling thread, can only be used @@ -2540,7 +2461,7 @@ diff --git a/um/winnt.h b/um/winnt.h // for async user event based notification #define REG_LEGAL_CHANGE_FILTER \ -@@ -25049,6 +26264,24 @@ +@@ -25049,6 +26250,24 @@ #define REG_QWORD ( 11ul ) // 64-bit number #define REG_QWORD_LITTLE_ENDIAN ( 11ul ) // 64-bit number (same as REG_QWORD) @@ -2565,7 +2486,7 @@ diff --git a/um/winnt.h b/um/winnt.h // end_wdm // begin_wdm -@@ -25076,6 +26309,21 @@ +@@ -25076,6 +26295,21 @@ SERVICE_WIN32_SHARE_PROCESS) #define SERVICE_USER_OWN_PROCESS (SERVICE_USER_SERVICE | \ SERVICE_WIN32_OWN_PROCESS) @@ -2587,7 +2508,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define SERVICE_INTERACTIVE_PROCESS 0x00000100 #define SERVICE_PKG_SERVICE 0x00000200 -@@ -25098,6 +26346,16 @@ +@@ -25098,6 +26332,16 @@ #define SERVICE_DEMAND_START 0x00000003 #define SERVICE_DISABLED 0x00000004 @@ -2604,7 +2525,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // Error control type // -@@ -25105,6 +26363,15 @@ +@@ -25105,6 +26349,15 @@ #define SERVICE_ERROR_NORMAL 0x00000001 #define SERVICE_ERROR_SEVERE 0x00000002 #define SERVICE_ERROR_CRITICAL 0x00000003 @@ -2620,7 +2541,7 @@ diff --git a/um/winnt.h b/um/winnt.h // // -@@ -25204,8 +26471,14 @@ +@@ -25204,8 +26457,14 @@ #define TAPE_ERASE_SHORT 0L #define TAPE_ERASE_LONG 1L @@ -2636,7 +2557,7 @@ diff --git a/um/winnt.h b/um/winnt.h BOOLEAN Immediate; } TAPE_ERASE, *PTAPE_ERASE; -@@ -25220,8 +26493,18 @@ +@@ -25220,8 +26479,18 @@ #define TAPE_UNLOCK 4L #define TAPE_FORMAT 5L @@ -2656,7 +2577,7 @@ diff --git a/um/winnt.h b/um/winnt.h BOOLEAN Immediate; } TAPE_PREPARE, *PTAPE_PREPARE; -@@ -25234,8 +26517,16 @@ +@@ -25234,8 +26503,16 @@ #define TAPE_SHORT_FILEMARKS 2L #define TAPE_LONG_FILEMARKS 3L @@ -2674,7 +2595,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD Count; BOOLEAN Immediate; } TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS; -@@ -25246,10 +26537,16 @@ +@@ -25246,10 +26523,16 @@ #define TAPE_ABSOLUTE_POSITION 0L #define TAPE_LOGICAL_POSITION 1L @@ -2692,7 +2613,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD Partition; LARGE_INTEGER Offset; } TAPE_GET_POSITION, *PTAPE_GET_POSITION; -@@ -25269,8 +26566,21 @@ +@@ -25269,8 +26552,21 @@ #define TAPE_SPACE_SETMARKS 8L #define TAPE_SPACE_SEQUENTIAL_SMKS 9L @@ -2715,7 +2636,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD Partition; LARGE_INTEGER Offset; BOOLEAN Immediate; -@@ -25358,6 +26668,39 @@ +@@ -25358,6 +26654,39 @@ #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 @@ -2755,7 +2676,7 @@ diff --git a/um/winnt.h b/um/winnt.h #define TAPE_DRIVE_FORMAT 0xA0000000 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000 //mask for high features flag -@@ -25372,7 +26715,7 @@ +@@ -25372,7 +26701,7 @@ DWORD MinimumBlockSize; DWORD MaximumPartitionCount; DWORD FeaturesLow; @@ -2764,7 +2685,7 @@ diff --git a/um/winnt.h b/um/winnt.h DWORD EOTWarningZoneSize; } TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS; -@@ -25415,6 +26758,13 @@ +@@ -25415,6 +26744,13 @@ #define TAPE_FIXED_PARTITIONS 0L #define TAPE_SELECT_PARTITIONS 1L #define TAPE_INITIATOR_PARTITIONS 2L @@ -2778,67 +2699,10 @@ diff --git a/um/winnt.h b/um/winnt.h typedef struct _TAPE_CREATE_PARTITION { DWORD Method; -@@ -25859,5 +27209,8 @@ - typedef DWORD TP_VERSION, *PTP_VERSION; - - typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANCE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_CALLBACK_INSTANCE PTP_CALLBACK_INSTANCE; -+#endif - - typedef -@@ -25871,5 +27224,8 @@ - typedef TP_SIMPLE_CALLBACK *PTP_SIMPLE_CALLBACK; - - typedef struct _TP_POOL TP_POOL, *PTP_POOL; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_POOL PTP_POOL; -+#endif - - typedef enum _TP_CALLBACK_PRIORITY { -@@ -25886,5 +27242,8 @@ - }TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION; - - typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP, *PTP_CLEANUP_GROUP; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_CLEANUP_GROUP PTP_CLEANUP_GROUP; -+#endif - - typedef -@@ -26100,5 +27459,8 @@ - - - typedef struct _TP_WORK TP_WORK, *PTP_WORK; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_WORK PTP_WORK; -+#endif - - typedef -@@ -26114,5 +27476,8 @@ - - - typedef struct _TP_TIMER TP_TIMER, *PTP_TIMER; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_TIMER PTP_TIMER; -+#endif - - typedef -@@ -26130,5 +27495,8 @@ - typedef DWORD TP_WAIT_RESULT; - - typedef struct _TP_WAIT TP_WAIT, *PTP_WAIT; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_WAIT PTP_WAIT; -+#endif - - typedef -@@ -26145,12 +27513,15 @@ +@@ -26145,12 +27481,12 @@ typedef struct _TP_IO TP_IO, *PTP_IO; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PTP_IO PTP_IO; -+#endif #if defined(_M_AMD64) && !defined(_M_ARM64EC) && !defined(__midl) @@ -2849,7 +2713,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) -@@ -26286,7 +27657,7 @@ +@@ -26286,7 +27622,7 @@ __forceinline PVOID @@ -2858,7 +2722,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) -@@ -26296,7 +27667,7 @@ +@@ -26296,7 +27632,7 @@ __forceinline PVOID @@ -2867,7 +2731,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) -@@ -26311,7 +27682,7 @@ +@@ -26311,7 +27647,7 @@ __forceinline struct _TEB * @@ -2876,7 +2740,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -26320,7 +27691,7 @@ +@@ -26320,7 +27656,7 @@ __forceinline PVOID @@ -2885,7 +2749,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -26329,7 +27700,7 @@ +@@ -26329,7 +27665,7 @@ __forceinline PVOID @@ -2894,7 +2758,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) -@@ -26344,7 +27715,7 @@ +@@ -26344,7 +27680,7 @@ __forceinline struct _TEB * @@ -2903,7 +2767,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -26433,7 +27804,7 @@ +@@ -26433,7 +27769,7 @@ __forceinline PVOID @@ -2912,7 +2776,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) { -@@ -26442,7 +27813,7 @@ +@@ -26442,7 +27778,7 @@ __forceinline PVOID @@ -2921,7 +2785,7 @@ diff --git a/um/winnt.h b/um/winnt.h VOID ) -@@ -26461,7 +27832,7 @@ +@@ -26461,7 +27797,7 @@ __inline struct _TEB* diff --git a/generation/WinSDK/patches/um/winsafer.h.patch b/generation/WinSDK/patches/um/winsafer.h.patch index dc197aa86..e0fade3b8 100644 --- a/generation/WinSDK/patches/um/winsafer.h.patch +++ b/generation/WinSDK/patches/um/winsafer.h.patch @@ -1,17 +1,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h --- a/um/winsafer.h +++ b/um/winsafer.h -@@ -35,6 +35,9 @@ - // - - DECLARE_HANDLE(SAFER_LEVEL_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SAFER_LEVEL_HANDLE SAFER_LEVEL_HANDLE; -+#endif - - - // -@@ -78,6 +81,8 @@ +@@ -78,6 +78,8 @@ #define SAFER_TOKEN_COMPARE_ONLY 0x00000002 #define SAFER_TOKEN_MAKE_INERT 0x00000004 #define SAFER_TOKEN_WANT_FLAGS 0x00000008 @@ -20,7 +10,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h // // Flags for specifying what criteria within SAFER_CODE_PROPERTIES to evaluate -@@ -619,6 +624,8 @@ +@@ -619,6 +621,8 @@ // enumeration operations. // @@ -29,7 +19,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferGetPolicyInformation( -@@ -630,6 +637,8 @@ +@@ -630,6 +634,8 @@ _Reserved_ LPVOID lpReserved ); @@ -38,7 +28,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferSetPolicyInformation( -@@ -644,6 +653,8 @@ +@@ -644,6 +650,8 @@ // Functions to open or close a handle to a Safer Level. // @@ -47,7 +37,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferCreateLevel( -@@ -654,12 +665,16 @@ +@@ -654,12 +662,16 @@ _Reserved_ LPVOID lpReserved ); @@ -64,7 +54,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferIdentifyLevel( -@@ -669,16 +684,20 @@ +@@ -669,16 +681,20 @@ _In_opt_ LPVOID lpReserved ); @@ -86,7 +76,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferGetLevelInformation( -@@ -689,6 +708,8 @@ +@@ -689,6 +705,8 @@ _Out_ LPDWORD lpdwOutBufferSize ); @@ -95,7 +85,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferSetLevelInformation( -@@ -704,6 +725,8 @@ +@@ -704,6 +722,8 @@ // ShellExecute and cmd when a lower trust evaluation result occurs. // @@ -104,7 +94,7 @@ diff --git a/um/winsafer.h b/um/winsafer.h WINADVAPI BOOL WINAPI SaferRecordEventLogEntry( -@@ -713,6 +736,7 @@ +@@ -713,6 +733,7 @@ ); diff --git a/generation/WinSDK/patches/um/winsock.h.patch b/generation/WinSDK/patches/um/winsock.h.patch index ee133c308..44b094e4f 100644 --- a/generation/WinSDK/patches/um/winsock.h.patch +++ b/generation/WinSDK/patches/um/winsock.h.patch @@ -2,351 +2,341 @@ diff --git a/um/winsock.h b/um/winsock.h --- a/um/winsock.h +++ b/um/winsock.h @@ -1,3 +1,4 @@ -+#include - #include - - -@@ -49,6 +50,9 @@ - */ - - typedef UINT_PTR SOCKET; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SOCKET SOCKET; -+#endif - - /* - * Select uses arrays of SOCKETs. These macros manipulate such -@@ -71,6 +75,7 @@ - extern "C" { - #endif - -+_Win32_SupportedOS_Windows81_ - extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *); - - #ifdef __cplusplus -@@ -451,6 +456,8 @@ - #define AF_UNSPEC 0 /* unspecified */ - #define AF_UNIX 1 /* local to host (pipes, portals) */ - #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -+ -+_Win32_Enum_(ADDRESS_FAMILY, USHORT, AF_UNSPEC, AF_INET); - #define AF_IMPLINK 3 /* arpanet imp addresses */ - #define AF_PUP 4 /* pup protocols: e.g. BSP */ - #define AF_CHAOS 5 /* mit CHAOS protocols */ -@@ -735,39 +742,53 @@ - #ifdef __cplusplus - extern "C" { - #endif -- -+_Win32_RAIIFree_(closesocket, -1) -+_Win32_SupportedOS_Windows81_ - SOCKET PASCAL FAR accept ( - _In_ SOCKET s, - _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr, - _Inout_opt_ int FAR *addrlen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR bind ( - _In_ SOCKET s, - _In_reads_bytes_(namelen) const struct sockaddr FAR *addr, - _In_ int namelen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR closesocket ( IN SOCKET s); - -+_Win32_SupportedOS_WindowsVista_ - int PASCAL FAR connect ( - _In_ SOCKET s, - _In_reads_bytes_(namelen) const struct sockaddr FAR *name, - _In_ int namelen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR ioctlsocket ( - _In_ SOCKET s, - _In_ long cmd, - _Inout_ u_long FAR *argp); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR getpeername ( - _In_ SOCKET s, - _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, - _Inout_ int FAR * namelen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR getsockname ( - _In_ SOCKET s, - _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, - _Inout_ int FAR * namelen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR getsockopt ( - _In_ SOCKET s, - _In_ int level, -@@ -775,28 +796,45 @@ - _Out_writes_bytes_(*optlen) char FAR * optval, - _Inout_ int FAR *optlen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - u_long PASCAL FAR htonl ( _In_ u_long hostlong); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - u_short PASCAL FAR htons (_In_ u_short hostshort); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - unsigned long PASCAL FAR inet_addr (_In_z_ const char FAR * cp); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - char FAR * PASCAL FAR inet_ntoa (_In_ struct in_addr in); - -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR listen ( - _In_ SOCKET s, - _In_ int backlog); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - u_long PASCAL FAR ntohl (_In_ u_long netlong); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - u_short PASCAL FAR ntohs (_In_ u_short netshort); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR recv ( - _In_ SOCKET s, - _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, - _In_ int len, - _In_ int flags); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR recvfrom ( - _In_ SOCKET s, - _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, -@@ -805,6 +843,7 @@ - _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR * from, - _Inout_opt_ int FAR * fromlen); - -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR select ( - _In_ int nfds, - _Inout_opt_ fd_set FAR *readfds, -@@ -812,12 +851,15 @@ - _Inout_opt_ fd_set FAR *exceptfds, - _In_opt_ const struct timeval FAR *timeout); - -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR send ( - _In_ SOCKET s, - _In_reads_bytes_(len) const char FAR * buf, - _In_ int len, - _In_ int flags); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR sendto ( - _In_ SOCKET s, - _In_reads_bytes_(len) const char FAR * buf, -@@ -826,6 +868,8 @@ - _In_reads_bytes_opt_(tolen) const struct sockaddr FAR *to, - _In_ int tolen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR setsockopt ( - _In_ SOCKET s, - _In_ int level, -@@ -833,50 +877,74 @@ - _In_reads_bytes_opt_(optlen) const char FAR * optval, - _In_ int optlen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR shutdown ( - _In_ SOCKET s, - _In_ int how); - --SOCKET PASCAL FAR socket ( -+_Win32_RAIIFree_(closesocket, -1) SOCKET PASCAL FAR socket ( - _In_ int af, - _In_ int type, - _In_ int protocol); - - /* Database function prototypes */ - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct hostent FAR * PASCAL FAR gethostbyaddr( - _In_reads_bytes_(len) const char FAR * addr, - _In_ int len, - _In_ int type); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct hostent FAR * PASCAL FAR gethostbyname(_In_z_ const char FAR * name); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR gethostname ( - _Out_writes_bytes_to_(namelen, return) char FAR * name, - _In_ int namelen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct servent FAR * PASCAL FAR getservbyport( - _In_ int port, - _In_z_ const char FAR * proto); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct servent FAR * PASCAL FAR getservbyname( - _In_z_ const char FAR * name, - _In_z_ const char FAR * proto); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct protoent FAR * PASCAL FAR getprotobynumber(_In_ int proto); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - struct protoent FAR * PASCAL FAR getprotobyname(_In_z_ const char FAR * name); - - /* Microsoft Windows Extension function prototypes */ - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR WSAStartup( - _In_ WORD wVersionRequired, - _Out_ LPWSADATA lpWSAData); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR WSACleanup(void); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - void PASCAL FAR WSASetLastError(_In_ int iError); - -+_Win32_AssociatedEnum_(WSA_ERROR) _Win32_SetLastError_ -+_Win32_SupportedOS_Windows81_ - int PASCAL FAR WSAGetLastError(void); - - BOOL PASCAL FAR WSAIsBlocking(void); -@@ -887,6 +955,8 @@ - - int PASCAL FAR WSACancelBlockingCall(void); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetServByName( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -895,6 +965,8 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetServByPort( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -903,6 +975,8 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetProtoByName( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -910,6 +984,8 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetProtoByNumber( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -917,6 +993,8 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetHostByName( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -924,6 +1002,8 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - HANDLE PASCAL FAR WSAAsyncGetHostByAddr( - _In_ HWND hWnd, - _In_ u_int wMsg, -@@ -933,15 +1013,19 @@ - _Out_writes_bytes_(buflen) char FAR * buf, - _In_ int buflen); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - int PASCAL FAR WSACancelAsyncRequest(_In_ HANDLE hAsyncTaskHandle); - -+_Win32_SetLastError_ -+_Win32_SupportedOS_Windows2000_ - int PASCAL FAR WSAAsyncSelect( - _In_ SOCKET s, - _In_ HWND hWnd, - _In_ u_int wMsg, - _In_ long lEvent); - --int PASCAL FAR WSARecvEx ( -+_Win32_SetLastError_ _Win32_SupportedOS_Windows2000_ int PASCAL FAR WSARecvEx ( - _In_ SOCKET s, - _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, - _In_ int len, -@@ -958,7 +1042,7 @@ - #define TF_REUSE_SOCKET 0x02 - #define TF_WRITE_BEHIND 0x04 - --BOOL -+_Win32_SupportedOS_Windows81_ BOOL - PASCAL FAR - TransmitFile ( - _In_ SOCKET hSocket, -@@ -970,7 +1054,7 @@ - _In_ DWORD dwReserved - ); - --BOOL -+_Win32_SupportedOS_Windows81_ BOOL - PASCAL FAR - AcceptEx ( - _In_ SOCKET sListenSocket, -@@ -984,7 +1068,7 @@ - _Inout_ LPOVERLAPPED lpOverlapped - ); - --VOID -+_Win32_SupportedOS_Windows81_ VOID - PASCAL FAR - GetAcceptExSockaddrs ( - _In_reads_bytes_(dwReceiveDataLength+dwLocalAddressLength+dwRemoteAddressLength) PVOID lpOutputBuffer, -@@ -1086,4 +1170,3 @@ - #pragma endregion - - #endif /* _WINSOCKAPI_ */ -- ++#include + #include + + +@@ -71,6 +72,7 @@ + extern "C" { + #endif + ++_Win32_SupportedOS_Windows81_ + extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *); + + #ifdef __cplusplus +@@ -451,6 +453,8 @@ + #define AF_UNSPEC 0 /* unspecified */ + #define AF_UNIX 1 /* local to host (pipes, portals) */ + #define AF_INET 2 /* internetwork: UDP, TCP, etc. */ ++ ++_Win32_Enum_(ADDRESS_FAMILY, USHORT, AF_UNSPEC, AF_INET); + #define AF_IMPLINK 3 /* arpanet imp addresses */ + #define AF_PUP 4 /* pup protocols: e.g. BSP */ + #define AF_CHAOS 5 /* mit CHAOS protocols */ +@@ -735,39 +739,53 @@ + #ifdef __cplusplus + extern "C" { + #endif +- ++_Win32_RAIIFree_(closesocket, -1) ++_Win32_SupportedOS_Windows81_ + SOCKET PASCAL FAR accept ( + _In_ SOCKET s, + _Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR *addr, + _Inout_opt_ int FAR *addrlen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR bind ( + _In_ SOCKET s, + _In_reads_bytes_(namelen) const struct sockaddr FAR *addr, + _In_ int namelen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR closesocket ( IN SOCKET s); + ++_Win32_SupportedOS_WindowsVista_ + int PASCAL FAR connect ( + _In_ SOCKET s, + _In_reads_bytes_(namelen) const struct sockaddr FAR *name, + _In_ int namelen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR ioctlsocket ( + _In_ SOCKET s, + _In_ long cmd, + _Inout_ u_long FAR *argp); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR getpeername ( + _In_ SOCKET s, + _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, + _Inout_ int FAR * namelen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR getsockname ( + _In_ SOCKET s, + _Out_writes_bytes_to_(*namelen, *namelen) struct sockaddr FAR *name, + _Inout_ int FAR * namelen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR getsockopt ( + _In_ SOCKET s, + _In_ int level, +@@ -775,28 +793,45 @@ + _Out_writes_bytes_(*optlen) char FAR * optval, + _Inout_ int FAR *optlen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + u_long PASCAL FAR htonl ( _In_ u_long hostlong); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + u_short PASCAL FAR htons (_In_ u_short hostshort); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + unsigned long PASCAL FAR inet_addr (_In_z_ const char FAR * cp); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + char FAR * PASCAL FAR inet_ntoa (_In_ struct in_addr in); + ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR listen ( + _In_ SOCKET s, + _In_ int backlog); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + u_long PASCAL FAR ntohl (_In_ u_long netlong); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + u_short PASCAL FAR ntohs (_In_ u_short netshort); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR recv ( + _In_ SOCKET s, + _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, + _In_ int len, + _In_ int flags); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR recvfrom ( + _In_ SOCKET s, + _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, +@@ -805,6 +840,7 @@ + _Out_writes_bytes_to_opt_(*fromlen, *fromlen) struct sockaddr FAR * from, + _Inout_opt_ int FAR * fromlen); + ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR select ( + _In_ int nfds, + _Inout_opt_ fd_set FAR *readfds, +@@ -812,12 +848,15 @@ + _Inout_opt_ fd_set FAR *exceptfds, + _In_opt_ const struct timeval FAR *timeout); + ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR send ( + _In_ SOCKET s, + _In_reads_bytes_(len) const char FAR * buf, + _In_ int len, + _In_ int flags); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR sendto ( + _In_ SOCKET s, + _In_reads_bytes_(len) const char FAR * buf, +@@ -826,6 +865,8 @@ + _In_reads_bytes_opt_(tolen) const struct sockaddr FAR *to, + _In_ int tolen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR setsockopt ( + _In_ SOCKET s, + _In_ int level, +@@ -833,50 +874,74 @@ + _In_reads_bytes_opt_(optlen) const char FAR * optval, + _In_ int optlen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR shutdown ( + _In_ SOCKET s, + _In_ int how); + +-SOCKET PASCAL FAR socket ( ++_Win32_RAIIFree_(closesocket, -1) SOCKET PASCAL FAR socket ( + _In_ int af, + _In_ int type, + _In_ int protocol); + + /* Database function prototypes */ + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct hostent FAR * PASCAL FAR gethostbyaddr( + _In_reads_bytes_(len) const char FAR * addr, + _In_ int len, + _In_ int type); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct hostent FAR * PASCAL FAR gethostbyname(_In_z_ const char FAR * name); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR gethostname ( + _Out_writes_bytes_to_(namelen, return) char FAR * name, + _In_ int namelen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct servent FAR * PASCAL FAR getservbyport( + _In_ int port, + _In_z_ const char FAR * proto); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct servent FAR * PASCAL FAR getservbyname( + _In_z_ const char FAR * name, + _In_z_ const char FAR * proto); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct protoent FAR * PASCAL FAR getprotobynumber(_In_ int proto); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + struct protoent FAR * PASCAL FAR getprotobyname(_In_z_ const char FAR * name); + + /* Microsoft Windows Extension function prototypes */ + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR WSAStartup( + _In_ WORD wVersionRequired, + _Out_ LPWSADATA lpWSAData); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR WSACleanup(void); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + void PASCAL FAR WSASetLastError(_In_ int iError); + ++_Win32_AssociatedEnum_(WSA_ERROR) _Win32_SetLastError_ ++_Win32_SupportedOS_Windows81_ + int PASCAL FAR WSAGetLastError(void); + + BOOL PASCAL FAR WSAIsBlocking(void); +@@ -887,6 +952,8 @@ + + int PASCAL FAR WSACancelBlockingCall(void); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetServByName( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -895,6 +962,8 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetServByPort( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -903,6 +972,8 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetProtoByName( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -910,6 +981,8 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetProtoByNumber( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -917,6 +990,8 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetHostByName( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -924,6 +999,8 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + HANDLE PASCAL FAR WSAAsyncGetHostByAddr( + _In_ HWND hWnd, + _In_ u_int wMsg, +@@ -933,15 +1010,19 @@ + _Out_writes_bytes_(buflen) char FAR * buf, + _In_ int buflen); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + int PASCAL FAR WSACancelAsyncRequest(_In_ HANDLE hAsyncTaskHandle); + ++_Win32_SetLastError_ ++_Win32_SupportedOS_Windows2000_ + int PASCAL FAR WSAAsyncSelect( + _In_ SOCKET s, + _In_ HWND hWnd, + _In_ u_int wMsg, + _In_ long lEvent); + +-int PASCAL FAR WSARecvEx ( ++_Win32_SetLastError_ _Win32_SupportedOS_Windows2000_ int PASCAL FAR WSARecvEx ( + _In_ SOCKET s, + _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, + _In_ int len, +@@ -958,7 +1039,7 @@ + #define TF_REUSE_SOCKET 0x02 + #define TF_WRITE_BEHIND 0x04 + +-BOOL ++_Win32_SupportedOS_Windows81_ BOOL + PASCAL FAR + TransmitFile ( + _In_ SOCKET hSocket, +@@ -970,7 +1051,7 @@ + _In_ DWORD dwReserved + ); + +-BOOL ++_Win32_SupportedOS_Windows81_ BOOL + PASCAL FAR + AcceptEx ( + _In_ SOCKET sListenSocket, +@@ -984,7 +1065,7 @@ + _Inout_ LPOVERLAPPED lpOverlapped + ); + +-VOID ++_Win32_SupportedOS_Windows81_ VOID + PASCAL FAR + GetAcceptExSockaddrs ( + _In_reads_bytes_(dwReceiveDataLength+dwLocalAddressLength+dwRemoteAddressLength) PVOID lpOutputBuffer, +@@ -1086,4 +1167,3 @@ + #pragma endregion + + #endif /* _WINSOCKAPI_ */ +- diff --git a/generation/WinSDK/patches/um/winsock2.h.patch b/generation/WinSDK/patches/um/winsock2.h.patch index ba1c91ab0..aef5fd6b0 100644 --- a/generation/WinSDK/patches/um/winsock2.h.patch +++ b/generation/WinSDK/patches/um/winsock2.h.patch @@ -8,18 +8,7 @@ #include #if !defined(_WINSOCK_DEPRECATED_BY) -@@ -119,7 +120,10 @@ - * The new type to be used in all - * instances which refer to sockets. - */ - typedef UINT_PTR SOCKET; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SOCKET SOCKET; -+#endif - - /* - * Select uses arrays of SOCKETs. These macros manipulate such -@@ -138,6 +142,7 @@ +@@ -138,6 +139,7 @@ SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */ } fd_set; @@ -27,7 +16,7 @@ extern int PASCAL FAR __WSAFDIsSet(SOCKET fd, fd_set FAR *); #define FD_CLR(fd, set) do { \ -@@ -407,6 +412,9 @@ +@@ -407,6 +409,9 @@ #define SOCK_RAW 3 /* raw-protocol interface */ #define SOCK_RDM 4 /* reliably-delivered message */ #define SOCK_SEQPACKET 5 /* sequenced packet stream */ @@ -37,7 +26,7 @@ /* * Option flags per-socket. -@@ -528,6 +536,16 @@ +@@ -528,6 +533,16 @@ #if(_WIN32_WINNT >= 0x0603) #define MSG_PUSH_IMMEDIATE 0x20 /* Do not delay receive request completion if data is available */ #endif //(_WIN32_WINNT >= 0x0603) @@ -54,7 +43,7 @@ #define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */ -@@ -838,6 +856,18 @@ +@@ -838,6 +853,18 @@ #define WSA_WAIT_FAILED (WAIT_FAILED) #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0) #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION) @@ -73,7 +62,7 @@ #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT) #define WSA_INFINITE (INFINITE) -@@ -865,6 +895,17 @@ +@@ -865,6 +892,17 @@ #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) #define WSA_WAIT_FAILED ((DWORD)-1L) #define WSA_WAIT_EVENT_0 ((DWORD)0) @@ -91,7 +80,7 @@ #define WSA_WAIT_TIMEOUT ((DWORD)0x102L) #define WSA_INFINITE ((DWORD)-1L) -@@ -903,6 +944,8 @@ +@@ -903,6 +941,8 @@ #define SD_RECEIVE 0x00 #define SD_SEND 0x01 #define SD_BOTH 0x02 @@ -100,7 +89,7 @@ /* * WinSock 2 extension -- data type and manifest constants for socket groups -@@ -1610,12 +1653,17 @@ +@@ -1610,12 +1650,17 @@ #define POLLERR 0x0001 #define POLLHUP 0x0002 @@ -120,7 +109,7 @@ + _Win32_AssociatedEnum_(WSAPOLL_EVENT_FLAGS) SHORT revents; } WSAPOLLFD, *PWSAPOLLFD, FAR *LPWSAPOLLFD; -@@ -1626,6 +1674,8 @@ +@@ -1626,6 +1671,8 @@ /* Socket function prototypes */ #if INCL_WINSOCK_API_PROTOTYPES @@ -129,7 +118,7 @@ WINSOCK_API_LINKAGE _Must_inspect_result_ SOCKET -@@ -1649,6 +1699,8 @@ +@@ -1649,6 +1696,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -138,7 +127,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1670,6 +1722,8 @@ +@@ -1670,6 +1719,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -147,7 +136,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1687,6 +1741,8 @@ +@@ -1687,6 +1738,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -156,7 +145,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1708,6 +1764,8 @@ +@@ -1708,6 +1761,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -165,7 +154,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1731,6 +1789,8 @@ +@@ -1731,6 +1786,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -174,7 +163,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1752,6 +1812,8 @@ +@@ -1752,6 +1809,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -183,7 +172,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1773,6 +1835,8 @@ +@@ -1773,6 +1832,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -192,7 +181,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1798,6 +1862,8 @@ +@@ -1798,6 +1859,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -201,7 +190,7 @@ WINSOCK_API_LINKAGE u_long WSAAPI -@@ -1815,6 +1881,8 @@ +@@ -1815,6 +1878,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -210,7 +199,7 @@ WINSOCK_API_LINKAGE u_short WSAAPI -@@ -1832,6 +1900,8 @@ +@@ -1832,6 +1897,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -219,7 +208,7 @@ _WINSOCK_DEPRECATED_BY("inet_pton() or InetPton()") WINSOCK_API_LINKAGE unsigned long -@@ -1850,6 +1920,8 @@ +@@ -1850,6 +1917,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -228,7 +217,7 @@ _WINSOCK_DEPRECATED_BY("inet_ntop() or InetNtop()") WINSOCK_API_LINKAGE char FAR * -@@ -1892,6 +1964,7 @@ +@@ -1892,6 +1961,7 @@ #ifndef htonll @@ -236,7 +225,7 @@ __inline unsigned __int64 htonll ( unsigned __int64 Value ) { const unsigned __int64 Retval = _WS2_32_WINSOCK_SWAP_LONGLONG (Value); -@@ -1900,6 +1973,7 @@ +@@ -1900,6 +1970,7 @@ #endif /* htonll */ #ifndef ntohll @@ -244,7 +233,7 @@ __inline unsigned __int64 ntohll ( unsigned __int64 Value ) { const unsigned __int64 Retval = _WS2_32_WINSOCK_SWAP_LONGLONG (Value); -@@ -1908,6 +1982,7 @@ +@@ -1908,6 +1979,7 @@ #endif /* ntohll */ #ifndef htonf @@ -252,7 +241,7 @@ __inline unsigned __int32 htonf ( float Value ) { unsigned __int32 Tempval; -@@ -1919,6 +1994,7 @@ +@@ -1919,6 +1991,7 @@ #endif /* htonf */ #ifndef ntohf @@ -260,7 +249,7 @@ __inline float ntohf ( unsigned __int32 Value ) { const unsigned __int32 Tempval = _WS2_32_WINSOCK_SWAP_LONG (Value); -@@ -1929,6 +2005,7 @@ +@@ -1929,6 +2002,7 @@ #endif /* ntohf */ #ifndef htond @@ -268,7 +257,7 @@ __inline unsigned __int64 htond ( double Value ) { unsigned __int64 Tempval; -@@ -1940,6 +2017,7 @@ +@@ -1940,6 +2014,7 @@ #endif /* htond */ #ifndef ntohd @@ -276,7 +265,7 @@ __inline double ntohd ( unsigned __int64 Value ) { const unsigned __int64 Tempval = _WS2_32_WINSOCK_SWAP_LONGLONG (Value); -@@ -1951,6 +2029,8 @@ +@@ -1951,6 +2026,8 @@ #endif /* NO_EXTRA_HTON_FUNCTIONS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -285,7 +274,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -1970,6 +2050,8 @@ +@@ -1970,6 +2047,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -294,7 +283,7 @@ WINSOCK_API_LINKAGE u_long WSAAPI -@@ -1987,6 +2069,8 @@ +@@ -1987,6 +2066,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -303,7 +292,7 @@ WINSOCK_API_LINKAGE u_short WSAAPI -@@ -2004,6 +2088,8 @@ +@@ -2004,6 +2085,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -312,7 +301,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2011,7 +2097,7 @@ +@@ -2011,7 +2094,7 @@ _In_ SOCKET s, _Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf, _In_ int len, @@ -321,7 +310,7 @@ ); #endif /* INCL_WINSOCK_API_PROTOTYPES */ -@@ -2027,6 +2113,8 @@ +@@ -2027,6 +2110,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -330,7 +319,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2054,6 +2142,8 @@ +@@ -2054,6 +2139,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -339,7 +328,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2079,29 +2169,33 @@ +@@ -2079,29 +2166,33 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -387,7 +376,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2129,6 +2223,8 @@ +@@ -2129,6 +2220,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -396,7 +385,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2154,32 +2250,35 @@ +@@ -2154,32 +2247,35 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -445,7 +434,7 @@ _In_ int protocol ); #endif /* INCL_WINSOCK_API_PROTOTYPES */ -@@ -2198,6 +2297,8 @@ +@@ -2198,6 +2294,8 @@ /* Database function prototypes */ #if INCL_WINSOCK_API_PROTOTYPES @@ -454,7 +443,7 @@ _WINSOCK_DEPRECATED_BY("getnameinfo() or GetNameInfoW()") WINSOCK_API_LINKAGE struct hostent FAR * -@@ -2220,6 +2321,8 @@ +@@ -2220,6 +2318,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -463,7 +452,7 @@ _WINSOCK_DEPRECATED_BY("getaddrinfo() or GetAddrInfoW()") WINSOCK_API_LINKAGE struct hostent FAR * -@@ -2238,6 +2341,8 @@ +@@ -2238,6 +2338,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -472,7 +461,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2258,6 +2363,8 @@ +@@ -2258,6 +2360,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -481,7 +470,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2278,6 +2385,8 @@ +@@ -2278,6 +2382,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -490,7 +479,7 @@ WINSOCK_API_LINKAGE struct servent FAR * WSAAPI -@@ -2297,6 +2406,8 @@ +@@ -2297,6 +2403,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -499,7 +488,7 @@ WINSOCK_API_LINKAGE struct servent FAR * WSAAPI -@@ -2316,6 +2427,8 @@ +@@ -2316,6 +2424,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -508,7 +497,7 @@ WINSOCK_API_LINKAGE struct protoent FAR * WSAAPI -@@ -2333,6 +2446,8 @@ +@@ -2333,6 +2443,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -517,7 +506,7 @@ WINSOCK_API_LINKAGE struct protoent FAR * WSAAPI -@@ -2352,6 +2467,8 @@ +@@ -2352,6 +2464,8 @@ /* Microsoft Windows Extension function prototypes */ #if INCL_WINSOCK_API_PROTOTYPES @@ -526,7 +515,7 @@ WINSOCK_API_LINKAGE _Must_inspect_result_ int -@@ -2373,6 +2490,8 @@ +@@ -2373,6 +2487,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -535,7 +524,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2390,6 +2509,8 @@ +@@ -2390,6 +2506,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -544,7 +533,7 @@ WINSOCK_API_LINKAGE void WSAAPI -@@ -2407,6 +2528,8 @@ +@@ -2407,6 +2525,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -553,7 +542,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2427,6 +2550,7 @@ +@@ -2427,6 +2547,7 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #if INCL_WINSOCK_API_PROTOTYPES @@ -561,7 +550,7 @@ _WINSOCK_DEPRECATED_BY("Winsock 2") WINSOCK_API_LINKAGE BOOL -@@ -2445,6 +2569,7 @@ +@@ -2445,6 +2566,7 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -569,7 +558,7 @@ _WINSOCK_DEPRECATED_BY("Winsock 2") WINSOCK_API_LINKAGE int -@@ -2463,6 +2588,7 @@ +@@ -2463,6 +2585,7 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -577,7 +566,7 @@ _WINSOCK_DEPRECATED_BY("Winsock 2") WINSOCK_API_LINKAGE FARPROC -@@ -2481,6 +2607,7 @@ +@@ -2481,6 +2604,7 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -585,7 +574,7 @@ _WINSOCK_DEPRECATED_BY("Winsock 2") WINSOCK_API_LINKAGE int -@@ -2499,6 +2626,8 @@ +@@ -2499,6 +2623,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -594,7 +583,7 @@ _WINSOCK_DEPRECATED_BY("getservbyname()") WINSOCK_API_LINKAGE HANDLE -@@ -2527,6 +2656,8 @@ +@@ -2527,6 +2653,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -603,7 +592,7 @@ _WINSOCK_DEPRECATED_BY("getservbyport()") WINSOCK_API_LINKAGE HANDLE -@@ -2555,6 +2686,8 @@ +@@ -2555,6 +2683,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -612,7 +601,7 @@ _WINSOCK_DEPRECATED_BY("getprotobyname()") WINSOCK_API_LINKAGE HANDLE -@@ -2581,6 +2714,8 @@ +@@ -2581,6 +2711,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -621,7 +610,7 @@ _WINSOCK_DEPRECATED_BY("getprotobynumber()") WINSOCK_API_LINKAGE HANDLE -@@ -2607,6 +2742,8 @@ +@@ -2607,6 +2739,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -630,7 +619,7 @@ _WINSOCK_DEPRECATED_BY("GetAddrInfoExW()") WINSOCK_API_LINKAGE HANDLE -@@ -2633,6 +2770,8 @@ +@@ -2633,6 +2767,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -639,7 +628,7 @@ _WINSOCK_DEPRECATED_BY("getnameinfo() or GetNameInfoW()") WINSOCK_API_LINKAGE HANDLE -@@ -2663,6 +2802,8 @@ +@@ -2663,6 +2799,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -648,7 +637,7 @@ _WINSOCK_DEPRECATED WINSOCK_API_LINKAGE int -@@ -2681,6 +2822,8 @@ +@@ -2681,6 +2819,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -657,7 +646,7 @@ _WINSOCK_DEPRECATED_BY("WSAEventSelect()") WINSOCK_API_LINKAGE int -@@ -2710,6 +2853,8 @@ +@@ -2710,6 +2850,8 @@ /* WinSock 2 API new function prototypes */ #if INCL_WINSOCK_API_PROTOTYPES @@ -666,7 +655,7 @@ WINSOCK_API_LINKAGE _Must_inspect_result_ SOCKET -@@ -2737,6 +2882,8 @@ +@@ -2737,6 +2879,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -675,7 +664,7 @@ WINSOCK_API_LINKAGE BOOL WSAAPI -@@ -2754,6 +2901,8 @@ +@@ -2754,6 +2898,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -684,7 +673,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2776,6 +2925,8 @@ +@@ -2776,6 +2922,8 @@ #define WSAConnectByName WSAConnectByNameA #endif @@ -693,7 +682,7 @@ BOOL PASCAL WSAConnectByNameW( -@@ -2789,6 +2940,8 @@ +@@ -2789,6 +2937,8 @@ _In_opt_ const struct timeval * timeout, _Reserved_ LPWSAOVERLAPPED Reserved); @@ -702,7 +691,7 @@ _WINSOCK_DEPRECATED_BY("WSAConnectByNameW()") BOOL PASCAL -@@ -2803,6 +2956,8 @@ +@@ -2803,6 +2953,8 @@ _In_opt_ const struct timeval * timeout, _Reserved_ LPWSAOVERLAPPED Reserved); @@ -711,7 +700,7 @@ BOOL PASCAL WSAConnectByList( -@@ -2831,6 +2986,8 @@ +@@ -2831,6 +2983,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -720,7 +709,7 @@ WINSOCK_API_LINKAGE WSAEVENT WSAAPI -@@ -2848,6 +3005,8 @@ +@@ -2848,6 +3002,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -729,7 +718,7 @@ _WINSOCK_DEPRECATED_BY("WSADuplicateSocketW()") WINSOCK_API_LINKAGE int -@@ -2858,6 +3017,8 @@ +@@ -2858,6 +3014,8 @@ _Out_ LPWSAPROTOCOL_INFOA lpProtocolInfo ); @@ -738,7 +727,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2897,6 +3058,8 @@ +@@ -2897,6 +3055,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -747,7 +736,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2918,6 +3081,8 @@ +@@ -2918,6 +3078,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -756,7 +745,7 @@ _WINSOCK_DEPRECATED_BY("WSAEnumProtocolsW()") WINSOCK_API_LINKAGE int -@@ -2928,6 +3093,8 @@ +@@ -2928,6 +3090,8 @@ _Inout_ LPDWORD lpdwBufferLength ); @@ -765,7 +754,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2967,6 +3134,8 @@ +@@ -2967,6 +3131,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -774,7 +763,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -2988,6 +3157,8 @@ +@@ -2988,6 +3154,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -783,7 +772,7 @@ WINSOCK_API_LINKAGE BOOL WSAAPI -@@ -3016,6 +3187,8 @@ +@@ -3016,6 +3184,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #if INCL_WINSOCK_API_PROTOTYPES @@ -792,7 +781,7 @@ _WINSOCK_DEPRECATED WINSOCK_API_LINKAGE BOOL -@@ -3041,6 +3214,8 @@ +@@ -3041,6 +3211,8 @@ #pragma endregion #if INCL_WINSOCK_API_PROTOTYPES @@ -801,7 +790,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3062,6 +3237,8 @@ +@@ -3062,6 +3234,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -810,7 +799,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3083,6 +3260,8 @@ +@@ -3083,6 +3257,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -819,7 +808,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3116,6 +3295,8 @@ +@@ -3116,6 +3292,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -828,7 +817,7 @@ WINSOCK_API_LINKAGE SOCKET WSAAPI -@@ -3147,6 +3328,8 @@ +@@ -3147,6 +3325,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -837,7 +826,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3168,6 +3351,8 @@ +@@ -3168,6 +3348,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -846,7 +835,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3189,6 +3374,8 @@ +@@ -3189,6 +3371,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -855,7 +844,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3221,6 +3408,8 @@ +@@ -3221,6 +3405,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #if INCL_WINSOCK_API_PROTOTYPES @@ -864,7 +853,7 @@ _WINSOCK_DEPRECATED_BY("WSARecv()") WINSOCK_API_LINKAGE int -@@ -3244,6 +3433,8 @@ +@@ -3244,6 +3430,8 @@ #pragma endregion #if INCL_WINSOCK_API_PROTOTYPES @@ -873,7 +862,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3277,6 +3468,8 @@ +@@ -3277,6 +3465,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -882,7 +871,7 @@ WINSOCK_API_LINKAGE BOOL WSAAPI -@@ -3294,6 +3487,8 @@ +@@ -3294,6 +3484,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -891,7 +880,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3324,6 +3519,8 @@ +@@ -3324,6 +3516,8 @@ #if(_WIN32_WINNT >= 0x0600) #if INCL_WINSOCK_API_PROTOTYPES @@ -900,7 +889,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3342,6 +3539,8 @@ +@@ -3342,6 +3536,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #if INCL_WINSOCK_API_PROTOTYPES @@ -909,7 +898,7 @@ _WINSOCK_DEPRECATED_BY("WSASend()") WINSOCK_API_LINKAGE int -@@ -3365,6 +3564,8 @@ +@@ -3365,6 +3561,8 @@ #pragma endregion #if INCL_WINSOCK_API_PROTOTYPES @@ -918,7 +907,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -3398,6 +3599,8 @@ +@@ -3398,6 +3596,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -927,7 +916,7 @@ WINSOCK_API_LINKAGE BOOL WSAAPI -@@ -3415,7 +3618,9 @@ +@@ -3415,7 +3615,9 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -938,7 +927,7 @@ _WINSOCK_DEPRECATED_BY("WSASocketW()") WINSOCK_API_LINKAGE _Must_inspect_result_ -@@ -3430,6 +3635,8 @@ +@@ -3430,6 +3632,8 @@ _In_ DWORD dwFlags ); @@ -947,7 +936,7 @@ WINSOCK_API_LINKAGE _Must_inspect_result_ SOCKET -@@ -3482,7 +3689,9 @@ +@@ -3482,7 +3686,9 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -957,7 +946,7 @@ DWORD WSAAPI WSAWaitForMultipleEvents( -@@ -3508,6 +3717,8 @@ +@@ -3508,6 +3714,8 @@ #if INCL_WINSOCK_API_PROTOTYPES @@ -966,7 +955,7 @@ _WINSOCK_DEPRECATED_BY("WSAAddressToStringW()") WINSOCK_API_LINKAGE INT -@@ -3520,6 +3731,8 @@ +@@ -3520,6 +3728,8 @@ _Inout_ LPDWORD lpdwAddressStringLength ); @@ -975,7 +964,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3567,6 +3780,8 @@ +@@ -3567,6 +3777,8 @@ #if INCL_WINSOCK_API_PROTOTYPES @@ -984,7 +973,7 @@ _WINSOCK_DEPRECATED_BY("WSAStringToAddressW()") WINSOCK_API_LINKAGE INT -@@ -3579,6 +3794,8 @@ +@@ -3579,6 +3791,8 @@ _Inout_ LPINT lpAddressLength ); @@ -993,7 +982,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3629,6 +3846,8 @@ +@@ -3629,6 +3843,8 @@ #if INCL_WINSOCK_API_PROTOTYPES @@ -1002,7 +991,7 @@ _WINSOCK_DEPRECATED_BY("WSALookupServiceBeginW()") WINSOCK_API_LINKAGE INT -@@ -3639,6 +3858,8 @@ +@@ -3639,6 +3855,8 @@ _Out_ LPHANDLE lphLookup ); @@ -1011,7 +1000,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3680,6 +3901,8 @@ +@@ -3680,6 +3898,8 @@ #if INCL_WINSOCK_API_PROTOTYPES @@ -1020,7 +1009,7 @@ _WINSOCK_DEPRECATED_BY("WSALookupServiceNextW()") WINSOCK_API_LINKAGE INT -@@ -3691,6 +3914,8 @@ +@@ -3691,6 +3911,8 @@ _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSAQUERYSETA lpqsResults ); @@ -1029,7 +1018,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3735,6 +3960,8 @@ +@@ -3735,6 +3957,8 @@ #if(_WIN32_WINNT >= 0x0501) #if INCL_WINSOCK_API_PROTOTYPES @@ -1038,7 +1027,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3767,6 +3994,8 @@ +@@ -3767,6 +3991,8 @@ #endif //(_WIN32_WINNT >= 0x0501) #if INCL_WINSOCK_API_PROTOTYPES @@ -1047,7 +1036,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3787,6 +4016,8 @@ +@@ -3787,6 +4013,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) #if INCL_WINSOCK_API_PROTOTYPES @@ -1056,7 +1045,7 @@ _WINSOCK_DEPRECATED_BY("WSAInstallServiceClassW()") WINSOCK_API_LINKAGE INT -@@ -3794,6 +4025,8 @@ +@@ -3794,6 +4022,8 @@ WSAInstallServiceClassA( _In_ LPWSASERVICECLASSINFOA lpServiceClassInfo ); @@ -1065,7 +1054,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3826,6 +4059,8 @@ +@@ -3826,6 +4056,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -1074,7 +1063,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3848,6 +4083,8 @@ +@@ -3848,6 +4080,8 @@ #if INCL_WINSOCK_API_PROTOTYPES #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1083,7 +1072,7 @@ _WINSOCK_DEPRECATED_BY("WSAGetServiceClassInfoW()") WINSOCK_API_LINKAGE INT -@@ -3861,6 +4098,8 @@ +@@ -3861,6 +4095,8 @@ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */ #pragma endregion @@ -1092,7 +1081,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3907,6 +4146,8 @@ +@@ -3907,6 +4143,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -1101,7 +1090,7 @@ _WINSOCK_DEPRECATED_BY("WSAEnumNameSpaceProvidersW()") WINSOCK_API_LINKAGE INT -@@ -3916,6 +4157,8 @@ +@@ -3916,6 +4154,8 @@ _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOA lpnspBuffer ); @@ -1110,7 +1099,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -3931,6 +4174,8 @@ +@@ -3931,6 +4171,8 @@ #endif /* !UNICODE */ #if(_WIN32_WINNT >= 0x0600 ) @@ -1119,7 +1108,7 @@ _WINSOCK_DEPRECATED_BY("WSAEnumNameSpaceProvidersW()") WINSOCK_API_LINKAGE INT -@@ -3940,6 +4185,8 @@ +@@ -3940,6 +4182,8 @@ _Out_writes_bytes_to_(*lpdwBufferLength,*lpdwBufferLength) LPWSANAMESPACE_INFOEXA lpnspBuffer ); @@ -1128,7 +1117,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -4006,6 +4253,8 @@ +@@ -4006,6 +4250,8 @@ #if INCL_WINSOCK_API_PROTOTYPES #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -1137,7 +1126,7 @@ _WINSOCK_DEPRECATED_BY("WSAGetServiceClassNameByClassIdW()") WINSOCK_API_LINKAGE _Success_(return == 0) INT -@@ -4018,6 +4267,8 @@ +@@ -4018,6 +4264,8 @@ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */ #pragma endregion @@ -1146,7 +1135,7 @@ WINSOCK_API_LINKAGE _Success_(return == 0) INT WSAAPI -@@ -4061,6 +4312,8 @@ +@@ -4061,6 +4309,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -1155,7 +1144,7 @@ _WINSOCK_DEPRECATED_BY("WSASetServiceW()") WINSOCK_API_LINKAGE INT -@@ -4071,6 +4324,8 @@ +@@ -4071,6 +4321,8 @@ _In_ DWORD dwControlFlags ); @@ -1164,7 +1153,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -4110,6 +4365,8 @@ +@@ -4110,6 +4362,8 @@ #endif /* INCL_WINSOCK_API_TYPEDEFS */ #if INCL_WINSOCK_API_PROTOTYPES @@ -1173,7 +1162,7 @@ WINSOCK_API_LINKAGE INT WSAAPI -@@ -4132,6 +4389,8 @@ +@@ -4132,6 +4386,8 @@ #if(_WIN32_WINNT >= 0x0600) #if INCL_WINSOCK_API_PROTOTYPES @@ -1182,7 +1171,7 @@ WINSOCK_API_LINKAGE int WSAAPI -@@ -4331,4 +4590,3 @@ +@@ -4331,4 +4587,3 @@ #endif //(_WIN32_WINNT >= 0x0501) #endif /* _WINSOCK2API_ */ diff --git a/generation/WinSDK/patches/um/winsvc.h.patch b/generation/WinSDK/patches/um/winsvc.h.patch index c78e33139..89938ff74 100644 --- a/generation/WinSDK/patches/um/winsvc.h.patch +++ b/generation/WinSDK/patches/um/winsvc.h.patch @@ -168,23 +168,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h GUID * pTriggerSubtype; // Provider GUID if the trigger type is SERVICE_TRIGGER_TYPE_CUSTOM // Device class interface GUID if the trigger type is // SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL -@@ -696,9 +780,15 @@ - // - - DECLARE_HANDLE(SC_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SC_HANDLE SC_HANDLE; -+#endif - typedef SC_HANDLE *LPSC_HANDLE; - - DECLARE_HANDLE(SERVICE_STATUS_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef SERVICE_STATUS_HANDLE SERVICE_STATUS_HANDLE; -+#endif - - // - // Info levels for QueryServiceStatusEx -@@ -721,8 +811,8 @@ +@@ -721,8 +805,8 @@ // typedef struct _SERVICE_STATUS { @@ -195,7 +179,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h DWORD dwControlsAccepted; DWORD dwWin32ExitCode; DWORD dwServiceSpecificExitCode; -@@ -731,15 +821,15 @@ +@@ -731,15 +815,15 @@ } SERVICE_STATUS, *LPSERVICE_STATUS; typedef struct _SERVICE_STATUS_PROCESS { @@ -214,7 +198,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h } SERVICE_STATUS_PROCESS, *LPSERVICE_STATUS_PROCESS; -@@ -814,9 +904,9 @@ +@@ -814,9 +898,9 @@ // typedef struct _QUERY_SERVICE_CONFIGA { @@ -227,7 +211,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h LPSTR lpBinaryPathName; LPSTR lpLoadOrderGroup; DWORD dwTagId; -@@ -825,9 +915,9 @@ +@@ -825,9 +909,9 @@ LPSTR lpDisplayName; } QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA; typedef struct _QUERY_SERVICE_CONFIGW { @@ -240,7 +224,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h LPWSTR lpBinaryPathName; LPWSTR lpLoadOrderGroup; DWORD dwTagId; -@@ -1019,14 +1109,16 @@ +@@ -1019,14 +1103,16 @@ // API Function Prototypes /////////////////////////////////////////////////////////////////////////// @@ -260,7 +244,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_opt_ LPCSTR lpBinaryPathName, _In_opt_ LPCSTR lpLoadOrderGroup, _Out_opt_ LPDWORD lpdwTagId, -@@ -1035,14 +1127,16 @@ +@@ -1035,14 +1121,16 @@ _In_opt_ LPCSTR lpPassword, _In_opt_ LPCSTR lpDisplayName ); @@ -280,7 +264,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_opt_ LPCWSTR lpBinaryPathName, _In_opt_ LPCWSTR lpLoadOrderGroup, _Out_opt_ LPDWORD lpdwTagId, -@@ -1057,20 +1151,24 @@ +@@ -1057,20 +1145,24 @@ #define ChangeServiceConfig ChangeServiceConfigA #endif // !UNICODE @@ -307,7 +291,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_opt_ LPVOID lpInfo ); #ifdef UNICODE -@@ -1079,6 +1177,8 @@ +@@ -1079,6 +1171,8 @@ #define ChangeServiceConfig2 ChangeServiceConfig2A #endif // !UNICODE @@ -316,7 +300,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1086,6 +1186,8 @@ +@@ -1086,6 +1180,8 @@ _In_ SC_HANDLE hSCObject ); @@ -325,7 +309,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1095,6 +1197,8 @@ +@@ -1095,6 +1191,8 @@ _Out_ LPSERVICE_STATUS lpServiceStatus ); @@ -334,7 +318,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1104,9 +1208,9 @@ +@@ -1104,9 +1202,9 @@ _In_ LPCSTR lpServiceName, _In_opt_ LPCSTR lpDisplayName, _In_ DWORD dwDesiredAccess, @@ -347,7 +331,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_opt_ LPCSTR lpBinaryPathName, _In_opt_ LPCSTR lpLoadOrderGroup, _Out_opt_ LPDWORD lpdwTagId, -@@ -1114,6 +1218,8 @@ +@@ -1114,6 +1212,8 @@ _In_opt_ LPCSTR lpServiceStartName, _In_opt_ LPCSTR lpPassword ); @@ -356,7 +340,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1123,9 +1229,9 @@ +@@ -1123,9 +1223,9 @@ _In_ LPCWSTR lpServiceName, _In_opt_ LPCWSTR lpDisplayName, _In_ DWORD dwDesiredAccess, @@ -369,7 +353,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_opt_ LPCWSTR lpBinaryPathName, _In_opt_ LPCWSTR lpLoadOrderGroup, _Out_opt_ LPDWORD lpdwTagId, -@@ -1139,6 +1245,8 @@ +@@ -1139,6 +1239,8 @@ #define CreateService CreateServiceA #endif // !UNICODE @@ -378,7 +362,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1146,26 +1254,30 @@ +@@ -1146,26 +1248,30 @@ _In_ SC_HANDLE hService ); @@ -411,7 +395,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPENUM_SERVICE_STATUSW lpServices, _In_ DWORD cbBufSize, -@@ -1184,14 +1296,16 @@ +@@ -1184,14 +1290,16 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -430,7 +414,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPENUM_SERVICE_STATUSA lpServices, _In_ DWORD cbBufSize, -@@ -1199,14 +1313,16 @@ +@@ -1199,14 +1307,16 @@ _Out_ LPDWORD lpServicesReturned, _Inout_opt_ LPDWORD lpResumeHandle ); @@ -449,7 +433,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPENUM_SERVICE_STATUSW lpServices, _In_ DWORD cbBufSize, -@@ -1226,6 +1342,8 @@ +@@ -1226,6 +1336,8 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -458,7 +442,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1233,8 +1351,8 @@ +@@ -1233,8 +1345,8 @@ EnumServicesStatusExA( _In_ SC_HANDLE hSCManager, _In_ SC_ENUM_TYPE InfoLevel, @@ -469,7 +453,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPBYTE lpServices, _In_ DWORD cbBufSize, -@@ -1243,6 +1361,8 @@ +@@ -1243,6 +1355,8 @@ _Inout_opt_ LPDWORD lpResumeHandle, _In_opt_ LPCSTR pszGroupName ); @@ -478,7 +462,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1250,8 +1370,8 @@ +@@ -1250,8 +1364,8 @@ EnumServicesStatusExW( _In_ SC_HANDLE hSCManager, _In_ SC_ENUM_TYPE InfoLevel, @@ -489,7 +473,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPBYTE lpServices, _In_ DWORD cbBufSize, -@@ -1266,6 +1386,8 @@ +@@ -1266,6 +1380,8 @@ #define EnumServicesStatusEx EnumServicesStatusExA #endif // !UNICODE @@ -498,7 +482,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1277,6 +1399,8 @@ +@@ -1277,6 +1393,8 @@ LPSTR lpServiceName, _Inout_ LPDWORD lpcchBuffer ); @@ -507,7 +491,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1294,6 +1418,8 @@ +@@ -1294,6 +1412,8 @@ #define GetServiceKeyName GetServiceKeyNameA #endif // !UNICODE @@ -516,7 +500,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1305,6 +1431,8 @@ +@@ -1305,6 +1425,8 @@ LPSTR lpDisplayName, _Inout_ LPDWORD lpcchBuffer ); @@ -525,7 +509,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1328,6 +1456,8 @@ +@@ -1328,6 +1450,8 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -534,7 +518,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI SC_LOCK WINAPI -@@ -1335,6 +1465,8 @@ +@@ -1335,6 +1459,8 @@ _In_ SC_HANDLE hSCManager ); @@ -543,7 +527,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1348,6 +1480,8 @@ +@@ -1348,6 +1474,8 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -552,7 +536,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1357,6 +1491,8 @@ +@@ -1357,6 +1485,8 @@ _In_opt_ LPCSTR lpDatabaseName, _In_ DWORD dwDesiredAccess ); @@ -561,7 +545,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1372,6 +1508,8 @@ +@@ -1372,6 +1502,8 @@ #define OpenSCManager OpenSCManagerA #endif // !UNICODE @@ -570,7 +554,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1381,6 +1519,8 @@ +@@ -1381,6 +1513,8 @@ _In_ LPCSTR lpServiceName, _In_ DWORD dwDesiredAccess ); @@ -579,7 +563,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SC_HANDLE -@@ -1396,6 +1536,8 @@ +@@ -1396,6 +1530,8 @@ #define OpenService OpenServiceA #endif // !UNICODE @@ -588,7 +572,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1407,6 +1549,8 @@ +@@ -1407,6 +1543,8 @@ _In_ DWORD cbBufSize, _Out_ LPDWORD pcbBytesNeeded ); @@ -597,7 +581,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1424,6 +1568,8 @@ +@@ -1424,6 +1562,8 @@ #define QueryServiceConfig QueryServiceConfigA #endif // !UNICODE @@ -606,7 +590,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _When_(dwInfoLevel == SERVICE_CONFIG_DESCRIPTION, _At_(cbBufSize, _In_range_(>=, sizeof(LPSERVICE_DESCRIPTIONA)))) _When_(dwInfoLevel == SERVICE_CONFIG_FAILURE_ACTIONS, -@@ -1437,12 +1583,14 @@ +@@ -1437,12 +1577,14 @@ WINAPI QueryServiceConfig2A( _In_ SC_HANDLE hService, @@ -622,7 +606,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _When_(dwInfoLevel == SERVICE_CONFIG_DESCRIPTION, _At_(cbBufSize, _In_range_(>=, sizeof(LPSERVICE_DESCRIPTIONW)))) _When_(dwInfoLevel == SERVICE_CONFIG_FAILURE_ACTIONS, -@@ -1456,7 +1604,7 @@ +@@ -1456,7 +1598,7 @@ WINAPI QueryServiceConfig2W( _In_ SC_HANDLE hService, @@ -631,7 +615,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Out_writes_bytes_opt_(cbBufSize) LPBYTE lpBuffer, _In_ DWORD cbBufSize, -@@ -1474,6 +1622,8 @@ +@@ -1474,6 +1616,8 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -640,7 +624,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1485,6 +1635,8 @@ +@@ -1485,6 +1629,8 @@ _In_ DWORD cbBufSize, _Out_ LPDWORD pcbBytesNeeded ); @@ -649,7 +633,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1508,6 +1660,8 @@ +@@ -1508,6 +1654,8 @@ #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -658,7 +642,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1521,6 +1675,8 @@ +@@ -1521,6 +1669,8 @@ _Out_ LPDWORD pcbBytesNeeded ); @@ -667,7 +651,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1530,6 +1686,8 @@ +@@ -1530,6 +1680,8 @@ _Out_ LPSERVICE_STATUS lpServiceStatus ); @@ -676,7 +660,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI BOOL -@@ -1543,6 +1701,8 @@ +@@ -1543,6 +1695,8 @@ _Out_ LPDWORD pcbBytesNeeded ); @@ -685,7 +669,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SERVICE_STATUS_HANDLE -@@ -1552,6 +1712,8 @@ +@@ -1552,6 +1706,8 @@ _In_ __callback LPHANDLER_FUNCTION lpHandlerProc ); @@ -694,7 +678,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SERVICE_STATUS_HANDLE -@@ -1567,6 +1729,8 @@ +@@ -1567,6 +1723,8 @@ #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA #endif // !UNICODE @@ -703,7 +687,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SERVICE_STATUS_HANDLE -@@ -1577,6 +1741,8 @@ +@@ -1577,6 +1735,8 @@ LPHANDLER_FUNCTION_EX lpHandlerProc, _In_opt_ LPVOID lpContext ); @@ -712,7 +696,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ WINADVAPI SERVICE_STATUS_HANDLE -@@ -1593,15 +1759,19 @@ +@@ -1593,15 +1753,19 @@ #define RegisterServiceCtrlHandlerEx RegisterServiceCtrlHandlerExA #endif // !UNICODE @@ -733,7 +717,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1610,12 +1780,16 @@ +@@ -1610,12 +1774,16 @@ _In_ LPSERVICE_STATUS lpServiceStatus ); @@ -750,7 +734,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1629,6 +1803,8 @@ +@@ -1629,6 +1797,8 @@ #endif // !UNICODE @@ -759,7 +743,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1638,6 +1814,8 @@ +@@ -1638,6 +1808,8 @@ _In_reads_opt_(dwNumServiceArgs) LPCSTR *lpServiceArgVectors ); @@ -768,7 +752,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1659,6 +1837,8 @@ +@@ -1659,6 +1831,8 @@ #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -777,7 +761,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1674,20 +1854,22 @@ +@@ -1674,20 +1848,22 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -802,7 +786,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _In_ PSERVICE_NOTIFYW pNotifyBuffer ); #ifdef UNICODE -@@ -1696,6 +1878,8 @@ +@@ -1696,6 +1872,8 @@ #define NotifyServiceStatusChange NotifyServiceStatusChangeA #endif // !UNICODE @@ -811,7 +795,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1705,6 +1889,8 @@ +@@ -1705,6 +1883,8 @@ _In_ DWORD dwInfoLevel, _Inout_ PVOID pControlParams ); @@ -820,7 +804,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1720,6 +1906,8 @@ +@@ -1720,6 +1900,8 @@ #define ControlServiceEx ControlServiceExA #endif // !UNICODE @@ -829,17 +813,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h WINADVAPI BOOL WINAPI -@@ -1753,6 +1941,9 @@ - typedef SC_NOTIFICATION_CALLBACK* PSC_NOTIFICATION_CALLBACK; - - typedef struct _SC_NOTIFICATION_REGISTRATION* PSC_NOTIFICATION_REGISTRATION; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef PSC_NOTIFICATION_REGISTRATION PSC_NOTIFICATION_REGISTRATION; -+#endif - - WINADVAPI - DWORD -@@ -1796,6 +1987,7 @@ +@@ -1796,6 +1978,7 @@ MaxServiceRegistryStateType = 2, } SERVICE_REGISTRY_STATE_TYPE; @@ -847,7 +821,7 @@ diff --git a/um/winsvc.h b/um/winsvc.h _Must_inspect_result_ DWORD WINAPI -@@ -1815,6 +2007,7 @@ +@@ -1815,6 +1998,7 @@ ServiceDirectoryTypeMax = 1, } SERVICE_DIRECTORY_TYPE; diff --git a/generation/WinSDK/patches/um/winusb.h.patch b/generation/WinSDK/patches/um/winusb.h.patch index 2f9e1d6e8..df5534eab 100644 --- a/generation/WinSDK/patches/um/winusb.h.patch +++ b/generation/WinSDK/patches/um/winusb.h.patch @@ -2,313 +2,303 @@ diff --git a/um/winusb.h b/um/winusb.h --- a/um/winusb.h +++ b/um/winusb.h @@ -34,6 +34,7 @@ - - #ifndef __WUSB_H__ - #define __WUSB_H__ -+#include - - #include - -@@ -49,6 +50,9 @@ - #include - - typedef PVOID WINUSB_INTERFACE_HANDLE, *PWINUSB_INTERFACE_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WINUSB_INTERFACE_HANDLE WINUSB_INTERFACE_HANDLE; -+#endif - - typedef PVOID WINUSB_ISOCH_BUFFER_HANDLE, *PWINUSB_ISOCH_BUFFER_HANDLE; - -@@ -67,27 +71,30 @@ - - - BOOL __stdcall -+WinUsb_Free( -+ _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle -+ ); -+ -+ -+_Win32_SetLastError_ -+BOOL __stdcall - WinUsb_Initialize( - _In_ HANDLE DeviceHandle, -- _Out_ PWINUSB_INTERFACE_HANDLE InterfaceHandle -- ); -- -- --BOOL __stdcall --WinUsb_Free( -- _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle -- ); -- -- -+ _Out_ _Win32_RAIIFree_(WinUsb_Free, 0) PWINUSB_INTERFACE_HANDLE InterfaceHandle -+ ); -+ -+ -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetAssociatedInterface( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR AssociatedInterfaceIndex, -- _Out_ PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle -- ); -- -- -- -+ _Out_ _Win32_RAIIFree_(WinUsb_Free, 0) PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle -+ ); -+ -+ -+ -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetDescriptor( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -99,6 +106,7 @@ - _Out_ PULONG LengthTransferred - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_QueryInterfaceSettings( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -106,6 +114,7 @@ - _Out_ PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_QueryDeviceInformation( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -114,18 +123,21 @@ - _Out_writes_bytes_(*BufferLength) PVOID Buffer - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_SetCurrentAlternateSetting( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR SettingNumber - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetCurrentAlternateSetting( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _Out_ PUCHAR SettingNumber - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_QueryPipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -134,6 +146,7 @@ - _Out_ PWINUSB_PIPE_INFORMATION PipeInformation - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_QueryPipeEx( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -142,24 +155,27 @@ - _Out_ PWINUSB_PIPE_INFORMATION_EX PipeInformationEx - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_SetPipePolicy( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR PipeID, -- _In_ ULONG PolicyType, -+ _In_ _Win32_AssociatedEnum_(WINUSB_PIPE_POLICY) ULONG PolicyType, - _In_ ULONG ValueLength, - _In_reads_bytes_(ValueLength) PVOID Value - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetPipePolicy( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR PipeID, -- _In_ ULONG PolicyType, -+ _In_ _Win32_AssociatedEnum_(WINUSB_PIPE_POLICY) ULONG PolicyType, - _Inout_ PULONG ValueLength, - _Out_writes_bytes_(*ValueLength) PVOID Value - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_ReadPipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -170,6 +186,7 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_WritePipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -180,6 +197,7 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_ControlTransfer( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -190,40 +208,46 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_ResetPipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR PipeID - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_AbortPipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR PipeID - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_FlushPipe( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ UCHAR PipeID - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_SetPowerPolicy( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -- _In_ ULONG PolicyType, -+ _In_ _Win32_AssociatedEnum_(WINUSB_POWER_POLICY) ULONG PolicyType, - _In_ ULONG ValueLength, - _In_reads_bytes_(ValueLength) PVOID Value - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetPowerPolicy( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -- _In_ ULONG PolicyType, -+ _In_ _Win32_AssociatedEnum_(WINUSB_POWER_POLICY) ULONG PolicyType, - _Inout_ PULONG ValueLength, - _Out_writes_bytes_(*ValueLength) PVOID Value - ); - -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_GetOverlappedResult( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -232,6 +256,7 @@ - _In_ BOOL bWait - ); - -+_Win32_SetLastError_ - PUSB_INTERFACE_DESCRIPTOR __stdcall - WinUsb_ParseConfigurationDescriptor( - _In_ PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, -@@ -243,6 +268,7 @@ - _In_ LONG InterfaceProtocol - ); - -+_Win32_SetLastError_ - PUSB_COMMON_DESCRIPTOR __stdcall - WinUsb_ParseDescriptors( - _In_reads_bytes_(TotalLength) PVOID DescriptorBuffer, -@@ -251,17 +277,23 @@ - _In_ LONG DescriptorType - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_GetCurrentFrameNumber ( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _Out_ PULONG CurrentFrameNumber, - _Out_ LARGE_INTEGER *TimeStamp - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_GetAdjustedFrameNumber ( - _Inout_ PULONG CurrentFrameNumber, - _In_ LARGE_INTEGER TimeStamp - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_RegisterIsochBuffer( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, -@@ -271,11 +303,15 @@ - _Out_ PWINUSB_ISOCH_BUFFER_HANDLE IsochBufferHandle - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall - WinUsb_UnregisterIsochBuffer( - _In_ WINUSB_ISOCH_BUFFER_HANDLE IsochBufferHandle - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_WriteIsochPipe ( - _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - _In_ ULONG Offset, -@@ -284,6 +320,8 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_ReadIsochPipe ( - _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - _In_ ULONG Offset, -@@ -294,6 +332,8 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_WriteIsochPipeAsap ( - _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - _In_ ULONG Offset, -@@ -302,6 +342,8 @@ - _In_opt_ LPOVERLAPPED Overlapped - ); - -+_Win32_SupportedOS_Windows81_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_ReadIsochPipeAsap ( - _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, - _In_ ULONG Offset, -@@ -361,16 +403,22 @@ - - #endif - -+_Win32_SupportedOS_10240_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_StartTrackingForTimeSync ( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ PUSB_START_TRACKING_FOR_TIME_SYNC_INFORMATION StartTrackingInfo - ); - -+_Win32_SupportedOS_10240_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_GetCurrentFrameNumberAndQpc ( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ PUSB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION FrameQpcInfo - ); - -+_Win32_SupportedOS_10240_ -+_Win32_SetLastError_ - BOOL __stdcall WinUsb_StopTrackingForTimeSync ( - _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, - _In_ PUSB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION StopTrackingInfo + + #ifndef __WUSB_H__ + #define __WUSB_H__ ++#include + + #include + +@@ -67,27 +68,30 @@ + + + BOOL __stdcall ++WinUsb_Free( ++ _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle ++ ); ++ ++ ++_Win32_SetLastError_ ++BOOL __stdcall + WinUsb_Initialize( + _In_ HANDLE DeviceHandle, +- _Out_ PWINUSB_INTERFACE_HANDLE InterfaceHandle +- ); +- +- +-BOOL __stdcall +-WinUsb_Free( +- _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle +- ); +- +- ++ _Out_ _Win32_RAIIFree_(WinUsb_Free, 0) PWINUSB_INTERFACE_HANDLE InterfaceHandle ++ ); ++ ++ ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetAssociatedInterface( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR AssociatedInterfaceIndex, +- _Out_ PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle +- ); +- +- +- ++ _Out_ _Win32_RAIIFree_(WinUsb_Free, 0) PWINUSB_INTERFACE_HANDLE AssociatedInterfaceHandle ++ ); ++ ++ ++ ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetDescriptor( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -99,6 +103,7 @@ + _Out_ PULONG LengthTransferred + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_QueryInterfaceSettings( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -106,6 +111,7 @@ + _Out_ PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_QueryDeviceInformation( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -114,18 +120,21 @@ + _Out_writes_bytes_(*BufferLength) PVOID Buffer + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_SetCurrentAlternateSetting( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR SettingNumber + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetCurrentAlternateSetting( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _Out_ PUCHAR SettingNumber + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_QueryPipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -134,6 +143,7 @@ + _Out_ PWINUSB_PIPE_INFORMATION PipeInformation + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_QueryPipeEx( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -142,24 +152,27 @@ + _Out_ PWINUSB_PIPE_INFORMATION_EX PipeInformationEx + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_SetPipePolicy( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR PipeID, +- _In_ ULONG PolicyType, ++ _In_ _Win32_AssociatedEnum_(WINUSB_PIPE_POLICY) ULONG PolicyType, + _In_ ULONG ValueLength, + _In_reads_bytes_(ValueLength) PVOID Value + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetPipePolicy( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR PipeID, +- _In_ ULONG PolicyType, ++ _In_ _Win32_AssociatedEnum_(WINUSB_PIPE_POLICY) ULONG PolicyType, + _Inout_ PULONG ValueLength, + _Out_writes_bytes_(*ValueLength) PVOID Value + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_ReadPipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -170,6 +183,7 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_WritePipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -180,6 +194,7 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_ControlTransfer( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -190,40 +205,46 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_ResetPipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR PipeID + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_AbortPipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR PipeID + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_FlushPipe( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ UCHAR PipeID + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_SetPowerPolicy( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +- _In_ ULONG PolicyType, ++ _In_ _Win32_AssociatedEnum_(WINUSB_POWER_POLICY) ULONG PolicyType, + _In_ ULONG ValueLength, + _In_reads_bytes_(ValueLength) PVOID Value + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetPowerPolicy( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +- _In_ ULONG PolicyType, ++ _In_ _Win32_AssociatedEnum_(WINUSB_POWER_POLICY) ULONG PolicyType, + _Inout_ PULONG ValueLength, + _Out_writes_bytes_(*ValueLength) PVOID Value + ); + ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_GetOverlappedResult( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -232,6 +253,7 @@ + _In_ BOOL bWait + ); + ++_Win32_SetLastError_ + PUSB_INTERFACE_DESCRIPTOR __stdcall + WinUsb_ParseConfigurationDescriptor( + _In_ PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor, +@@ -243,6 +265,7 @@ + _In_ LONG InterfaceProtocol + ); + ++_Win32_SetLastError_ + PUSB_COMMON_DESCRIPTOR __stdcall + WinUsb_ParseDescriptors( + _In_reads_bytes_(TotalLength) PVOID DescriptorBuffer, +@@ -251,17 +274,23 @@ + _In_ LONG DescriptorType + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_GetCurrentFrameNumber ( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _Out_ PULONG CurrentFrameNumber, + _Out_ LARGE_INTEGER *TimeStamp + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_GetAdjustedFrameNumber ( + _Inout_ PULONG CurrentFrameNumber, + _In_ LARGE_INTEGER TimeStamp + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_RegisterIsochBuffer( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, +@@ -271,11 +300,15 @@ + _Out_ PWINUSB_ISOCH_BUFFER_HANDLE IsochBufferHandle + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall + WinUsb_UnregisterIsochBuffer( + _In_ WINUSB_ISOCH_BUFFER_HANDLE IsochBufferHandle + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_WriteIsochPipe ( + _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, + _In_ ULONG Offset, +@@ -284,6 +317,8 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_ReadIsochPipe ( + _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, + _In_ ULONG Offset, +@@ -294,6 +329,8 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_WriteIsochPipeAsap ( + _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, + _In_ ULONG Offset, +@@ -302,6 +339,8 @@ + _In_opt_ LPOVERLAPPED Overlapped + ); + ++_Win32_SupportedOS_Windows81_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_ReadIsochPipeAsap ( + _In_ WINUSB_ISOCH_BUFFER_HANDLE BufferHandle, + _In_ ULONG Offset, +@@ -361,16 +400,22 @@ + + #endif + ++_Win32_SupportedOS_10240_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_StartTrackingForTimeSync ( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ PUSB_START_TRACKING_FOR_TIME_SYNC_INFORMATION StartTrackingInfo + ); + ++_Win32_SupportedOS_10240_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_GetCurrentFrameNumberAndQpc ( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ PUSB_FRAME_NUMBER_AND_QPC_FOR_TIME_SYNC_INFORMATION FrameQpcInfo + ); + ++_Win32_SupportedOS_10240_ ++_Win32_SetLastError_ + BOOL __stdcall WinUsb_StopTrackingForTimeSync ( + _In_ WINUSB_INTERFACE_HANDLE InterfaceHandle, + _In_ PUSB_STOP_TRACKING_FOR_TIME_SYNC_INFORMATION StopTrackingInfo diff --git a/generation/WinSDK/patches/um/winuser.h.patch b/generation/WinSDK/patches/um/winuser.h.patch index 5d803c25a..8a235f00b 100644 --- a/generation/WinSDK/patches/um/winuser.h.patch +++ b/generation/WinSDK/patches/um/winuser.h.patch @@ -60,18 +60,7 @@ index f99e9294..53ba8a91 100644 #pragma once -@@ -67,7 +118,10 @@ - #pragma region Desktop Family - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - - typedef HANDLE HDWP; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDWP HDWP; -+#endif - typedef VOID MENUTEMPLATEA; - typedef VOID MENUTEMPLATEW; - #ifdef UNICODE -@@ -126,8 +180,8 @@ typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE); +@@ -126,8 +177,8 @@ typedef BOOL (CALLBACK* PROPENUMPROCW)(HWND, LPCWSTR, HANDLE); typedef BOOL (CALLBACK* PROPENUMPROCEXA)(HWND, LPSTR, HANDLE, ULONG_PTR); typedef BOOL (CALLBACK* PROPENUMPROCEXW)(HWND, LPWSTR, HANDLE, ULONG_PTR); @@ -82,7 +71,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) typedef BOOL (CALLBACK* DRAWSTATEPROC)(HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy); -@@ -301,6 +355,8 @@ typedef DESKTOPENUMPROCA DESKTOPENUMPROC; +@@ -301,6 +352,8 @@ typedef DESKTOPENUMPROCA DESKTOPENUMPROC; #pragma warning(disable:4995) #endif @@ -91,7 +80,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -308,6 +364,8 @@ wvsprintfA( +@@ -308,6 +361,8 @@ wvsprintfA( _Out_ LPSTR, _In_ _Printf_format_string_ LPCSTR, _In_ va_list arglist); @@ -100,7 +89,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -321,6 +379,8 @@ wvsprintfW( +@@ -321,6 +376,8 @@ wvsprintfW( #define wvsprintf wvsprintfA #endif // !UNICODE @@ -109,7 +98,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPIV -@@ -328,6 +388,8 @@ wsprintfA( +@@ -328,6 +385,8 @@ wsprintfA( _Out_ LPSTR, _In_ _Printf_format_string_ LPCSTR, ...); @@ -118,7 +107,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPIV -@@ -365,6 +427,14 @@ wsprintfW( +@@ -365,6 +424,14 @@ wsprintfW( #define SB_CTL 2 #define SB_BOTH 3 @@ -133,7 +122,7 @@ index f99e9294..53ba8a91 100644 /* * Scroll Bar Commands */ -@@ -384,6 +454,25 @@ wsprintfW( +@@ -384,6 +451,25 @@ wsprintfW( #define SB_RIGHT 7 #define SB_ENDSCROLL 8 @@ -159,7 +148,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOSCROLL */ #ifndef NOSHOWWINDOW -@@ -408,6 +497,26 @@ wsprintfW( +@@ -408,6 +494,26 @@ wsprintfW( #define SW_FORCEMINIMIZE 11 #define SW_MAX 11 @@ -186,7 +175,7 @@ index f99e9294..53ba8a91 100644 /* * Old ShowWindow() Commands -@@ -426,6 +535,14 @@ wsprintfW( +@@ -426,6 +532,14 @@ wsprintfW( #define SW_PARENTOPENING 3 #define SW_OTHERUNZOOM 4 @@ -201,7 +190,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOSHOWWINDOW */ -@@ -443,6 +560,19 @@ wsprintfW( +@@ -443,6 +557,19 @@ wsprintfW( #define AW_SLIDE 0x00040000 #define AW_BLEND 0x00080000 @@ -221,7 +210,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -470,6 +600,13 @@ wsprintfW( +@@ -470,6 +597,13 @@ wsprintfW( #if(_WIN32_WINNT >= 0x0500) #define VK_XBUTTON1 0x05 /* NOT contiguous with L & RBUTTON */ #define VK_XBUTTON2 0x06 /* NOT contiguous with L & RBUTTON */ @@ -235,7 +224,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -603,6 +740,19 @@ wsprintfW( +@@ -603,6 +737,19 @@ wsprintfW( #define VK_NAVIGATION_ACCEPT 0x8E // reserved #define VK_NAVIGATION_CANCEL 0x8F // reserved @@ -255,7 +244,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0604 */ #define VK_NUMLOCK 0x90 -@@ -659,6 +809,29 @@ wsprintfW( +@@ -659,6 +806,29 @@ wsprintfW( #define VK_LAUNCH_APP1 0xB6 #define VK_LAUNCH_APP2 0xB7 @@ -285,7 +274,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -708,6 +881,35 @@ wsprintfW( +@@ -708,6 +878,35 @@ wsprintfW( #define VK_GAMEPAD_RIGHT_THUMBSTICK_RIGHT 0xD9 // reserved #define VK_GAMEPAD_RIGHT_THUMBSTICK_LEFT 0xDA // reserved @@ -321,7 +310,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0604 */ -@@ -731,6 +933,12 @@ wsprintfW( +@@ -731,6 +930,12 @@ wsprintfW( #if(WINVER >= 0x0400) #define VK_PROCESSKEY 0xE5 @@ -334,7 +323,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define VK_ICO_CLEAR 0xE6 -@@ -738,6 +946,12 @@ wsprintfW( +@@ -738,6 +943,12 @@ wsprintfW( #if(_WIN32_WINNT >= 0x0500) #define VK_PACKET 0xE7 @@ -347,7 +336,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* -@@ -771,6 +985,187 @@ wsprintfW( +@@ -771,6 +982,187 @@ wsprintfW( #define VK_PA1 0xFD #define VK_OEM_CLEAR 0xFE @@ -535,7 +524,7 @@ index f99e9294..53ba8a91 100644 /* * 0xFF : reserved */ -@@ -799,13 +1194,40 @@ wsprintfW( +@@ -799,13 +1191,40 @@ wsprintfW( #define WH_DEBUG 9 #define WH_SHELL 10 #define WH_FOREGROUNDIDLE 11 @@ -576,7 +565,7 @@ index f99e9294..53ba8a91 100644 #endif // (_WIN32_WINNT >= 0x0400) #if(WINVER >= 0x0400) -@@ -997,6 +1419,33 @@ typedef struct tagWTSSESSION_NOTIFICATION +@@ -997,6 +1416,33 @@ typedef struct tagWTSSESSION_NOTIFICATION #define APPCOMMAND_BASS_UP 21 #define APPCOMMAND_TREBLE_DOWN 22 #define APPCOMMAND_TREBLE_UP 23 @@ -610,7 +599,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24 #define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25 -@@ -1027,10 +1476,49 @@ typedef struct tagWTSSESSION_NOTIFICATION +@@ -1027,10 +1473,49 @@ typedef struct tagWTSSESSION_NOTIFICATION #define APPCOMMAND_MEDIA_REWIND 50 #define APPCOMMAND_MEDIA_CHANNEL_UP 51 #define APPCOMMAND_MEDIA_CHANNEL_DOWN 52 @@ -660,7 +649,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #define FAPPCOMMAND_MOUSE 0x8000 -@@ -1106,6 +1594,15 @@ typedef struct tagCWPRETSTRUCT { +@@ -1106,6 +1591,15 @@ typedef struct tagCWPRETSTRUCT { #define LLKHF_UP (KF_UP >> 8) /* 0x00000080 */ #define LLKHF_LOWER_IL_INJECTED 0x00000002 @@ -676,7 +665,7 @@ index f99e9294..53ba8a91 100644 #define LLMHF_INJECTED 0x00000001 #define LLMHF_LOWER_IL_INJECTED 0x00000002 -@@ -1118,7 +1615,7 @@ typedef struct tagCWPRETSTRUCT { +@@ -1118,7 +1612,7 @@ typedef struct tagCWPRETSTRUCT { typedef struct tagKBDLLHOOKSTRUCT { DWORD vkCode; DWORD scanCode; @@ -685,7 +674,7 @@ index f99e9294..53ba8a91 100644 DWORD time; ULONG_PTR dwExtraInfo; } KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT; -@@ -1209,11 +1706,31 @@ typedef struct tagHARDWAREHOOKSTRUCT { +@@ -1209,11 +1703,31 @@ typedef struct tagHARDWAREHOOKSTRUCT { #if(WINVER >= 0x0400) #define KLF_REPLACELANG 0x00000010 #define KLF_NOTELLSHELL 0x00000080 @@ -717,7 +706,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ -@@ -1234,18 +1751,22 @@ typedef struct tagHARDWAREHOOKSTRUCT { +@@ -1234,18 +1748,22 @@ typedef struct tagHARDWAREHOOKSTRUCT { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -742,7 +731,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define LoadKeyboardLayout LoadKeyboardLayoutW #else -@@ -1254,12 +1775,14 @@ LoadKeyboardLayoutW( +@@ -1254,12 +1772,14 @@ LoadKeyboardLayoutW( #if(WINVER >= 0x0400) @@ -758,7 +747,7 @@ index f99e9294..53ba8a91 100644 #else WINUSERAPI BOOL -@@ -1270,6 +1793,7 @@ ActivateKeyboardLayout( +@@ -1270,6 +1790,7 @@ ActivateKeyboardLayout( #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) @@ -766,7 +755,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1283,17 +1807,23 @@ ToUnicodeEx( +@@ -1283,17 +1804,23 @@ ToUnicodeEx( _In_opt_ HKL dwhkl); #endif /* WINVER >= 0x0400 */ @@ -790,7 +779,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1306,6 +1836,8 @@ GetKeyboardLayoutNameW( +@@ -1306,6 +1833,8 @@ GetKeyboardLayoutNameW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -799,7 +788,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1313,6 +1845,7 @@ GetKeyboardLayoutList( +@@ -1313,6 +1842,7 @@ GetKeyboardLayoutList( _In_ int nBuff, _Out_writes_to_opt_(nBuff, return) HKL FAR *lpList); @@ -807,7 +796,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HKL WINAPI -@@ -1346,9 +1879,17 @@ typedef struct tagMOUSEMOVEPOINT { +@@ -1346,9 +1876,17 @@ typedef struct tagMOUSEMOVEPOINT { #define GMMP_USE_DISPLAY_POINTS 1 #define GMMP_USE_HIGH_RESOLUTION_POINTS 2 @@ -825,7 +814,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -1357,7 +1898,7 @@ GetMouseMovePointsEx( +@@ -1357,7 +1895,7 @@ GetMouseMovePointsEx( _In_ LPMOUSEMOVEPOINT lppt, _Out_writes_(nBufPoints) LPMOUSEMOVEPOINT lpptBuf, _In_ int nBufPoints, @@ -834,7 +823,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -1368,6 +1909,16 @@ GetMouseMovePointsEx( +@@ -1368,6 +1906,16 @@ GetMouseMovePointsEx( /* * Desktop-specific access flags */ @@ -851,7 +840,7 @@ index f99e9294..53ba8a91 100644 #define DESKTOP_READOBJECTS 0x0001L #define DESKTOP_CREATEWINDOW 0x0002L #define DESKTOP_CREATEMENU 0x0004L -@@ -1378,17 +1929,42 @@ GetMouseMovePointsEx( +@@ -1378,17 +1926,42 @@ GetMouseMovePointsEx( #define DESKTOP_WRITEOBJECTS 0x0080L #define DESKTOP_SWITCHDESKTOP 0x0100L @@ -894,7 +883,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1396,9 +1972,11 @@ CreateDesktopA( +@@ -1396,9 +1969,11 @@ CreateDesktopA( _In_ LPCSTR lpszDesktop, _Reserved_ LPCSTR lpszDevice, _Reserved_ DEVMODEA* pDevmode, @@ -907,7 +896,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1406,7 +1984,7 @@ CreateDesktopW( +@@ -1406,7 +1981,7 @@ CreateDesktopW( _In_ LPCWSTR lpszDesktop, _Reserved_ LPCWSTR lpszDevice, _Reserved_ DEVMODEW* pDevmode, @@ -916,7 +905,7 @@ index f99e9294..53ba8a91 100644 _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa); #ifdef UNICODE -@@ -1415,6 +1993,8 @@ CreateDesktopW( +@@ -1415,6 +1990,8 @@ CreateDesktopW( #define CreateDesktop CreateDesktopA #endif // !UNICODE @@ -925,7 +914,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1422,11 +2002,13 @@ CreateDesktopExA( +@@ -1422,11 +1999,13 @@ CreateDesktopExA( _In_ LPCSTR lpszDesktop, _Reserved_ LPCSTR lpszDevice, _Reserved_ DEVMODEA* pDevmode, @@ -940,7 +929,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1434,7 +2016,7 @@ CreateDesktopExW( +@@ -1434,7 +2013,7 @@ CreateDesktopExW( _In_ LPCWSTR lpszDesktop, _Reserved_ LPCWSTR lpszDevice, _Reserved_ DEVMODEW* pDevmode, @@ -949,7 +938,7 @@ index f99e9294..53ba8a91 100644 _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa, _In_ ULONG ulHeapSize, -@@ -1454,20 +2036,24 @@ CreateDesktopExW( +@@ -1454,20 +2033,24 @@ CreateDesktopExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -976,7 +965,7 @@ index f99e9294..53ba8a91 100644 _In_ BOOL fInherit, _In_ ACCESS_MASK dwDesiredAccess); #ifdef UNICODE -@@ -1476,15 +2062,19 @@ OpenDesktopW( +@@ -1476,15 +2059,19 @@ OpenDesktopW( #define OpenDesktop OpenDesktopA #endif // !UNICODE @@ -998,7 +987,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1492,6 +2082,8 @@ EnumDesktopsA( +@@ -1492,6 +2079,8 @@ EnumDesktopsA( _In_opt_ HWINSTA hwinsta, _In_ DESKTOPENUMPROCA lpEnumFunc, _In_ LPARAM lParam); @@ -1007,7 +996,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1505,6 +2097,8 @@ EnumDesktopsW( +@@ -1505,6 +2094,8 @@ EnumDesktopsW( #define EnumDesktops EnumDesktopsA #endif // !UNICODE @@ -1016,7 +1005,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1514,6 +2108,8 @@ EnumDesktopWindows( +@@ -1514,6 +2105,8 @@ EnumDesktopWindows( _In_ LPARAM lParam); @@ -1025,7 +1014,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1521,18 +2117,24 @@ SwitchDesktop( +@@ -1521,18 +2114,24 @@ SwitchDesktop( _In_ HDESK hDesktop); @@ -1050,7 +1039,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDESK WINAPI -@@ -1577,6 +2179,11 @@ GetThreadDesktop( +@@ -1577,6 +2176,11 @@ GetThreadDesktop( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1062,7 +1051,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1585,6 +2192,11 @@ CreateWindowStationA( +@@ -1585,6 +2189,11 @@ CreateWindowStationA( _In_ DWORD dwFlags, _In_ ACCESS_MASK dwDesiredAccess, _In_opt_ LPSECURITY_ATTRIBUTES lpsa); @@ -1074,7 +1063,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1599,6 +2211,11 @@ CreateWindowStationW( +@@ -1599,6 +2208,11 @@ CreateWindowStationW( #define CreateWindowStation CreateWindowStationA #endif // !UNICODE @@ -1086,7 +1075,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1606,6 +2223,11 @@ OpenWindowStationA( +@@ -1606,6 +2220,11 @@ OpenWindowStationA( _In_ LPCSTR lpszWinSta, _In_ BOOL fInherit, _In_ ACCESS_MASK dwDesiredAccess); @@ -1098,7 +1087,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1619,12 +2241,16 @@ OpenWindowStationW( +@@ -1619,12 +2238,16 @@ OpenWindowStationW( #define OpenWindowStation OpenWindowStationA #endif // !UNICODE @@ -1115,7 +1104,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1637,18 +2263,27 @@ EnumWindowStationsW( +@@ -1637,18 +2260,25 @@ EnumWindowStationsW( #define EnumWindowStations EnumWindowStationsA #endif // !UNICODE @@ -1127,8 +1116,6 @@ index f99e9294..53ba8a91 100644 CloseWindowStation( _In_ HWINSTA hWinSta); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows2000_ @@ -1143,7 +1130,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINSTA WINAPI -@@ -1665,14 +2300,18 @@ GetProcessWindowStation( +@@ -1665,14 +2295,18 @@ GetProcessWindowStation( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1163,7 +1150,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1690,9 +2329,23 @@ GetUserObjectSecurity( +@@ -1690,9 +2324,23 @@ GetUserObjectSecurity( #define UOI_NAME 2 #define UOI_TYPE 3 #define UOI_USER_SID 4 @@ -1187,7 +1174,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #define UOI_TIMERPROC_EXCEPTION_SUPPRESSION 7 -@@ -1705,21 +2358,25 @@ typedef struct tagUSEROBJECTFLAGS { +@@ -1705,21 +2353,25 @@ typedef struct tagUSEROBJECTFLAGS { DWORD dwFlags; } USEROBJECTFLAGS, *PUSEROBJECTFLAGS; @@ -1215,7 +1202,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_bytes_opt_(nLength) PVOID pvInfo, _In_ DWORD nLength, _Out_opt_ LPDWORD lpnLengthNeeded); -@@ -1729,6 +2386,8 @@ GetUserObjectInformationW( +@@ -1729,6 +2381,8 @@ GetUserObjectInformationW( #define GetUserObjectInformation GetUserObjectInformationA #endif // !UNICODE @@ -1224,7 +1211,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1737,6 +2396,8 @@ SetUserObjectInformationA( +@@ -1737,6 +2391,8 @@ SetUserObjectInformationA( _In_ int nIndex, _In_reads_bytes_(nLength) PVOID pvInfo, _In_ DWORD nLength); @@ -1233,7 +1220,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1763,7 +2424,7 @@ SetUserObjectInformationW( +@@ -1763,7 +2419,7 @@ SetUserObjectInformationW( typedef struct tagWNDCLASSEXA { UINT cbSize; /* Win 3.x */ @@ -1242,7 +1229,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1779,7 +2440,7 @@ typedef struct tagWNDCLASSEXA { +@@ -1779,7 +2435,7 @@ typedef struct tagWNDCLASSEXA { typedef struct tagWNDCLASSEXW { UINT cbSize; /* Win 3.x */ @@ -1251,7 +1238,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1806,7 +2467,7 @@ typedef LPWNDCLASSEXA LPWNDCLASSEX; +@@ -1806,7 +2462,7 @@ typedef LPWNDCLASSEXA LPWNDCLASSEX; #endif /* WINVER >= 0x0400 */ typedef struct tagWNDCLASSA { @@ -1260,7 +1247,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1818,7 +2479,7 @@ typedef struct tagWNDCLASSA { +@@ -1818,7 +2474,7 @@ typedef struct tagWNDCLASSA { LPCSTR lpszClassName; } WNDCLASSA, *PWNDCLASSA, NEAR *NPWNDCLASSA, FAR *LPWNDCLASSA; typedef struct tagWNDCLASSW { @@ -1269,7 +1256,7 @@ index f99e9294..53ba8a91 100644 WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; -@@ -1847,6 +2508,7 @@ typedef LPWNDCLASSA LPWNDCLASS; +@@ -1847,6 +2503,7 @@ typedef LPWNDCLASSA LPWNDCLASS; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1277,7 +1264,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -1855,6 +2517,7 @@ IsHungAppWindow( +@@ -1855,6 +2512,7 @@ IsHungAppWindow( #if(WINVER >= 0x0501) @@ -1285,7 +1272,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -1914,6 +2577,23 @@ typedef struct tagMSG { +@@ -1914,6 +2572,23 @@ typedef struct tagMSG { #define GWL_USERDATA (-21) #define GWL_ID (-12) @@ -1309,7 +1296,7 @@ index f99e9294..53ba8a91 100644 #ifdef _WIN64 #undef GWL_WNDPROC -@@ -1949,8 +2629,29 @@ typedef struct tagMSG { +@@ -1949,8 +2624,29 @@ typedef struct tagMSG { #if(WINVER >= 0x0400) #define GCL_HICONSM (-34) @@ -1339,7 +1326,7 @@ index f99e9294..53ba8a91 100644 #ifdef _WIN64 #undef GCL_MENUNAME -@@ -1971,6 +2672,18 @@ typedef struct tagMSG { +@@ -1971,6 +2667,18 @@ typedef struct tagMSG { #define GCLP_WNDPROC (-24) #define GCLP_HICONSM (-34) @@ -1358,7 +1345,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOWINOFFSETS */ #ifndef NOWINMESSAGES -@@ -2614,11 +3327,28 @@ typedef struct { +@@ -2614,11 +3322,28 @@ typedef struct { #define SMTO_NORMAL 0x0000 #define SMTO_BLOCK 0x0001 #define SMTO_ABORTIFHUNG 0x0002 @@ -1387,7 +1374,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #if(WINVER >= 0x0602) #endif /* WINVER >= 0x0602 */ -@@ -2646,11 +3376,15 @@ typedef struct { +@@ -2646,11 +3371,15 @@ typedef struct { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1403,7 +1390,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -2698,7 +3432,7 @@ typedef struct tagWINDOWPOS { +@@ -2698,7 +3427,7 @@ typedef struct tagWINDOWPOS { int y; int cx; int cy; @@ -1412,7 +1399,7 @@ index f99e9294..53ba8a91 100644 } WINDOWPOS, *LPWINDOWPOS, *PWINDOWPOS; /* -@@ -2736,9 +3470,26 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2736,9 +3465,26 @@ typedef struct tagNCCALCSIZE_PARAMS { #define MK_SHIFT 0x0004 #define MK_CONTROL 0x0008 #define MK_MBUTTON 0x0010 @@ -1439,7 +1426,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* !NOKEYSTATES */ -@@ -2751,10 +3502,23 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2751,10 +3497,23 @@ typedef struct tagNCCALCSIZE_PARAMS { #define TME_LEAVE 0x00000002 #if(WINVER >= 0x0500) #define TME_NONCLIENT 0x00000010 @@ -1463,7 +1450,7 @@ index f99e9294..53ba8a91 100644 #define HOVER_DEFAULT 0xFFFFFFFF #endif /* _WIN32_WINNT >= 0x0400 */ -@@ -2766,11 +3530,13 @@ typedef struct tagNCCALCSIZE_PARAMS { +@@ -2766,11 +3525,13 @@ typedef struct tagNCCALCSIZE_PARAMS { typedef struct tagTRACKMOUSEEVENT { DWORD cbSize; @@ -1478,7 +1465,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -2840,6 +3606,37 @@ TrackMouseEvent( +@@ -2840,6 +3601,37 @@ TrackMouseEvent( #define WS_CHILDWINDOW (WS_CHILD) @@ -1516,7 +1503,7 @@ index f99e9294..53ba8a91 100644 /* * Extended Window Styles */ -@@ -2848,6 +3645,15 @@ TrackMouseEvent( +@@ -2848,6 +3640,15 @@ TrackMouseEvent( #define WS_EX_TOPMOST 0x00000008L #define WS_EX_ACCEPTFILES 0x00000010L #define WS_EX_TRANSPARENT 0x00000020L @@ -1532,7 +1519,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define WS_EX_MDICHILD 0x00000040L #define WS_EX_TOOLWINDOW 0x00000080L -@@ -2855,6 +3661,15 @@ TrackMouseEvent( +@@ -2855,6 +3656,15 @@ TrackMouseEvent( #define WS_EX_CLIENTEDGE 0x00000200L #define WS_EX_CONTEXTHELP 0x00000400L @@ -1548,7 +1535,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0400) -@@ -2873,31 +3688,76 @@ TrackMouseEvent( +@@ -2873,31 +3683,76 @@ TrackMouseEvent( #define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE) #define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) @@ -1625,7 +1612,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ -@@ -2917,8 +3777,29 @@ TrackMouseEvent( +@@ -2917,8 +3772,29 @@ TrackMouseEvent( #define CS_GLOBALCLASS 0x4000 #define CS_IME 0x00010000 @@ -1655,7 +1642,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ -@@ -2950,6 +3831,23 @@ TrackMouseEvent( +@@ -2950,6 +3826,23 @@ TrackMouseEvent( #define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER) #define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER) @@ -1679,7 +1666,7 @@ index f99e9294..53ba8a91 100644 /* Border flags */ #define BF_LEFT 0x0001 #define BF_TOP 0x0002 -@@ -2978,18 +3876,43 @@ TrackMouseEvent( +@@ -2978,18 +3871,43 @@ TrackMouseEvent( #define BF_FLAT 0x4000 /* For flat rather than 3D borders */ #define BF_MONO 0x8000 /* For monochrome borders */ @@ -1725,7 +1712,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -3000,8 +3923,21 @@ DrawEdge( +@@ -3000,8 +3918,21 @@ DrawEdge( #define DFC_MENU 2 #define DFC_SCROLL 3 #define DFC_BUTTON 4 @@ -1747,7 +1734,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #define DFCS_CAPTIONCLOSE 0x0000 -@@ -3036,23 +3972,62 @@ DrawEdge( +@@ -3036,23 +3967,62 @@ DrawEdge( #if(WINVER >= 0x0500) #define DFCS_TRANSPARENT 0x0800 #define DFCS_HOT 0x1000 @@ -1812,7 +1799,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3065,16 +4040,36 @@ DrawFrameControl( +@@ -3065,16 +4035,36 @@ DrawFrameControl( #define DC_ICON 0x0004 #define DC_TEXT 0x0008 #define DC_INBUTTON 0x0010 @@ -1849,7 +1836,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3082,7 +4077,7 @@ DrawCaption( +@@ -3082,7 +4072,7 @@ DrawCaption( _In_ HWND hwnd, _In_ HDC hdc, _In_ CONST RECT * lprect, @@ -1858,7 +1845,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3094,6 +4089,7 @@ DrawCaption( +@@ -3094,6 +4084,7 @@ DrawCaption( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -1866,7 +1853,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3131,17 +4127,48 @@ DrawAnimatedRects( +@@ -3131,17 +4122,48 @@ DrawAnimatedRects( #if(WINVER >= 0x0400) #define CF_HDROP 15 #define CF_LOCALE 16 @@ -1915,7 +1902,7 @@ index f99e9294..53ba8a91 100644 #endif #define CF_OWNERDISPLAY 0x0080 -@@ -3162,6 +4189,34 @@ DrawAnimatedRects( +@@ -3162,6 +4184,34 @@ DrawAnimatedRects( #define CF_GDIOBJFIRST 0x0300 #define CF_GDIOBJLAST 0x03FF @@ -1950,7 +1937,7 @@ index f99e9294..53ba8a91 100644 #endif /* !NOCLIPBOARD */ -@@ -3174,12 +4229,21 @@ DrawAnimatedRects( +@@ -3174,12 +4224,21 @@ DrawAnimatedRects( #define FCONTROL 0x08 #define FALT 0x10 @@ -1973,7 +1960,7 @@ index f99e9294..53ba8a91 100644 WORD key; WORD cmd; #else -@@ -3213,10 +4277,10 @@ typedef struct tagCREATESTRUCTA { +@@ -3213,10 +4272,10 @@ typedef struct tagCREATESTRUCTA { int cx; int y; int x; @@ -1986,7 +1973,7 @@ index f99e9294..53ba8a91 100644 } CREATESTRUCTA, *LPCREATESTRUCTA; typedef struct tagCREATESTRUCTW { LPVOID lpCreateParams; -@@ -3227,10 +4291,10 @@ typedef struct tagCREATESTRUCTW { +@@ -3227,10 +4286,10 @@ typedef struct tagCREATESTRUCTW { int cx; int y; int x; @@ -1999,7 +1986,7 @@ index f99e9294..53ba8a91 100644 } CREATESTRUCTW, *LPCREATESTRUCTW; #ifdef UNICODE typedef CREATESTRUCTW CREATESTRUCT; -@@ -3248,8 +4312,8 @@ typedef LPCREATESTRUCTA LPCREATESTRUCT; +@@ -3248,8 +4307,8 @@ typedef LPCREATESTRUCTA LPCREATESTRUCT; typedef struct tagWINDOWPLACEMENT { UINT length; @@ -2010,7 +1997,7 @@ index f99e9294..53ba8a91 100644 POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; -@@ -3261,8 +4325,19 @@ typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; +@@ -3261,8 +4320,19 @@ typedef WINDOWPLACEMENT *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT; #define WPF_SETMINPOSITION 0x0001 #define WPF_RESTORETOMAXIMIZED 0x0002 @@ -2030,7 +2017,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -3306,8 +4381,18 @@ typedef struct tagSTYLESTRUCT +@@ -3306,8 +4376,18 @@ typedef struct tagSTYLESTRUCT #define ODT_LISTBOX 2 #define ODT_COMBOBOX 3 #define ODT_BUTTON 4 @@ -2049,7 +2036,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ /* -@@ -3317,6 +4402,13 @@ typedef struct tagSTYLESTRUCT +@@ -3317,6 +4397,13 @@ typedef struct tagSTYLESTRUCT #define ODA_SELECT 0x0002 #define ODA_FOCUS 0x0004 @@ -2063,7 +2050,7 @@ index f99e9294..53ba8a91 100644 /* * Owner draw state */ -@@ -3325,16 +4417,43 @@ typedef struct tagSTYLESTRUCT +@@ -3325,16 +4412,43 @@ typedef struct tagSTYLESTRUCT #define ODS_DISABLED 0x0004 #define ODS_CHECKED 0x0008 #define ODS_FOCUS 0x0010 @@ -2107,7 +2094,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINVER >= 0x0500 */ -@@ -3345,7 +4464,7 @@ typedef struct tagSTYLESTRUCT +@@ -3345,7 +4459,7 @@ typedef struct tagSTYLESTRUCT * MEASUREITEMSTRUCT for ownerdraw */ typedef struct tagMEASUREITEMSTRUCT { @@ -2116,7 +2103,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; UINT itemID; UINT itemWidth; -@@ -3357,11 +4476,11 @@ typedef struct tagMEASUREITEMSTRUCT { +@@ -3357,11 +4471,11 @@ typedef struct tagMEASUREITEMSTRUCT { * DRAWITEMSTRUCT for ownerdraw */ typedef struct tagDRAWITEMSTRUCT { @@ -2131,7 +2118,7 @@ index f99e9294..53ba8a91 100644 HWND hwndItem; HDC hDC; RECT rcItem; -@@ -3372,7 +4491,7 @@ typedef struct tagDRAWITEMSTRUCT { +@@ -3372,7 +4486,7 @@ typedef struct tagDRAWITEMSTRUCT { * DELETEITEMSTRUCT for ownerdraw */ typedef struct tagDELETEITEMSTRUCT { @@ -2140,7 +2127,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; UINT itemID; HWND hwndItem; -@@ -3383,7 +4502,7 @@ typedef struct tagDELETEITEMSTRUCT { +@@ -3383,7 +4497,7 @@ typedef struct tagDELETEITEMSTRUCT { * COMPAREITEMSTUCT for ownerdraw sorting */ typedef struct tagCOMPAREITEMSTRUCT { @@ -2149,7 +2136,7 @@ index f99e9294..53ba8a91 100644 UINT CtlID; HWND hwndItem; UINT itemID1; -@@ -3405,7 +4524,7 @@ typedef struct tagCOMPAREITEMSTRUCT { +@@ -3405,7 +4519,7 @@ typedef struct tagCOMPAREITEMSTRUCT { * Message Function Templates */ @@ -2158,7 +2145,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI GetMessageA( -@@ -3413,7 +4532,7 @@ GetMessageA( +@@ -3413,7 +4527,7 @@ GetMessageA( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax); @@ -2167,7 +2154,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI GetMessageW( -@@ -3452,17 +4571,20 @@ GetMessage( +@@ -3452,17 +4566,20 @@ GetMessage( #endif /* _M_CEE */ @@ -2188,7 +2175,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3510,6 +4632,7 @@ SetMessageQueue( +@@ -3510,6 +4627,7 @@ SetMessageQueue( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2196,7 +2183,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3518,7 +4641,8 @@ PeekMessageA( +@@ -3518,7 +4636,8 @@ PeekMessageA( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, @@ -2206,7 +2193,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3527,7 +4651,7 @@ PeekMessageW( +@@ -3527,7 +4646,7 @@ PeekMessageW( _In_opt_ HWND hWnd, _In_ UINT wMsgFilterMin, _In_ UINT wMsgFilterMax, @@ -2215,7 +2202,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define PeekMessage PeekMessageW #else -@@ -3544,12 +4668,21 @@ PeekMessageW( +@@ -3544,12 +4663,21 @@ PeekMessageW( #define PM_REMOVE 0x0001 #define PM_NOYIELD 0x0002 @@ -2237,7 +2224,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -3558,15 +4691,19 @@ PeekMessageW( +@@ -3558,15 +4686,19 @@ PeekMessageW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2258,7 +2245,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3581,8 +4718,21 @@ UnregisterHotKey( +@@ -3581,8 +4713,21 @@ UnregisterHotKey( #define MOD_CONTROL 0x0002 #define MOD_SHIFT 0x0004 #define MOD_WIN 0x0008 @@ -2280,7 +2267,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ -@@ -3618,10 +4768,20 @@ UnregisterHotKey( +@@ -3618,10 +4763,20 @@ UnregisterHotKey( #define EWX_POWEROFF 0x00000008 #if(_WIN32_WINNT >= 0x0500) #define EWX_FORCEIFHUNG 0x00000010 @@ -2301,7 +2288,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #define EWX_HYBRID_SHUTDOWN 0x00400000 #define EWX_BOOTOPTIONS 0x01000000 -@@ -3629,11 +4789,28 @@ UnregisterHotKey( +@@ -3629,11 +4784,28 @@ UnregisterHotKey( #define EWX_CHECK_SAFE_FOR_SERVER 0x08000000 #define EWX_SYSTEM_INITIATED 0x10000000 @@ -2330,7 +2317,7 @@ index f99e9294..53ba8a91 100644 _When_((uFlags&(EWX_POWEROFF|EWX_SHUTDOWN|EWX_FORCE))!=0, __drv_preferredFunction("InitiateSystemShutdownEx", "Legacy API. Rearchitect to avoid Reboot")) -@@ -3641,27 +4818,31 @@ WINUSERAPI +@@ -3641,27 +4813,31 @@ WINUSERAPI BOOL WINAPI ExitWindowsEx( @@ -2364,7 +2351,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPARAM WINAPI -@@ -3669,6 +4850,7 @@ GetMessageExtraInfo( +@@ -3669,6 +4845,7 @@ GetMessageExtraInfo( VOID); #if(_WIN32_WINNT >= 0x0602) @@ -2372,7 +2359,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -3677,6 +4859,7 @@ GetUnpredictedMessagePos( +@@ -3677,6 +4854,7 @@ GetUnpredictedMessagePos( #endif /* _WIN32_WINNT >= 0x0602 */ #if(_WIN32_WINNT >= 0x0501) @@ -2380,7 +2367,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3685,6 +4868,7 @@ IsWow64Message( +@@ -3685,6 +4863,7 @@ IsWow64Message( #endif /* _WIN32_WINNT >= 0x0501 */ #if(WINVER >= 0x0400) @@ -2388,7 +2375,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPARAM WINAPI -@@ -3698,6 +4882,8 @@ SetMessageExtraInfo( +@@ -3698,6 +4877,8 @@ SetMessageExtraInfo( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2397,7 +2384,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3706,6 +4892,8 @@ SendMessageA( +@@ -3706,6 +4887,8 @@ SendMessageA( _In_ UINT Msg, _Pre_maybenull_ _Post_valid_ WPARAM wParam, _Pre_maybenull_ _Post_valid_ LPARAM lParam); @@ -2406,7 +2393,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -3750,7 +4938,9 @@ SendMessage( +@@ -3750,7 +4933,9 @@ SendMessage( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2417,7 +2404,7 @@ index f99e9294..53ba8a91 100644 LRESULT WINAPI SendMessageTimeoutA( -@@ -3758,10 +4948,12 @@ SendMessageTimeoutA( +@@ -3758,10 +4943,12 @@ SendMessageTimeoutA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, @@ -2432,7 +2419,7 @@ index f99e9294..53ba8a91 100644 LRESULT WINAPI SendMessageTimeoutW( -@@ -3769,7 +4961,7 @@ SendMessageTimeoutW( +@@ -3769,7 +4956,7 @@ SendMessageTimeoutW( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, @@ -2441,7 +2428,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT uTimeout, _Out_opt_ PDWORD_PTR lpdwResult); #ifdef UNICODE -@@ -3778,6 +4970,8 @@ SendMessageTimeoutW( +@@ -3778,6 +4965,8 @@ SendMessageTimeoutW( #define SendMessageTimeout SendMessageTimeoutA #endif // !UNICODE @@ -2450,7 +2437,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3786,6 +4980,8 @@ SendNotifyMessageA( +@@ -3786,6 +4975,8 @@ SendNotifyMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2459,7 +2446,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3800,6 +4996,8 @@ SendNotifyMessageW( +@@ -3800,6 +4991,8 @@ SendNotifyMessageW( #define SendNotifyMessage SendNotifyMessageA #endif // !UNICODE @@ -2468,7 +2455,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3810,6 +5008,8 @@ SendMessageCallbackA( +@@ -3810,6 +5003,8 @@ SendMessageCallbackA( _In_ LPARAM lParam, _In_ SENDASYNCPROC lpResultCallBack, _In_ ULONG_PTR dwData); @@ -2477,7 +2464,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3834,22 +5034,26 @@ typedef struct { +@@ -3834,22 +5029,26 @@ typedef struct { LUID luid; } BSMINFO, *PBSMINFO; @@ -2508,7 +2495,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam, -@@ -3879,12 +5083,14 @@ BroadcastSystemMessageA( +@@ -3879,12 +5078,14 @@ BroadcastSystemMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2525,7 +2512,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); -@@ -3895,7 +5101,7 @@ BroadcastSystemMessageW( +@@ -3895,7 +5096,7 @@ BroadcastSystemMessageW( #endif // !UNICODE #elif defined(_WIN32_WINDOWS) // The Win95 version isn't A/W decorated @@ -2534,7 +2521,7 @@ index f99e9294..53ba8a91 100644 long WINAPI BroadcastSystemMessage( -@@ -3918,6 +5124,13 @@ BroadcastSystemMessage( +@@ -3918,6 +5119,13 @@ BroadcastSystemMessage( #define BSM_APPLICATIONS 0x00000008 #define BSM_ALLDESKTOPS 0x00000010 @@ -2548,7 +2535,7 @@ index f99e9294..53ba8a91 100644 //Broadcast Special Message Flags #define BSF_QUERY 0x00000001 #define BSF_IGNORECURRENTTASK 0x00000002 -@@ -3926,13 +5139,36 @@ BroadcastSystemMessage( +@@ -3926,13 +5134,36 @@ BroadcastSystemMessage( #define BSF_POSTMESSAGE 0x00000010 #define BSF_FORCEIFHUNG 0x00000020 #define BSF_NOTIMEOUTIFNOTHUNG 0x00000040 @@ -2585,14 +2572,11 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define BROADCAST_QUERY_DENY 0x424D5144 // Return this value to deny a query. -@@ -3944,35 +5180,59 @@ +@@ -3944,35 +5175,56 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0500) typedef PVOID HDEVNOTIFY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HDEVNOTIFY HDEVNOTIFY; -+#endif typedef HDEVNOTIFY *PHDEVNOTIFY; #define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000 @@ -2647,12 +2631,10 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -3980,26 +5240,39 @@ UnregisterDeviceNotification( +@@ -3980,26 +5232,34 @@ UnregisterDeviceNotification( _In_ HDEVNOTIFY Handle ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + #if (_WIN32_WINNT >= 0x0502) @@ -2661,9 +2643,6 @@ index f99e9294..53ba8a91 100644 #define _HPOWERNOTIFY_DEF_ typedef PVOID HPOWERNOTIFY; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HPOWERNOTIFY HPOWERNOTIFY; -+#endif typedef HPOWERNOTIFY *PHPOWERNOTIFY; #endif @@ -2688,12 +2667,10 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4007,14 +5280,21 @@ UnregisterPowerSettingNotification( +@@ -4007,14 +5267,19 @@ UnregisterPowerSettingNotification( IN HPOWERNOTIFY Handle ); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows8_ @@ -2711,7 +2688,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4032,6 +5312,8 @@ UnregisterSuspendResumeNotification ( +@@ -4032,6 +5297,8 @@ UnregisterSuspendResumeNotification ( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2720,7 +2697,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4040,6 +5322,8 @@ PostMessageA( +@@ -4040,6 +5307,8 @@ PostMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2729,7 +2706,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4054,6 +5338,8 @@ PostMessageW( +@@ -4054,6 +5323,8 @@ PostMessageW( #define PostMessage PostMessageA #endif // !UNICODE @@ -2738,7 +2715,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4062,6 +5348,8 @@ PostThreadMessageA( +@@ -4062,6 +5333,8 @@ PostThreadMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2747,7 +2724,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4101,7 +5389,8 @@ PostThreadMessageW( +@@ -4101,7 +5374,8 @@ PostThreadMessageW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2757,7 +2734,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI AttachThreadInput( -@@ -4110,12 +5399,15 @@ AttachThreadInput( +@@ -4110,12 +5384,15 @@ AttachThreadInput( _In_ BOOL fAttach); @@ -2773,7 +2750,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4126,6 +5418,7 @@ WaitMessage( +@@ -4126,6 +5403,7 @@ WaitMessage( #endif @@ -2781,7 +2758,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -4139,6 +5432,7 @@ WaitForInputIdle( +@@ -4139,6 +5417,7 @@ WaitForInputIdle( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2789,7 +2766,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -4152,6 +5446,7 @@ DefWindowProcA( +@@ -4152,6 +5431,7 @@ DefWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2797,7 +2774,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -4171,6 +5466,7 @@ DefWindowProcW( +@@ -4171,6 +5451,7 @@ DefWindowProcW( #define DefWindowProc DefWindowProcA #endif // !UNICODE @@ -2805,7 +2782,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -4179,6 +5475,7 @@ PostQuitMessage( +@@ -4179,6 +5460,7 @@ PostQuitMessage( #ifdef STRICT @@ -2813,7 +2790,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4188,6 +5485,7 @@ CallWindowProcA( +@@ -4188,6 +5470,7 @@ CallWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2821,7 +2798,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4205,6 +5503,7 @@ CallWindowProcW( +@@ -4205,6 +5488,7 @@ CallWindowProcW( #else /* !STRICT */ @@ -2829,7 +2806,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4214,6 +5513,7 @@ CallWindowProcA( +@@ -4214,6 +5498,7 @@ CallWindowProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -2837,7 +2814,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -4237,6 +5537,7 @@ CallWindowProcW( +@@ -4237,6 +5522,7 @@ CallWindowProcW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2845,7 +2822,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4251,6 +5552,7 @@ InSendMessage( +@@ -4251,6 +5537,7 @@ InSendMessage( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2853,7 +2830,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -4274,12 +5576,15 @@ InSendMessageEx( +@@ -4274,12 +5561,15 @@ InSendMessageEx( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2869,7 +2846,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4292,11 +5597,15 @@ SetDoubleClickTime( +@@ -4292,11 +5582,15 @@ SetDoubleClickTime( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -2885,7 +2862,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI ATOM WINAPI -@@ -4308,12 +5617,16 @@ RegisterClassW( +@@ -4308,12 +5602,16 @@ RegisterClassW( #define RegisterClass RegisterClassA #endif // !UNICODE @@ -2902,7 +2879,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4332,6 +5645,8 @@ UnregisterClassW( +@@ -4332,6 +5630,8 @@ UnregisterClassW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2911,7 +2888,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4340,6 +5655,8 @@ GetClassInfoA( +@@ -4340,6 +5640,8 @@ GetClassInfoA( _In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpClassName, _Out_ LPWNDCLASSA lpWndClass); @@ -2920,7 +2897,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4361,11 +5678,15 @@ GetClassInfoW( +@@ -4361,11 +5663,15 @@ GetClassInfoW( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) #if(WINVER >= 0x0400) @@ -2936,7 +2913,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI ATOM WINAPI -@@ -4383,6 +5704,8 @@ RegisterClassExW( +@@ -4383,6 +5689,8 @@ RegisterClassExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -2945,7 +2922,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4391,6 +5714,8 @@ GetClassInfoExA( +@@ -4391,6 +5699,8 @@ GetClassInfoExA( _In_opt_ HINSTANCE hInstance, _In_ LPCSTR lpszClass, _Out_ LPWNDCLASSEXA lpwcx); @@ -2954,7 +2931,7 @@ index f99e9294..53ba8a91 100644 _Success_(return) WINUSERAPI BOOL -@@ -4424,14 +5749,16 @@ GetClassInfoExW( +@@ -4424,14 +5734,16 @@ GetClassInfoExW( typedef BOOLEAN (WINAPI * PREGISTERCLASSNAMEW)(LPCWSTR); #endif /* _WIN32_WINNT >= 0x0501 */ @@ -2973,7 +2950,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -4440,14 +5767,16 @@ CreateWindowExA( +@@ -4440,14 +5752,16 @@ CreateWindowExA( _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam); @@ -2992,7 +2969,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -4483,6 +5812,7 @@ nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) +@@ -4483,6 +5797,7 @@ nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3000,7 +2977,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4490,12 +5820,14 @@ IsWindow( +@@ -4490,12 +5805,14 @@ IsWindow( _In_opt_ HWND hWnd); @@ -3015,7 +2992,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4509,18 +5841,21 @@ IsChild( +@@ -4509,18 +5826,21 @@ IsChild( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3038,7 +3015,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -4529,13 +5864,15 @@ ShowWindow( +@@ -4529,13 +5849,15 @@ ShowWindow( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0500) @@ -3055,7 +3032,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -4547,6 +5884,8 @@ AnimateWindow( +@@ -4547,6 +5869,8 @@ AnimateWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3064,7 +3041,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4559,7 +5898,7 @@ UpdateLayeredWindow( +@@ -4559,7 +5883,7 @@ UpdateLayeredWindow( _In_opt_ POINT* pptSrc, _In_ COLORREF crKey, _In_opt_ BLENDFUNCTION* pblend, @@ -3073,7 +3050,7 @@ index f99e9294..53ba8a91 100644 /* * Layered Window Update information -@@ -4574,7 +5913,7 @@ typedef struct tagUPDATELAYEREDWINDOWINFO +@@ -4574,7 +5898,7 @@ typedef struct tagUPDATELAYEREDWINDOWINFO const POINT* pptSrc; COLORREF crKey; const BLENDFUNCTION* pblend; @@ -3082,7 +3059,7 @@ index f99e9294..53ba8a91 100644 const RECT* prcDirty; } UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO; -@@ -4599,6 +5938,8 @@ UpdateLayeredWindowIndirect( +@@ -4599,6 +5923,8 @@ UpdateLayeredWindowIndirect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3091,7 +3068,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4606,22 +5947,28 @@ GetLayeredWindowAttributes( +@@ -4606,22 +5932,28 @@ GetLayeredWindowAttributes( _In_ HWND hwnd, _Out_opt_ COLORREF* pcrKey, _Out_opt_ BYTE* pbAlpha, @@ -3122,7 +3099,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -4631,6 +5978,8 @@ PrintWindow( +@@ -4631,6 +5963,8 @@ PrintWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3131,7 +3108,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4638,7 +5987,7 @@ SetLayeredWindowAttributes( +@@ -4638,7 +5972,7 @@ SetLayeredWindowAttributes( _In_ HWND hwnd, _In_ COLORREF crKey, _In_ BYTE bAlpha, @@ -3140,7 +3117,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -4646,6 +5995,12 @@ SetLayeredWindowAttributes( +@@ -4646,6 +5980,12 @@ SetLayeredWindowAttributes( #define LWA_COLORKEY 0x00000001 #define LWA_ALPHA 0x00000002 @@ -3153,7 +3130,7 @@ index f99e9294..53ba8a91 100644 #define ULW_COLORKEY 0x00000001 #define ULW_ALPHA 0x00000002 -@@ -4653,6 +6008,14 @@ SetLayeredWindowAttributes( +@@ -4653,6 +5993,14 @@ SetLayeredWindowAttributes( #define ULW_EX_NORESIZE 0x00000008 @@ -3168,7 +3145,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ /* * FRAME_MARGIN -@@ -4673,14 +6036,16 @@ typedef struct +@@ -4673,14 +6021,16 @@ typedef struct #if(WINVER >= 0x0400) @@ -3186,7 +3163,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4692,11 +6057,12 @@ FlashWindow( +@@ -4692,11 +6042,12 @@ FlashWindow( typedef struct { UINT cbSize; HWND hwnd; @@ -3200,7 +3177,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4710,8 +6076,20 @@ FlashWindowEx( +@@ -4710,8 +6061,20 @@ FlashWindowEx( #define FLASHW_TIMER 0x00000004 #define FLASHW_TIMERNOFG 0x0000000C @@ -3221,7 +3198,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4719,12 +6097,16 @@ ShowOwnedPopups( +@@ -4719,12 +6082,16 @@ ShowOwnedPopups( _In_ HWND hWnd, _In_ BOOL fShow); @@ -3238,7 +3215,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4737,6 +6119,8 @@ CloseWindow( +@@ -4737,6 +6104,8 @@ CloseWindow( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3247,7 +3224,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4748,6 +6132,8 @@ MoveWindow( +@@ -4748,6 +6117,8 @@ MoveWindow( _In_ int nHeight, _In_ BOOL bRepaint); @@ -3256,7 +3233,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4758,7 +6144,7 @@ SetWindowPos( +@@ -4758,7 +6129,7 @@ SetWindowPos( _In_ int Y, _In_ int cx, _In_ int cy, @@ -3265,7 +3242,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -4766,6 +6152,8 @@ SetWindowPos( +@@ -4766,6 +6137,8 @@ SetWindowPos( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3274,7 +3251,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4773,6 +6161,8 @@ GetWindowPlacement( +@@ -4773,6 +6146,8 @@ GetWindowPlacement( _In_ HWND hWnd, _Inout_ WINDOWPLACEMENT *lpwndpl); @@ -3283,7 +3260,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4785,7 +6175,16 @@ SetWindowPlacement( +@@ -4785,7 +6160,16 @@ SetWindowPlacement( #define WDA_MONITOR 0x00000001 #define WDA_EXCLUDEFROMCAPTURE 0x00000011 @@ -3300,7 +3277,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4793,12 +6192,14 @@ GetWindowDisplayAffinity( +@@ -4793,12 +6177,14 @@ GetWindowDisplayAffinity( _In_ HWND hWnd, _Out_ DWORD* pdwAffinity); @@ -3316,7 +3293,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ -@@ -4810,12 +6211,16 @@ SetWindowDisplayAffinity( +@@ -4810,12 +6196,16 @@ SetWindowDisplayAffinity( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3333,7 +3310,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDWP WINAPI -@@ -4827,9 +6232,11 @@ DeferWindowPos( +@@ -4827,9 +6217,11 @@ DeferWindowPos( _In_ int y, _In_ int cx, _In_ int cy, @@ -3346,7 +3323,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4844,6 +6251,7 @@ EndDeferWindowPos( +@@ -4844,6 +6236,7 @@ EndDeferWindowPos( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -3354,7 +3331,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4856,24 +6264,29 @@ IsWindowVisible( +@@ -4856,24 +6249,29 @@ IsWindowVisible( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3384,7 +3361,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -4902,9 +6315,32 @@ IsZoomed( +@@ -4902,9 +6300,32 @@ IsZoomed( #define SWP_DRAWFRAME SWP_FRAMECHANGED #define SWP_NOREPOSITION SWP_NOOWNERZORDER @@ -3417,7 +3394,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -5009,6 +6445,8 @@ typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; +@@ -5009,6 +6430,8 @@ typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -3426,7 +3403,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5018,6 +6456,8 @@ CreateDialogParamA( +@@ -5018,6 +6441,8 @@ CreateDialogParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3435,7 +3412,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5033,6 +6473,8 @@ CreateDialogParamW( +@@ -5033,6 +6458,8 @@ CreateDialogParamW( #define CreateDialogParam CreateDialogParamA #endif // !UNICODE @@ -3444,7 +3421,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5042,6 +6484,8 @@ CreateDialogIndirectParamA( +@@ -5042,6 +6469,8 @@ CreateDialogIndirectParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3453,7 +3430,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5077,6 +6521,8 @@ CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +@@ -5077,6 +6506,8 @@ CreateDialogIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) #define CreateDialogIndirect CreateDialogIndirectA #endif // !UNICODE @@ -3462,7 +3439,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5086,6 +6532,8 @@ DialogBoxParamA( +@@ -5086,6 +6517,8 @@ DialogBoxParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3471,7 +3448,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5101,6 +6549,8 @@ DialogBoxParamW( +@@ -5101,6 +6534,8 @@ DialogBoxParamW( #define DialogBoxParam DialogBoxParamA #endif // !UNICODE @@ -3480,7 +3457,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5110,6 +6560,8 @@ DialogBoxIndirectParamA( +@@ -5110,6 +6545,8 @@ DialogBoxIndirectParamA( _In_opt_ HWND hWndParent, _In_opt_ DLGPROC lpDialogFunc, _In_ LPARAM dwInitParam); @@ -3489,7 +3466,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI INT_PTR WINAPI -@@ -5145,6 +6597,8 @@ DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) +@@ -5145,6 +6582,8 @@ DialogBoxIndirectParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L) #define DialogBoxIndirect DialogBoxIndirectA #endif // !UNICODE @@ -3498,7 +3475,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5152,6 +6606,8 @@ EndDialog( +@@ -5152,6 +6591,8 @@ EndDialog( _In_ HWND hDlg, _In_ INT_PTR nResult); @@ -3507,7 +3484,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5159,6 +6615,8 @@ GetDlgItem( +@@ -5159,6 +6600,8 @@ GetDlgItem( _In_opt_ HWND hDlg, _In_ int nIDDlgItem); @@ -3516,7 +3493,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5168,6 +6626,8 @@ SetDlgItemInt( +@@ -5168,6 +6611,8 @@ SetDlgItemInt( _In_ UINT uValue, _In_ BOOL bSigned); @@ -3525,7 +3502,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5177,6 +6637,8 @@ GetDlgItemInt( +@@ -5177,6 +6622,8 @@ GetDlgItemInt( _Out_opt_ BOOL *lpTranslated, _In_ BOOL bSigned); @@ -3534,7 +3511,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5184,6 +6646,8 @@ SetDlgItemTextA( +@@ -5184,6 +6631,8 @@ SetDlgItemTextA( _In_ HWND hDlg, _In_ int nIDDlgItem, _In_ LPCSTR lpString); @@ -3543,7 +3520,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5197,6 +6661,8 @@ SetDlgItemTextW( +@@ -5197,6 +6646,8 @@ SetDlgItemTextW( #define SetDlgItemText SetDlgItemTextA #endif // !UNICODE @@ -3552,7 +3529,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, cchMax) WINUSERAPI UINT -@@ -5206,6 +6672,8 @@ GetDlgItemTextA( +@@ -5206,6 +6657,8 @@ GetDlgItemTextA( _In_ int nIDDlgItem, _Out_writes_(cchMax) LPSTR lpString, _In_ int cchMax); @@ -3561,7 +3538,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, cchMax) WINUSERAPI UINT -@@ -5221,14 +6689,18 @@ GetDlgItemTextW( +@@ -5221,14 +6674,18 @@ GetDlgItemTextW( #define GetDlgItemText GetDlgItemTextA #endif // !UNICODE @@ -3581,7 +3558,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5238,6 +6710,7 @@ CheckRadioButton( +@@ -5238,6 +6695,7 @@ CheckRadioButton( _In_ int nIDLastButton, _In_ int nIDCheckButton); @@ -3589,7 +3566,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5245,6 +6718,7 @@ IsDlgButtonChecked( +@@ -5245,6 +6703,7 @@ IsDlgButtonChecked( _In_ HWND hDlg, _In_ int nIDButton); @@ -3597,7 +3574,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -5254,6 +6728,7 @@ SendDlgItemMessageA( +@@ -5254,6 +6713,7 @@ SendDlgItemMessageA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -3605,7 +3582,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -5269,6 +6744,8 @@ SendDlgItemMessageW( +@@ -5269,6 +6729,8 @@ SendDlgItemMessageW( #define SendDlgItemMessage SendDlgItemMessageA #endif // !UNICODE @@ -3614,7 +3591,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5277,6 +6754,8 @@ GetNextDlgGroupItem( +@@ -5277,6 +6739,8 @@ GetNextDlgGroupItem( _In_opt_ HWND hCtl, _In_ BOOL bPrevious); @@ -3623,7 +3600,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5285,12 +6764,15 @@ GetNextDlgTabItem( +@@ -5285,12 +6749,15 @@ GetNextDlgTabItem( _In_opt_ HWND hCtl, _In_ BOOL bPrevious); @@ -3639,7 +3616,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI long WINAPI -@@ -5310,6 +6792,7 @@ DefDlgProcA( +@@ -5310,6 +6777,7 @@ DefDlgProcA( _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -3647,7 +3624,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -5339,6 +6822,8 @@ typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { +@@ -5339,6 +6807,8 @@ typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS { DEFINE_ENUM_FLAG_OPERATORS(DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS); #endif @@ -3656,7 +3633,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI SetDialogControlDpiChangeBehavior( -@@ -5346,6 +6831,8 @@ SetDialogControlDpiChangeBehavior( +@@ -5346,6 +6816,8 @@ SetDialogControlDpiChangeBehavior( _In_ DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS mask, _In_ DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS values); @@ -3665,7 +3642,7 @@ index f99e9294..53ba8a91 100644 DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS WINAPI GetDialogControlDpiChangeBehavior( -@@ -5362,6 +6849,8 @@ typedef enum DIALOG_DPI_CHANGE_BEHAVIORS { +@@ -5362,6 +6834,8 @@ typedef enum DIALOG_DPI_CHANGE_BEHAVIORS { DEFINE_ENUM_FLAG_OPERATORS(DIALOG_DPI_CHANGE_BEHAVIORS); #endif @@ -3674,7 +3651,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI SetDialogDpiChangeBehavior( -@@ -5369,6 +6858,8 @@ SetDialogDpiChangeBehavior( +@@ -5369,6 +6843,8 @@ SetDialogDpiChangeBehavior( _In_ DIALOG_DPI_CHANGE_BEHAVIORS mask, _In_ DIALOG_DPI_CHANGE_BEHAVIORS values); @@ -3683,7 +3660,7 @@ index f99e9294..53ba8a91 100644 DIALOG_DPI_CHANGE_BEHAVIORS WINAPI GetDialogDpiChangeBehavior( -@@ -5393,12 +6884,14 @@ GetDialogDpiChangeBehavior( +@@ -5393,12 +6869,14 @@ GetDialogDpiChangeBehavior( #ifndef NOMSG @@ -3698,7 +3675,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5419,12 +6912,16 @@ CallMsgFilterW( +@@ -5419,12 +6897,16 @@ CallMsgFilterW( * Clipboard Manager Functions */ @@ -3715,7 +3692,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5434,6 +6931,7 @@ CloseClipboard( +@@ -5434,6 +6916,7 @@ CloseClipboard( #if(WINVER >= 0x0500) @@ -3723,7 +3700,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5442,24 +6940,31 @@ GetClipboardSequenceNumber( +@@ -5442,24 +6925,31 @@ GetClipboardSequenceNumber( #endif /* WINVER >= 0x0500 */ @@ -3755,7 +3732,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5467,6 +6972,8 @@ ChangeClipboardChain( +@@ -5467,6 +6957,8 @@ ChangeClipboardChain( _In_ HWND hWndRemove, _In_ HWND hWndNewNext); @@ -3764,7 +3741,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -5474,6 +6981,8 @@ SetClipboardData( +@@ -5474,6 +6966,8 @@ SetClipboardData( _In_ UINT uFormat, _In_opt_ HANDLE hMem); @@ -3773,7 +3750,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -5495,11 +7004,15 @@ GetClipboardMetadata( +@@ -5495,11 +6989,15 @@ GetClipboardMetadata( UINT format, _Inout_ PGETCLIPBMETADATA metadata); @@ -3789,7 +3766,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -5511,18 +7024,24 @@ RegisterClipboardFormatW( +@@ -5511,18 +7009,24 @@ RegisterClipboardFormatW( #define RegisterClipboardFormat RegisterClipboardFormatA #endif // !UNICODE @@ -3814,7 +3791,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5530,6 +7049,8 @@ GetClipboardFormatNameA( +@@ -5530,6 +7034,8 @@ GetClipboardFormatNameA( _In_ UINT format, _Out_writes_(cchMaxCount) LPSTR lpszFormatName, _In_ int cchMaxCount); @@ -3823,7 +3800,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5543,18 +7064,24 @@ GetClipboardFormatNameW( +@@ -5543,18 +7049,24 @@ GetClipboardFormatNameW( #define GetClipboardFormatName GetClipboardFormatNameA #endif // !UNICODE @@ -3848,7 +3825,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5562,6 +7089,8 @@ GetPriorityClipboardFormat( +@@ -5562,6 +7074,8 @@ GetPriorityClipboardFormat( _In_reads_(cFormats) UINT *paFormatPriorityList, _In_ int cFormats); @@ -3857,7 +3834,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -5569,18 +7098,24 @@ GetOpenClipboardWindow( +@@ -5569,18 +7083,24 @@ GetOpenClipboardWindow( VOID); #if(WINVER >= 0x0600) @@ -3882,7 +3859,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5596,12 +7131,16 @@ GetUpdatedClipboardFormats( +@@ -5596,12 +7116,16 @@ GetUpdatedClipboardFormats( * Character Translation Routines */ @@ -3899,7 +3876,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5614,6 +7153,8 @@ CharToOemW( +@@ -5614,6 +7138,8 @@ CharToOemW( #define CharToOem CharToOemA #endif // !UNICODE @@ -3908,7 +3885,7 @@ index f99e9294..53ba8a91 100644 __drv_preferredFunction("OemToCharBuff","Does not validate buffer size") WINUSERAPI BOOL -@@ -5621,6 +7162,8 @@ WINAPI +@@ -5621,6 +7147,8 @@ WINAPI OemToCharA( _In_ LPCSTR pSrc, _Out_writes_(_Inexpressible_(strlen(pSrc) + 1)) LPSTR pDst); @@ -3917,7 +3894,7 @@ index f99e9294..53ba8a91 100644 __drv_preferredFunction("OemToCharBuff","Does not validate buffer size") WINUSERAPI BOOL -@@ -5634,6 +7177,8 @@ OemToCharW( +@@ -5634,6 +7162,8 @@ OemToCharW( #define OemToChar OemToCharA #endif // !UNICODE @@ -3926,7 +3903,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5641,6 +7186,8 @@ CharToOemBuffA( +@@ -5641,6 +7171,8 @@ CharToOemBuffA( _In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength); @@ -3935,7 +3912,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5654,6 +7201,8 @@ CharToOemBuffW( +@@ -5654,6 +7186,8 @@ CharToOemBuffW( #define CharToOemBuff CharToOemBuffA #endif // !UNICODE @@ -3944,7 +3921,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5661,6 +7210,8 @@ OemToCharBuffA( +@@ -5661,6 +7195,8 @@ OemToCharBuffA( _In_ LPCSTR lpszSrc, _Out_writes_(cchDstLength) LPSTR lpszDst, _In_ DWORD cchDstLength); @@ -3953,7 +3930,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5680,11 +7231,15 @@ OemToCharBuffW( +@@ -5680,11 +7216,15 @@ OemToCharBuffW( #pragma region Desktop Family or OneCore Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) @@ -3969,7 +3946,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5696,12 +7251,14 @@ CharUpperW( +@@ -5696,12 +7236,14 @@ CharUpperW( #define CharUpper CharUpperA #endif // !UNICODE @@ -3984,7 +3961,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5714,11 +7271,15 @@ CharUpperBuffW( +@@ -5714,11 +7256,15 @@ CharUpperBuffW( #define CharUpperBuff CharUpperBuffA #endif // !UNICODE @@ -4000,7 +3977,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5730,12 +7291,14 @@ CharLowerW( +@@ -5730,12 +7276,14 @@ CharLowerW( #define CharLower CharLowerA #endif // !UNICODE @@ -4015,7 +3992,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -5748,11 +7311,13 @@ CharLowerBuffW( +@@ -5748,11 +7296,13 @@ CharLowerBuffW( #define CharLowerBuff CharLowerBuffA #endif // !UNICODE @@ -4029,7 +4006,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5764,12 +7329,14 @@ CharNextW( +@@ -5764,12 +7314,14 @@ CharNextW( #define CharNext CharNextA #endif // !UNICODE @@ -4044,7 +4021,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPWSTR WINAPI -@@ -5783,6 +7350,7 @@ CharPrevW( +@@ -5783,6 +7335,7 @@ CharPrevW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4052,7 +4029,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPSTR WINAPI -@@ -5791,6 +7359,7 @@ CharNextExA( +@@ -5791,6 +7344,7 @@ CharNextExA( _In_ LPCSTR lpCurrentChar, _In_ DWORD dwFlags); @@ -4060,7 +4037,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LPSTR WINAPI -@@ -5826,11 +7395,15 @@ CharPrevExA( +@@ -5826,11 +7380,15 @@ CharPrevExA( * Language dependent Routines */ @@ -4076,7 +4053,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5842,11 +7415,15 @@ IsCharAlphaW( +@@ -5842,11 +7400,15 @@ IsCharAlphaW( #define IsCharAlpha IsCharAlphaA #endif // !UNICODE @@ -4092,7 +4069,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5858,11 +7435,15 @@ IsCharAlphaNumericW( +@@ -5858,11 +7420,15 @@ IsCharAlphaNumericW( #define IsCharAlphaNumeric IsCharAlphaNumericA #endif // !UNICODE @@ -4108,7 +4085,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5874,11 +7455,14 @@ IsCharUpperW( +@@ -5874,11 +7440,14 @@ IsCharUpperW( #define IsCharUpper IsCharUpperA #endif // !UNICODE @@ -4123,7 +4100,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5898,42 +7482,51 @@ IsCharLowerW( +@@ -5898,42 +7467,51 @@ IsCharLowerW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4175,7 +4152,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Check_return_ BOOL -@@ -5941,6 +7534,8 @@ WINAPI +@@ -5941,6 +7519,8 @@ WINAPI GetKeyboardState( _Out_writes_(256) PBYTE lpKeyState); @@ -4184,7 +4161,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -5954,6 +7549,8 @@ SetKeyboardState( +@@ -5954,6 +7534,8 @@ SetKeyboardState( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -4193,7 +4170,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5961,6 +7558,8 @@ GetKeyNameTextA( +@@ -5961,6 +7543,8 @@ GetKeyNameTextA( _In_ LONG lParam, _Out_writes_(cchSize) LPSTR lpString, _In_ int cchSize); @@ -4202,7 +4179,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5981,12 +7580,15 @@ GetKeyNameTextW( +@@ -5981,12 +7565,15 @@ GetKeyNameTextW( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4218,7 +4195,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -5998,6 +7600,7 @@ ToAscii( +@@ -5998,6 +7585,7 @@ ToAscii( _In_ UINT uFlags); #if(WINVER >= 0x0400) @@ -4226,7 +4203,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -6010,6 +7613,7 @@ ToAsciiEx( +@@ -6010,6 +7598,7 @@ ToAsciiEx( _In_opt_ HKL dwhkl); #endif /* WINVER >= 0x0400 */ @@ -4234,7 +4211,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -6021,17 +7625,20 @@ ToUnicode( +@@ -6021,17 +7610,20 @@ ToUnicode( _In_ int cchBuff, _In_ UINT wFlags); @@ -4255,7 +4232,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI SHORT WINAPI -@@ -6044,12 +7651,14 @@ VkKeyScanW( +@@ -6044,12 +7636,14 @@ VkKeyScanW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4270,7 +4247,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI SHORT WINAPI -@@ -6064,18 +7673,31 @@ VkKeyScanExW( +@@ -6064,18 +7658,31 @@ VkKeyScanExW( #endif /* WINVER >= 0x0400 */ #define KEYEVENTF_EXTENDEDKEY 0x0001 #define KEYEVENTF_KEYUP 0x0002 @@ -4303,7 +4280,7 @@ index f99e9294..53ba8a91 100644 _In_ ULONG_PTR dwExtraInfo); #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -6093,21 +7715,48 @@ keybd_event( +@@ -6093,21 +7700,48 @@ keybd_event( #define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */ #if (_WIN32_WINNT >= 0x0600) #define MOUSEEVENTF_HWHEEL 0x01000 /* hwheel button rolled */ @@ -4353,7 +4330,7 @@ index f99e9294..53ba8a91 100644 _In_ DWORD dx, _In_ DWORD dy, _In_ DWORD dwData, -@@ -6122,15 +7771,15 @@ typedef struct tagMOUSEINPUT { +@@ -6122,15 +7756,15 @@ typedef struct tagMOUSEINPUT { LONG dx; LONG dy; DWORD mouseData; @@ -4372,7 +4349,7 @@ index f99e9294..53ba8a91 100644 DWORD time; /* -@@ -6158,8 +7807,15 @@ typedef struct tagHARDWAREINPUT { +@@ -6158,8 +7792,15 @@ typedef struct tagHARDWAREINPUT { #define INPUT_KEYBOARD 1 #define INPUT_HARDWARE 2 @@ -4389,7 +4366,7 @@ index f99e9294..53ba8a91 100644 union { -@@ -6169,6 +7825,8 @@ typedef struct tagINPUT { +@@ -6169,6 +7810,8 @@ typedef struct tagINPUT { } DUMMYUNIONNAME; } INPUT, *PINPUT, FAR* LPINPUT; @@ -4398,16 +4375,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -6195,5 +7853,8 @@ - * Touch input handle - */ - DECLARE_HANDLE(HTOUCHINPUT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HTOUCHINPUT HTOUCHINPUT; -+#endif - - typedef struct tagTOUCHINPUT { -@@ -6201,8 +7862,8 @@ typedef struct tagTOUCHINPUT { +@@ -6201,8 +7844,8 @@ typedef struct tagTOUCHINPUT { LONG y; HANDLE hSource; DWORD dwID; @@ -4418,7 +4386,7 @@ index f99e9294..53ba8a91 100644 DWORD dwTime; ULONG_PTR dwExtraInfo; DWORD cxContact; -@@ -6231,6 +7892,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; +@@ -6231,6 +7874,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; #define TOUCHEVENTF_PEN 0x0040 #define TOUCHEVENTF_PALM 0x0080 @@ -4437,7 +4405,7 @@ index f99e9294..53ba8a91 100644 /* * Touch input mask values (TOUCHINPUT.dwMask) */ -@@ -6238,9 +7911,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; +@@ -6238,9 +7893,18 @@ typedef TOUCHINPUT const * PCTOUCHINPUT; #define TOUCHINPUTMASKF_EXTRAINFO 0x0002 // the dwExtraInfo field is valid #define TOUCHINPUTMASKF_CONTACTAREA 0x0004 // the cxContact and cyContact fields are valid @@ -4456,7 +4424,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6250,6 +7932,8 @@ GetTouchInputInfo( +@@ -6250,6 +7914,8 @@ GetTouchInputInfo( _Out_writes_(cInputs) PTOUCHINPUT pInputs, // array of touch inputs _In_ int cbSize); // sizeof(TOUCHINPUT) @@ -4465,7 +4433,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6267,22 +7951,33 @@ CloseTouchInputHandle( +@@ -6267,22 +7933,33 @@ CloseTouchInputHandle( #define TWF_FINETOUCH (0x00000001) #define TWF_WANTPALM (0x00000002) @@ -4500,7 +4468,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6340,6 +8035,29 @@ typedef UINT32 POINTER_FLAGS; +@@ -6340,6 +8017,29 @@ typedef UINT32 POINTER_FLAGS; #define POINTER_FLAG_CAPTURECHANGED 0x00200000 // Lost capture #define POINTER_FLAG_HASTRANSFORM 0x00400000 // Input has a transform associated with it @@ -4530,7 +4498,7 @@ index f99e9294..53ba8a91 100644 /* * Pointer info key states defintions. -@@ -6368,7 +8086,7 @@ typedef struct tagPOINTER_INFO { +@@ -6368,7 +8068,7 @@ typedef struct tagPOINTER_INFO { POINTER_INPUT_TYPE pointerType; UINT32 pointerId; UINT32 frameId; @@ -4539,7 +4507,7 @@ index f99e9294..53ba8a91 100644 HANDLE sourceDevice; HWND hwndTarget; POINT ptPixelLocation; -@@ -6474,6 +8192,13 @@ typedef struct tagPOINTER_PEN_INFO { +@@ -6474,6 +8174,13 @@ typedef struct tagPOINTER_PEN_INFO { #define TOUCH_FEEDBACK_INDIRECT 0x2 #define TOUCH_FEEDBACK_NONE 0x3 @@ -4553,7 +4521,7 @@ index f99e9294..53ba8a91 100644 typedef enum { POINTER_FEEDBACK_DEFAULT = 1, // The injected pointer input feedback may get suppressed by the end-user settings in the Pen and Touch control panel. POINTER_FEEDBACK_INDIRECT = 2, // The injected pointer input feedback overrides the end-user settings in the Pen and Touch control panel. -@@ -6483,13 +8208,17 @@ typedef enum { +@@ -6483,13 +8190,17 @@ typedef enum { #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4572,7 +4540,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6526,6 +8255,8 @@ typedef struct tagINPUT_INJECTION_VALUE { +@@ -6526,6 +8237,8 @@ typedef struct tagINPUT_INJECTION_VALUE { USHORT index; }INPUT_INJECTION_VALUE, *PINPUT_INJECTION_VALUE; @@ -4581,7 +4549,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6533,6 +8264,8 @@ GetPointerType( +@@ -6533,6 +8246,8 @@ GetPointerType( _In_ UINT32 pointerId, _Out_ POINTER_INPUT_TYPE *pointerType); @@ -4590,7 +4558,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6540,6 +8273,8 @@ GetPointerCursorId( +@@ -6540,6 +8255,8 @@ GetPointerCursorId( _In_ UINT32 pointerId, _Out_ UINT32 *cursorId); @@ -4599,7 +4567,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6547,6 +8282,8 @@ GetPointerInfo( +@@ -6547,6 +8264,8 @@ GetPointerInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_INFO *pointerInfo); @@ -4608,7 +4576,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6555,6 +8292,8 @@ GetPointerInfoHistory( +@@ -6555,6 +8274,8 @@ GetPointerInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_INFO *pointerInfo); @@ -4617,7 +4585,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6563,6 +8302,8 @@ GetPointerFrameInfo( +@@ -6563,6 +8284,8 @@ GetPointerFrameInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_INFO *pointerInfo); @@ -4626,7 +4594,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6572,6 +8313,8 @@ GetPointerFrameInfoHistory( +@@ -6572,6 +8295,8 @@ GetPointerFrameInfoHistory( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_INFO *pointerInfo); @@ -4635,7 +4603,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6579,6 +8322,8 @@ GetPointerTouchInfo( +@@ -6579,6 +8304,8 @@ GetPointerTouchInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_TOUCH_INFO *touchInfo); @@ -4644,7 +4612,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6587,6 +8332,8 @@ GetPointerTouchInfoHistory( +@@ -6587,6 +8314,8 @@ GetPointerTouchInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_TOUCH_INFO *touchInfo); @@ -4653,7 +4621,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6595,6 +8342,8 @@ GetPointerFrameTouchInfo( +@@ -6595,6 +8324,8 @@ GetPointerFrameTouchInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_TOUCH_INFO *touchInfo); @@ -4662,7 +4630,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6604,6 +8353,8 @@ GetPointerFrameTouchInfoHistory( +@@ -6604,6 +8335,8 @@ GetPointerFrameTouchInfoHistory( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*entriesCount * *pointerCount) POINTER_TOUCH_INFO *touchInfo); @@ -4671,7 +4639,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6611,6 +8362,8 @@ GetPointerPenInfo( +@@ -6611,6 +8344,8 @@ GetPointerPenInfo( _In_ UINT32 pointerId, _Out_writes_(1) POINTER_PEN_INFO *penInfo); @@ -4680,7 +4648,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6619,6 +8372,8 @@ GetPointerPenInfoHistory( +@@ -6619,6 +8354,8 @@ GetPointerPenInfoHistory( _Inout_ UINT32 *entriesCount, _Out_writes_opt_(*entriesCount) POINTER_PEN_INFO *penInfo); @@ -4689,7 +4657,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6627,6 +8382,8 @@ GetPointerFramePenInfo( +@@ -6627,6 +8364,8 @@ GetPointerFramePenInfo( _Inout_ UINT32 *pointerCount, _Out_writes_opt_(*pointerCount) POINTER_PEN_INFO *penInfo); @@ -4698,7 +4666,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6638,47 +8395,51 @@ GetPointerFramePenInfoHistory( +@@ -6638,47 +8377,51 @@ GetPointerFramePenInfoHistory( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if (NTDDI_VERSION >= NTDDI_WIN11_GE) @@ -4750,7 +4718,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6686,6 +8447,8 @@ RegisterPointerInputTarget( +@@ -6686,6 +8429,8 @@ RegisterPointerInputTarget( _In_ HWND hwnd, _In_ POINTER_INPUT_TYPE pointerType); @@ -4759,7 +4727,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6693,6 +8456,7 @@ UnregisterPointerInputTarget( +@@ -6693,6 +8438,7 @@ UnregisterPointerInputTarget( _In_ HWND hwnd, _In_ POINTER_INPUT_TYPE pointerType); @@ -4767,7 +4735,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6701,6 +8465,7 @@ RegisterPointerInputTargetEx( +@@ -6701,6 +8447,7 @@ RegisterPointerInputTargetEx( _In_ POINTER_INPUT_TYPE pointerType, _In_ BOOL fObserve); @@ -4775,13 +4743,10 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6710,6 +8475,14 @@ UnregisterPointerInputTargetEx( +@@ -6710,6 +8457,11 @@ UnregisterPointerInputTargetEx( #if (NTDDI_VERSION >= NTDDI_WIN10_RS5) DECLARE_HANDLE(HSYNTHETICPOINTERDEVICE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HSYNTHETICPOINTERDEVICE HSYNTHETICPOINTERDEVICE; -+#endif +#if (defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus)) +_Win32_RAIIFree_(DestroySyntheticPointerDevice, -1, 0) +#endif @@ -4790,7 +4755,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HSYNTHETICPOINTERDEVICE WINAPI -@@ -6718,6 +8491,8 @@ CreateSyntheticPointerDevice( +@@ -6718,6 +8470,8 @@ CreateSyntheticPointerDevice( _In_ ULONG maxCount, _In_ POINTER_FEEDBACK_MODE mode); @@ -4799,7 +4764,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6726,77 +8501,83 @@ InjectSyntheticPointerInput( +@@ -6726,77 +8480,81 @@ InjectSyntheticPointerInput( _In_reads_(count) CONST POINTER_TYPE_INFO* pointerInfo, _In_ UINT32 count); @@ -4809,8 +4774,6 @@ index f99e9294..53ba8a91 100644 WINAPI DestroySyntheticPointerDevice( _In_ HSYNTHETICPOINTERDEVICE device); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif #endif // NTDDI_VERSION >= NTDDI_WIN10_RS5 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -4883,7 +4846,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6815,6 +8596,8 @@ EnableMouseInPointerForThread(VOID); +@@ -6815,6 +8573,8 @@ EnableMouseInPointerForThread(VOID); #define TOUCH_HIT_TESTING_CLIENT 0x1 #define TOUCH_HIT_TESTING_NONE 0x2 @@ -4892,7 +4855,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6845,6 +8628,8 @@ typedef struct tagTOUCH_HIT_TESTING_INPUT +@@ -6845,6 +8605,8 @@ typedef struct tagTOUCH_HIT_TESTING_INPUT #define TOUCH_HIT_TESTING_PROXIMITY_CLOSEST 0x0 #define TOUCH_HIT_TESTING_PROXIMITY_FARTHEST 0xFFF @@ -4901,7 +4864,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6853,6 +8638,8 @@ EvaluateProximityToRect( +@@ -6853,6 +8615,8 @@ EvaluateProximityToRect( _In_ const TOUCH_HIT_TESTING_INPUT *pHitTestingInput, _Out_ TOUCH_HIT_TESTING_PROXIMITY_EVALUATION *pProximityEval); @@ -4910,7 +4873,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6862,6 +8649,8 @@ EvaluateProximityToPolygon( +@@ -6862,6 +8626,8 @@ EvaluateProximityToPolygon( _In_ const TOUCH_HIT_TESTING_INPUT *pHitTestingInput, _Out_ TOUCH_HIT_TESTING_PROXIMITY_EVALUATION *pProximityEval); @@ -4919,7 +4882,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -6889,6 +8678,7 @@ typedef enum tagFEEDBACK_TYPE { +@@ -6889,6 +8655,7 @@ typedef enum tagFEEDBACK_TYPE { #define GWFS_INCLUDE_ANCESTORS 0x00000001 @@ -4927,7 +4890,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6899,6 +8689,7 @@ GetWindowFeedbackSetting( +@@ -6899,6 +8666,7 @@ GetWindowFeedbackSetting( _Inout_ UINT32* pSize, _Out_writes_bytes_opt_(*pSize) VOID* config); @@ -4935,7 +4898,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6943,6 +8734,8 @@ typedef struct tagINPUT_TRANSFORM { +@@ -6943,6 +8711,8 @@ typedef struct tagINPUT_TRANSFORM { #endif @@ -4944,7 +4907,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6983,6 +8776,7 @@ typedef struct tagLASTINPUTINFO { +@@ -6983,6 +8753,7 @@ typedef struct tagLASTINPUTINFO { DWORD dwTime; } LASTINPUTINFO, * PLASTINPUTINFO; @@ -4952,7 +4915,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -6996,18 +8790,20 @@ GetLastInputInfo( +@@ -6996,18 +8767,20 @@ GetLastInputInfo( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -4975,7 +4938,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define MapVirtualKey MapVirtualKeyW #else -@@ -7015,19 +8811,21 @@ MapVirtualKeyW( +@@ -7015,19 +8788,21 @@ MapVirtualKeyW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -4999,7 +4962,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ HKL dwhkl); #ifdef UNICODE #define MapVirtualKeyEx MapVirtualKeyExW -@@ -7045,43 +8843,64 @@ MapVirtualKeyExW( +@@ -7045,43 +8820,64 @@ MapVirtualKeyExW( #define MAPVK_VSC_TO_VK (1) #define MAPVK_VK_TO_CHAR (2) #define MAPVK_VSC_TO_VK_EX (3) @@ -5066,7 +5029,7 @@ index f99e9294..53ba8a91 100644 DWORD WINAPI MsgWaitForMultipleObjects( -@@ -7089,17 +8908,19 @@ MsgWaitForMultipleObjects( +@@ -7089,17 +8885,19 @@ MsgWaitForMultipleObjects( _In_reads_opt_(nCount) CONST HANDLE *pHandles, _In_ BOOL fWaitAll, _In_ DWORD dwMilliseconds, @@ -5090,7 +5053,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -7109,6 +8930,15 @@ MsgWaitForMultipleObjectsEx( +@@ -7109,6 +8907,15 @@ MsgWaitForMultipleObjectsEx( #define MWMO_ALERTABLE 0x0002 #define MWMO_INPUTAVAILABLE 0x0004 @@ -5106,7 +5069,7 @@ index f99e9294..53ba8a91 100644 /* * Queue status flags for GetQueueStatus() and MsgWaitForMultipleObjects() */ -@@ -7124,6 +8954,12 @@ MsgWaitForMultipleObjectsEx( +@@ -7124,6 +8931,12 @@ MsgWaitForMultipleObjectsEx( #if(_WIN32_WINNT >= 0x0501) #define QS_RAWINPUT 0x0400 @@ -5119,7 +5082,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0602) -@@ -7143,14 +8979,32 @@ MsgWaitForMultipleObjectsEx( +@@ -7143,14 +8956,32 @@ MsgWaitForMultipleObjectsEx( QS_TOUCH | \ QS_POINTER) @@ -5152,7 +5115,7 @@ index f99e9294..53ba8a91 100644 #endif // (_WIN32_WINNT >= 0x0501) #endif -@@ -7167,6 +9021,32 @@ MsgWaitForMultipleObjectsEx( +@@ -7167,6 +8998,32 @@ MsgWaitForMultipleObjectsEx( QS_HOTKEY | \ QS_SENDMESSAGE) @@ -5185,7 +5148,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) -@@ -7178,6 +9058,8 @@ MsgWaitForMultipleObjectsEx( +@@ -7178,6 +9035,8 @@ MsgWaitForMultipleObjectsEx( * Windows Functions */ @@ -5194,7 +5157,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT_PTR WINAPI -@@ -7205,6 +9087,8 @@ SetTimer( +@@ -7205,6 +9064,8 @@ SetTimer( #if(WINVER >= 0x0601) @@ -5203,7 +5166,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT_PTR WINAPI -@@ -7223,6 +9107,8 @@ SetCoalescableTimer( +@@ -7223,6 +9084,8 @@ SetCoalescableTimer( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -5212,7 +5175,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7236,12 +9122,14 @@ KillTimer( +@@ -7236,12 +9099,14 @@ KillTimer( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -5227,7 +5190,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7249,18 +9137,23 @@ EnableWindow( +@@ -7249,18 +9114,23 @@ EnableWindow( _In_ HWND hWnd, _In_ BOOL bEnable); @@ -5251,7 +5214,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HACCEL WINAPI -@@ -7273,12 +9166,22 @@ LoadAcceleratorsW( +@@ -7273,12 +9143,22 @@ LoadAcceleratorsW( #define LoadAccelerators LoadAcceleratorsA #endif // !UNICODE @@ -5274,7 +5237,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HACCEL WINAPI -@@ -7291,12 +9194,17 @@ CreateAcceleratorTableW( +@@ -7291,12 +9171,15 @@ CreateAcceleratorTableW( #define CreateAcceleratorTable CreateAcceleratorTableA #endif // !UNICODE @@ -5285,14 +5248,12 @@ index f99e9294..53ba8a91 100644 DestroyAcceleratorTable( _In_ HACCEL hAccel); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SupportedOS_Windows2000_ WINUSERAPI int WINAPI -@@ -7304,6 +9212,7 @@ CopyAcceleratorTableA( +@@ -7304,6 +9187,7 @@ CopyAcceleratorTableA( _In_ HACCEL hAccelSrc, _Out_writes_to_opt_(cAccelEntries, return) LPACCEL lpAccelDst, _In_ int cAccelEntries); @@ -5300,7 +5261,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7319,6 +9228,8 @@ CopyAcceleratorTableW( +@@ -7319,6 +9203,8 @@ CopyAcceleratorTableW( #ifndef NOMSG @@ -5309,7 +5270,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7326,6 +9237,8 @@ TranslateAcceleratorA( +@@ -7326,6 +9212,8 @@ TranslateAcceleratorA( _In_ HWND hWnd, _In_ HACCEL hAccTable, _In_ LPMSG lpMsg); @@ -5318,7 +5279,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7424,17 +9337,106 @@ TranslateAcceleratorW( +@@ -7424,17 +9312,106 @@ TranslateAcceleratorW( #define SM_CLEANBOOT 67 #define SM_CXDRAG 68 #define SM_CYDRAG 69 @@ -5425,7 +5386,7 @@ index f99e9294..53ba8a91 100644 #endif #if(WINVER >= 0x0500) #define SM_XVIRTUALSCREEN 76 -@@ -7443,13 +9445,34 @@ TranslateAcceleratorW( +@@ -7443,13 +9420,34 @@ TranslateAcceleratorW( #define SM_CYVIRTUALSCREEN 79 #define SM_CMONITORS 80 #define SM_SAMEDISPLAYFORMAT 81 @@ -5460,7 +5421,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #if(_WIN32_WINNT >= 0x0501) -@@ -7457,17 +9480,37 @@ TranslateAcceleratorW( +@@ -7457,17 +9455,37 @@ TranslateAcceleratorW( #define SM_MEDIACENTER 87 #define SM_STARTER 88 #define SM_SERVERR2 89 @@ -5498,7 +5459,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ #if (WINVER < 0x0500) && (!defined(_WIN32_WINNT) || (_WIN32_WINNT < 0x0400)) -@@ -7485,13 +9528,28 @@ TranslateAcceleratorW( +@@ -7485,13 +9503,28 @@ TranslateAcceleratorW( #if(WINVER >= 0x0500) #define SM_REMOTESESSION 0x1000 @@ -5527,7 +5488,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ #if(WINVER >= 0x0501) -@@ -7501,6 +9559,12 @@ TranslateAcceleratorW( +@@ -7501,6 +9534,12 @@ TranslateAcceleratorW( #if(WINVER >= 0x0602) #define SM_CONVERTIBLESLATEMODE 0x2003 #define SM_SYSTEMDOCKED 0x2004 @@ -5540,7 +5501,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0602 */ #endif /* WINVER >= 0x0500 */ -@@ -7509,19 +9573,22 @@ TranslateAcceleratorW( +@@ -7509,19 +9548,22 @@ TranslateAcceleratorW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -5565,7 +5526,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT dpi); #endif /* WINVER >= 0x0605 */ -@@ -7571,12 +9638,22 @@ GetSystemMetricsForDpi( +@@ -7571,12 +9613,22 @@ GetSystemMetricsForDpi( #define MENU_ALL_ACCESS (STANDARD_RIGHTS_ALL | MENU_READ_ACCESS | MENU_WRITE_ACCESS | MENU_EXECUTE_ACCESS) @@ -5588,7 +5549,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7589,11 +9666,21 @@ LoadMenuW( +@@ -7589,11 +9641,21 @@ LoadMenuW( #define LoadMenu LoadMenuA #endif // !UNICODE @@ -5610,7 +5571,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7605,12 +9692,15 @@ LoadMenuIndirectW( +@@ -7605,12 +9667,15 @@ LoadMenuIndirectW( #define LoadMenuIndirect LoadMenuIndirectA #endif // !UNICODE @@ -5626,7 +5587,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7642,6 +9732,7 @@ ChangeMenuW( +@@ -7642,6 +9707,7 @@ ChangeMenuW( #define ChangeMenu ChangeMenuA #endif // !UNICODE @@ -5634,7 +5595,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7651,6 +9742,7 @@ HiliteMenuItem( +@@ -7651,6 +9717,7 @@ HiliteMenuItem( _In_ UINT uIDHiliteItem, _In_ UINT uHilite); @@ -5642,7 +5603,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7659,7 +9751,8 @@ GetMenuStringA( +@@ -7659,7 +9726,8 @@ GetMenuStringA( _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPSTR lpString, _In_ int cchMax, @@ -5652,7 +5613,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -7668,21 +9761,24 @@ GetMenuStringW( +@@ -7668,21 +9736,24 @@ GetMenuStringW( _In_ UINT uIDItem, _Out_writes_opt_(cchMax) LPWSTR lpString, _In_ int cchMax, @@ -5679,7 +5640,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7695,6 +9791,7 @@ DrawMenuBar( +@@ -7695,6 +9766,7 @@ DrawMenuBar( #endif /* _WIN32_WINNT >= 0x0501 */ @@ -5687,7 +5648,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7703,24 +9800,40 @@ GetSystemMenu( +@@ -7703,24 +9775,38 @@ GetSystemMenu( _In_ BOOL bRevert); @@ -5721,14 +5682,12 @@ index f99e9294..53ba8a91 100644 DestroyMenu( _In_ HMENU hMenu); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SupportedOS_Windows2000_ WINUSERAPI DWORD WINAPI -@@ -7729,14 +9842,16 @@ CheckMenuItem( +@@ -7729,14 +9815,16 @@ CheckMenuItem( _In_ UINT uIDCheckItem, _In_ UINT uCheck); @@ -5746,7 +5705,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HMENU WINAPI -@@ -7744,6 +9859,7 @@ GetSubMenu( +@@ -7744,6 +9832,7 @@ GetSubMenu( _In_ HMENU hMenu, _In_ int nPos); @@ -5754,7 +5713,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -7751,28 +9867,34 @@ GetMenuItemID( +@@ -7751,28 +9840,34 @@ GetMenuItemID( _In_ HMENU hMenu, _In_ int nPos); @@ -5791,7 +5750,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7781,20 +9903,24 @@ InsertMenuW( +@@ -7781,20 +9876,24 @@ InsertMenuW( #define InsertMenu InsertMenuA #endif // !UNICODE @@ -5818,7 +5777,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7803,22 +9929,26 @@ AppendMenuW( +@@ -7803,22 +9902,26 @@ AppendMenuW( #define AppendMenu AppendMenuA #endif // !UNICODE @@ -5847,7 +5806,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT_PTR uIDNewItem, _In_opt_ LPCWSTR lpNewItem); #ifdef UNICODE -@@ -7827,43 +9957,52 @@ ModifyMenuW( +@@ -7827,43 +9930,52 @@ ModifyMenuW( #define ModifyMenu ModifyMenuA #endif // !UNICODE @@ -5905,7 +5864,7 @@ index f99e9294..53ba8a91 100644 _In_ int x, _In_ int y, _Reserved_ int nReserved, -@@ -7884,7 +10023,9 @@ typedef struct tagTPMPARAMS +@@ -7884,7 +9996,9 @@ typedef struct tagTPMPARAMS } TPMPARAMS; typedef TPMPARAMS FAR *LPTPMPARAMS; @@ -5916,7 +5875,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI TrackPopupMenuEx( -@@ -7897,6 +10038,8 @@ TrackPopupMenuEx( +@@ -7897,6 +10011,8 @@ TrackPopupMenuEx( #endif /* WINVER >= 0x0400 */ #if(_WIN32_WINNT >= 0x0601) @@ -5925,7 +5884,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7918,6 +10061,16 @@ CalculatePopupWindowPosition( +@@ -7918,6 +10034,16 @@ CalculatePopupWindowPosition( #define MNS_NOTIFYBYPOS 0x08000000 #define MNS_CHECKORBMP 0x04000000 @@ -5942,7 +5901,7 @@ index f99e9294..53ba8a91 100644 #define MIM_MAXHEIGHT 0x00000001 #define MIM_BACKGROUND 0x00000002 #define MIM_HELPID 0x00000004 -@@ -7925,11 +10078,21 @@ CalculatePopupWindowPosition( +@@ -7925,11 +10051,21 @@ CalculatePopupWindowPosition( #define MIM_STYLE 0x00000010 #define MIM_APPLYTOSUBMENUS 0x80000000 @@ -5966,7 +5925,7 @@ index f99e9294..53ba8a91 100644 UINT cyMax; HBRUSH hbrBack; DWORD dwContextHelpID; -@@ -7937,6 +10100,8 @@ typedef struct tagMENUINFO +@@ -7937,6 +10073,8 @@ typedef struct tagMENUINFO } MENUINFO, FAR *LPMENUINFO; typedef MENUINFO CONST FAR *LPCMENUINFO; @@ -5975,7 +5934,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7944,6 +10109,8 @@ GetMenuInfo( +@@ -7944,6 +10082,8 @@ GetMenuInfo( _In_ HMENU, _Inout_ LPMENUINFO); @@ -5984,7 +5943,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7951,6 +10118,8 @@ SetMenuInfo( +@@ -7951,6 +10091,8 @@ SetMenuInfo( _In_ HMENU, _In_ LPCMENUINFO); @@ -5993,7 +5952,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -7965,7 +10134,7 @@ EndMenu( +@@ -7965,7 +10107,7 @@ EndMenu( typedef struct tagMENUGETOBJECTINFO { @@ -6002,7 +5961,7 @@ index f99e9294..53ba8a91 100644 UINT uPos; HMENU hmenu; PVOID riid; -@@ -7978,6 +10147,12 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7978,6 +10120,12 @@ typedef struct tagMENUGETOBJECTINFO #define MNGOF_TOPGAP 0x00000001 #define MNGOF_BOTTOMGAP 0x00000002 @@ -6015,7 +5974,7 @@ index f99e9294..53ba8a91 100644 /* * WM_MENUGETOBJECT return values */ -@@ -7992,6 +10167,16 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7992,6 +10140,16 @@ typedef struct tagMENUGETOBJECTINFO #define MIIM_CHECKMARKS 0x00000008 #define MIIM_TYPE 0x00000010 #define MIIM_DATA 0x00000020 @@ -6032,7 +5991,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) -@@ -7999,6 +10184,13 @@ typedef struct tagMENUGETOBJECTINFO +@@ -7999,6 +10157,13 @@ typedef struct tagMENUGETOBJECTINFO #define MIIM_BITMAP 0x00000080 #define MIIM_FTYPE 0x00000100 @@ -6046,7 +6005,7 @@ index f99e9294..53ba8a91 100644 #define HBMMENU_CALLBACK ((HBITMAP) -1) #define HBMMENU_SYSTEM ((HBITMAP) 1) #define HBMMENU_MBAR_RESTORE ((HBITMAP) 2) -@@ -8016,9 +10208,9 @@ typedef struct tagMENUGETOBJECTINFO +@@ -8016,9 +10181,9 @@ typedef struct tagMENUGETOBJECTINFO typedef struct tagMENUITEMINFOA { UINT cbSize; @@ -6059,7 +6018,7 @@ index f99e9294..53ba8a91 100644 UINT wID; // used if MIIM_ID HMENU hSubMenu; // used if MIIM_SUBMENU HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS -@@ -8033,9 +10225,9 @@ typedef struct tagMENUITEMINFOA +@@ -8033,9 +10198,9 @@ typedef struct tagMENUITEMINFOA typedef struct tagMENUITEMINFOW { UINT cbSize; @@ -6072,7 +6031,7 @@ index f99e9294..53ba8a91 100644 UINT wID; // used if MIIM_ID HMENU hSubMenu; // used if MIIM_SUBMENU HBITMAP hbmpChecked; // used if MIIM_CHECKMARKS -@@ -8063,6 +10255,8 @@ typedef LPCMENUITEMINFOA LPCMENUITEMINFO; +@@ -8063,6 +10228,8 @@ typedef LPCMENUITEMINFOA LPCMENUITEMINFO; #endif // UNICODE @@ -6081,7 +6040,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8071,6 +10265,8 @@ InsertMenuItemA( +@@ -8071,6 +10238,8 @@ InsertMenuItemA( _In_ UINT item, _In_ BOOL fByPosition, _In_ LPCMENUITEMINFOA lpmi); @@ -6090,7 +6049,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8085,6 +10281,8 @@ InsertMenuItemW( +@@ -8085,6 +10254,8 @@ InsertMenuItemW( #define InsertMenuItem InsertMenuItemA #endif // !UNICODE @@ -6099,7 +6058,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8093,6 +10291,8 @@ GetMenuItemInfoA( +@@ -8093,6 +10264,8 @@ GetMenuItemInfoA( _In_ UINT item, _In_ BOOL fByPosition, _Inout_ LPMENUITEMINFOA lpmii); @@ -6108,7 +6067,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8107,6 +10307,8 @@ GetMenuItemInfoW( +@@ -8107,6 +10280,8 @@ GetMenuItemInfoW( #define GetMenuItemInfo GetMenuItemInfoA #endif // !UNICODE @@ -6117,7 +6076,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8115,6 +10317,8 @@ SetMenuItemInfoA( +@@ -8115,6 +10290,8 @@ SetMenuItemInfoA( _In_ UINT item, _In_ BOOL fByPositon, _In_ LPCMENUITEMINFOA lpmii); @@ -6126,7 +6085,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8133,14 +10337,24 @@ SetMenuItemInfoW( +@@ -8133,14 +10310,24 @@ SetMenuItemInfoW( #define GMDI_USEDISABLED 0x0001L #define GMDI_GOINTOPOPUPS 0x0002L @@ -6152,7 +6111,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8149,6 +10363,8 @@ SetMenuDefaultItem( +@@ -8149,6 +10336,8 @@ SetMenuDefaultItem( _In_ UINT uItem, _In_ UINT fByPos); @@ -6161,7 +6120,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8158,6 +10374,7 @@ GetMenuItemRect( +@@ -8158,6 +10347,7 @@ GetMenuItemRect( _In_ UINT uItem, _Out_ LPRECT lprcItem); @@ -6169,7 +6128,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8175,6 +10392,15 @@ MenuItemFromPoint( +@@ -8175,6 +10365,15 @@ MenuItemFromPoint( #define TPM_LEFTALIGN 0x0000L #define TPM_CENTERALIGN 0x0004L #define TPM_RIGHTALIGN 0x0008L @@ -6185,7 +6144,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define TPM_TOPALIGN 0x0000L #define TPM_VCENTERALIGN 0x0010L -@@ -8184,6 +10410,17 @@ MenuItemFromPoint( +@@ -8184,6 +10383,17 @@ MenuItemFromPoint( #define TPM_VERTICAL 0x0040L /* Vert alignment matters more */ #define TPM_NONOTIFY 0x0080L /* Don't send any notification msgs */ #define TPM_RETURNCMD 0x0100L @@ -6203,7 +6162,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #if(WINVER >= 0x0500) #define TPM_RECURSE 0x0001L -@@ -8191,15 +10428,39 @@ MenuItemFromPoint( +@@ -8191,15 +10401,39 @@ MenuItemFromPoint( #define TPM_HORNEGANIMATION 0x0800L #define TPM_VERPOSANIMATION 0x1000L #define TPM_VERNEGANIMATION 0x2000L @@ -6243,7 +6202,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ -@@ -8254,6 +10515,7 @@ DragObject( +@@ -8254,6 +10488,7 @@ DragObject( _In_ ULONG_PTR data, _In_opt_ HCURSOR hcur); @@ -6251,7 +6210,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8269,6 +10531,8 @@ DragDetect( +@@ -8269,6 +10504,8 @@ DragDetect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6260,7 +6219,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8302,6 +10566,26 @@ DrawIcon( +@@ -8302,6 +10539,26 @@ DrawIcon( #define DT_NOPREFIX 0x00000800 #define DT_INTERNAL 0x00001000 @@ -6287,7 +6246,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define DT_EDITCONTROL 0x00002000 #define DT_PATH_ELLIPSIS 0x00004000 -@@ -8309,11 +10593,35 @@ DrawIcon( +@@ -8309,11 +10566,35 @@ DrawIcon( #define DT_MODIFYSTRING 0x00010000 #define DT_RTLREADING 0x00020000 #define DT_WORD_ELLIPSIS 0x00040000 @@ -6323,7 +6282,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #endif /* WINVER >= 0x0500 */ -@@ -8346,6 +10654,7 @@ typedef struct tagDRAWTEXTPARAMS +@@ -8346,6 +10627,7 @@ typedef struct tagDRAWTEXTPARAMS _When_(((size) == -1) || (_String_length_(_Curr_) < (size)), _Pre_z_ _Pre_valid_ _Out_writes_z_(_String_length_(_Curr_) + (grows))) \ _When_(((size) != -1) && (_String_length_(_Curr_) >= (size)), _Pre_count_(size) _Pre_valid_ _Out_writes_z_((size) + (grows))) @@ -6331,7 +6290,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8357,7 +10666,8 @@ DrawTextA( +@@ -8357,7 +10639,8 @@ DrawTextA( LPCSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6341,7 +6300,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8369,7 +10679,7 @@ DrawTextW( +@@ -8369,7 +10652,7 @@ DrawTextW( LPCWSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6350,7 +6309,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DrawText DrawTextW #else -@@ -8404,6 +10714,7 @@ DrawText( +@@ -8404,6 +10687,7 @@ DrawText( #if(WINVER >= 0x0400) @@ -6358,7 +6317,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8416,8 +10727,9 @@ DrawTextExA( +@@ -8416,8 +10700,9 @@ DrawTextExA( LPSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6369,7 +6328,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return) int -@@ -8430,7 +10742,7 @@ DrawTextExW( +@@ -8430,7 +10715,7 @@ DrawTextExW( LPWSTR lpchText, _In_ int cchText, _Inout_ LPRECT lprc, @@ -6378,7 +6337,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ LPDRAWTEXTPARAMS lpdtp); #ifdef UNICODE #define DrawTextEx DrawTextExW -@@ -8447,6 +10759,7 @@ DrawTextExW( +@@ -8447,6 +10732,7 @@ DrawTextExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6386,7 +6345,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8460,6 +10773,7 @@ GrayStringA( +@@ -8460,6 +10746,7 @@ GrayStringA( _In_ int Y, _In_ int nWidth, _In_ int nHeight); @@ -6394,7 +6353,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8499,12 +10813,33 @@ GrayStringW( +@@ -8499,12 +10786,33 @@ GrayStringW( #if(_WIN32_WINNT >= 0x0500) #define DSS_HIDEPREFIX 0x0200 #define DSS_PREFIXONLY 0x0400 @@ -6428,7 +6387,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8518,7 +10853,8 @@ DrawStateA( +@@ -8518,7 +10826,8 @@ DrawStateA( _In_ int y, _In_ int cx, _In_ int cy, @@ -6438,7 +6397,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8532,7 +10868,7 @@ DrawStateW( +@@ -8532,7 +10841,7 @@ DrawStateW( _In_ int y, _In_ int cx, _In_ int cy, @@ -6447,7 +6406,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DrawState DrawStateW #else -@@ -8547,6 +10883,7 @@ DrawStateW( +@@ -8547,6 +10856,7 @@ DrawStateW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6455,7 +6414,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -8559,6 +10896,7 @@ TabbedTextOutA( +@@ -8559,6 +10869,7 @@ TabbedTextOutA( _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions, _In_ int nTabOrigin); @@ -6463,7 +6422,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -8577,6 +10915,7 @@ TabbedTextOutW( +@@ -8577,6 +10888,7 @@ TabbedTextOutW( #define TabbedTextOut TabbedTextOutA #endif // !UNICODE @@ -6471,7 +6430,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -8586,6 +10925,7 @@ GetTabbedTextExtentA( +@@ -8586,6 +10898,7 @@ GetTabbedTextExtentA( _In_ int chCount, _In_ int nTabPositions, _In_reads_opt_(nTabPositions) CONST INT *lpnTabStopPositions); @@ -6479,7 +6438,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -8601,19 +10941,23 @@ GetTabbedTextExtentW( +@@ -8601,19 +10914,23 @@ GetTabbedTextExtentW( #define GetTabbedTextExtent GetTabbedTextExtentA #endif // !UNICODE @@ -6504,7 +6463,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -8621,12 +10965,14 @@ GetForegroundWindow( +@@ -8621,12 +10938,14 @@ GetForegroundWindow( VOID); #if(WINVER >= 0x0400) @@ -6519,7 +6478,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -8636,6 +10982,7 @@ SwitchToThisWindow( +@@ -8636,6 +10955,7 @@ SwitchToThisWindow( #endif /* WINVER >= 0x0400 */ @@ -6527,7 +6486,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8643,6 +10990,8 @@ SetForegroundWindow( +@@ -8643,6 +10963,8 @@ SetForegroundWindow( _In_ HWND hWnd); #if(_WIN32_WINNT >= 0x0500) @@ -6536,7 +6495,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8651,36 +11000,47 @@ AllowSetForegroundWindow( +@@ -8651,36 +10973,47 @@ AllowSetForegroundWindow( #define ASFW_ANY ((DWORD)-1) @@ -6586,7 +6545,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8702,15 +11062,32 @@ GetDCEx( +@@ -8702,15 +11035,32 @@ GetDCEx( #define DCX_VALIDATE 0x00200000L @@ -6619,7 +6578,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8718,6 +11095,7 @@ ReleaseDC( +@@ -8718,6 +11068,7 @@ ReleaseDC( _In_opt_ HWND hWnd, _In_ HDC hDC); @@ -6627,7 +6586,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HDC WINAPI -@@ -8725,6 +11103,7 @@ BeginPaint( +@@ -8725,6 +11076,7 @@ BeginPaint( _In_ HWND hWnd, _Out_ LPPAINTSTRUCT lpPaint); @@ -6635,7 +6594,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8732,6 +11111,7 @@ EndPaint( +@@ -8732,6 +11084,7 @@ EndPaint( _In_ HWND hWnd, _In_ CONST PAINTSTRUCT *lpPaint); @@ -6643,7 +6602,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8740,7 +11120,8 @@ GetUpdateRect( +@@ -8740,7 +11093,8 @@ GetUpdateRect( _Out_opt_ LPRECT lpRect, _In_ BOOL bErase); @@ -6653,7 +6612,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetUpdateRgn( -@@ -8748,6 +11129,7 @@ GetUpdateRgn( +@@ -8748,6 +11102,7 @@ GetUpdateRgn( _In_ HRGN hRgn, _In_ BOOL bErase); @@ -6661,7 +6620,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8763,7 +11145,8 @@ SetWindowRgn( +@@ -8763,7 +11118,8 @@ SetWindowRgn( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -6671,7 +6630,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetWindowRgn( -@@ -8772,7 +11155,8 @@ GetWindowRgn( +@@ -8772,7 +11128,8 @@ GetWindowRgn( #if(_WIN32_WINNT >= 0x0501) @@ -6681,7 +6640,7 @@ index f99e9294..53ba8a91 100644 int WINAPI GetWindowRgnBox( -@@ -8781,6 +11165,7 @@ GetWindowRgnBox( +@@ -8781,6 +11138,7 @@ GetWindowRgnBox( #endif /* _WIN32_WINNT >= 0x0501 */ @@ -6689,7 +6648,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8788,6 +11173,7 @@ ExcludeUpdateRgn( +@@ -8788,6 +11146,7 @@ ExcludeUpdateRgn( _In_ HDC hDC, _In_ HWND hWnd); @@ -6697,7 +6656,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8796,6 +11182,7 @@ InvalidateRect( +@@ -8796,6 +11155,7 @@ InvalidateRect( _In_opt_ CONST RECT *lpRect, _In_ BOOL bErase); @@ -6705,7 +6664,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8803,6 +11190,7 @@ ValidateRect( +@@ -8803,6 +11163,7 @@ ValidateRect( _In_opt_ HWND hWnd, _In_opt_ CONST RECT *lpRect); @@ -6713,7 +6672,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8811,6 +11199,7 @@ InvalidateRgn( +@@ -8811,6 +11172,7 @@ InvalidateRgn( _In_opt_ HRGN hRgn, _In_ BOOL bErase); @@ -6721,7 +6680,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8819,6 +11208,7 @@ ValidateRgn( +@@ -8819,6 +11181,7 @@ ValidateRgn( _In_opt_ HRGN hRgn); @@ -6729,7 +6688,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8826,7 +11216,7 @@ RedrawWindow( +@@ -8826,7 +11189,7 @@ RedrawWindow( _In_opt_ HWND hWnd, _In_opt_ CONST RECT *lprcUpdate, _In_opt_ HRGN hrgnUpdate, @@ -6738,7 +6697,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8851,6 +11241,22 @@ RedrawWindow( +@@ -8851,6 +11214,22 @@ RedrawWindow( #define RDW_FRAME 0x0400 #define RDW_NOFRAME 0x0800 @@ -6761,7 +6720,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -8859,12 +11265,15 @@ RedrawWindow( +@@ -8859,12 +11238,15 @@ RedrawWindow( * LockWindowUpdate API */ @@ -6777,7 +6736,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8875,6 +11284,8 @@ ScrollWindow( +@@ -8875,6 +11257,8 @@ ScrollWindow( _In_opt_ CONST RECT *lpRect, _In_opt_ CONST RECT *lpClipRect); @@ -6786,7 +6745,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8887,6 +11298,8 @@ ScrollDC( +@@ -8887,6 +11271,8 @@ ScrollDC( _In_opt_ HRGN hrgnUpdate, _Out_opt_ LPRECT lprcUpdate); @@ -6795,7 +6754,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -8898,7 +11311,7 @@ ScrollWindowEx( +@@ -8898,7 +11284,7 @@ ScrollWindowEx( _In_opt_ CONST RECT *prcClip, _In_opt_ HRGN hrgnUpdate, _Out_opt_ LPRECT prcUpdate, @@ -6804,7 +6763,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -8906,8 +11319,20 @@ ScrollWindowEx( +@@ -8906,8 +11292,20 @@ ScrollWindowEx( #define SW_SCROLLCHILDREN 0x0001 /* Scroll children within *lprcScroll. */ #define SW_INVALIDATE 0x0002 /* Invalidate after scrolling */ #define SW_ERASE 0x0004 /* If SW_INVALIDATE, don't send WM_ERASEBACKGROUND */ @@ -6825,7 +6784,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #pragma region Desktop Family -@@ -8915,56 +11340,68 @@ ScrollWindowEx( +@@ -8915,56 +11313,68 @@ ScrollWindowEx( #ifndef NOSCROLL @@ -6900,7 +6859,7 @@ index f99e9294..53ba8a91 100644 /* -@@ -8982,10 +11419,24 @@ EnableScrollBar( +@@ -8982,10 +11392,24 @@ EnableScrollBar( #define ESB_DISABLE_LTUP ESB_DISABLE_LEFT #define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT @@ -6925,7 +6884,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -8993,6 +11444,8 @@ SetPropA( +@@ -8993,6 +11417,8 @@ SetPropA( _In_ HWND hWnd, _In_ LPCSTR lpString, _In_opt_ HANDLE hData); @@ -6934,7 +6893,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9006,12 +11459,14 @@ SetPropW( +@@ -9006,12 +11432,14 @@ SetPropW( #define SetProp SetPropA #endif // !UNICODE @@ -6949,7 +6908,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -9024,12 +11479,16 @@ GetPropW( +@@ -9024,12 +11452,16 @@ GetPropW( #define GetProp GetPropA #endif // !UNICODE @@ -6966,7 +6925,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HANDLE WINAPI -@@ -9042,6 +11501,7 @@ RemovePropW( +@@ -9042,6 +11474,7 @@ RemovePropW( #define RemoveProp RemovePropA #endif // !UNICODE @@ -6974,7 +6933,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9049,6 +11509,7 @@ EnumPropsExA( +@@ -9049,6 +11482,7 @@ EnumPropsExA( _In_ HWND hWnd, _In_ PROPENUMPROCEXA lpEnumFunc, _In_ LPARAM lParam); @@ -6982,7 +6941,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9062,12 +11523,14 @@ EnumPropsExW( +@@ -9062,12 +11496,14 @@ EnumPropsExW( #define EnumPropsEx EnumPropsExA #endif // !UNICODE @@ -6997,7 +6956,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9080,12 +11543,16 @@ EnumPropsW( +@@ -9080,12 +11516,16 @@ EnumPropsW( #define EnumProps EnumPropsA #endif // !UNICODE @@ -7014,7 +6973,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9098,6 +11565,8 @@ SetWindowTextW( +@@ -9098,6 +11538,8 @@ SetWindowTextW( #define SetWindowText SetWindowTextA #endif // !UNICODE @@ -7023,7 +6982,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, nMaxCount) WINUSERAPI int -@@ -9106,6 +11575,8 @@ GetWindowTextA( +@@ -9106,6 +11548,8 @@ GetWindowTextA( _In_ HWND hWnd, _Out_writes_(nMaxCount) LPSTR lpString, _In_ int nMaxCount); @@ -7032,7 +6991,7 @@ index f99e9294..53ba8a91 100644 _Ret_range_(0, nMaxCount) WINUSERAPI int -@@ -9120,11 +11591,15 @@ GetWindowTextW( +@@ -9120,11 +11564,15 @@ GetWindowTextW( #define GetWindowText GetWindowTextA #endif // !UNICODE @@ -7048,7 +7007,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9142,6 +11617,8 @@ GetWindowTextLengthW( +@@ -9142,6 +11590,8 @@ GetWindowTextLengthW( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7057,7 +7016,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9155,6 +11632,8 @@ GetClientRect( +@@ -9155,6 +11605,8 @@ GetClientRect( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7066,7 +7025,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9168,22 +11647,26 @@ GetWindowRect( +@@ -9168,22 +11620,26 @@ GetWindowRect( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7096,7 +7055,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -9192,14 +11675,16 @@ AdjustWindowRectEx( +@@ -9192,14 +11648,16 @@ AdjustWindowRectEx( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0605) @@ -7115,7 +7074,7 @@ index f99e9294..53ba8a91 100644 _In_ UINT dpi); #endif /* WINVER >= 0x0605 */ -@@ -9211,19 +11696,27 @@ AdjustWindowRectExForDpi( +@@ -9211,19 +11669,27 @@ AdjustWindowRectExForDpi( #define HELPINFO_WINDOW 0x0001 #define HELPINFO_MENUITEM 0x0002 @@ -7144,7 +7103,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9231,12 +11724,15 @@ SetWindowContextHelpId( +@@ -9231,12 +11697,15 @@ SetWindowContextHelpId( _In_ HWND, _In_ DWORD); @@ -7160,7 +7119,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9244,6 +11740,7 @@ SetMenuContextHelpId( +@@ -9244,6 +11713,7 @@ SetMenuContextHelpId( _In_ HMENU, _In_ DWORD); @@ -7168,7 +7127,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -9269,6 +11766,11 @@ GetMenuContextHelpId( +@@ -9269,6 +11739,11 @@ GetMenuContextHelpId( #define MB_RETRYCANCEL 0x00000005L #if(WINVER >= 0x0500) #define MB_CANCELTRYCONTINUE 0x00000006L @@ -7180,7 +7139,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ -@@ -9281,6 +11783,13 @@ GetMenuContextHelpId( +@@ -9281,6 +11756,13 @@ GetMenuContextHelpId( #define MB_USERICON 0x00000080L #define MB_ICONWARNING MB_ICONEXCLAMATION #define MB_ICONERROR MB_ICONHAND @@ -7194,7 +7153,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_ICONINFORMATION MB_ICONASTERISK -@@ -9291,6 +11800,11 @@ GetMenuContextHelpId( +@@ -9291,6 +11773,11 @@ GetMenuContextHelpId( #define MB_DEFBUTTON3 0x00000200L #if(WINVER >= 0x0400) #define MB_DEFBUTTON4 0x00000300L @@ -7206,7 +7165,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_APPLMODAL 0x00000000L -@@ -9298,6 +11812,11 @@ GetMenuContextHelpId( +@@ -9298,6 +11785,11 @@ GetMenuContextHelpId( #define MB_TASKMODAL 0x00002000L #if(WINVER >= 0x0400) #define MB_HELP 0x00004000L // Help Button @@ -7218,7 +7177,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define MB_NOFOCUS 0x00008000L -@@ -9309,15 +11828,37 @@ GetMenuContextHelpId( +@@ -9309,15 +11801,37 @@ GetMenuContextHelpId( #define MB_RIGHT 0x00080000L #define MB_RTLREADING 0x00100000L @@ -7256,7 +7215,7 @@ index f99e9294..53ba8a91 100644 #endif #define MB_TYPEMASK 0x0000000FL -@@ -9326,25 +11867,59 @@ GetMenuContextHelpId( +@@ -9326,25 +11840,59 @@ GetMenuContextHelpId( #define MB_MODEMASK 0x00003000L #define MB_MISCMASK 0x0000C000L @@ -7320,7 +7279,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define MessageBox MessageBoxW #else -@@ -9375,23 +11950,27 @@ MessageBox( +@@ -9375,23 +11923,27 @@ MessageBox( } #endif /* _M_CEE */ @@ -7352,7 +7311,7 @@ index f99e9294..53ba8a91 100644 _In_ WORD wLanguageId); #ifdef UNICODE #define MessageBoxEx MessageBoxExW -@@ -9410,7 +11989,7 @@ typedef struct tagMSGBOXPARAMSA +@@ -9410,7 +11962,7 @@ typedef struct tagMSGBOXPARAMSA HINSTANCE hInstance; LPCSTR lpszText; LPCSTR lpszCaption; @@ -7361,7 +7320,7 @@ index f99e9294..53ba8a91 100644 LPCSTR lpszIcon; DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; -@@ -9423,7 +12002,7 @@ typedef struct tagMSGBOXPARAMSW +@@ -9423,7 +11975,7 @@ typedef struct tagMSGBOXPARAMSW HINSTANCE hInstance; LPCWSTR lpszText; LPCWSTR lpszCaption; @@ -7370,7 +7329,7 @@ index f99e9294..53ba8a91 100644 LPCWSTR lpszIcon; DWORD_PTR dwContextHelpId; MSGBOXCALLBACK lpfnMsgBoxCallback; -@@ -9439,12 +12018,14 @@ typedef PMSGBOXPARAMSA PMSGBOXPARAMS; +@@ -9439,12 +11991,14 @@ typedef PMSGBOXPARAMSA PMSGBOXPARAMS; typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS; #endif // UNICODE @@ -7387,7 +7346,7 @@ index f99e9294..53ba8a91 100644 int WINAPI MessageBoxIndirectW( -@@ -9464,11 +12045,13 @@ MessageBoxIndirectW( +@@ -9464,11 +12018,13 @@ MessageBoxIndirectW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7402,7 +7361,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -9485,6 +12068,7 @@ MessageBeep( +@@ -9485,6 +12041,7 @@ MessageBeep( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7410,7 +7369,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9497,6 +12081,8 @@ ShowCursor( +@@ -9497,6 +12054,8 @@ ShowCursor( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7419,7 +7378,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9505,6 +12091,8 @@ SetCursorPos( +@@ -9505,6 +12064,8 @@ SetCursorPos( _In_ int Y); #if(WINVER >= 0x0600) @@ -7428,7 +7387,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9519,12 +12107,15 @@ SetPhysicalCursorPos( +@@ -9519,12 +12080,15 @@ SetPhysicalCursorPos( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -7444,7 +7403,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9538,6 +12129,8 @@ GetCursorPos( +@@ -9538,6 +12102,8 @@ GetCursorPos( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #if(WINVER >= 0x0600) @@ -7453,7 +7412,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9546,18 +12139,23 @@ GetPhysicalCursorPos( +@@ -9546,18 +12112,23 @@ GetPhysicalCursorPos( #endif /* WINVER >= 0x0600 */ @@ -7477,7 +7436,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9567,36 +12165,48 @@ CreateCaret( +@@ -9567,36 +12138,48 @@ CreateCaret( _In_ int nWidth, _In_ int nHeight); @@ -7526,7 +7485,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9604,12 +12214,15 @@ SetCaretPos( +@@ -9604,12 +12187,15 @@ SetCaretPos( _In_ int X, _In_ int Y); @@ -7542,7 +7501,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9617,6 +12230,7 @@ ClientToScreen( +@@ -9617,6 +12203,7 @@ ClientToScreen( _In_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7550,7 +7509,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9625,6 +12239,7 @@ ScreenToClient( +@@ -9625,6 +12212,7 @@ ScreenToClient( _Inout_ LPPOINT lpPoint); #if(WINVER >= 0x0600) @@ -7558,7 +7517,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9632,6 +12247,7 @@ LogicalToPhysicalPoint( +@@ -9632,6 +12220,7 @@ LogicalToPhysicalPoint( _In_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7566,7 +7525,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9642,6 +12258,7 @@ PhysicalToLogicalPoint( +@@ -9642,6 +12231,7 @@ PhysicalToLogicalPoint( #endif /* WINVER >= 0x0600 */ #if(WINVER >= 0x0603) @@ -7574,7 +7533,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9649,6 +12266,7 @@ LogicalToPhysicalPointForPerMonitorDPI( +@@ -9649,6 +12239,7 @@ LogicalToPhysicalPointForPerMonitorDPI( _In_opt_ HWND hWnd, _Inout_ LPPOINT lpPoint); @@ -7582,7 +7541,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9658,6 +12276,7 @@ PhysicalToLogicalPointForPerMonitorDPI( +@@ -9658,6 +12249,7 @@ PhysicalToLogicalPointForPerMonitorDPI( #endif /* WINVER >= 0x0603 */ @@ -7590,7 +7549,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9667,6 +12286,7 @@ MapWindowPoints( +@@ -9667,6 +12259,7 @@ MapWindowPoints( _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints); @@ -7598,7 +7557,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9674,6 +12294,7 @@ WindowFromPoint( +@@ -9674,6 +12267,7 @@ WindowFromPoint( _In_ POINT Point); #if(WINVER >= 0x0600) @@ -7606,7 +7565,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9681,6 +12302,7 @@ WindowFromPhysicalPoint( +@@ -9681,6 +12275,7 @@ WindowFromPhysicalPoint( _In_ POINT Point); #endif /* WINVER >= 0x0600 */ @@ -7614,7 +7573,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -9693,6 +12315,8 @@ ChildWindowFromPoint( +@@ -9693,6 +12288,8 @@ ChildWindowFromPoint( #pragma region Desktop or PC Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_PC_APP) @@ -7623,7 +7582,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9707,16 +12331,25 @@ ClipCursor( +@@ -9707,16 +12304,25 @@ ClipCursor( #define CWP_SKIPDISABLED 0x0002 #define CWP_SKIPTRANSPARENT 0x0004 @@ -7650,7 +7609,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -9759,20 +12392,70 @@ ChildWindowFromPointEx( +@@ -9759,20 +12365,70 @@ ChildWindowFromPointEx( #define COLOR_INACTIVECAPTIONTEXT 19 #define COLOR_BTNHIGHLIGHT 20 @@ -7721,7 +7680,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ #endif /* WINVER >= 0x0500 */ -@@ -9783,28 +12466,43 @@ ChildWindowFromPointEx( +@@ -9783,28 +12439,43 @@ ChildWindowFromPointEx( #define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT #define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT #define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT @@ -7767,7 +7726,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9821,6 +12519,7 @@ SetSysColors( +@@ -9821,6 +12492,7 @@ SetSysColors( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -7775,7 +7734,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9828,6 +12527,7 @@ DrawFocusRect( +@@ -9828,6 +12500,7 @@ DrawFocusRect( _In_ HDC hDC, _In_ CONST RECT * lprc); @@ -7783,7 +7742,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9836,6 +12536,7 @@ FillRect( +@@ -9836,6 +12509,7 @@ FillRect( _In_ CONST RECT *lprc, _In_ HBRUSH hbr); @@ -7791,7 +7750,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -9844,6 +12545,7 @@ FrameRect( +@@ -9844,6 +12518,7 @@ FrameRect( _In_ CONST RECT *lprc, _In_ HBRUSH hbr); @@ -7799,7 +7758,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9851,6 +12553,7 @@ InvertRect( +@@ -9851,6 +12526,7 @@ InvertRect( _In_ HDC hDC, _In_ CONST RECT *lprc); @@ -7807,7 +7766,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9861,12 +12564,14 @@ SetRect( +@@ -9861,12 +12537,14 @@ SetRect( _In_ int xRight, _In_ int yBottom); @@ -7822,7 +7781,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9874,6 +12579,7 @@ CopyRect( +@@ -9874,6 +12552,7 @@ CopyRect( _Out_ LPRECT lprcDst, _In_ CONST RECT *lprcSrc); @@ -7830,7 +7789,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9882,6 +12588,7 @@ InflateRect( +@@ -9882,6 +12561,7 @@ InflateRect( _In_ int dx, _In_ int dy); @@ -7838,7 +7797,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9890,6 +12597,7 @@ IntersectRect( +@@ -9890,6 +12570,7 @@ IntersectRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7846,7 +7805,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9898,6 +12606,7 @@ UnionRect( +@@ -9898,6 +12579,7 @@ UnionRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7854,7 +7813,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9906,6 +12615,7 @@ SubtractRect( +@@ -9906,6 +12588,7 @@ SubtractRect( _In_ CONST RECT *lprcSrc1, _In_ CONST RECT *lprcSrc2); @@ -7862,7 +7821,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9914,12 +12624,14 @@ OffsetRect( +@@ -9914,12 +12597,14 @@ OffsetRect( _In_ int dx, _In_ int dy); @@ -7877,7 +7836,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9927,6 +12639,7 @@ EqualRect( +@@ -9927,6 +12612,7 @@ EqualRect( _In_ CONST RECT *lprc1, _In_ CONST RECT *lprc2); @@ -7885,7 +7844,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -9961,37 +12674,45 @@ SetWindowWord( +@@ -9961,37 +12647,45 @@ SetWindowWord( #ifndef NOWINOFFSETS @@ -7935,7 +7894,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG dwNewLong); #ifdef UNICODE #define SetWindowLong SetWindowLongW -@@ -10001,37 +12722,45 @@ SetWindowLongW( +@@ -10001,37 +12695,45 @@ SetWindowLongW( #ifdef _WIN64 @@ -7985,7 +7944,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG_PTR dwNewLong); #ifdef UNICODE #define SetWindowLongPtr SetWindowLongPtrW -@@ -10069,6 +12798,8 @@ SetWindowLongPtrW( +@@ -10069,6 +12771,8 @@ SetWindowLongPtrW( #ifndef NOWINOFFSETS @@ -7994,7 +7953,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI WORD WINAPI -@@ -10076,6 +12807,8 @@ GetClassWord( +@@ -10076,6 +12780,8 @@ GetClassWord( _In_ HWND hWnd, _In_ int nIndex); @@ -8003,7 +7962,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI WORD WINAPI -@@ -10084,37 +12817,45 @@ SetClassWord( +@@ -10084,37 +12790,45 @@ SetClassWord( _In_ int nIndex, _In_ WORD wNewWord); @@ -8053,7 +8012,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG dwNewLong); #ifdef UNICODE #define SetClassLong SetClassLongW -@@ -10124,37 +12865,45 @@ SetClassLongW( +@@ -10124,37 +12838,45 @@ SetClassLongW( #ifdef _WIN64 @@ -8103,7 +8062,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG_PTR dwNewLong); #ifdef UNICODE #define SetClassLongPtr SetClassLongPtrW -@@ -10185,12 +12934,16 @@ SetClassLongPtrW( +@@ -10185,12 +12907,16 @@ SetClassLongPtrW( #endif /* !NOWINOFFSETS */ #if(WINVER >= 0x0500) @@ -8120,7 +8079,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10198,6 +12951,7 @@ SetProcessDefaultLayout( +@@ -10198,6 +12924,7 @@ SetProcessDefaultLayout( _In_ DWORD dwDefaultLayout); #endif /* WINVER >= 0x0500 */ @@ -8128,7 +8087,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10205,12 +12959,16 @@ GetDesktopWindow( +@@ -10205,12 +12932,16 @@ GetDesktopWindow( VOID); @@ -8145,7 +8104,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10218,6 +12976,7 @@ SetParent( +@@ -10218,6 +12949,7 @@ SetParent( _In_ HWND hWndChild, _In_opt_ HWND hWndNewParent); @@ -8153,7 +8112,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10227,12 +12986,16 @@ EnumChildWindows( +@@ -10227,12 +12959,16 @@ EnumChildWindows( _In_ LPARAM lParam); @@ -8170,7 +8129,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10246,6 +13009,8 @@ FindWindowW( +@@ -10246,6 +12982,8 @@ FindWindowW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -8179,7 +8138,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10254,6 +13019,8 @@ FindWindowExA( +@@ -10254,6 +12992,8 @@ FindWindowExA( _In_opt_ HWND hWndChildAfter, _In_opt_ LPCSTR lpszClass, _In_opt_ LPCSTR lpszWindow); @@ -8188,7 +8147,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10268,6 +13035,7 @@ FindWindowExW( +@@ -10268,6 +13008,7 @@ FindWindowExW( #define FindWindowEx FindWindowExA #endif // !UNICODE @@ -8196,7 +8155,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10277,18 +13045,22 @@ GetShellWindow( +@@ -10277,18 +13018,22 @@ GetShellWindow( #endif /* WINVER >= 0x0400 */ @@ -8219,7 +8178,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10296,6 +13068,7 @@ EnumWindows( +@@ -10296,6 +13041,7 @@ EnumWindows( _In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam); @@ -8227,7 +8186,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10313,6 +13086,8 @@ EnumThreadWindows( +@@ -10313,6 +13059,8 @@ EnumThreadWindows( #pragma region Desktop Family or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8236,7 +8195,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10321,6 +13096,8 @@ GetClassNameA( +@@ -10321,6 +13069,8 @@ GetClassNameA( _Out_writes_to_(nMaxCount, return) LPSTR lpClassName, _In_ int nMaxCount ); @@ -8245,7 +8204,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10363,6 +13140,8 @@ GetClassName( +@@ -10363,6 +13113,8 @@ GetClassName( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8254,7 +8213,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10373,6 +13152,7 @@ GetTopWindow( +@@ -10373,6 +13125,7 @@ GetTopWindow( #define GetSysModalWindow() (NULL) #define SetSysModalWindow(hWnd) (NULL) @@ -8262,7 +8221,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -10382,6 +13162,7 @@ GetWindowThreadProcessId( +@@ -10382,6 +13135,7 @@ GetWindowThreadProcessId( #if(_WIN32_WINNT >= 0x0501) @@ -8270,7 +8229,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10394,6 +13175,7 @@ IsGUIThread( +@@ -10394,6 +13148,7 @@ IsGUIThread( #define GetWindowTask(hWnd) \ ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd, NULL)) @@ -8278,7 +8237,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -10409,19 +13191,34 @@ GetLastActivePopup( +@@ -10409,19 +13164,34 @@ GetLastActivePopup( #define GW_HWNDPREV 3 #define GW_OWNER 4 #define GW_CHILD 5 @@ -8315,7 +8274,7 @@ index f99e9294..53ba8a91 100644 #ifndef NOWH -@@ -10475,19 +13272,29 @@ UnhookWindowsHook( +@@ -10475,19 +13245,29 @@ UnhookWindowsHook( _In_ int nCode, _In_ HOOKPROC pfnFilterProc); @@ -8347,7 +8306,7 @@ index f99e9294..53ba8a91 100644 _In_ HOOKPROC lpfn, _In_opt_ HINSTANCE hmod, _In_ DWORD dwThreadId); -@@ -10498,12 +13305,18 @@ SetWindowsHookExW( +@@ -10498,12 +13278,16 @@ SetWindowsHookExW( #endif // !UNICODE @@ -8359,14 +8318,12 @@ index f99e9294..53ba8a91 100644 UnhookWindowsHookEx( _In_ HHOOK hhk); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SupportedOS_Windows2000_ WINUSERAPI LRESULT WINAPI -@@ -10567,16 +13380,60 @@ CallNextHookEx( +@@ -10567,16 +13351,60 @@ CallNextHookEx( #if(WINVER >= 0x0400) #define MF_DEFAULT 0x00001000L @@ -8427,7 +8384,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -10591,6 +13448,19 @@ CallNextHookEx( +@@ -10591,6 +13419,19 @@ CallNextHookEx( #define MFT_RIGHTORDER 0x00002000L #define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY @@ -8447,7 +8404,7 @@ index f99e9294..53ba8a91 100644 /* Menu flags for Add/Check/EnableMenuItem() */ #define MFS_GRAYED 0x00000003L #define MFS_DISABLED MFS_GRAYED -@@ -10600,6 +13470,18 @@ CallNextHookEx( +@@ -10600,6 +13441,18 @@ CallNextHookEx( #define MFS_UNCHECKED MF_UNCHECKED #define MFS_UNHILITE MF_UNHILITE #define MFS_DEFAULT MF_DEFAULT @@ -8466,7 +8423,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -10608,6 +13490,8 @@ CallNextHookEx( +@@ -10608,6 +13461,8 @@ CallNextHookEx( #if(WINVER >= 0x0400) @@ -8475,7 +8432,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -10634,6 +13518,11 @@ typedef struct { // version 0 +@@ -10634,6 +13489,11 @@ typedef struct { // version 0 } MENUITEMTEMPLATE, *PMENUITEMTEMPLATE; #define MF_END 0x00000080L @@ -8487,7 +8444,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -10688,12 +13577,14 @@ typedef struct { // version 0 +@@ -10688,12 +13548,14 @@ typedef struct { // version 0 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8502,7 +8459,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HBITMAP WINAPI -@@ -10712,12 +13603,16 @@ LoadBitmapW( +@@ -10712,12 +13574,16 @@ LoadBitmapW( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8519,7 +8476,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10736,11 +13631,15 @@ LoadCursorW( +@@ -10736,11 +13602,15 @@ LoadCursorW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8535,7 +8492,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10758,6 +13657,11 @@ LoadCursorFromFileW( +@@ -10758,6 +13628,11 @@ LoadCursorFromFileW( #pragma region Desktop or Games Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) @@ -8547,7 +8504,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HCURSOR WINAPI -@@ -10770,12 +13674,17 @@ CreateCursor( +@@ -10770,12 +13645,15 @@ CreateCursor( _In_ CONST VOID *pvANDPlane, _In_ CONST VOID *pvXORPlane); @@ -8559,13 +8516,11 @@ index f99e9294..53ba8a91 100644 DestroyCursor( _In_ HCURSOR hCursor); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_GAMES) */ #pragma endregion -@@ -10785,7 +13694,7 @@ DestroyCursor( +@@ -10785,7 +13663,7 @@ DestroyCursor( #ifndef _MAC #define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur))) #else @@ -8574,7 +8529,7 @@ index f99e9294..53ba8a91 100644 HCURSOR WINAPI CopyCursor( -@@ -10827,12 +13736,14 @@ CopyCursor( +@@ -10827,12 +13705,14 @@ CopyCursor( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8590,7 +8545,7 @@ index f99e9294..53ba8a91 100644 typedef struct _ICONINFO { BOOL fIcon; -@@ -10843,12 +13754,16 @@ typedef struct _ICONINFO { +@@ -10843,12 +13723,16 @@ typedef struct _ICONINFO { } ICONINFO; typedef ICONINFO *PICONINFO; @@ -8607,7 +8562,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10862,6 +13777,7 @@ LoadIconW( +@@ -10862,6 +13746,7 @@ LoadIconW( #endif // !UNICODE @@ -8615,7 +8570,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -10870,10 +13786,14 @@ PrivateExtractIconsA( +@@ -10870,10 +13755,14 @@ PrivateExtractIconsA( _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, @@ -8630,7 +8585,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -10882,6 +13802,9 @@ PrivateExtractIconsW( +@@ -10882,6 +13771,9 @@ PrivateExtractIconsW( _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, @@ -8640,7 +8595,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_opt_(nIcons) HICON *phicon, _Out_writes_opt_(nIcons) UINT *piconid, _In_ UINT nIcons, -@@ -10892,6 +13815,11 @@ PrivateExtractIconsW( +@@ -10892,6 +13784,11 @@ PrivateExtractIconsW( #define PrivateExtractIcons PrivateExtractIconsA #endif // !UNICODE @@ -8652,7 +8607,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10904,12 +13832,19 @@ CreateIcon( +@@ -10904,12 +13801,17 @@ CreateIcon( _In_ CONST BYTE *lpbANDbits, _In_ CONST BYTE *lpbXORbits); @@ -8664,15 +8619,13 @@ index f99e9294..53ba8a91 100644 DestroyIcon( _In_ HICON hIcon); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows2000_ WINUSERAPI int WINAPI -@@ -10918,6 +13853,8 @@ LookupIconIdFromDirectory( +@@ -10918,6 +13820,8 @@ LookupIconIdFromDirectory( _In_ BOOL fIcon); #if(WINVER >= 0x0400) @@ -8681,7 +8634,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -10926,9 +13863,11 @@ LookupIconIdFromDirectoryEx( +@@ -10926,9 +13830,11 @@ LookupIconIdFromDirectoryEx( _In_ BOOL fIcon, _In_ int cxDesired, _In_ int cyDesired, @@ -8694,7 +8647,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10939,6 +13878,8 @@ CreateIconFromResource( +@@ -10939,6 +13845,8 @@ CreateIconFromResource( _In_ DWORD dwVer); #if(WINVER >= 0x0400) @@ -8703,7 +8656,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HICON WINAPI -@@ -10949,7 +13890,7 @@ CreateIconFromResourceEx( +@@ -10949,7 +13857,7 @@ CreateIconFromResourceEx( _In_ DWORD dwVer, _In_ int cxDesired, _In_ int cyDesired, @@ -8712,7 +8665,7 @@ index f99e9294..53ba8a91 100644 /* Icon/Cursor header */ typedef struct tagCURSORSHAPE -@@ -10985,6 +13926,13 @@ SetThreadCursorCreationScaling( +@@ -10985,6 +13893,13 @@ SetThreadCursorCreationScaling( #define IMAGE_BITMAP 0 #define IMAGE_ICON 1 #define IMAGE_CURSOR 2 @@ -8726,7 +8679,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define IMAGE_ENHMETAFILE 3 -@@ -11002,54 +13950,84 @@ SetThreadCursorCreationScaling( +@@ -11002,54 +13917,84 @@ SetThreadCursorCreationScaling( #define LR_COPYFROMRESOURCE 0x00004000 #define LR_SHARED 0x00008000 @@ -8817,7 +8770,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI DrawIconEx( _In_ HDC hdc, _In_ int xLeft, -@@ -11059,7 +14037,7 @@ WINUSERAPI BOOL WINAPI DrawIconEx( +@@ -11059,7 +14004,7 @@ WINUSERAPI BOOL WINAPI DrawIconEx( _In_ int cyWidth, _In_ UINT istepIfAniCur, _In_opt_ HBRUSH hbrFlickerFreeDraw, @@ -8826,7 +8779,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -11069,18 +14047,33 @@ WINUSERAPI BOOL WINAPI DrawIconEx( +@@ -11069,18 +14014,31 @@ WINUSERAPI BOOL WINAPI DrawIconEx( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8852,15 +8805,13 @@ index f99e9294..53ba8a91 100644 CopyIcon( _In_ HICON hIcon); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows2000_ WINUSERAPI BOOL WINAPI -@@ -11119,12 +14112,14 @@ typedef ICONINFOEXA ICONINFOEX; +@@ -11119,12 +14077,14 @@ typedef ICONINFOEXA ICONINFOEX; typedef PICONINFOEXA PICONINFOEX; #endif // UNICODE @@ -8875,7 +8826,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11203,11 +14198,33 @@ GetIconInfoExW( +@@ -11203,11 +14163,33 @@ GetIconInfoExW( #define OCR_SIZEALL 32646 #define OCR_ICOCUR 32647 /* OBSOLETE: use OIC_WINLOGO */ #define OCR_NO 32648 @@ -8909,7 +8860,7 @@ index f99e9294..53ba8a91 100644 +#endif -@@ -11280,7 +14297,7 @@ GetIconInfoExW( +@@ -11280,7 +14262,7 @@ GetIconInfoExW( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -8918,7 +8869,7 @@ index f99e9294..53ba8a91 100644 int WINAPI LoadStringA( -@@ -11288,7 +14305,7 @@ LoadStringA( +@@ -11288,7 +14270,7 @@ LoadStringA( _In_ UINT uID, _Out_writes_to_(cchBufferMax, return + 1) LPSTR lpBuffer, _In_ int cchBufferMax); @@ -8927,7 +8878,7 @@ index f99e9294..53ba8a91 100644 int WINAPI LoadStringW( -@@ -11318,20 +14335,39 @@ LoadStringW( +@@ -11318,20 +14300,39 @@ LoadStringW( #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 @@ -8967,7 +8918,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0501 */ -@@ -11481,6 +14517,10 @@ typedef enum { +@@ -11481,6 +14482,10 @@ typedef enum { #define WB_RIGHT 1 #define WB_ISDELIMITER 2 @@ -8978,7 +8929,7 @@ index f99e9294..53ba8a91 100644 /* * Button Control Styles -@@ -11554,6 +14594,13 @@ typedef enum { +@@ -11554,6 +14559,13 @@ typedef enum { #define BST_UNCHECKED 0x0000 #define BST_CHECKED 0x0001 #define BST_INDETERMINATE 0x0002 @@ -8992,7 +8943,7 @@ index f99e9294..53ba8a91 100644 #define BST_PUSHED 0x0004 #define BST_FOCUS 0x0008 #endif /* WINVER >= 0x0400 */ -@@ -11582,11 +14629,45 @@ typedef enum { +@@ -11582,11 +14594,45 @@ typedef enum { #define SS_ETCHEDVERT 0x00000011L #define SS_ETCHEDFRAME 0x00000012L #define SS_TYPEMASK 0x0000001FL @@ -9038,7 +8989,7 @@ index f99e9294..53ba8a91 100644 #if(WINVER >= 0x0400) #define SS_NOTIFY 0x00000100L #define SS_CENTERIMAGE 0x00000200L -@@ -11598,6 +14679,20 @@ typedef enum { +@@ -11598,6 +14644,20 @@ typedef enum { #define SS_PATHELLIPSIS 0x00008000L #define SS_WORDELLIPSIS 0x0000C000L #define SS_ELLIPSISMASK 0x0000C000L @@ -9059,7 +9010,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ -@@ -11652,12 +14747,14 @@ typedef enum { +@@ -11652,12 +14712,14 @@ typedef enum { #ifndef NOMSG @@ -9074,7 +9025,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11672,6 +14769,8 @@ IsDialogMessageW( +@@ -11672,6 +14734,8 @@ IsDialogMessageW( #endif /* !NOMSG */ @@ -9083,7 +9034,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11679,6 +14778,7 @@ MapDialogRect( +@@ -11679,6 +14743,7 @@ MapDialogRect( _In_ HWND hDlg, _Inout_ LPRECT lpRect); @@ -9091,7 +9042,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11687,7 +14787,8 @@ DlgDirListA( +@@ -11687,7 +14752,8 @@ DlgDirListA( _Inout_ LPSTR lpPathSpec, _In_ int nIDListBox, _In_ int nIDStaticPath, @@ -9101,7 +9052,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11696,7 +14797,7 @@ DlgDirListW( +@@ -11696,7 +14762,7 @@ DlgDirListW( _Inout_ LPWSTR lpPathSpec, _In_ int nIDListBox, _In_ int nIDStaticPath, @@ -9110,7 +9061,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define DlgDirList DlgDirListW #else -@@ -11720,9 +14821,24 @@ DlgDirListW( +@@ -11720,9 +14786,24 @@ DlgDirListW( #define DDL_DRIVES 0x4000 #define DDL_EXCLUSIVE 0x8000 @@ -9135,7 +9086,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11731,6 +14847,8 @@ DlgDirSelectExA( +@@ -11731,6 +14812,8 @@ DlgDirSelectExA( _Out_writes_(chCount) LPSTR lpString, _In_ int chCount, _In_ int idListBox); @@ -9144,7 +9095,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11745,6 +14863,8 @@ DlgDirSelectExW( +@@ -11745,6 +14828,8 @@ DlgDirSelectExW( #define DlgDirSelectEx DlgDirSelectExA #endif // !UNICODE @@ -9153,7 +9104,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11753,7 +14873,9 @@ DlgDirListComboBoxA( +@@ -11753,7 +14838,9 @@ DlgDirListComboBoxA( _Inout_ LPSTR lpPathSpec, _In_ int nIDComboBox, _In_ int nIDStaticPath, @@ -9164,7 +9115,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -11762,13 +14884,15 @@ DlgDirListComboBoxW( +@@ -11762,13 +14849,15 @@ DlgDirListComboBoxW( _Inout_ LPWSTR lpPathSpec, _In_ int nIDComboBox, _In_ int nIDStaticPath, @@ -9181,7 +9132,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -11777,6 +14901,8 @@ DlgDirSelectComboBoxExA( +@@ -11777,6 +14866,8 @@ DlgDirSelectComboBoxExA( _Out_writes_(cchOut) LPSTR lpString, _In_ int cchOut, _In_ int idComboBox); @@ -9190,7 +9141,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12136,13 +15262,23 @@ DlgDirSelectComboBoxExW( +@@ -12136,13 +15227,23 @@ DlgDirSelectComboBoxExW( #define SIF_TRACKPOS 0x0010 #define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) @@ -9215,7 +9166,7 @@ index f99e9294..53ba8a91 100644 int nMin; int nMax; UINT nPage; -@@ -12151,21 +15287,24 @@ typedef struct tagSCROLLINFO +@@ -12151,21 +15252,24 @@ typedef struct tagSCROLLINFO } SCROLLINFO, FAR *LPSCROLLINFO; typedef SCROLLINFO CONST FAR *LPCSCROLLINFO; @@ -9242,7 +9193,7 @@ index f99e9294..53ba8a91 100644 _Inout_ LPSCROLLINFO lpsi); -@@ -12188,9 +15327,25 @@ GetScrollInfo( +@@ -12188,9 +15292,25 @@ GetScrollInfo( */ #define MDITILE_VERTICAL 0x0000 /*not in win3.1 */ #define MDITILE_HORIZONTAL 0x0001 /*not in win3.1 */ @@ -9268,7 +9219,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #pragma region Desktop Family -@@ -12204,7 +15359,7 @@ typedef struct tagMDICREATESTRUCTA { +@@ -12204,7 +15324,7 @@ typedef struct tagMDICREATESTRUCTA { int y; int cx; int cy; @@ -9277,7 +9228,7 @@ index f99e9294..53ba8a91 100644 LPARAM lParam; /* app-defined stuff */ } MDICREATESTRUCTA, *LPMDICREATESTRUCTA; typedef struct tagMDICREATESTRUCTW { -@@ -12215,7 +15370,7 @@ typedef struct tagMDICREATESTRUCTW { +@@ -12215,7 +15335,7 @@ typedef struct tagMDICREATESTRUCTW { int y; int cx; int cy; @@ -9286,7 +9237,7 @@ index f99e9294..53ba8a91 100644 LPARAM lParam; /* app-defined stuff */ } MDICREATESTRUCTW, *LPMDICREATESTRUCTW; #ifdef UNICODE -@@ -12231,6 +15386,7 @@ typedef struct tagCLIENTCREATESTRUCT { +@@ -12231,6 +15351,7 @@ typedef struct tagCLIENTCREATESTRUCT { UINT idFirstChild; } CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT; @@ -9294,7 +9245,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -12240,6 +15396,7 @@ DefFrameProcA( +@@ -12240,6 +15361,7 @@ DefFrameProcA( _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -9302,7 +9253,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -12255,6 +15412,7 @@ DefFrameProcW( +@@ -12255,6 +15377,7 @@ DefFrameProcW( #define DefFrameProc DefFrameProcA #endif // !UNICODE @@ -9310,7 +9261,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -12268,6 +15426,7 @@ DefMDIChildProcA( +@@ -12268,6 +15391,7 @@ DefMDIChildProcA( _In_ UINT uMsg, _In_ WPARAM wParam, _In_ LPARAM lParam); @@ -9318,7 +9269,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI #ifndef _MAC LRESULT -@@ -12289,6 +15448,7 @@ DefMDIChildProcW( +@@ -12289,6 +15413,7 @@ DefMDIChildProcW( #ifndef NOMSG @@ -9326,7 +9277,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12298,19 +15458,23 @@ TranslateMDISysAccel( +@@ -12298,19 +15423,23 @@ TranslateMDISysAccel( #endif /* !NOMSG */ @@ -9351,7 +9302,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -12318,13 +15482,15 @@ CreateMDIWindowA( +@@ -12318,13 +15447,15 @@ CreateMDIWindowA( _In_opt_ HWND hWndParent, _In_opt_ HINSTANCE hInstance, _In_ LPARAM lParam); @@ -9368,7 +9319,7 @@ index f99e9294..53ba8a91 100644 _In_ int X, _In_ int Y, _In_ int nWidth, -@@ -12339,21 +15505,25 @@ CreateMDIWindowW( +@@ -12339,21 +15470,25 @@ CreateMDIWindowW( #endif // !UNICODE #if(WINVER >= 0x0400) @@ -9396,7 +9347,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ CONST RECT * lpRect, _In_ UINT cKids, _In_reads_opt_(cKids) const HWND FAR * lpKids); -@@ -12471,6 +15641,8 @@ typedef LPHELPWININFOA LPHELPWININFO; +@@ -12471,6 +15606,8 @@ typedef LPHELPWININFOA LPHELPWININFO; @@ -9405,7 +9356,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12479,6 +15651,8 @@ WinHelpA( +@@ -12479,6 +15616,8 @@ WinHelpA( _In_opt_ LPCSTR lpszHelp, _In_ UINT uCommand, _In_ ULONG_PTR dwData); @@ -9414,7 +9365,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -12502,26 +15676,48 @@ WinHelpW( +@@ -12502,26 +15641,48 @@ WinHelpW( #define GR_GDIOBJECTS 0 /* Count of GDI objects */ #define GR_USEROBJECTS 1 /* Count of USER objects */ @@ -9464,7 +9415,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -12618,6 +15814,52 @@ GetGuiResources( +@@ -12618,6 +15779,52 @@ GetGuiResources( #define SPI_GETMOUSETRAILS 0x005E #define SPI_SETSCREENSAVERRUNNING 0x0061 #define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING @@ -9517,7 +9468,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0400 */ #define SPI_GETFILTERKEYS 0x0032 #define SPI_SETFILTERKEYS 0x0033 -@@ -12634,12 +15876,75 @@ GetGuiResources( +@@ -12634,12 +15841,75 @@ GetGuiResources( #if(WINVER >= 0x0400) #define SPI_GETSERIALKEYS 0x003E #define SPI_SETSERIALKEYS 0x003F @@ -9593,7 +9544,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0400 */ #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define SPI_GETMOUSEHOVERWIDTH 0x0062 -@@ -12656,10 +15961,32 @@ GetGuiResources( +@@ -12656,10 +15926,32 @@ GetGuiResources( #if (_WIN32_WINNT >= 0x0600) #define SPI_GETWHEELSCROLLCHARS 0x006C #define SPI_SETWHEELSCROLLCHARS 0x006D @@ -9626,7 +9577,7 @@ index f99e9294..53ba8a91 100644 #endif -@@ -12668,6 +15995,14 @@ GetGuiResources( +@@ -12668,6 +15960,14 @@ GetGuiResources( #define SPI_SETMOUSESPEED 0x0071 #define SPI_GETSCREENSAVERRUNNING 0x0072 #define SPI_GETDESKWALLPAPER 0x0073 @@ -9641,7 +9592,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0500 */ #if(WINVER >= 0x0600) -@@ -12676,6 +16011,14 @@ GetGuiResources( +@@ -12676,6 +15976,14 @@ GetGuiResources( #define SPI_GETSCREENSAVESECURE 0x0076 #define SPI_SETSCREENSAVESECURE 0x0077 @@ -9656,7 +9607,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ #if(_WIN32_WINNT >= 0x0601) -@@ -12705,6 +16048,36 @@ GetGuiResources( +@@ -12705,6 +16013,36 @@ GetGuiResources( #define SPI_SETSNAPSIZING 0x008F #define SPI_GETDOCKMOVING 0x0090 #define SPI_SETDOCKMOVING 0x0091 @@ -9693,7 +9644,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0601 */ #if(WINVER >= 0x0602) -@@ -12745,12 +16118,28 @@ typedef struct tagTouchPredictionParameters +@@ -12745,12 +16083,28 @@ typedef struct tagTouchPredictionParameters #define SPI_GETMENURECT 0x00A2 #define SPI_SETMENURECT 0x00A3 @@ -9722,7 +9673,7 @@ index f99e9294..53ba8a91 100644 #endif // NTDDI_VERSION >= NTDDI_WIN11_GE #if (NTDDI_VERSION >= NTDDI_WIN10_CO) -@@ -12806,6 +16195,22 @@ typedef struct tagTouchPredictionParameters +@@ -12806,6 +16160,22 @@ typedef struct tagTouchPredictionParameters #define SPI_SETDROPSHADOW 0x1025 #define SPI_GETBLOCKSENDINPUTRESETS 0x1026 #define SPI_SETBLOCKSENDINPUTRESETS 0x1027 @@ -9745,7 +9696,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define SPI_GETUIEFFECTS 0x103E -@@ -12820,6 +16225,18 @@ typedef struct tagTouchPredictionParameters +@@ -12820,6 +16190,18 @@ typedef struct tagTouchPredictionParameters #define SPI_SETCLEARTYPE 0x1049 #define SPI_GETSPEECHRECOGNITION 0x104A #define SPI_SETSPEECHRECOGNITION 0x104B @@ -9764,7 +9715,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0601) -@@ -12829,6 +16246,16 @@ typedef struct tagTouchPredictionParameters +@@ -12829,6 +16211,16 @@ typedef struct tagTouchPredictionParameters #define SPI_SETTHREADLOCALINPUTSETTINGS 0x104F #define SPI_GETSYSTEMLANGUAGEBAR 0x1050 #define SPI_SETSYSTEMLANGUAGEBAR 0x1051 @@ -9781,7 +9732,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0601 */ #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) -@@ -12843,6 +16270,48 @@ typedef struct tagTouchPredictionParameters +@@ -12843,6 +16235,48 @@ typedef struct tagTouchPredictionParameters #define SPI_GETCARETWIDTH 0x2006 #define SPI_SETCARETWIDTH 0x2007 @@ -9830,7 +9781,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #define SPI_GETMOUSECLICKLOCKTIME 0x2008 #define SPI_SETMOUSECLICKLOCKTIME 0x2009 -@@ -12864,6 +16333,22 @@ typedef struct tagTouchPredictionParameters +@@ -12864,6 +16298,22 @@ typedef struct tagTouchPredictionParameters #define SPI_GETFONTSMOOTHINGORIENTATION 0x2012 #define SPI_SETFONTSMOOTHINGORIENTATION 0x2013 @@ -9853,7 +9804,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_GETFONTSMOOTHINGORIENTATION and SPI_SETFONTSMOOTHINGORIENTATION: */ #define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000 #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001 -@@ -12874,6 +16359,14 @@ typedef struct tagTouchPredictionParameters +@@ -12874,6 +16324,14 @@ typedef struct tagTouchPredictionParameters #define SPI_SETMINIMUMHITRADIUS 0x2015 #define SPI_GETMESSAGEDURATION 0x2016 #define SPI_SETMESSAGEDURATION 0x2017 @@ -9868,7 +9819,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0602) -@@ -12886,6 +16379,14 @@ typedef struct tagTouchPredictionParameters +@@ -12886,6 +16344,14 @@ typedef struct tagTouchPredictionParameters #define SPI_GETGESTUREVISUALIZATION 0x201A #define SPI_SETGESTUREVISUALIZATION 0x201B @@ -9883,7 +9834,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_GETGESTUREVISUALIZATION and SPI_SETGESTUREVISUALIZATION */ #define GESTUREVISUALIZATION_OFF 0x0000 #define GESTUREVISUALIZATION_ON 0x001F -@@ -12900,6 +16401,12 @@ typedef struct tagTouchPredictionParameters +@@ -12900,6 +16366,12 @@ typedef struct tagTouchPredictionParameters #define SPI_GETMOUSEWHEELROUTING 0x201C #define SPI_SETMOUSEWHEELROUTING 0x201D @@ -9896,7 +9847,7 @@ index f99e9294..53ba8a91 100644 #define MOUSEWHEEL_ROUTING_FOCUS 0 #define MOUSEWHEEL_ROUTING_HYBRID 1 #if(WINVER >= 0x0603) -@@ -12919,6 +16426,14 @@ typedef struct tagTouchPredictionParameters +@@ -12919,6 +16391,14 @@ typedef struct tagTouchPredictionParameters #define SPI_GETPENARBITRATIONTYPE 0x2020 #define SPI_SETPENARBITRATIONTYPE 0x2021 @@ -9911,7 +9862,7 @@ index f99e9294..53ba8a91 100644 /* constants for SPI_{GET|SET}PENARBITRATIONTYPE */ #define PENARBITRATIONTYPE_NONE 0x0000 #define PENARBITRATIONTYPE_WIN8 0x0001 -@@ -12930,11 +16445,23 @@ typedef struct tagTouchPredictionParameters +@@ -12930,11 +16410,23 @@ typedef struct tagTouchPredictionParameters #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) #define SPI_GETCARETTIMEOUT 0x2022 #define SPI_SETCARETTIMEOUT 0x2023 @@ -9935,7 +9886,7 @@ index f99e9294..53ba8a91 100644 typedef enum tagHANDEDNESS { HANDEDNESS_LEFT = 0, HANDEDNESS_RIGHT -@@ -12950,6 +16477,13 @@ typedef enum tagHANDEDNESS { +@@ -12950,6 +16442,13 @@ typedef enum tagHANDEDNESS { #define SPIF_SENDWININICHANGE 0x0002 #define SPIF_SENDCHANGE SPIF_SENDWININICHANGE @@ -9949,7 +9900,7 @@ index f99e9294..53ba8a91 100644 #define METRICS_USEDEFAULT -1 #ifdef _WINGDI_ -@@ -13020,6 +16554,14 @@ typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS; +@@ -13020,6 +16519,14 @@ typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS; #define ARW_BOTTOMRIGHT 0x0001L #define ARW_TOPLEFT 0x0002L #define ARW_TOPRIGHT 0x0003L @@ -9964,7 +9915,7 @@ index f99e9294..53ba8a91 100644 #define ARW_STARTMASK 0x0003L #define ARW_STARTRIGHT 0x0001L #define ARW_STARTTOP 0x0002L -@@ -13039,7 +16581,7 @@ typedef struct tagMINIMIZEDMETRICS +@@ -13039,7 +16546,7 @@ typedef struct tagMINIMIZEDMETRICS int iWidth; int iHorzGap; int iVertGap; @@ -9973,7 +9924,7 @@ index f99e9294..53ba8a91 100644 } MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS; #ifdef _WINGDI_ -@@ -13081,7 +16623,7 @@ typedef struct tagANIMATIONINFO +@@ -13081,7 +16588,7 @@ typedef struct tagANIMATIONINFO typedef struct tagSERIALKEYSA { UINT cbSize; @@ -9982,7 +9933,7 @@ index f99e9294..53ba8a91 100644 LPSTR lpszActivePort; LPSTR lpszPort; UINT iBaudRate; -@@ -13091,7 +16633,7 @@ typedef struct tagSERIALKEYSA +@@ -13091,7 +16598,7 @@ typedef struct tagSERIALKEYSA typedef struct tagSERIALKEYSW { UINT cbSize; @@ -9991,7 +9942,7 @@ index f99e9294..53ba8a91 100644 LPWSTR lpszActivePort; LPWSTR lpszPort; UINT iBaudRate; -@@ -13111,17 +16653,24 @@ typedef LPSERIALKEYSA LPSERIALKEYS; +@@ -13111,17 +16618,24 @@ typedef LPSERIALKEYSA LPSERIALKEYS; #define SERKF_AVAILABLE 0x00000002 #define SERKF_INDICATOR 0x00000004 @@ -10018,7 +9969,7 @@ index f99e9294..53ba8a91 100644 LPWSTR lpszDefaultScheme; } HIGHCONTRASTW, *LPHIGHCONTRASTW; #ifdef UNICODE -@@ -13147,6 +16696,18 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13147,6 +16661,18 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #define HCF_DEFAULTDESKTOP 0x00000200 #define HCF_OPTION_NOTHEMECHANGE 0x00001000 @@ -10037,7 +9988,7 @@ index f99e9294..53ba8a91 100644 /* Flags for ChangeDisplaySettings */ #define CDS_UPDATEREGISTRY 0x00000001 #define CDS_TEST 0x00000002 -@@ -13157,11 +16718,30 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13157,11 +16683,30 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #if(WINVER >= 0x0600) #define CDS_ENABLE_UNSAFE_MODES 0x00000100 #define CDS_DISABLE_UNSAFE_MODES 0x00000200 @@ -10068,7 +10019,7 @@ index f99e9294..53ba8a91 100644 #include /* Return values for ChangeDisplaySettings */ -@@ -13172,8 +16752,24 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13172,8 +16717,24 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #define DISP_CHANGE_NOTUPDATED -3 #define DISP_CHANGE_BADFLAGS -4 #define DISP_CHANGE_BADPARAM -5 @@ -10093,7 +10044,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #pragma region Desktop Family -@@ -13182,41 +16778,45 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; +@@ -13182,41 +16743,45 @@ typedef LPHIGHCONTRASTA LPHIGHCONTRAST; #ifdef _WINGDI_ #ifndef NOGDI @@ -10147,7 +10098,7 @@ index f99e9294..53ba8a91 100644 _In_opt_ LPVOID lParam); #ifdef UNICODE #define ChangeDisplaySettingsEx ChangeDisplaySettingsExW -@@ -13228,19 +16828,27 @@ ChangeDisplaySettingsExW( +@@ -13228,19 +16793,27 @@ ChangeDisplaySettingsExW( #define ENUM_CURRENT_SETTINGS ((DWORD)-1) #define ENUM_REGISTRY_SETTINGS ((DWORD)-2) @@ -10177,7 +10128,7 @@ index f99e9294..53ba8a91 100644 _Inout_ DEVMODEW* lpDevMode); #ifdef UNICODE #define EnumDisplaySettings EnumDisplaySettingsW -@@ -13250,22 +16858,24 @@ EnumDisplaySettingsW( +@@ -13250,22 +16823,24 @@ EnumDisplaySettingsW( #if(WINVER >= 0x0500) @@ -10206,7 +10157,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define EnumDisplaySettingsEx EnumDisplaySettingsExW #else -@@ -13276,6 +16886,13 @@ EnumDisplaySettingsExW( +@@ -13276,6 +16851,13 @@ EnumDisplaySettingsExW( #define EDS_RAWMODE 0x00000002 #define EDS_ROTATEDMODE 0x00000004 @@ -10220,7 +10171,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13284,6 +16901,7 @@ EnumDisplayDevicesA( +@@ -13284,6 +16866,7 @@ EnumDisplayDevicesA( _In_ DWORD iDevNum, _Inout_ PDISPLAY_DEVICEA lpDisplayDevice, _In_ DWORD dwFlags); @@ -10228,7 +10179,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13305,14 +16923,16 @@ EnumDisplayDevicesW( +@@ -13305,14 +16888,16 @@ EnumDisplayDevicesW( #if(WINVER >= 0x0601) @@ -10247,7 +10198,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -13321,13 +16941,14 @@ SetDisplayConfig( +@@ -13321,13 +16906,14 @@ SetDisplayConfig( _In_reads_opt_(numPathArrayElements) DISPLAYCONFIG_PATH_INFO* pathArray, _In_ UINT32 numModeInfoArrayElements, _In_reads_opt_(numModeInfoArrayElements) DISPLAYCONFIG_MODE_INFO* modeInfoArray, @@ -10265,7 +10216,7 @@ index f99e9294..53ba8a91 100644 _Inout_ UINT32* numPathArrayElements, _Out_writes_to_(*numPathArrayElements, *numPathArrayElements) DISPLAYCONFIG_PATH_INFO* pathArray, _Inout_ UINT32* numModeInfoArrayElements, -@@ -13336,12 +16957,14 @@ QueryDisplayConfig( +@@ -13336,12 +16922,14 @@ QueryDisplayConfig( _When_(flags & QDC_DATABASE_CURRENT, _Out_) DISPLAYCONFIG_TOPOLOGY_ID* currentTopologyId); @@ -10280,7 +10231,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LONG WINAPI -@@ -13355,24 +16978,28 @@ DisplayConfigSetDeviceInfo( +@@ -13355,24 +16943,28 @@ DisplayConfigSetDeviceInfo( #endif /* _WINGDI_ */ @@ -10313,7 +10264,7 @@ index f99e9294..53ba8a91 100644 #ifdef UNICODE #define SystemParametersInfo SystemParametersInfoW #else -@@ -13381,6 +17008,8 @@ SystemParametersInfoW( +@@ -13381,6 +16973,8 @@ SystemParametersInfoW( #if(WINVER >= 0x0605) @@ -10322,7 +10273,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI _Success_(return != FALSE) BOOL -@@ -13435,7 +17064,7 @@ typedef struct tagFILTERKEYS +@@ -13435,7 +17029,7 @@ typedef struct tagFILTERKEYS typedef struct tagSTICKYKEYS { UINT cbSize; @@ -10331,7 +10282,7 @@ index f99e9294..53ba8a91 100644 } STICKYKEYS, *LPSTICKYKEYS; #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -13453,6 +17082,19 @@ typedef struct tagSTICKYKEYS +@@ -13453,6 +17047,19 @@ typedef struct tagSTICKYKEYS #define SKF_AUDIBLEFEEDBACK 0x00000040 #define SKF_TRISTATE 0x00000080 #define SKF_TWOKEYSOFF 0x00000100 @@ -10351,7 +10302,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0500) #define SKF_LALTLATCHED 0x10000000 #define SKF_LCTLLATCHED 0x04000000 -@@ -13470,6 +17112,26 @@ typedef struct tagSTICKYKEYS +@@ -13470,6 +17077,26 @@ typedef struct tagSTICKYKEYS #define SKF_RSHIFTLOCKED 0x00020000 #define SKF_LWINLOCKED 0x00400000 #define SKF_RWINLOCKED 0x00800000 @@ -10378,7 +10329,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0500 */ #pragma region Desktop Family -@@ -13527,16 +17189,36 @@ typedef struct tagACCESSTIMEOUT +@@ -13527,16 +17154,36 @@ typedef struct tagACCESSTIMEOUT #define ATF_TIMEOUTON 0x00000001 #define ATF_ONOFFFEEDBACK 0x00000002 @@ -10415,7 +10366,7 @@ index f99e9294..53ba8a91 100644 /* values for SOUNDSENTRY iWindowsEffect field */ #define SSWF_NONE 0 #define SSWF_TITLE 1 -@@ -13544,20 +17226,29 @@ typedef struct tagACCESSTIMEOUT +@@ -13544,20 +17191,29 @@ typedef struct tagACCESSTIMEOUT #define SSWF_DISPLAY 3 #define SSWF_CUSTOM 4 @@ -10449,7 +10400,7 @@ index f99e9294..53ba8a91 100644 DWORD iWindowsEffectMSec; LPSTR lpszWindowsEffectDLL; DWORD iWindowsEffectOrdinal; -@@ -13565,14 +17256,14 @@ typedef struct tagSOUNDSENTRYA +@@ -13565,14 +17221,14 @@ typedef struct tagSOUNDSENTRYA typedef struct tagSOUNDSENTRYW { UINT cbSize; @@ -10468,7 +10419,7 @@ index f99e9294..53ba8a91 100644 DWORD iWindowsEffectMSec; LPWSTR lpszWindowsEffectDLL; DWORD iWindowsEffectOrdinal; -@@ -13595,9 +17286,17 @@ typedef LPSOUNDSENTRYA LPSOUNDSENTRY; +@@ -13595,9 +17251,17 @@ typedef LPSOUNDSENTRYA LPSOUNDSENTRY; #define SSF_AVAILABLE 0x00000002 #define SSF_INDICATOR 0x00000004 @@ -10486,7 +10437,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13660,16 +17359,28 @@ SetDebugErrorLevel( +@@ -13660,16 +17324,28 @@ SetDebugErrorLevel( #define SLE_MINORERROR 0x00000002 #define SLE_WARNING 0x00000003 @@ -10516,7 +10467,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI int WINAPI -@@ -13680,7 +17391,7 @@ InternalGetWindowText( +@@ -13680,7 +17356,7 @@ InternalGetWindowText( #if defined(WINNT) @@ -10525,7 +10476,7 @@ index f99e9294..53ba8a91 100644 BOOL WINAPI EndTask( -@@ -13709,29 +17420,39 @@ CancelShutdown( +@@ -13709,29 +17385,39 @@ CancelShutdown( #define MONITOR_DEFAULTTOPRIMARY 0x00000001 #define MONITOR_DEFAULTTONEAREST 0x00000002 @@ -10568,7 +10519,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -13789,12 +17510,14 @@ typedef LPMONITORINFOEXA LPMONITORINFOEX; +@@ -13789,12 +17475,14 @@ typedef LPMONITORINFOEXA LPMONITORINFOEX; #endif // UNICODE #endif @@ -10583,7 +10534,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13809,6 +17532,7 @@ GetMonitorInfoW( +@@ -13809,6 +17497,7 @@ GetMonitorInfoW( typedef BOOL (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC, LPRECT, LPARAM); @@ -10591,7 +10542,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13830,6 +17554,7 @@ EnumDisplayMonitors( +@@ -13830,6 +17519,7 @@ EnumDisplayMonitors( * WinEvents - Active Accessibility hooks */ @@ -10599,7 +10550,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI VOID WINAPI -@@ -13848,6 +17573,10 @@ typedef VOID (CALLBACK* WINEVENTPROC)( +@@ -13848,6 +17538,10 @@ typedef VOID (CALLBACK* WINEVENTPROC)( DWORD idEventThread, DWORD dwmsEventTime); @@ -10610,7 +10561,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWINEVENTHOOK WINAPI -@@ -13861,6 +17590,7 @@ SetWinEventHook( +@@ -13861,6 +17555,7 @@ SetWinEventHook( _In_ DWORD dwFlags); #if(_WIN32_WINNT >= 0x0501) @@ -10618,7 +10569,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -13882,12 +17612,16 @@ IsWinEventHookInstalled( +@@ -13882,12 +17577,14 @@ IsWinEventHookInstalled( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -10629,13 +10580,11 @@ index f99e9294..53ba8a91 100644 UnhookWinEvent( _In_ HWINEVENTHOOK hWinEventHook); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) -+#endif + #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -13932,6 +17666,24 @@ UnhookWinEvent( +@@ -13932,6 +17629,24 @@ UnhookWinEvent( #define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4) #define OBJID_NATIVEOM ((LONG)0xFFFFFFF0) @@ -10660,7 +10609,7 @@ index f99e9294..53ba8a91 100644 /* * EVENT DEFINITION */ -@@ -14495,6 +18247,15 @@ UnhookWinEvent( +@@ -14495,6 +18210,15 @@ UnhookWinEvent( #define ALERT_SYSTEM_ERROR 3 // MB_ERROR #define ALERT_SYSTEM_QUERY 4 // MB_QUESTION #define ALERT_SYSTEM_CRITICAL 5 // HardSysErrBox @@ -10676,7 +10625,7 @@ index f99e9294..53ba8a91 100644 #define CALERT_SYSTEM 6 #pragma region Desktop Family -@@ -14503,7 +18264,7 @@ UnhookWinEvent( +@@ -14503,7 +18227,7 @@ UnhookWinEvent( typedef struct tagGUITHREADINFO { DWORD cbSize; @@ -10685,7 +10634,7 @@ index f99e9294..53ba8a91 100644 HWND hwndActive; HWND hwndFocus; HWND hwndCapture; -@@ -14521,6 +18282,15 @@ typedef struct tagGUITHREADINFO +@@ -14521,6 +18245,15 @@ typedef struct tagGUITHREADINFO #define GUI_INMENUMODE 0x00000004 #define GUI_SYSTEMMENUMODE 0x00000008 #define GUI_POPUPMENUMODE 0x00000010 @@ -10701,7 +10650,7 @@ index f99e9294..53ba8a91 100644 #if(_WIN32_WINNT >= 0x0501) #if defined(_WIN64) #define GUI_16BITTASK 0x00000000 -@@ -14532,6 +18302,8 @@ typedef struct tagGUITHREADINFO +@@ -14532,6 +18265,8 @@ typedef struct tagGUITHREADINFO #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -10710,7 +10659,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14539,6 +18311,8 @@ GetGUIThreadInfo( +@@ -14539,6 +18274,8 @@ GetGUIThreadInfo( _In_ DWORD idThread, _Inout_ PGUITHREADINFO pgui); @@ -10719,7 +10668,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14549,12 +18323,14 @@ BlockInput( +@@ -14549,12 +18286,14 @@ BlockInput( #define USER_DEFAULT_SCREEN_DPI 96 @@ -10734,7 +10683,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14564,36 +18340,42 @@ IsProcessDPIAware( +@@ -14564,36 +18303,42 @@ IsProcessDPIAware( #endif /* _WIN32_WINNT >= 0x0600 */ #if(WINVER >= 0x0605) @@ -10777,7 +10726,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14601,30 +18383,36 @@ AreDpiAwarenessContextsEqual( +@@ -14601,30 +18346,36 @@ AreDpiAwarenessContextsEqual( _In_ DPI_AWARENESS_CONTEXT dpiContextA, _In_ DPI_AWARENESS_CONTEXT dpiContextB); @@ -10814,7 +10763,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14641,6 +18429,8 @@ InheritWindowMonitor( +@@ -14641,6 +18392,8 @@ InheritWindowMonitor( #endif /* WINVER >= 0x0605 */ #if(WINVER >= 0x0605) @@ -10823,7 +10772,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14662,17 +18452,20 @@ GetDpiAwarenessContextForProcess( +@@ -14662,17 +18415,20 @@ GetDpiAwarenessContextForProcess( #if(WINVER >= 0x0606) @@ -10844,7 +10793,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DPI_HOSTING_BEHAVIOR WINAPI -@@ -14682,6 +18475,7 @@ GetWindowDpiHostingBehavior( +@@ -14682,6 +18438,7 @@ GetWindowDpiHostingBehavior( #endif /* WINVER >= 0x0606 */ @@ -10852,7 +10801,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14689,6 +18483,7 @@ GetWindowModuleFileNameA( +@@ -14689,6 +18446,7 @@ GetWindowModuleFileNameA( _In_ HWND hwnd, _Out_writes_to_(cchFileNameMax, return) LPSTR pszFileName, _In_ UINT cchFileNameMax); @@ -10860,7 +10809,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14728,6 +18523,15 @@ GetWindowModuleFileNameW( +@@ -14728,6 +18486,15 @@ GetWindowModuleFileNameW( #define STATE_SYSTEM_MOVEABLE 0x00040000 #define STATE_SYSTEM_SELFVOICING 0x00080000 #define STATE_SYSTEM_FOCUSABLE 0x00100000 @@ -10876,7 +10825,7 @@ index f99e9294..53ba8a91 100644 #define STATE_SYSTEM_SELECTABLE 0x00200000 #define STATE_SYSTEM_LINKED 0x00400000 #define STATE_SYSTEM_TRAVERSED 0x00800000 -@@ -14752,17 +18556,29 @@ GetWindowModuleFileNameW( +@@ -14752,17 +18519,29 @@ GetWindowModuleFileNameW( typedef struct tagCURSORINFO { DWORD cbSize; @@ -10907,7 +10856,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14783,8 +18599,8 @@ typedef struct tagWINDOWINFO +@@ -14783,8 +18562,8 @@ typedef struct tagWINDOWINFO DWORD cbSize; RECT rcWindow; RECT rcClient; @@ -10918,7 +10867,7 @@ index f99e9294..53ba8a91 100644 DWORD dwWindowStatus; UINT cxWindowBorders; UINT cyWindowBorders; -@@ -14794,6 +18610,13 @@ typedef struct tagWINDOWINFO +@@ -14794,6 +18573,13 @@ typedef struct tagWINDOWINFO #define WS_ACTIVECAPTION 0x0001 @@ -10932,7 +10881,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14811,6 +18634,8 @@ typedef struct tagTITLEBARINFO +@@ -14811,6 +18597,8 @@ typedef struct tagTITLEBARINFO DWORD rgstate[CCHILDREN_TITLEBAR + 1]; } TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO; @@ -10941,7 +10890,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14842,12 +18667,14 @@ typedef struct tagMENUBARINFO +@@ -14842,12 +18630,14 @@ typedef struct tagMENUBARINFO BOOL fUnused:30; // reserved } MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO; @@ -10957,7 +10906,7 @@ index f99e9294..53ba8a91 100644 _In_ LONG idItem, _Inout_ PMENUBARINFO pmbi); -@@ -14865,12 +18692,14 @@ typedef struct tagSCROLLBARINFO +@@ -14865,12 +18655,14 @@ typedef struct tagSCROLLBARINFO DWORD rgstate[CCHILDREN_SCROLLBAR + 1]; } SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO; @@ -10973,7 +10922,7 @@ index f99e9294..53ba8a91 100644 _Inout_ PSCROLLBARINFO psbi); /* -@@ -14881,12 +18710,14 @@ typedef struct tagCOMBOBOXINFO +@@ -14881,12 +18673,14 @@ typedef struct tagCOMBOBOXINFO DWORD cbSize; RECT rcItem; RECT rcButton; @@ -10989,7 +10938,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14904,15 +18735,23 @@ GetComboBoxInfo( +@@ -14904,15 +18698,23 @@ GetComboBoxInfo( #define GA_ROOT 2 #define GA_ROOTOWNER 3 @@ -11014,7 +10963,7 @@ index f99e9294..53ba8a91 100644 /* -@@ -14921,6 +18760,7 @@ GetAncestor( +@@ -14921,6 +18723,7 @@ GetAncestor( * fields will get returned. In other words, it is kind of a cross between * ChildWindowFromPointEx and WindowFromPoint. */ @@ -11022,7 +10971,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI HWND WINAPI -@@ -14944,6 +18784,8 @@ RealGetWindowClassA( +@@ -14944,6 +18747,8 @@ RealGetWindowClassA( * This gets the name of the window TYPE, not class. This allows us to * recognize ThunderButton32 et al. */ @@ -11031,7 +10980,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -14973,6 +18815,8 @@ typedef struct tagALTTABINFO +@@ -14973,6 +18778,8 @@ typedef struct tagALTTABINFO POINT ptStart; } ALTTABINFO, *PALTTABINFO, *LPALTTABINFO; @@ -11040,7 +10989,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -14982,6 +18826,8 @@ GetAltTabInfoA( +@@ -14982,6 +18789,8 @@ GetAltTabInfoA( _Inout_ PALTTABINFO pati, _Out_writes_opt_(cchItemText) LPSTR pszItemText, _In_ UINT cchItemText); @@ -11049,7 +10998,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15001,6 +18847,7 @@ GetAltTabInfoW( +@@ -15001,6 +18810,7 @@ GetAltTabInfoW( * Listbox information. * Returns the number of items per row. */ @@ -11057,7 +11006,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI DWORD WINAPI -@@ -15018,6 +18865,8 @@ GetListBoxInfo( +@@ -15018,6 +18828,8 @@ GetListBoxInfo( #if(_WIN32_WINNT >= 0x0500) @@ -11066,7 +11015,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15027,6 +18876,8 @@ LockWorkStation( +@@ -15027,6 +18839,8 @@ LockWorkStation( #if(_WIN32_WINNT >= 0x0500) @@ -11075,16 +11024,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15050,5 +18901,8 @@ - #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) - - DECLARE_HANDLE(HRAWINPUT); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HRAWINPUT HRAWINPUT; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15098,6 +18952,13 @@ typedef struct tagRAWINPUTHEADER { +@@ -15098,6 +18912,13 @@ typedef struct tagRAWINPUTHEADER { #define RIM_TYPEMOUSE 0 #define RIM_TYPEKEYBOARD 1 #define RIM_TYPEHID 2 @@ -11098,7 +11038,7 @@ index f99e9294..53ba8a91 100644 #define RIM_TYPEMAX 2 #pragma region Desktop Family -@@ -15116,7 +18977,7 @@ typedef struct tagRAWMOUSE { +@@ -15116,7 +18937,7 @@ typedef struct tagRAWMOUSE { /* * Indicator flags. */ @@ -11107,7 +11047,7 @@ index f99e9294..53ba8a91 100644 /* * The transition state of the mouse buttons. -@@ -15198,8 +19059,21 @@ typedef struct tagRAWMOUSE { +@@ -15198,8 +19019,21 @@ typedef struct tagRAWMOUSE { #define MOUSE_MOVE_ABSOLUTE 1 #define MOUSE_VIRTUAL_DESKTOP 0x02 // the coordinates are mapped to the virtual desktop #define MOUSE_ATTRIBUTES_CHANGED 0x04 // requery for mouse attributes @@ -11129,7 +11069,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINVER >= 0x0600 */ // NOTE: 0x100 is already claimed by MOUSE_TERMSRV_SRC_SHADOW in ntddmou.w -@@ -15305,15 +19179,22 @@ typedef struct tagRAWINPUT { +@@ -15305,15 +19139,22 @@ typedef struct tagRAWINPUT { #define RID_INPUT 0x10000003 #define RID_HEADER 0x10000005 @@ -11153,7 +11093,7 @@ index f99e9294..53ba8a91 100644 _Out_writes_bytes_to_opt_(*pcbSize, return) LPVOID pData, _Inout_ PUINT pcbSize, _In_ UINT cbSizeHeader); -@@ -15328,6 +19209,13 @@ GetRawInputData( +@@ -15328,6 +19169,13 @@ GetRawInputData( #define RIDI_DEVICENAME 0x20000007 // the return valus is the character length, not the byte size #define RIDI_DEVICEINFO 0x2000000b @@ -11167,7 +11107,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -15361,7 +19249,7 @@ typedef struct tagRID_DEVICE_INFO_HID { +@@ -15361,7 +19209,7 @@ typedef struct tagRID_DEVICE_INFO_HID { typedef struct tagRID_DEVICE_INFO { DWORD cbSize; @@ -11176,7 +11116,7 @@ index f99e9294..53ba8a91 100644 union { RID_DEVICE_INFO_MOUSE mouse; RID_DEVICE_INFO_KEYBOARD keyboard; -@@ -15369,20 +19257,24 @@ typedef struct tagRID_DEVICE_INFO { +@@ -15369,20 +19217,24 @@ typedef struct tagRID_DEVICE_INFO { } DUMMYUNIONNAME; } RID_DEVICE_INFO, *PRID_DEVICE_INFO, *LPRID_DEVICE_INFO; @@ -11203,7 +11143,7 @@ index f99e9294..53ba8a91 100644 _Inout_updates_bytes_to_opt_(*pcbSize, *pcbSize) LPVOID pData, _Inout_ PUINT pcbSize); #ifdef UNICODE -@@ -15395,6 +19287,8 @@ GetRawInputDeviceInfoW( +@@ -15395,6 +19247,8 @@ GetRawInputDeviceInfoW( /* * Raw Input Bulk Read: GetRawInputBuffer */ @@ -11212,7 +11152,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15409,7 +19303,7 @@ GetRawInputBuffer( +@@ -15409,7 +19263,7 @@ GetRawInputBuffer( typedef struct tagRAWINPUTDEVICE { USHORT usUsagePage; // Toplevel collection UsagePage USHORT usUsage; // Toplevel collection Usage @@ -11221,7 +11161,7 @@ index f99e9294..53ba8a91 100644 HWND hwndTarget; // Target hwnd. NULL = follows keyboard focus } RAWINPUTDEVICE, *PRAWINPUTDEVICE, *LPRAWINPUTDEVICE; -@@ -15426,9 +19320,27 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; +@@ -15426,9 +19280,27 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; #define RIDEV_CAPTUREMOUSE 0x00000200 // effective when mouse nolegacy is specified, otherwise it would be an error #define RIDEV_NOHOTKEYS 0x00000200 // effective for keyboard. #define RIDEV_APPKEYS 0x00000400 // effective for keyboard. @@ -11249,7 +11189,7 @@ index f99e9294..53ba8a91 100644 #endif /* _WIN32_WINNT >= 0x0501 */ #define RIDEV_EXMODEMASK 0x000000F0 -@@ -15451,6 +19363,8 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; +@@ -15451,6 +19323,8 @@ typedef CONST RAWINPUTDEVICE* PCRAWINPUTDEVICE; #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11258,7 +11198,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15459,6 +19373,8 @@ RegisterRawInputDevices( +@@ -15459,6 +19333,8 @@ RegisterRawInputDevices( _In_ UINT uiNumDevices, _In_ UINT cbSize); @@ -11267,7 +11207,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15470,9 +19386,11 @@ GetRegisteredRawInputDevices( +@@ -15470,9 +19346,11 @@ GetRegisteredRawInputDevices( typedef struct tagRAWINPUTDEVICELIST { HANDLE hDevice; @@ -11280,7 +11220,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI UINT WINAPI -@@ -15481,6 +19399,7 @@ GetRawInputDeviceList( +@@ -15481,6 +19359,7 @@ GetRawInputDeviceList( _Inout_ PUINT puiNumDevices, _In_ UINT cbSize); @@ -11288,7 +11228,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI LRESULT WINAPI -@@ -15560,6 +19479,8 @@ typedef struct tagPOINTER_DEVICE_CURSOR_INFO { +@@ -15560,6 +19439,8 @@ typedef struct tagPOINTER_DEVICE_CURSOR_INFO { POINTER_DEVICE_CURSOR_TYPE cursor; } POINTER_DEVICE_CURSOR_INFO; @@ -11297,7 +11237,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15567,6 +19488,8 @@ GetPointerDevices( +@@ -15567,6 +19448,8 @@ GetPointerDevices( _Inout_ UINT32* deviceCount, _Out_writes_opt_(*deviceCount) POINTER_DEVICE_INFO *pointerDevices); @@ -11306,7 +11246,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15574,6 +19497,8 @@ GetPointerDevice( +@@ -15574,6 +19457,8 @@ GetPointerDevice( _In_ HANDLE device, _Out_writes_(1) POINTER_DEVICE_INFO *pointerDevice); @@ -11315,7 +11255,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15582,6 +19507,8 @@ GetPointerDeviceProperties( +@@ -15582,6 +19467,8 @@ GetPointerDeviceProperties( _Inout_ UINT32* propertyCount, _Out_writes_opt_(*propertyCount) POINTER_DEVICE_PROPERTY *pointerProperties); @@ -11324,7 +11264,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15589,6 +19516,8 @@ RegisterPointerDeviceNotifications( +@@ -15589,6 +19476,8 @@ RegisterPointerDeviceNotifications( _In_ HWND window, _In_ BOOL notifyRange); @@ -11333,7 +11273,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15597,6 +19526,8 @@ GetPointerDeviceRects( +@@ -15597,6 +19486,8 @@ GetPointerDeviceRects( _Out_writes_(1) RECT* pointerDeviceRect, _Out_writes_(1) RECT* displayRect); @@ -11342,7 +11282,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15605,6 +19536,8 @@ GetPointerDeviceCursors( +@@ -15605,6 +19496,8 @@ GetPointerDeviceCursors( _Inout_ UINT32* cursorCount, _Out_writes_opt_(*cursorCount) POINTER_DEVICE_CURSOR_INFO *deviceCursors); @@ -11351,7 +11291,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15747,15 +19680,23 @@ typedef struct tagTOUCHPAD_PARAMETERS_V2 { +@@ -15747,15 +19640,23 @@ typedef struct tagTOUCHPAD_PARAMETERS_V2 { #define MSGFLT_ADD 1 #define MSGFLT_REMOVE 2 @@ -11376,7 +11316,7 @@ index f99e9294..53ba8a91 100644 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #pragma endregion -@@ -15772,12 +19713,20 @@ ChangeWindowMessageFilter( +@@ -15772,12 +19673,20 @@ ChangeWindowMessageFilter( #define MSGFLTINFO_ALREADYDISALLOWED_FORWND (2) #define MSGFLTINFO_ALLOWED_HIGHER (3) @@ -11398,7 +11338,7 @@ index f99e9294..53ba8a91 100644 } CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT; #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15790,16 +19739,25 @@ typedef struct tagCHANGEFILTERSTRUCT { +@@ -15790,16 +19699,25 @@ typedef struct tagCHANGEFILTERSTRUCT { #define MSGFLT_ALLOW (1) #define MSGFLT_DISALLOW (2) @@ -11425,16 +11365,7 @@ index f99e9294..53ba8a91 100644 _Inout_opt_ PCHANGEFILTERSTRUCT pChangeFilterStruct); // Optional #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15823,5 +19781,8 @@ - * Gesture information handle - */ - DECLARE_HANDLE(HGESTUREINFO); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef HGESTUREINFO HGESTUREINFO; -+#endif - - #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ -@@ -15846,6 +19807,18 @@ DECLARE_HANDLE(HGESTUREINFO); +@@ -15846,6 +19764,18 @@ DECLARE_HANDLE(HGESTUREINFO); #define GID_PRESSANDTAP 7 #define GID_ROLLOVER GID_PRESSANDTAP @@ -11453,7 +11384,7 @@ index f99e9294..53ba8a91 100644 #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) -@@ -15898,6 +19871,8 @@ typedef struct tagGESTURENOTIFYSTRUCT { +@@ -15898,6 +19828,8 @@ typedef struct tagGESTURENOTIFYSTRUCT { * Gesture information retrieval * - HGESTUREINFO is received by a window in the lParam of a WM_GESTURE message. */ @@ -11462,7 +11393,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15911,6 +19886,8 @@ GetGestureInfo( +@@ -15911,6 +19843,8 @@ GetGestureInfo( * - Size, in bytes, of the extra argument data is available in the cbExtraArgs * field of the GESTUREINFO structure retrieved using the GetGestureInfo function. */ @@ -11471,7 +11402,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15929,6 +19906,8 @@ GetGestureExtraArgs( +@@ -15929,6 +19863,8 @@ GetGestureExtraArgs( * one of the PostMessage or SendMessage class of API functions, the handle * is transfered with the message and need not be closed by the application. */ @@ -11480,7 +11411,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -15944,7 +19923,7 @@ CloseGestureInfoHandle( +@@ -15944,7 +19880,7 @@ CloseGestureInfoHandle( * system defaults. */ typedef struct tagGESTURECONFIG { @@ -11489,7 +11420,7 @@ index f99e9294..53ba8a91 100644 DWORD dwWant; // settings related to gesture ID that are to be turned on DWORD dwBlock; // settings related to gesture ID that are to be turned off } GESTURECONFIG, *PGESTURECONFIG; -@@ -15991,12 +19970,29 @@ typedef struct tagGESTURECONFIG { +@@ -15991,12 +19927,29 @@ typedef struct tagGESTURECONFIG { #define GC_PRESSANDTAP 0x00000001 #define GC_ROLLOVER GC_PRESSANDTAP @@ -11519,7 +11450,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16012,6 +20008,8 @@ SetGestureConfig( +@@ -16012,6 +19965,8 @@ SetGestureConfig( #define GCF_INCLUDE_ANCESTORS 0x00000001 // If specified, GetGestureConfig returns consolidated configuration // for the specified window and it's parent window chain @@ -11528,7 +11459,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16052,6 +20050,8 @@ GetGestureConfig( +@@ -16052,6 +20007,8 @@ GetGestureConfig( #pragma region Desktop Family #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11537,7 +11468,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16059,6 +20059,8 @@ ShutdownBlockReasonCreate( +@@ -16059,6 +20016,8 @@ ShutdownBlockReasonCreate( _In_ HWND hWnd, _In_ LPCWSTR pwszReason); @@ -11546,7 +11477,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16067,6 +20069,8 @@ ShutdownBlockReasonQuery( +@@ -16067,6 +20026,8 @@ ShutdownBlockReasonQuery( _Out_writes_opt_(*pcchBuff) LPWSTR pwszBuff, _Inout_ DWORD *pcchBuff); @@ -11555,7 +11486,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16115,12 +20119,15 @@ typedef enum tagINPUT_MESSAGE_ORIGIN_ID { +@@ -16115,12 +20076,15 @@ typedef enum tagINPUT_MESSAGE_ORIGIN_ID { /* * API to determine the input source of the current messsage. */ @@ -11571,7 +11502,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16222,12 +20229,16 @@ SetDisplayAutoRotationPreferences( +@@ -16222,12 +20186,16 @@ SetDisplayAutoRotationPreferences( #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) @@ -11588,7 +11519,7 @@ index f99e9294..53ba8a91 100644 WINUSERAPI BOOL WINAPI -@@ -16611,6 +20622,3 @@ EnterMoveSizeLoop( +@@ -16611,6 +20579,3 @@ EnterMoveSizeLoop( #endif /* __cplusplus */ #endif /* !_WINUSER_ */ diff --git a/generation/WinSDK/patches/um/ws2tcpip.h.patch b/generation/WinSDK/patches/um/ws2tcpip.h.patch index 14a3104a4..5d8646977 100644 --- a/generation/WinSDK/patches/um/ws2tcpip.h.patch +++ b/generation/WinSDK/patches/um/ws2tcpip.h.patch @@ -107,21 +107,18 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE void WSAAPI -@@ -494,7 +509,12 @@ +@@ -494,7 +509,9 @@ #endif typedef int socklen_t; - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef socklen_t socklen_t; -+#endif + +_Win32_SetLastError_ +_Win32_SupportedOS_Windows81_ WINSOCK_API_LINKAGE INT WSAAPI -@@ -509,6 +529,7 @@ +@@ -509,6 +526,7 @@ ); #if (NTDDI_VERSION >= NTDDI_WINXPSP2) || (_WIN32_WINNT >= 0x0502) @@ -129,7 +126,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -567,6 +588,8 @@ +@@ -567,6 +585,8 @@ #if (NTDDI_VERSION >= NTDDI_VISTA) @@ -138,7 +135,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -578,6 +601,7 @@ +@@ -578,6 +598,7 @@ PVOID pAddrBuf ); @@ -146,7 +143,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h INT WSAAPI InetPtonW( -@@ -588,6 +612,8 @@ +@@ -588,6 +609,8 @@ PVOID pAddrBuf ); @@ -155,7 +152,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h PCSTR WSAAPI inet_ntop( -@@ -597,6 +623,7 @@ +@@ -597,6 +620,7 @@ _In_ size_t StringBufSize ); @@ -163,7 +160,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h PCWSTR WSAAPI InetNtopW( -@@ -681,7 +708,7 @@ +@@ -681,7 +705,7 @@ WS2TCPIP_INLINE char * @@ -172,7 +169,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ int ecode) { static char buff[GAI_STRERROR_BUFFER_SIZE + 1]; -@@ -701,7 +728,7 @@ +@@ -701,7 +725,7 @@ WS2TCPIP_INLINE WCHAR * @@ -181,7 +178,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ int ecode ) { -@@ -726,7 +753,7 @@ +@@ -726,7 +750,7 @@ WS2TCPIP_INLINE int @@ -190,7 +187,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ IN_ADDR Interface, _In_ IN_ADDR Group, -@@ -772,7 +799,7 @@ +@@ -772,7 +796,7 @@ _Success_(return == 0) WS2TCPIP_INLINE int @@ -199,7 +196,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ IN_ADDR Interface, _In_ IN_ADDR Group, -@@ -822,7 +849,7 @@ +@@ -822,7 +846,7 @@ #if (NTDDI_VERSION >= NTDDI_WINXP) WS2TCPIP_INLINE int @@ -208,7 +205,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ ULONG Interface, _In_ CONST SOCKADDR *Group, -@@ -870,7 +897,7 @@ +@@ -870,7 +894,7 @@ _Success_(return == 0) WS2TCPIP_INLINE int @@ -217,7 +214,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ ULONG Interface, _In_ CONST SOCKADDR *Group, -@@ -965,7 +992,7 @@ +@@ -965,7 +989,7 @@ WS2TCPIP_INLINE INT @@ -226,7 +223,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _Out_ DWORD *Mtu ) -@@ -996,7 +1023,7 @@ +@@ -996,7 +1020,7 @@ WS2TCPIP_INLINE INT @@ -235,7 +232,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ DWORD Mtu ) -@@ -1031,7 +1058,7 @@ +@@ -1031,7 +1055,7 @@ WS2TCPIP_INLINE INT @@ -244,7 +241,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _Out_ DWORD *Enabled ) -@@ -1043,7 +1070,7 @@ +@@ -1043,7 +1067,7 @@ WS2TCPIP_INLINE INT @@ -253,7 +250,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ DWORD Enabled ) -@@ -1054,7 +1081,7 @@ +@@ -1054,7 +1078,7 @@ WS2TCPIP_INLINE INT @@ -262,7 +259,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _Out_ ICMP_ERROR_INFO *Info ) -@@ -1079,7 +1106,7 @@ +@@ -1079,7 +1103,7 @@ WS2TCPIP_INLINE INT @@ -271,7 +268,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _Out_ DWORD *MsgSize ) -@@ -1092,7 +1119,7 @@ +@@ -1092,7 +1116,7 @@ WS2TCPIP_INLINE INT @@ -280,7 +277,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ DWORD MsgSize ) -@@ -1103,7 +1130,7 @@ +@@ -1103,7 +1127,7 @@ WS2TCPIP_INLINE INT @@ -289,7 +286,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _Out_ DWORD *MaxCoalescedMsgSize ) -@@ -1116,7 +1143,7 @@ +@@ -1116,7 +1140,7 @@ WS2TCPIP_INLINE INT @@ -298,7 +295,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h _In_ SOCKET Socket, _In_ DWORD MaxCoalescedMsgSize ) -@@ -1229,6 +1256,8 @@ +@@ -1229,6 +1253,8 @@ // Secure socket API definitions // @@ -307,7 +304,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -1240,6 +1269,8 @@ +@@ -1240,6 +1266,8 @@ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine ); @@ -316,7 +313,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -1253,6 +1284,8 @@ +@@ -1253,6 +1281,8 @@ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine ); @@ -325,7 +322,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -1264,6 +1297,8 @@ +@@ -1264,6 +1294,8 @@ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine ); @@ -334,7 +331,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -1275,6 +1310,8 @@ +@@ -1275,6 +1307,8 @@ _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine ); @@ -343,7 +340,7 @@ diff --git a/um/ws2tcpip.h b/um/ws2tcpip.h WINSOCK_API_LINKAGE INT WSAAPI -@@ -1284,6 +1321,8 @@ +@@ -1284,6 +1318,8 @@ _In_ ULONG PeerAddrLen ); diff --git a/generation/WinSDK/patches/um/wsman.h.patch b/generation/WinSDK/patches/um/wsman.h.patch index f1407e4f3..788cb83fe 100644 --- a/generation/WinSDK/patches/um/wsman.h.patch +++ b/generation/WinSDK/patches/um/wsman.h.patch @@ -1,17 +1,7 @@ diff --git a/um/wsman.h b/um/wsman.h --- a/um/wsman.h +++ b/um/wsman.h -@@ -277,6 +277,9 @@ - // - - typedef struct WSMAN_API *WSMAN_API_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WSMAN_API_HANDLE WSMAN_API_HANDLE; -+#endif - - // - // ----------------------------------------------------------------------------- -@@ -285,6 +288,7 @@ +@@ -285,6 +285,7 @@ // Returns a nonzero error code upon failure // ----------------------------------------------------------------------------- // @@ -19,7 +9,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManInitialize( DWORD flags, _Out_ WSMAN_API_HANDLE *apiHandle -@@ -299,6 +303,7 @@ +@@ -299,6 +300,7 @@ // Returns non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -27,7 +17,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManDeinitialize( _Inout_opt_ WSMAN_API_HANDLE apiHandle, DWORD flags -@@ -319,6 +324,7 @@ +@@ -319,6 +321,7 @@ // the messageLengthUsed parameter contains the requested size of the buffer. // ----------------------------------------------------------------------------- // @@ -35,17 +25,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManGetErrorMessage( _In_ WSMAN_API_HANDLE apiHandle, _Reserved_ DWORD flags, // reserved for future use; must be 0 -@@ -373,6 +379,9 @@ - // ----------------------------------------------------------------------------- - // - typedef struct WSMAN_SESSION *WSMAN_SESSION_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WSMAN_SESSION_HANDLE WSMAN_SESSION_HANDLE; -+#endif - - // - // ----------------------------------------------------------------------------- -@@ -380,6 +389,7 @@ +@@ -380,6 +383,7 @@ // Returns a non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -53,7 +33,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManCreateSession( _In_ WSMAN_API_HANDLE apiHandle, _In_opt_ PCWSTR connection, // if NULL, then connection will default to localhost -@@ -396,6 +406,7 @@ +@@ -396,6 +400,7 @@ // Returns a non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -61,7 +41,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManCloseSession( _Inout_opt_ WSMAN_SESSION_HANDLE session, DWORD flags -@@ -469,6 +480,7 @@ +@@ -469,6 +474,7 @@ // Returns a non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -69,7 +49,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManSetSessionOption( _In_ WSMAN_SESSION_HANDLE session, WSManSessionOption option, -@@ -481,6 +493,7 @@ +@@ -481,6 +487,7 @@ // Returns a non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -77,7 +57,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManGetSessionOptionAsDword( _In_ WSMAN_SESSION_HANDLE session, WSManSessionOption option, -@@ -493,6 +506,7 @@ +@@ -493,6 +500,7 @@ // Returns a non zero error code upon failure // ----------------------------------------------------------------------------- // @@ -85,17 +65,7 @@ diff --git a/um/wsman.h b/um/wsman.h _Success_(return == NO_ERROR) DWORD WINAPI WSManGetSessionOptionAsString( _In_ WSMAN_SESSION_HANDLE session, -@@ -508,6 +522,9 @@ - // ----------------------------------------------------------------------------- - // - typedef struct WSMAN_OPERATION *WSMAN_OPERATION_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WSMAN_OPERATION_HANDLE WSMAN_OPERATION_HANDLE; -+#endif - - // - // ----------------------------------------------------------------------------- -@@ -564,6 +581,7 @@ +@@ -564,6 +572,7 @@ // after the callback returns. // ----------------------------------------------------------------------------- // @@ -103,27 +73,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManCloseOperation( _Inout_opt_ WSMAN_OPERATION_HANDLE operationHandle, DWORD flags -@@ -594,6 +612,9 @@ - // ----------------------------------------------------------------------- - // - typedef struct WSMAN_SHELL *WSMAN_SHELL_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WSMAN_SHELL_HANDLE WSMAN_SHELL_HANDLE; -+#endif - - // - // ----------------------------------------------------------------------- -@@ -601,6 +622,9 @@ - // ----------------------------------------------------------------------- - // - typedef struct WSMAN_COMMAND *WSMAN_COMMAND_HANDLE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WSMAN_COMMAND_HANDLE WSMAN_COMMAND_HANDLE; -+#endif - - // - // ----------------------------------------------------------------------- -@@ -874,6 +898,7 @@ +@@ -874,6 +883,7 @@ // WSManCreateShell API - wxf:Create // ----------------------------------------------------------------------------- // @@ -131,7 +81,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManCreateShell( _Inout_ WSMAN_SESSION_HANDLE session, -@@ -904,6 +929,7 @@ +@@ -904,6 +914,7 @@ } WSMAN_COMMAND_ARG_SET; @@ -139,7 +89,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManRunShellCommand( _Inout_ WSMAN_SHELL_HANDLE shell, -@@ -930,6 +956,7 @@ +@@ -930,6 +941,7 @@ #define WSMAN_SIGNAL_SHELL_CODE_CTRL_C WSMAN_SHELL_NS L"/signal/ctrl_c" #define WSMAN_SIGNAL_SHELL_CODE_CTRL_BREAK WSMAN_SHELL_NS L"/signal/ctrl_break" @@ -147,7 +97,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManSignalShell( _In_ WSMAN_SHELL_HANDLE shell, -@@ -946,6 +973,7 @@ +@@ -946,6 +958,7 @@ // ----------------------------------------------------------------------------- // @@ -155,7 +105,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManReceiveShellOutput( _Inout_ WSMAN_SHELL_HANDLE shell, -@@ -961,6 +989,7 @@ +@@ -961,6 +974,7 @@ // WSManSendShellInput API - rsp:Send // ----------------------------------------------------------------------------- // @@ -163,7 +113,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManSendShellInput( _In_ WSMAN_SHELL_HANDLE shell, -@@ -986,6 +1015,7 @@ +@@ -986,6 +1000,7 @@ // is called with WSMAN_FLAG_CALLBACK_END_OF_OPERATION flag as result of this operation // ----------------------------------------------------------------------------- // @@ -171,7 +121,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManCloseCommand( _Inout_opt_ WSMAN_COMMAND_HANDLE commandHandle, DWORD flags, -@@ -1004,6 +1034,7 @@ +@@ -1004,6 +1019,7 @@ // WSMAN_FLAG_CALLBACK_END_OF_OPERATION flag as result of this operation // ----------------------------------------------------------------------------- // @@ -179,7 +129,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManCloseShell( _Inout_opt_ WSMAN_SHELL_HANDLE shellHandle, DWORD flags, -@@ -1018,6 +1049,7 @@ +@@ -1018,6 +1034,7 @@ // WSManCreateShellEx API - wxf:Create with specific shell Id. // ----------------------------------------------------------------------------- // @@ -187,7 +137,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManCreateShellEx( _Inout_ WSMAN_SESSION_HANDLE session, DWORD flags, -@@ -1035,6 +1067,7 @@ +@@ -1035,6 +1052,7 @@ // WSManRunShellCommandEx API - rsp:Command with specific command Id. // ----------------------------------------------------------------------------- // @@ -195,7 +145,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManRunShellCommandEx( _Inout_ WSMAN_SHELL_HANDLE shell, -@@ -1052,6 +1085,7 @@ +@@ -1052,6 +1070,7 @@ // WSManDisconnectShell API - rsp:Disconnect // ----------------------------------------------------------------------------- // @@ -203,7 +153,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManDisconnectShell( _Inout_ WSMAN_SHELL_HANDLE shell, DWORD flags, -@@ -1064,6 +1098,7 @@ +@@ -1064,6 +1083,7 @@ // WSManReconnectShell API - rsp:Disconnect // ----------------------------------------------------------------------------- // @@ -211,7 +161,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManReconnectShell( _Inout_ WSMAN_SHELL_HANDLE shell, DWORD flags, -@@ -1078,6 +1113,7 @@ +@@ -1078,6 +1098,7 @@ // WSManRunShellCommand is used to report the completion of this operation // ----------------------------------------------------------------------------- // @@ -219,7 +169,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManReconnectShellCommand( _Inout_ WSMAN_COMMAND_HANDLE commandHandle, DWORD flags, -@@ -1089,6 +1125,7 @@ +@@ -1089,6 +1110,7 @@ // WSManConnectShell API - rsp:Connect // ----------------------------------------------------------------------------- // @@ -227,7 +177,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManConnectShell( _Inout_ WSMAN_SESSION_HANDLE session, DWORD flags, -@@ -1105,6 +1142,7 @@ +@@ -1105,6 +1127,7 @@ // WSManConnectShellCommand API - rsp:Connect // ----------------------------------------------------------------------------- // @@ -235,7 +185,7 @@ diff --git a/um/wsman.h b/um/wsman.h void WINAPI WSManConnectShellCommand( _Inout_ WSMAN_SHELL_HANDLE shell, DWORD flags, -@@ -1187,6 +1225,7 @@ +@@ -1187,6 +1210,7 @@ // errors being generated. // ----------------------------------------------------------------------------- // @@ -243,7 +193,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginReportContext( _In_ WSMAN_PLUGIN_REQUEST *requestDetails, _In_ DWORD flags, -@@ -1235,6 +1274,7 @@ +@@ -1235,6 +1259,7 @@ #define WSMAN_FLAG_RECEIVE_FLUSH 2 #define WSMAN_FLAG_RECEIVE_RESULT_DATA_BOUNDARY 4 @@ -251,7 +201,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginReceiveResult( _In_ WSMAN_PLUGIN_REQUEST *requestDetails, _In_ DWORD flags, -@@ -1260,6 +1300,7 @@ +@@ -1260,6 +1285,7 @@ // - to supply open Xml content in certain wsman responses like rsp:ConnectResponse // ----------------------------------------------------------------------------- // @@ -259,7 +209,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginOperationComplete( _In_ WSMAN_PLUGIN_REQUEST *requestDetails, _In_ DWORD flags, -@@ -1287,6 +1328,7 @@ +@@ -1287,6 +1313,7 @@ #define WSMAN_PLUGIN_PARAMS_GET_REQUESTED_DATA_LOCALE 6 /* Returns WSMAN_DATA_TEXT */ @@ -267,7 +217,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginGetOperationParameters ( _In_ WSMAN_PLUGIN_REQUEST *requestDetails, _In_ DWORD flags, -@@ -1355,6 +1397,7 @@ +@@ -1355,6 +1382,7 @@ // not call the operation complete method for some time. // ----------------------------------------------------------------------------- // @@ -275,7 +225,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginFreeRequestDetails(_In_ WSMAN_PLUGIN_REQUEST *requestDetails); // -@@ -1594,6 +1637,7 @@ +@@ -1594,6 +1622,7 @@ // Authorization Plug-in Callback methods // ----------------------------------------------------------------------------- // @@ -283,7 +233,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginAuthzUserComplete ( _In_ WSMAN_SENDER_DETAILS *senderDetails, _In_ DWORD flags, -@@ -1604,6 +1648,7 @@ +@@ -1604,6 +1633,7 @@ _In_opt_ PCWSTR extendedErrorInformation ); @@ -291,7 +241,7 @@ diff --git a/um/wsman.h b/um/wsman.h DWORD WINAPI WSManPluginAuthzOperationComplete ( _In_ WSMAN_SENDER_DETAILS *senderDetails, _In_ DWORD flags, -@@ -1612,6 +1657,7 @@ +@@ -1612,6 +1642,7 @@ _In_opt_ PCWSTR extendedErrorInformation ); diff --git a/generation/WinSDK/patches/um/wtsapi32.h.patch b/generation/WinSDK/patches/um/wtsapi32.h.patch index e513052b2..bbc651695 100644 --- a/generation/WinSDK/patches/um/wtsapi32.h.patch +++ b/generation/WinSDK/patches/um/wtsapi32.h.patch @@ -702,19 +702,16 @@ index f907576fa1be5bb647cb4c506cc028bac892968b..af42c24e888f2e9ba57e8a9be1fcf692 _In_ PVOID pReserved, _In_ DWORD Reserved, _In_ LPSTR pListenerName, -@@ -1597,7 +1736,10 @@ +@@ -1597,7 +1736,7 @@ DECLARE_HANDLE(WTS_CLOUD_AUTH_HANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef WTS_CLOUD_AUTH_HANDLE WTS_CLOUD_AUTH_HANDLE; -+#endif -WTS_CLOUD_AUTH_HANDLE WINAPI WTSCloudAuthOpen( +_Win32_RAIIFree_(WTSCloudAuthClose, -1, 0) WTS_CLOUD_AUTH_HANDLE WINAPI WTSCloudAuthOpen( _In_ const GUID* activityId); void WINAPI WTSCloudAuthClose( -@@ -1646,16 +1788,19 @@ +@@ -1646,16 +1785,19 @@ #define WTSGetListenerSecurity WTSGetListenerSecurityA #endif diff --git a/generation/WinSDK/patches/winrt/hstring.idl.patch b/generation/WinSDK/patches/winrt/hstring.idl.patch deleted file mode 100644 index 577e7b0af..000000000 --- a/generation/WinSDK/patches/winrt/hstring.idl.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- a/winrt/hstring.idl -+++ b/winrt/hstring.idl -@@ -46,6 +46,7 @@ - - cpp_quote("// Declare the HSTRING handle for C/C++") - cpp_quote("typedef __RPC_unique_pointer HSTRING__* HSTRING;") -+cpp_quote("/* Win32Metadata: type ::HSTRING => NativeTypedef */") - cpp_quote("") - - cpp_quote("// Declare the HSTRING_HEADER") -@@ -70,4 +71,5 @@ - cpp_quote("// sets the wide character string values in that buffer, and finally promotes the") - cpp_quote("// buffer to an HSTRING. If a buffer is never promoted, it can still be deleted.") - cpp_quote("DECLARE_HANDLE(HSTRING_BUFFER);") -+cpp_quote("/* Win32Metadata: type ::HSTRING_BUFFER => NativeTypedef */") - cpp_quote("") -\ No newline at end of file diff --git a/generation/WinSDK/patches/winrt/roapi.h.patch b/generation/WinSDK/patches/winrt/roapi.h.patch index cfec8c303..77940e964 100644 --- a/generation/WinSDK/patches/winrt/roapi.h.patch +++ b/generation/WinSDK/patches/winrt/roapi.h.patch @@ -9,22 +9,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h #ifdef _MSC_VER #pragma once -@@ -43,8 +44,14 @@ - // RegisterActivationFactory/RevokeActivationFactory registration cookie - #ifdef __cplusplus - typedef struct _RO_REGISTRATION_COOKIE {} *RO_REGISTRATION_COOKIE; -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RO_REGISTRATION_COOKIE RO_REGISTRATION_COOKIE; -+#endif - #else - typedef struct _RO_REGISTRATION_COOKIE *RO_REGISTRATION_COOKIE; /* make this header includable in C files */ -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef RO_REGISTRATION_COOKIE RO_REGISTRATION_COOKIE; -+#endif - #endif - // RegisterActivationFactory/DllGetActivationFactory callback - typedef HRESULT (STDAPICALLTYPE * PFNGETACTIVATIONFACTORY)(HSTRING, IActivationFactory **); -@@ -53,7 +60,8 @@ +@@ -53,7 +54,8 @@ #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP | WINAPI_PARTITION_SYSTEM) // forward declarations of the dllexport'd versions @@ -34,7 +19,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h _Check_return_ HRESULT WINAPI -@@ -61,6 +69,7 @@ +@@ -61,6 +63,7 @@ _In_ RO_INIT_TYPE initType ); @@ -42,7 +27,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI void WINAPI -@@ -69,6 +78,7 @@ +@@ -69,6 +72,7 @@ ROAPI _Check_return_ @@ -50,7 +35,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h HRESULT WINAPI RoActivateInstance( -@@ -76,6 +86,7 @@ +@@ -76,6 +80,7 @@ _COM_Outptr_ IInspectable** instance ); @@ -58,7 +43,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI _Check_return_ HRESULT -@@ -87,6 +98,7 @@ +@@ -87,6 +92,7 @@ _Out_ RO_REGISTRATION_COOKIE* cookie ); @@ -66,7 +51,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI void WINAPI -@@ -94,6 +106,7 @@ +@@ -94,6 +100,7 @@ _In_ RO_REGISTRATION_COOKIE cookie ); @@ -74,20 +59,17 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI _Check_return_ HRESULT -@@ -106,7 +119,11 @@ +@@ -106,7 +113,8 @@ typedef interface IApartmentShutdown IApartmentShutdown; DECLARE_HANDLE(APARTMENT_SHUTDOWN_REGISTRATION_COOKIE); - -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef APARTMENT_SHUTDOWN_REGISTRATION_COOKIE APARTMENT_SHUTDOWN_REGISTRATION_COOKIE; -+#endif + +_Win32_SupportedOS_Windows8_ ROAPI _Check_return_ HRESULT -@@ -117,6 +134,7 @@ +@@ -117,6 +125,7 @@ _Out_ APARTMENT_SHUTDOWN_REGISTRATION_COOKIE* regCookie ); @@ -95,7 +77,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI _Check_return_ HRESULT -@@ -125,6 +143,7 @@ +@@ -125,6 +134,7 @@ _In_ APARTMENT_SHUTDOWN_REGISTRATION_COOKIE regCookie ); @@ -103,7 +85,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h ROAPI _Check_return_ HRESULT -@@ -208,6 +227,7 @@ +@@ -208,6 +218,7 @@ // get activation factory template _Check_return_ @@ -111,7 +93,7 @@ diff --git a/winrt/roapi.h b/winrt/roapi.h __inline HRESULT GetActivationFactory( _In_ HSTRING activatableClassId, _COM_Outptr_ T** factory) -@@ -266,6 +286,7 @@ +@@ -266,6 +277,7 @@ // get activation factory template _Check_return_ diff --git a/generation/WinSDK/patches/winrt/roparameterizediid.h.patch b/generation/WinSDK/patches/winrt/roparameterizediid.h.patch index a4d1f3a72..3e77a8ab8 100644 --- a/generation/WinSDK/patches/winrt/roparameterizediid.h.patch +++ b/generation/WinSDK/patches/winrt/roparameterizediid.h.patch @@ -9,17 +9,7 @@ diff --git a/winrt/roparameterizediid.h b/winrt/roparameterizediid.h #include #include #include -@@ -18,6 +19,9 @@ - #include - - DECLARE_HANDLE(ROPARAMIIDHANDLE); -+#if defined(WIN32METADATA) && defined(__clang__) && defined(__cplusplus) && !defined(MIDL_PASS) -+_Win32_NativeTypedef_ typedef ROPARAMIIDHANDLE ROPARAMIIDHANDLE; -+#endif - //struct ROPARAMIIDHANDLE__; typedef struct ROPARAMIIDHANDLE__ *ROPARAMIIDHANDLE; - - struct IRoSimpleMetaDataBuilder -@@ -65,20 +69,23 @@ +@@ -65,20 +66,23 @@ ) const = 0; }; diff --git a/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs index c17546779..dd4f7cbcc 100644 --- a/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs +++ b/tests/Win32MetadataScraperTests/HeaderCompatibilityPatchTests.cs @@ -15,6 +15,44 @@ namespace Win32MetadataScraperTests { public class HeaderCompatibilityPatchTests { + [Fact] + public void ActiveWaitDeclarationsPreserveNativeStatusResults() + { + string root = RepositoryRoot(); + string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", "synchapi.h.patch")); + foreach (string name in new[] { "WaitForSingleObject", "WaitForSingleObjectEx", "WaitForMultipleObjects", "WaitForMultipleObjectsEx" }) + Assert.Contains("+_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI\n DWORD\n WINAPI\n " + name + "(", + patch.Replace("\r\n", "\n")); + Assert.Contains("/um/synchapi.h", File.ReadAllText( + Path.Combine(root, "generation", "WinSDK", "Partitions", "Threading", "settings.rsp"))); + } + + [Fact] + public void ActiveFileAndSocketDeclarationsPreserveNativeResults() + { + string root = RepositoryRoot(); + foreach (var (header, name, prefix, os, linkage, convention) in new[] + { + ("fileapi.h", "GetFileAttributesA", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("fileapi.h", "GetFileAttributesW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("fileapi.h", "QueryDosDeviceW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), + ("winsock2.h", "WSAWaitForMultipleEvents", "_Win32_AssociatedEnum_(WAIT_EVENT) ", + "Windows81", "WINSOCK_API_LINKAGE", "WSAAPI"), + }) + { + string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", header + ".patch")) + .Replace("\r\n", "\n"); + Assert.Contains("+_Win32_PreserveResult_ " + prefix + "_Win32_SetLastError_\n" + + "+_Win32_SupportedOS_" + os + "_\n " + linkage + "\n DWORD\n " + convention + "\n " + name + "(", patch); + } + foreach (var (partition, header) in new[] { ("Fs", "fileapi.h"), ("WinSock", "WinSock2.h") }) + { + string directory = Path.Combine(root, "generation", "WinSDK", "Partitions", partition); + Assert.Contains("/um/" + header, File.ReadAllText(Path.Combine(directory, "settings.rsp"))); + Assert.Contains("#include <" + header.ToLowerInvariant() + ">", File.ReadAllText(Path.Combine(directory, "main.cpp"))); + } + } + [Fact] public void CompatibilityPatchesPreserveResultsWidthsAndInputHandleDirections() { diff --git a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs index 8154a97a9..6622fc876 100644 --- a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs +++ b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs @@ -339,22 +339,6 @@ public void NativeIntegrationUsesBatchesInsteadOfInheritedScenarioTheories() BindingFlags.Instance | BindingFlags.Static).Where(method => method.IsDefined(typeof(FactAttribute), inherit: true))); } - [Fact] - public void ActiveWaitDeclarationsPreserveNativeStatusResults() - { - string root = WaitStatusRepositoryRoot(); - string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", "synchapi.h.patch")); - foreach (string name in new[] { "WaitForSingleObject", "WaitForSingleObjectEx", "WaitForMultipleObjects", "WaitForMultipleObjectsEx" }) - Assert.Contains("+_Win32_PreserveResult_ _Win32_AssociatedEnum_(WAIT_EVENT) WINBASEAPI\n DWORD\n WINAPI\n " + name + "(", - patch.Replace("\r\n", "\n")); - Assert.Contains("/um/synchapi.h", File.ReadAllText( - Path.Combine(root, "generation", "WinSDK", "Partitions", "Threading", "settings.rsp"))); - } - - private static string WaitStatusRepositoryRoot( - [System.Runtime.CompilerServices.CallerFilePath] string sourceFile = "") => - Path.GetFullPath(Path.Combine(Path.GetDirectoryName(sourceFile), "..", "..")); - private static void AssertWaitResults(MetadataReader reader) { foreach (var (name, parameterCount) in new[] @@ -367,9 +351,7 @@ private static void AssertWaitResults(MetadataReader reader) Assert.True(method.ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig), name); Assert.True(method.GetImport().Attributes.HasFlag(MethodImportAttributes.SetLastError), name); Assert.Equal(name, reader.GetString(method.GetImport().Name)); - var signature = method.DecodeSignature(new SignatureNames(), null); - Assert.Equal("UInt32", signature.ReturnType); - Assert.Equal(parameterCount, signature.ParameterTypes.Length); + AssertDwordReturn(reader, method, parameterCount); var result = method.GetParameters().Select(reader.GetParameter).Single(parameter => parameter.SequenceNumber == 0); AssertStringAttribute(reader, result.GetCustomAttributes(), "AssociatedEnumAttribute", "WAIT_EVENT"); AssertStringAttribute(reader, method.GetCustomAttributes(), "SupportedOSPlatformAttribute", "windows5.1.2600"); @@ -378,36 +360,35 @@ private static void AssertWaitResults(MetadataReader reader) .ImplAttributes.HasFlag(MethodImplAttributes.PreserveSig)); } - [Fact] - public void ActiveFileAndSocketDeclarationsPreserveNativeResults() + private static void AssertDwordReturn(MetadataReader reader, MethodDefinition method, int parameterCount) { - string root = FileAndSocketResultRepositoryRoot(); - foreach (var (header, name, prefix, os, linkage, convention) in new[] - { - ("fileapi.h", "GetFileAttributesA", "", "WindowsXP", "WINBASEAPI", "WINAPI"), - ("fileapi.h", "GetFileAttributesW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), - ("fileapi.h", "QueryDosDeviceW", "", "WindowsXP", "WINBASEAPI", "WINAPI"), - ("winsock2.h", "WSAWaitForMultipleEvents", "_Win32_AssociatedEnum_(WAIT_EVENT) ", - "Windows81", "WINSOCK_API_LINKAGE", "WSAAPI"), - }) - { - string patch = File.ReadAllText(Path.Combine(root, "generation", "WinSDK", "patches", "um", header + ".patch")) - .Replace("\r\n", "\n"); - Assert.Contains("+_Win32_PreserveResult_ " + prefix + "_Win32_SetLastError_\n" + - "+_Win32_SupportedOS_" + os + "_\n " + linkage + "\n DWORD\n " + convention + "\n " + name + "(", patch); - } - foreach (var (partition, header) in new[] { ("Fs", "fileapi.h"), ("WinSock", "WinSock2.h") }) + var signature = method.DecodeSignature(new SignatureNames(qualifiedNames: true), null); + Assert.Equal("Test.DWORD", signature.ReturnType); + Assert.Equal(parameterCount, signature.ParameterTypes.Length); + var handle = reader.TypeDefinitions.Single(value => + reader.GetString(reader.GetTypeDefinition(value).Name) == "DWORD"); + var type = reader.GetTypeDefinition(handle); + AssertHasAttribute(reader, type.GetCustomAttributes(), "NativeTypedefAttribute"); + var storage = reader.GetFieldDefinition(Assert.Single(type.GetFields())); + Assert.Equal("Value", reader.GetString(storage.Name)); + Assert.Equal("UInt32", storage.DecodeSignature(new SignatureNames(), null)); + + var blob = reader.GetBlobReader(method.Signature); + Assert.False(blob.ReadSignatureHeader().IsGeneric); + Assert.Equal(parameterCount, blob.ReadCompressedInteger()); + Assert.Equal((byte)SignatureTypeKind.ValueType, blob.ReadByte()); + var result = blob.ReadTypeHandle(); + if (result.Kind == HandleKind.TypeReference) { - string directory = Path.Combine(root, "generation", "WinSDK", "Partitions", partition); - Assert.Contains("/um/" + header, File.ReadAllText(Path.Combine(directory, "settings.rsp"))); - Assert.Contains("#include <" + header.ToLowerInvariant() + ">", File.ReadAllText(Path.Combine(directory, "main.cpp"))); + var reference = reader.GetTypeReference((TypeReferenceHandle)result); + Assert.Equal(HandleKind.ModuleDefinition, reference.ResolutionScope.Kind); + Assert.Equal(reader.GetString(type.Namespace), reader.GetString(reference.Namespace)); + Assert.Equal(reader.GetString(type.Name), reader.GetString(reference.Name)); } + else + Assert.Equal((EntityHandle)handle, result); } - private static string FileAndSocketResultRepositoryRoot( - [System.Runtime.CompilerServices.CallerFilePath] string sourceFile = "") => - Path.GetFullPath(Path.Combine(Path.GetDirectoryName(sourceFile), "..", "..")); - private static void AssertFileAndSocketResults(MetadataReader reader, string waitEnum = "BATCH_SOCKET_WAIT_EVENT") { foreach (var (name, count) in new[] @@ -424,9 +405,7 @@ private static void AssertFileAndSocketResults(MetadataReader reader, string wai MethodImportAttributes.SetLastError, import.Attributes); Assert.Equal(socket ? "ws2_32.dll" : "kernel32.dll", reader.GetString(reader.GetModuleReference(import.Module).Name)); Assert.Equal(name, reader.GetString(import.Name)); - var signature = method.DecodeSignature(new SignatureNames(), null); - Assert.Equal("UInt32", signature.ReturnType); - Assert.Equal(count, signature.ParameterTypes.Length); + AssertDwordReturn(reader, method, count); var results = method.GetParameters().Select(reader.GetParameter).Where(parameter => parameter.SequenceNumber == 0).ToArray(); if (socket) AssertStringAttribute(reader, Assert.Single(results).GetCustomAttributes(), "AssociatedEnumAttribute", waitEnum); From 72b309199dcacf38f3c2f733517af1dde1ee60a1 Mon Sep 17 00:00:00 2001 From: Jevan Saks Date: Wed, 28 Oct 2026 07:39:26 -0700 Subject: [PATCH 57/57] Keep managed checks outside the native fixture batch budget MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keep the in-memory parser and reflection-budget Facts discoverable without inheriting the native fixture base. Preserve the 1–10 native Fact limit and all existing assertions, with explicit scope diagnostics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../NativeContractBatchTests.cs | 113 ++++++++++-------- 1 file changed, 62 insertions(+), 51 deletions(-) diff --git a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs index 6622fc876..523ba7270 100644 --- a/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs +++ b/tests/Win32MetadataScraperTests/NativeContractBatchTests.cs @@ -288,57 +288,6 @@ public void DisabledCAnnotationsDoNotRequireMetadataNamesOrEmitTransport() this.output.WriteLine($"TOOLCHAIN disabled-C: scraper={fixture.InvocationCount}"); } - [Fact] - public void PayloadValidationRunsInMemoryInsteadOfLaunchingTheCompilerPerString() - { - foreach (string payload in new[] - { - "SetLastError()", "Flags()", "Flags(true)", "Flags(unsigned)", "Retained(1)", - "Reserved()", "ContainsInteriorPointers=value", "RAIIFree()", "RAIIFree(Close, )", - "RAIIFree(Close, (0)", "RAIIFree(Close, [))", "AssociatedEnum", "Field", - "ImportLibrary(\"\")", "ImportLibrary(\"x.dll\", \"#0\")", - "ImportLibrary(\"x.dll\", \"#65536\")", "ImportLibrary(\"x.dll\", \"#not-an-ordinal\")", - "SupportedOSPlatform(\"windows10.0.99999\")", "Optional", "Optional()", "Optional(1)", - "Optional(TRUE)", "Optional(\"false\")", "ComOutPtr(false, true)", - "ComOutPtr(true || false)", "Unsupported", - }) - { - var error = Record.Exception(() => HeaderAnnotation.Parse(payload)); - Assert.True(error?.GetType() == typeof(FormatException), $"Expected FormatException for payload '{payload}'; actual: {error}"); - } - foreach (string payload in new[] { "Flags", "Win32Metadata.Flags" }) - { - this.output.WriteLine("Valid payload: " + payload); - var annotation = HeaderAnnotation.Parse(payload); - Assert.Equal("Flags", annotation.Name); - Assert.Empty(annotation.Arguments); - } - foreach (var (payload, name, argument) in new[] - { - ("Optional(true)", "Optional", "true"), ("Optional(false)", "Optional", "false"), - ("Win32Metadata.ComOutPtr(true)", "ComOutPtr", "true"), ("ComOutPtr(false)", "ComOutPtr", "false"), - }) - { - this.output.WriteLine("Valid payload: " + payload); - var annotation = HeaderAnnotation.Parse(payload); - Assert.Equal(name, annotation.Name); - Assert.Equal(argument, Assert.Single(annotation.Arguments)); - } - } - - [Fact] - public void NativeIntegrationUsesBatchesInsteadOfInheritedScenarioTheories() - { - var nativeClasses = typeof(HeaderAnnotationWinmdTests).Assembly.GetTypes() - .Where(type => !type.IsAbstract && typeof(HeaderAnnotationWinmdTests).IsAssignableFrom(type)).ToArray(); - var nativeTests = nativeClasses.SelectMany(type => type.GetMethods(BindingFlags.Public | BindingFlags.Instance)) - .Where(method => method.IsDefined(typeof(FactAttribute), inherit: true)).ToArray(); - Assert.InRange(nativeTests.Length, 1, 10); - Assert.DoesNotContain(nativeTests, method => method.IsDefined(typeof(TheoryAttribute), inherit: true)); - Assert.Empty(typeof(HeaderAnnotationWinmdTests).GetMethods(BindingFlags.Public | BindingFlags.NonPublic | - BindingFlags.Instance | BindingFlags.Static).Where(method => method.IsDefined(typeof(FactAttribute), inherit: true))); - } - private static void AssertWaitResults(MetadataReader reader) { foreach (var (name, parameterCount) in new[] @@ -447,4 +396,66 @@ private static int ReadArchitecture(MetadataReader reader, FieldDefinition field return value; } } + + public class NativeContractBatchTestsManaged + { + private readonly ITestOutputHelper output; + + public NativeContractBatchTestsManaged(ITestOutputHelper output) => this.output = output; + + [Fact] + public void PayloadValidationRunsInMemoryInsteadOfLaunchingTheCompilerPerString() + { + foreach (string payload in new[] + { + "SetLastError()", "Flags()", "Flags(true)", "Flags(unsigned)", "Retained(1)", + "Reserved()", "ContainsInteriorPointers=value", "RAIIFree()", "RAIIFree(Close, )", + "RAIIFree(Close, (0)", "RAIIFree(Close, [))", "AssociatedEnum", "Field", + "ImportLibrary(\"\")", "ImportLibrary(\"x.dll\", \"#0\")", + "ImportLibrary(\"x.dll\", \"#65536\")", "ImportLibrary(\"x.dll\", \"#not-an-ordinal\")", + "SupportedOSPlatform(\"windows10.0.99999\")", "Optional", "Optional()", "Optional(1)", + "Optional(TRUE)", "Optional(\"false\")", "ComOutPtr(false, true)", + "ComOutPtr(true || false)", "Unsupported", + }) + { + var error = Record.Exception(() => HeaderAnnotation.Parse(payload)); + Assert.True(error?.GetType() == typeof(FormatException), $"Expected FormatException for payload '{payload}'; actual: {error}"); + } + foreach (string payload in new[] { "Flags", "Win32Metadata.Flags" }) + { + this.output.WriteLine("Valid payload: " + payload); + var annotation = HeaderAnnotation.Parse(payload); + Assert.Equal("Flags", annotation.Name); + Assert.Empty(annotation.Arguments); + } + foreach (var (payload, name, argument) in new[] + { + ("Optional(true)", "Optional", "true"), ("Optional(false)", "Optional", "false"), + ("Win32Metadata.ComOutPtr(true)", "ComOutPtr", "true"), ("ComOutPtr(false)", "ComOutPtr", "false"), + }) + { + this.output.WriteLine("Valid payload: " + payload); + var annotation = HeaderAnnotation.Parse(payload); + Assert.Equal(name, annotation.Name); + Assert.Equal(argument, Assert.Single(annotation.Arguments)); + } + } + + [Fact] + public void NativeIntegrationUsesBatchesInsteadOfInheritedScenarioTheories() + { + var nativeClasses = typeof(HeaderAnnotationWinmdTests).Assembly.GetTypes() + .Where(type => !type.IsAbstract && typeof(HeaderAnnotationWinmdTests).IsAssignableFrom(type)).ToArray(); + var nativeTests = nativeClasses.SelectMany(type => type.GetMethods(BindingFlags.Public | BindingFlags.Instance)) + .Where(method => method.IsDefined(typeof(FactAttribute), inherit: true)).ToArray(); + this.output.WriteLine($"Native batch budget: {nativeTests.Length} Fact methods across {nativeClasses.Length} concrete classes."); + foreach (var method in nativeTests.OrderBy(method => method.DeclaringType.FullName, StringComparer.Ordinal) + .ThenBy(method => method.Name, StringComparer.Ordinal)) + this.output.WriteLine(method.DeclaringType.FullName + "." + method.Name); + Assert.InRange(nativeTests.Length, 1, 10); + Assert.DoesNotContain(nativeTests, method => method.IsDefined(typeof(TheoryAttribute), inherit: true)); + Assert.Empty(typeof(HeaderAnnotationWinmdTests).GetMethods(BindingFlags.Public | BindingFlags.NonPublic | + BindingFlags.Instance | BindingFlags.Static).Where(method => method.IsDefined(typeof(FactAttribute), inherit: true))); + } + } }