<feed xmlns='http://www.w3.org/2005/Atom'>
<title>windows-driver-samples.git/Build-Samples.ps1, branch develop</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>http://cgit.235523.xyz/windows-driver-samples.git/atom/Build-Samples.ps1?h=develop</id>
<link rel='self' href='http://cgit.235523.xyz/windows-driver-samples.git/atom/Build-Samples.ps1?h=develop'/>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/'/>
<updated>2026-06-23T18:05:03Z</updated>
<entry>
<title>Drop hardcoded version defaults and the un-discoverable label map</title>
<updated>2026-06-23T18:05:03Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-23T18:05:03Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=8745e5b82f0a0183e779dcdcc8164ad926fdcf8c'/>
<id>urn:sha1:8745e5b82f0a0183e779dcdcc8164ad926fdcf8c</id>
<content type='text'>
- Remove the hand-maintained _NT_TARGET_VERSION -&gt; friendly-name map (latest/24H2/...)
  from Join-CsvReports.ps1, along with its "Release" column in the HTML and step-summary
  tables; those labels cannot be auto-discovered.
- Stop hardcoding a version in the helper defaults: Import-SampleExclusions' -NtTargetVersion
  now defaults to empty (treated as the latest, so no NT-scoped row applies), and
  Build-SingleSample's -NtTargetVersionCode has no hardcoded code (the resolved value is
  always passed in). Blank MaxNtTargetVersion now uses [int]::MaxValue so 'latest'/empty
  matches the newest version's exclusion set.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Auto-discover _NT_TARGET_VERSION; remove the TargetVersion axis</title>
<updated>2026-06-23T17:38:40Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-23T17:38:40Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=ceceab78412feefd2f343a0e3bc07f1262665b62'/>
<id>urn:sha1:ceceab78412feefd2f343a0e3bc07f1262665b62</id>
<content type='text'>
- Remove the -TargetVersion parameter and all its plumbing from Build-Samples.ps1 (restoring
  the original hard-coded -p:TargetVersion=Windows10), and drop the TargetVersions column from
  exclusions.csv and Import-SampleExclusions. Only _NT_TARGET_VERSION remains exposed.
- Add Get-NtTargetVersions.ps1, which auto-discovers the valid _NT_TARGET_VERSION values (and
  their NTDDI codes) by parsing the active WDK's DriverGeneral.xml rule. Build-Samples.ps1 uses
  it to validate -NtTargetVersion, default to the latest, and map to the msbuild code, so a new
  WDK version needs no script change (accepts '10.0.&lt;build&gt;' or the short '&lt;build&gt;' tag).
- CI: ci.yml and ci-pr.yml gain a 'discover' job that emits the newest-N versions as JSON; the
  build matrix consumes it via fromJSON, so there is no hand-maintained version list anywhere.
  Build-ChangedSamples.ps1 treats Get-NtTargetVersions.ps1 as a full-build trigger.
- Docs updated accordingly.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Add NT-version-scoped exclusions and a parallel multi-version CI matrix</title>
<updated>2026-06-23T00:31:47Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-23T00:31:47Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=be91bbd2dc4478a57a4007fc32fe320da79f85e1'/>
<id>urn:sha1:be91bbd2dc4478a57a4007fc32fe320da79f85e1</id>
<content type='text'>
Exclusions:
- Add MinNtTargetVersion/MaxNtTargetVersion columns to exclusions.csv so a row can apply
  only within an _NT_TARGET_VERSION build-number range (parsed from -NtTargetVersion, e.g.
  22000 from 10.0.22000). Import-SampleExclusions filters this range at load time alongside
  the existing build-number range; blank = unbounded.
- Exclude the samples that fail only when linking against older library sets, with the
  reason taken from the build logs: audio.sysvad (&lt;=22000, KSJACK_DESCRIPTION3);
  network.netadaptercx.netvadapter and network.wlan.wificx (&lt;=22621, NDIS/DDI version);
  powerlimit.plclient/plpolicy (&lt;=22621, POWER_LIMIT_ATTRIBUTES); storage classpnp/storahci
  (&lt;=22621, STOR_ADDRESS_TYPE_NVME, Debug-only) and storage.msdsm (Debug|x64). usb.usbview is
  intentionally NOT excluded: it fails on every version for a known host reason (missing
  .NET 4.7.2/4.8.1 targeting packs).

CI:
- ci.yml and ci-pr.yml: add _NT_TARGET_VERSION as a manual matrix axis (4 newest versions,
  latest-first) so each version x configuration x platform runs on its own parallel runner.
- Build-Samples.ps1 and Join-CsvReports.ps1 now write an easy-to-scan Markdown summary to
  GITHUB_STEP_SUMMARY: each build job shows counts and a failures table with the first error;
  the report job shows per-version totals and a consolidated failures list, plus the
  colour-coded sample x version HTML/CSV overview.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Add -NtTargetVersion to build samples against older WDK library sets</title>
<updated>2026-06-22T22:52:55Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-22T22:52:55Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=6c6c308f1fe6ec1ce2ce7d0d7b3b455305a4a346'/>
<id>urn:sha1:6c6c308f1fe6ec1ce2ce7d0d7b3b455305a4a346</id>
<content type='text'>
Expose the WDK '_NT_TARGET_VERSION' property (the OS version of the libraries
the driver links against) as -NtTargetVersion / WDS_NtTargetVersion. Unlike
-TargetVersion (Target OS Version), this does not change the platform model, so
Universal/Windows Driver samples keep building on Windows 10 while linking
against an older library set.

The parameter accepts the Windows build number (e.g. 10.0.22000), maps it to the
NTDDI code from the WDK DriverGeneral.xml rule, and passes -p:_NT_TARGET_VERSION
to msbuild (threaded through Build-SingleSample and the parallel runspace). It
defaults to the latest (10.0.28000) and is surfaced in the build plan, summary,
and HTML report title. Documented in Building-Locally.md.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Support TargetVersion-scoped rules in exclusions.csv</title>
<updated>2026-06-22T20:54:56Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-22T20:54:56Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=a659bfc6b48a908a0b244d32de575bcf30033e7b'/>
<id>urn:sha1:a659bfc6b48a908a0b244d32de575bcf30033e7b</id>
<content type='text'>
Add an optional TargetVersions column to exclusions.csv so an exclusion can
be limited to specific target OS versions (e.g. exclude ARM only when
building Windows8). The column holds a ';'-separated list of -like patterns
matched against -TargetVersion; blank or '*' means all versions, so every
existing row stays applicable to all targets.

Import-SampleExclusions now takes -TargetVersion and filters rows by it at
load time (alongside the existing MinBuild/MaxBuild range); a missing column
is treated as '*' for backward compatibility. Document the new column and an
example in Building-Locally.md.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Expose TargetVersion parameter in Build-Samples.ps1</title>
<updated>2026-06-22T19:38:36Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-06-22T19:38:36Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=167a11ba7b1fd981755921f604106b6dbce6ec99'/>
<id>urn:sha1:167a11ba7b1fd981755921f604106b6dbce6ec99</id>
<content type='text'>
Add a validated -TargetVersion parameter (also settable via the
WDS_TargetVersion environment variable) so samples can be built for older
target OS versions. Valid values come from the WDK DriverGeneral.xml rule
and default to the latest, Windows10:
  Windows10 (Windows 10 or higher), WindowsV6.3 (Windows 8.1),
  Windows8 (Windows 8), Windows7 (Windows 7).

The value is threaded through Build-SingleSample into the msbuild
invocation (replacing the hard-coded TargetVersion=Windows10) and across
the parallel runspace, and is surfaced in the build plan, final summary,
and HTML report title. Document the new parameter in the script help and
Building-Locally.md.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>refactor: consolidate VS detection into Resolve-BuildEnvironment</title>
<updated>2026-04-02T22:36:34Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-04-02T22:36:34Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=1a672e37d6773fa8324d358d0191f4e6fce19d47'/>
<id>urn:sha1:1a672e37d6773fa8324d358d0191f4e6fce19d47</id>
<content type='text'>
- Remove Initialize-DevShell as a separate step; VS Dev Shell setup is
  now fully owned by Resolve-BuildEnvironment alongside mode detection.
  This eliminates the ordering problem where vswhere ran unconditionally
  before knowing whether the environment was EWDK (which needs no VS).

- Fix EWDK regression: EWDK mode now returns early before any vswhere
  or Dev Shell logic is invoked.

- Fix Auto+WDK from plain terminal: the old isWdk guard required
  UCRTVersion to be set before the Dev Shell was opened, making Auto
  detection fail on a clean terminal. Removed the guard; the code now
  falls through to Dev Shell setup and validates UCRTVersion afterward.

- Fix VSINSTALLDIR trailing-backslash mismatch: when the Dev Shell is
  already active, VSINSTALLDIR ends with '\' while vswhere installationPath
  does not. Added TrimEnd('\') on both sides before comparing.

- Renumber Build-Samples.ps1 step comments (old Step 5 'Detect Build
  Environment' merged into Step 1; remaining steps renumbered).

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>refactor: remove Github RunMode</title>
<updated>2026-03-31T23:22:25Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-03-31T23:02:08Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=8508ffaaf97a200fe6e8588333c6ab1383687d4f'/>
<id>urn:sha1:8508ffaaf97a200fe6e8588333c6ab1383687d4f</id>
<content type='text'>
NuGet mode works correctly for GitHub Actions (the HTML open is already
guarded by [Environment]::UserInteractive which is false on CI runners).
The Github mode was redundant and is removed to keep the interface clean.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>fix: detect WDK component version from the selected VS installation</title>
<updated>2026-03-31T23:22:25Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-03-31T22:58:46Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=12f94c8573a5ef79abf7842d3ea0faf458c3f733'/>
<id>urn:sha1:12f94c8573a5ef79abf7842d3ea0faf458c3f733</id>
<content type='text'>
Previously, WdkVsComponentVersion was read from the global ProgramData
package cache, which is shared across all VS installations and could
return the wrong version when multiple installs are present.

- Add -include packages to the vswhere call in Get-VsInstallationsWithWdk
  so each returned installation includes its WdkVsComponentVersion
- Initialize-DevShell now returns the selected installation object
- Resolve-BuildEnvironment accepts an optional -VsInstallation parameter;
  when provided it reuses the already-selected install (no second prompt);
  when absent (Dev Shell was pre-active) it calls Select-VsInstallation once
- Build-Samples.ps1 threads the result of Initialize-DevShell through to
  Resolve-BuildEnvironment

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
<entry>
<title>Extract environment helper functions into BuildEnvironment.ps1</title>
<updated>2026-03-31T23:22:25Z</updated>
<author>
<name>5an7y</name>
<email>jose.santiago7@hotmail.com</email>
</author>
<published>2026-03-31T22:14:04Z</published>
<link rel='alternate' type='text/html' href='http://cgit.235523.xyz/windows-driver-samples.git/commit/?id=e021472d548bb26ff390b6b90b42caf21def7024'/>
<id>urn:sha1:e021472d548bb26ff390b6b90b42caf21def7024</id>
<content type='text'>
Move Get-VsInstallationsWithWdk, Select-VsInstallation, Initialize-DevShell,
Assert-MsBuildAvailable, and Resolve-BuildEnvironment out of Build-Samples.ps1
into a new BuildEnvironment.ps1 helper file. Build-Samples.ps1 dot-sources it
via PSScriptRoot, consistent with the existing ListAllSamples.ps1 pattern.

Reduces Build-Samples.ps1 from 733 to 565 lines with no behaviour change.

Co-authored-by: Copilot &lt;223556219+Copilot@users.noreply.github.com&gt;
</content>
</entry>
</feed>
