From ca95cb5eeb3c113b46c7f9a6fbd9d45c68b0bfcd Mon Sep 17 00:00:00 2001
From: JakobL-MSFT <110699333+JakobL-MSFT@users.noreply.github.com>
Date: Thu, 18 Apr 2024 17:33:50 -0700
Subject: NuGet notes (#1120)
* NuGet notes
* Update Building-Locally.md
* Update Building-Locally.md: Update instructions for usb\usbview sample
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
* Update Building-Locally.md
---
Building-Locally.md | 193 ++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 166 insertions(+), 27 deletions(-)
(limited to 'Building-Locally.md')
diff --git a/Building-Locally.md b/Building-Locally.md
index 77f747a0..114a5ed3 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -1,23 +1,58 @@
# How to build locally
-## Step 1: Install Git and PowerShell 7
+## Step 1: Install Tools
```
winget install --id Microsoft.Powershell --source winget
winget install --id Git.Git --source winget
```
-## Step 2: Create a "driver build environment"
+For using WDK NuGet feed based build additionally:
+```
+winget install --id Microsoft.NuGet --source winget
+```
+
+## Step 2: Optional: Disable Strong Name Validation
+
+When: This step is only required if you will be using pre-release versions of the WDK.
+
+As per https://learn.microsoft.com/en-us/windows-hardware/drivers/installing-preview-versions-wdk :
+
+Run the following commands from an elevated command prompt to disable strong name validation:
+
+```
+reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b77eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
+
+reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b77eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
+```
+
+## Step 3: Optional: Install Microsoft .NET Framework 4.7.2 Targeting Pack and Microsoft .NET Framework 4.8.1 SDK
+
+When: This step is only required to build sample usb\usbview .
+
+### Option A: Install VS Components
+Easy: If you will install Visual Studio (see later) you may at that point select to add both of following individual components:
+* .NET Framework 4.7.2 targeting pack
+* .NET Framework 4.8.1 SDK
-There are multiple ways to achieve this. For example, [install Visual Studio and the Windows Driver Kit](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk#download-and-install-the-windows-11-version-22h2-wdk).
+### Option B: Use EWDK
+Easy: If you use EWDK, then all necessary prequisites are included.
-You can also use the Enterprise WDK (EWDK), a standalone, self-contained command-line environment for building drivers:
- * Download the Windows 11, version 22H2 EWDK ISO image from the [official site](https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022)
- * Mount ISO image
- * Open a terminal
- * `.\LaunchBuildEnv`
-
-## Step 3: Clone Windows Driver Samples and checkout main branch
+### Option C: Install Developer Pack
+
+Hardest: Install from https://aka.ms/msbuild/developerpacks -> '.NET Framework' -> 'Supported versions' both of following packages:
+* .NET Framework 4.7.2 -> Developer Pack
+* .NET Framework 4.8.1 -> Developer Pack
+
+This will install following Apps:
+* Microsoft .NET Framework 4.7.2 SDK
+* Microsoft .NET Framework 4.7.2 Targeting Pack
+* Microsoft .NET Framework 4.7.2 Targeting Pack (ENU)
+* Microsoft .NET Framework 4.8.1 SDK
+* Microsoft .NET Framework 4.8.1 Targeting Pack
+* Microsoft .NET Framework 4.8.1 Targeting Pack (ENU)
+
+## Step 3: Clone Windows Driver Samples and checkout relevant branch
```
cd path\to\your\repos
@@ -25,7 +60,59 @@ git clone --recurse-submodules https://github.com/microsoft/Windows-driver-sampl
cd Windows-driver-samples
```
-## Step 4: Check all samples builds with expected results for all flavors
+If you are planning to use in-market WDK, then you would typically want to use the 'main' branch:
+```
+git checkout main
+```
+
+If you are planning to use a WDK Preview or WDK EEAP release, then you would typically want to use the 'develop' branch:
+```
+git checkout develop
+```
+
+## Step 4: Create a "driver build environment"
+
+To build the Windows Driver Samples you need a "driver build environment". In essence an environment that consist of following prerequisites:
+* Visual Studio Build Tools including tools such as for example cl.exe and link.exe .
+* The Windows Software Development Kit.
+* The Windows Driver Kit.
+
+### Option A: Use WDK NuGet Packages
+* Note: This option is only available in pre-release form.
+* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
+* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix). Open Visual Studio -> Extensions -> Manage Extensions... -> Online -> Visual Studio Market Place -> Windows Driver Kit -> 10.0.26090.10 -> Download
+* Launch a "Developer Command Prompt for VS 2022".
+* Restore WDK packages from feed :
+
+```
+>cd path\to\your\repos\Windows-driver-samples
+>nuget restore -PackagesDirectory .\packages
+```
+
+* When this is done you should have a .\packages folder that looks exactly as follows:
+```
+>cd path\to\your\repos\Windows-driver-samples
+>dir /b packages
+Microsoft.Windows.SDK.CPP.10.0.26095.2-preview.ge-release
+Microsoft.Windows.SDK.CPP.x64.10.0.26095.2-preview.ge-release
+Microsoft.Windows.SDK.CPP.arm64.10.0.26095.2-preview.ge-release
+Microsoft.Windows.WDK.x64.10.0.26095.2-preview.ge-release
+Microsoft.Windows.WDK.arm64.10.0.26095.2-preview.ge-release
+```
+### Option B: Use the Windows Driver Kit
+* Here you will install each of above prerequisites one at a time.
+* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, SDK, and WDK.
+* Launch a "Developer Command Prompt for VS 2022".
+
+### Option C: Use an Enterprise WDK
+* You can also simply use the Enterprise WDK (EWDK), a standalone, self-contained command-line environment for building drivers that contains all prerequisites in one combined ISO.
+* Download the Windows 11, version 22H2 EWDK ISO image from the [official site](https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022)
+* Mount ISO image
+* Open a terminal
+* `.\LaunchBuildEnv`
+
+
+## Step 5: Check all samples builds with expected results for all flavors
```
pwsh
@@ -33,21 +120,42 @@ pwsh
```
Above builds all samples for all configurations and platforms.
-You can refine, for example as follows:
+You can refine what exact samples to build, what configurations, and platforms to build. build Here are a few examples:
```
-pwsh
+# Get Help:
+Get-Help .\Build-AllSamples
+
+# Build all solutions for all flavors with builds running in parallel:
+.\Build-AllSamples
+
+# Build with Verbose output (print start and finish of each sample):
+.\Build-AllSamples -Verbose
+
+# Build without massive parallism (slow, but good debugging):
+.\Build-AllSamples -ThrottleLimit 1
+
+# Build the solutions in the tools folder for all flavors:
.\Build-AllSamples -Samples '^tools.' -Configurations 'Debug','Release' -Platforms 'x64','arm64'
+
+# Build the solutions in the tools folder for only 'Debug|x64':
+.\Build-AllSamples -Samples '^tools.' -Configurations 'Debug' -Platforms 'x64'
```
Expected output:
```
-Samples: 153
-Configurations: 2 (Debug Release)
-Platforms: 2 (x64 arm64)
-Combinations: 612
-Logical Processors: 12
-Throttle factor: 5
-Throttle limit: 60
+PS > .\build-AllSamples.ps1
+Build Environment: NuGet
+Build Number: 26095
+Samples: 132
+Configurations: 2 (Debug Release)
+Platforms: 2 (x64 arm64)
+InfVerif_AdditionalOptions: /samples
+Combinations: 528
+LogicalProcessors: 12
+ThrottleFactor: 5
+ThrottleLimit: 60
+WDS_WipeOutputs:
+Disk Remaining (GB): ...
T: Combinations
B: Built
@@ -58,20 +166,51 @@ S: Built and result was 'Succeeded'
E: Built and result was 'Excluded'
U: Built and result was 'Unsupported' (Platform and Configuration combination)
F: Built and result was 'Failed'
+O: Built and result was 'Sporadic'
Building all combinations...
Built all combinations.
-Elapsed time: 12 minutes, 34 seconds.
-Samples: 153
+Elapsed time: 12 minutes, 42 seconds.
+Disk Remaining (GB): ...
+Samples: 132
Configurations: 2 (Debug Release)
Platforms: 2 (x64 arm64)
-Combinations: 612
-Succeeded: 326
-Excluded: 56
-Unsupported: 230
+Combinations: 528
+Succeeded: 526
+Excluded: 0
+Unsupported: 2
Failed: 0
+Sporadic: 0
Log files directory: .\_logs
-Overview report: .\_logs\_overview.htm
+Overview report: .\_overview.htm
+```
+
+# NuGet - Additional Notes
+
+To restore a specific version of our WDK NuGet packages:
+
+Follow these steps before running "nuget restore" command:
+* Open the .\packages.config file and update the full version (including the branch if required) in all three entries.
+* Open the .\Directory.build.props file and update the version and build of the package with the same values as in previous step.
+* Open .\Build-SampleSet and change the NuGet build number (used by .\exclusions.csv and for determining infverif flags)
+* Now you can run "nuget restore"
+
+A few examples of how to interact with nuget:
+```
+# To add an alternative online NuGet source:
+nuget sources add -Name "MyNuGetFeed" -Source https://nugetserver.com/_packaging/feedname/nuget/v3/index.json
+
+# To add an alternative local NuGet source:
+nuget sources add -Name "MyNuGetFeed" -Source \\path\to\mylocalrepo
+
+# To remove an alternative NuGet source:
+nuget sources remove -Name "MyNuGetFeed"
+
+# To enumerate NuGet locals:
+nuget locals all -list
+
+# To clear NuGet locals:
+nuget locals all -clear
```
--
cgit v1.3.1
From e75cdef627c3dd9bc590ecf92ad238b0340386b8 Mon Sep 17 00:00:00 2001
From: JakobL-MSFT <110699333+JakobL-MSFT@users.noreply.github.com>
Date: Wed, 24 Apr 2024 18:08:42 -0700
Subject: Update Building-Locally.md
---
Building-Locally.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
(limited to 'Building-Locally.md')
diff --git a/Building-Locally.md b/Building-Locally.md
index 114a5ed3..d9ad76e1 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -52,7 +52,7 @@ This will install following Apps:
* Microsoft .NET Framework 4.8.1 Targeting Pack
* Microsoft .NET Framework 4.8.1 Targeting Pack (ENU)
-## Step 3: Clone Windows Driver Samples and checkout relevant branch
+## Step 4: Clone Windows Driver Samples and checkout relevant branch
```
cd path\to\your\repos
@@ -70,7 +70,7 @@ If you are planning to use a WDK Preview or WDK EEAP release, then you would typ
git checkout develop
```
-## Step 4: Create a "driver build environment"
+## Step 5: Create a "driver build environment"
To build the Windows Driver Samples you need a "driver build environment". In essence an environment that consist of following prerequisites:
* Visual Studio Build Tools including tools such as for example cl.exe and link.exe .
@@ -112,7 +112,7 @@ Microsoft.Windows.WDK.arm64.10.0.26095.2-preview.ge-release
* `.\LaunchBuildEnv`
-## Step 5: Check all samples builds with expected results for all flavors
+## Step 6: Check all samples builds with expected results for all flavors
```
pwsh
@@ -187,7 +187,7 @@ Log files directory: .\_logs
Overview report: .\_overview.htm
```
-# NuGet - Additional Notes
+## 7: NuGet - Additional Notes
To restore a specific version of our WDK NuGet packages:
--
cgit v1.3.1
From 6edffd4b66aff103080aa1f3148815a8c9d827a9 Mon Sep 17 00:00:00 2001
From: JakobL-MSFT <110699333+JakobL-MSFT@users.noreply.github.com>
Date: Wed, 22 May 2024 08:56:48 -0700
Subject: Upgrade NuGet to 26100.1 (#1162)
* Upgrade NuGet to 10.0.26100.1-preview.ge-release
* Upgrade NuGet to 10.0.26100.2 pre
* Upgrade NuGet to 10.0.26100
* Upgrade NuGet to 10.0.26100.1
* Update Building-Locally.md
* Update Building-Locally.md
---
Build-SampleSet.ps1 | 2 +-
Building-Locally.md | 17 ++++++++---------
Directory.Build.props | 10 +++++-----
packages.config | 10 +++++-----
4 files changed, 19 insertions(+), 20 deletions(-)
(limited to 'Building-Locally.md')
diff --git a/Build-SampleSet.ps1 b/Build-SampleSet.ps1
index 059dc5b2..b0da097a 100644
--- a/Build-SampleSet.ps1
+++ b/Build-SampleSet.ps1
@@ -65,7 +65,7 @@ if (-not $env:GITHUB_REPOSITORY -eq '') {
#
elseif(Test-Path(".\packages")) {
$build_environment=("NuGet")
- $build_number=26095
+ $build_number=26100
}
#
# EWDK sets environment variable BuildLab. For example 'ni_release_svc_prod1.22621.2428'.
diff --git a/Building-Locally.md b/Building-Locally.md
index d9ad76e1..bb9fc610 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -78,9 +78,8 @@ To build the Windows Driver Samples you need a "driver build environment". In e
* The Windows Driver Kit.
### Option A: Use WDK NuGet Packages
-* Note: This option is only available in pre-release form.
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
-* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix). Open Visual Studio -> Extensions -> Manage Extensions... -> Online -> Visual Studio Market Place -> Windows Driver Kit -> 10.0.26090.10 -> Download
+* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix). Open Visual Studio -> Extensions -> Manage Extensions... -> Online -> Visual Studio Market Place -> Windows Driver Kit -> 10.0.26100.0 -> Download
* Launch a "Developer Command Prompt for VS 2022".
* Restore WDK packages from feed :
@@ -93,11 +92,11 @@ To build the Windows Driver Samples you need a "driver build environment". In e
```
>cd path\to\your\repos\Windows-driver-samples
>dir /b packages
-Microsoft.Windows.SDK.CPP.10.0.26095.2-preview.ge-release
-Microsoft.Windows.SDK.CPP.x64.10.0.26095.2-preview.ge-release
-Microsoft.Windows.SDK.CPP.arm64.10.0.26095.2-preview.ge-release
-Microsoft.Windows.WDK.x64.10.0.26095.2-preview.ge-release
-Microsoft.Windows.WDK.arm64.10.0.26095.2-preview.ge-release
+Microsoft.Windows.SDK.CPP.10.0.26000.1
+Microsoft.Windows.SDK.CPP.x64.10.0.26000.1
+Microsoft.Windows.SDK.CPP.arm64.10.0.26000.1
+Microsoft.Windows.WDK.x64.10.0.26000.1
+Microsoft.Windows.WDK.arm64.10.0.26000.1
```
### Option B: Use the Windows Driver Kit
* Here you will install each of above prerequisites one at a time.
@@ -106,7 +105,7 @@ Microsoft.Windows.WDK.arm64.10.0.26095.2-preview.ge-release
### Option C: Use an Enterprise WDK
* You can also simply use the Enterprise WDK (EWDK), a standalone, self-contained command-line environment for building drivers that contains all prerequisites in one combined ISO.
-* Download the Windows 11, version 22H2 EWDK ISO image from the [official site](https://learn.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2022)
+* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to download the EWDK.
* Mount ISO image
* Open a terminal
* `.\LaunchBuildEnv`
@@ -145,7 +144,7 @@ Expected output:
```
PS > .\build-AllSamples.ps1
Build Environment: NuGet
-Build Number: 26095
+Build Number: 26100
Samples: 132
Configurations: 2 (Debug Release)
Platforms: 2 (x64 arm64)
diff --git a/Directory.Build.props b/Directory.Build.props
index 9f333db0..811c5f30 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,7 +1,7 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/packages.config b/packages.config
index 3b62f4bb..257a510d 100644
--- a/packages.config
+++ b/packages.config
@@ -1,8 +1,8 @@
-
-
-
-
-
+
+
+
+
+
--
cgit v1.3.1
From 263b19b4347fcda2e236c14a9daf41e7d518625d Mon Sep 17 00:00:00 2001
From: JakobL-MSFT <110699333+JakobL-MSFT@users.noreply.github.com>
Date: Fri, 28 Jun 2024 09:56:29 -0700
Subject: RI develop to main (#1189)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Memory leakage in message
"sizeof(SCANNER_MESSAGE) * threadCount * requestCount" bytes long memory is allocated but only "sizeof(SCANNER_MESSAGE) * threadCount" bytes long of it is freed.
* Handles malloc function fail case
* Refactors comment line
* Solves the miscalculation of the message index
* simbatt: Fix broken registry read-back
The GetSimBattStateFromRegistry function is currently using default settings if GetSimBattStateFromRegistry succeeds, whereas settings from registry are only applied if GetSimBattStateFromRegistry fails. This does not make sense to me.
Therefore proposing to remove the `!` negation from `if (!NT_SUCCESS(Status)) {` on the line after `Status = GetSimBattStateFromRegistry(Device, RegState);` so that default settings are loaded when registry read-back fails.
* Issue of freeing memory without waiting completion of threads accessing it is fixed
* Fixes information leakage warning
Fixes the issue of possible information leakage from uninitialized padding bytes
* Avoids possible multiplication overflow warning
* Avoids possible multiplication overflow warning
* CI Pipelines build with WDK Nuget Packages (#1179)
Integrate nuget into the workflow pipelines
* FI from main to develop (#1188)
Fix text and minor issues in Winget configuration files
Co-authored-by: Adonais Romero Gonzalez
* Improve version info, vsix installation, and update building locally readme
* Fix printing vsix version
* Refactored vsix install and cleaned up build sampleset
---------
Co-authored-by: İsa Yurdagül <38290414+isayrdgl@users.noreply.github.com>
Co-authored-by: Fredrik Orderud
Co-authored-by: Christian Allred <13487734+cgallred@users.noreply.github.com>
Co-authored-by: tristanb-ntdev <60945150+tristanb-ntdev@users.noreply.github.com>
Co-authored-by: Matt <138825652+middlemose@users.noreply.github.com>
Co-authored-by: Adonais Romero Gonzalez
---
.github/scripts/Install-Vsix.ps1 | 38 ++++++++++++++++++++
.github/workflows/Code-Scanning.yml | 56 +++++++++++++++---------------
.github/workflows/ci-pr.yml | 10 +++---
.github/workflows/ci.yml | 13 +++----
Build-SampleSet.ps1 | 51 +++++++++++++++++++++------
Building-Locally.md | 6 +++-
filesys/miniFilter/scanner/user/scanUser.c | 52 +++++++++++++--------------
simbatt/func/miniclass.c | 2 +-
8 files changed, 151 insertions(+), 77 deletions(-)
create mode 100644 .github/scripts/Install-Vsix.ps1
(limited to 'Building-Locally.md')
diff --git a/.github/scripts/Install-Vsix.ps1 b/.github/scripts/Install-Vsix.ps1
new file mode 100644
index 00000000..50ef088b
--- /dev/null
+++ b/.github/scripts/Install-Vsix.ps1
@@ -0,0 +1,38 @@
+<#
+
+.SYNOPSIS
+Download and install the latest WDK VSIX.
+
+#>
+
+# set uri by resolving amd64 vsix
+$uri = "https://marketplace.visualstudio.com$((Invoke-WebRequest -Uri "https://marketplace.visualstudio.com/items?itemName=DriverDeveloperKits-WDK.WDKVsix").Links | Where-Object outerHTML -like '*(amd64)*' | select -expand href)"
+
+# set download version
+$uri_version = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($uri).Value
+
+# set msbuild path
+$msbuild_path = (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\MSBuild\")
+
+# download vsix, expand, and store the downloaded version extracted from the extension manifest
+"Downloading WDK VSIX version: $uri_version..."
+Invoke-WebRequest -Uri "$uri" -OutFile wdk.zip
+"Expanding WDK VSIX archive..."
+Expand-Archive ".\wdk.zip" .\
+"Extracting version from manifest..."
+$downloaded_version = ([xml](Get-Content .\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
+"Downloaded WDK VSIX version: $downloaded_version"
+
+# copy msbuild files, extension manifest, and check installed version from the extension manifest
+"Copying WDK extension files to build path..."
+cp (".\`$MSBuild\*", ".\extension.vsixmanifest") "$msbuild_path" -Recurse -Force
+"Extracting version from copied manifest..."
+$installed_version = ([xml](Get-Content ${msbuild_path}\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
+"Installed WDK VSIX Version: $installed_version"
+if (-not ("$downloaded_version" -eq "$installed_version")) {
+ "WDK VSIX installation failed due to version mismatch"
+ exit 1
+}
+
+# set github environment variable for vsix version
+"SAMPLES_VSIX_VERSION=$installed_version" | Out-File -FilePath "$env:GITHUB_ENV" -Append
diff --git a/.github/workflows/Code-Scanning.yml b/.github/workflows/Code-Scanning.yml
index a18bcf95..cd0d8abf 100644
--- a/.github/workflows/Code-Scanning.yml
+++ b/.github/workflows/Code-Scanning.yml
@@ -32,31 +32,31 @@ jobs:
language: [ 'cpp' ]
steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- with:
- submodules: 'recursive'
-
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v3
- with:
- languages: ${{ matrix.language }}
- packs: microsoft/windows-drivers
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v2
-
- - name: Retrieve and build all available solutions
- run: |
- .\Build-AllSamples.ps1 -Verbose -ThrottleLimit 1
- env:
- WDS_Configuration: Debug
- WDS_Platform: x64
- WDS_WipeOutputs: ${{ true }}
-
- - name: Perform CodeQL analysis
- uses: github/codeql-action/analyze@v3
- with:
- category: "/language:${{matrix.language}}"
-
-
-
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ submodules: 'recursive'
+
+ - name: Install WDK VSIX
+ run: .\.github\scripts\Install-Vsix.ps1
+
+ - name: Install Nuget Packages
+ run: nuget restore .\packages.config -PackagesDirectory .\packages\
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+ packs: microsoft/windows-drivers
+
+ - name: Retrieve and build all available solutions
+ run: .\Build-AllSamples.ps1 -Verbose -ThrottleLimit 1
+ env:
+ WDS_Configuration: Debug
+ WDS_Platform: x64
+ WDS_WipeOutputs: ${{ true }}
+
+ - name: Perform CodeQL analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml
index 7640b966..c04f4adb 100644
--- a/.github/workflows/ci-pr.yml
+++ b/.github/workflows/ci-pr.yml
@@ -22,8 +22,11 @@ jobs:
with:
submodules: 'recursive'
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v2
+ - name: Install WDK VSIX
+ run: .\.github\scripts\Install-Vsix.ps1
+
+ - name: Install Nuget Packages
+ run: nuget restore .\packages.config -PackagesDirectory .\packages\
- name: Get changed files
id: get-changed-files
@@ -63,8 +66,7 @@ jobs:
path: _logs
- name: Join and generate global reports
- run: |
- .\.github\scripts\Join-CsvReports.ps1
+ run: .\.github\scripts\Join-CsvReports.ps1
- name: Archive global overview build reports
uses: actions/upload-artifact@v3
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ad92f83b..c35a81ec 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,12 +22,14 @@ jobs:
with:
submodules: 'recursive'
- - name: Add MSBuild to PATH
- uses: microsoft/setup-msbuild@v2
+ - name: Install WDK VSIX
+ run: .\.github\scripts\Install-Vsix.ps1
+
+ - name: Install Nuget Packages
+ run: nuget restore .\packages.config -PackagesDirectory .\packages\
- name: Retrieve and build all available solutions
- run: |
- .\Build-AllSamples.ps1 -Verbose
+ run: .\Build-AllSamples.ps1 -Verbose
env:
WDS_Configuration: ${{ matrix.configuration }}
WDS_Platform: ${{ matrix.platform }}
@@ -56,8 +58,7 @@ jobs:
path: _logs
- name: Join and generate global reports
- run: |
- .\.github\scripts\Join-CsvReports.ps1
+ run: .\.github\scripts\Join-CsvReports.ps1
- name: Archive global overview build reports
uses: actions/upload-artifact@v3
diff --git a/Build-SampleSet.ps1 b/Build-SampleSet.ps1
index b0da097a..adae8bb0 100644
--- a/Build-SampleSet.ps1
+++ b/Build-SampleSet.ps1
@@ -9,6 +9,14 @@ param(
)
$root = Get-Location
+
+# launch developer powershell (if necessary to prevent multiple developer sessions)
+if (-not $env:VSCMD_VER) {
+ Import-Module (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\Common7\Tools\Microsoft.VisualStudio.DevShell.dll")
+ Enter-VsDevShell -VsInstallPath (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*")
+ cd $root
+}
+
$ThrottleFactor = 5
$LogicalProcessors = (Get-CIMInstance -Class 'CIM_Processor' -Verbose:$false).NumberOfLogicalProcessors
@@ -45,27 +53,34 @@ finally {
}
#
-# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'. Only used to determine build number.
+# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'.
# Determine build number (used for exclusions based on build number). Five digits. Say, '22621'.
+# Determine NuGet package version (if applicable).
+# Determine WDK vsix version.
#
$build_environment=""
$build_number=0
+$nuget_package_version=0
+$vsix_version=""
#
-# WDK NuGet will require presence of a folder 'packages'
+# In Github we build using NuGet and get the version from packages and vsix version from env var set from the install vsix step.
#
-#
-# Hack: In GitHub we do not have an environment variable where we can see WDK build number, so we have it hard coded.
-#
-if (-not $env:GITHUB_REPOSITORY -eq '') {
+if ($env:GITHUB_REPOSITORY) {
$build_environment="GitHub"
- $build_number=22621
+ $nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
+ $build_number=$nuget_package_version.split('.')[2]
+ $vsix_version = $env:SAMPLES_VSIX_VERSION
}
#
-# Hack: If user has hydrated nuget packages, then use those. That will be indicated by presence of a folder named .\packages.
+# WDK NuGet will require presence of a folder 'packages'. The version is sourced from repo .\Env-Vars.ps1.
+#
+# Hack: If user has hydrated nuget packages, then use those. That will be indicated by presence of a folder named '.\packages'.
+# Further, we need to test that the directory has been hydrated using '.\packages\*'.
#
-elseif(Test-Path(".\packages")) {
+elseif(Test-Path(".\packages\*")) {
$build_environment=("NuGet")
- $build_number=26100
+ $nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
+ $build_number=$nuget_package_version.split('.')[2]
}
#
# EWDK sets environment variable BuildLab. For example 'ni_release_svc_prod1.22621.2428'.
@@ -91,7 +106,19 @@ else {
Write-Error "Could not determine build environment."
exit 1
}
-
+#
+# Get the vsix version from packages if not set
+if (-not $vsix_version) {
+ $vsix_version = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
+ if ($vsix_version) {
+ $vsix_version = $vsix_version.split('=')[1]
+ }
+ else {
+ Write-Error "No version of the WDK VSIX could be found. The WDK VSIX is not installed."
+ exit 1
+ }
+}
+#
#
# InfVerif_AdditionalOptions
#
@@ -155,6 +182,8 @@ $SolutionsTotal = $sampleSet.Count * $Configurations.Count * $Platforms.Count
Write-Output ("Build Environment: " + $build_environment)
Write-Output ("Build Number: " + $build_number)
+if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) { Write-Output ("Nuget Package Version: " + $nuget_package_version) }
+Write-Output ("WDK VSIX Version: " + $vsix_version)
Write-Output ("Samples: " + $sampleSet.Count)
Write-Output ("Configurations: " + $Configurations.Count + " (" + $Configurations + ")")
Write-Output ("Platforms: " + $Platforms.Count + " (" + $Platforms + ")")
diff --git a/Building-Locally.md b/Building-Locally.md
index bb9fc610..e3db8dde 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -79,7 +79,11 @@ To build the Windows Driver Samples you need a "driver build environment". In e
### Option A: Use WDK NuGet Packages
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
-* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix). Open Visual Studio -> Extensions -> Manage Extensions... -> Online -> Visual Studio Market Place -> Windows Driver Kit -> 10.0.26100.0 -> Download
+* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix).
+ * Open Visual Studio -> Extensions -> Manage Extensions... -> Browse.
+ * In the search bar type: `Windows Driver Kit`.
+ * Find the `Microsoft` signed extension.
+ * Click the Install button.
* Launch a "Developer Command Prompt for VS 2022".
* Restore WDK packages from feed :
diff --git a/filesys/miniFilter/scanner/user/scanUser.c b/filesys/miniFilter/scanner/user/scanUser.c
index e766261c..08b948b3 100644
--- a/filesys/miniFilter/scanner/user/scanUser.c
+++ b/filesys/miniFilter/scanner/user/scanUser.c
@@ -254,8 +254,6 @@ Return Value
}
}
- free( message );
-
return hr;
}
@@ -268,13 +266,12 @@ main (
{
DWORD requestCount = SCANNER_DEFAULT_REQUEST_COUNT;
DWORD threadCount = SCANNER_DEFAULT_THREAD_COUNT;
- HANDLE threads[SCANNER_MAX_THREAD_COUNT];
+ HANDLE threads[SCANNER_MAX_THREAD_COUNT] = { NULL };
SCANNER_THREAD_CONTEXT context;
HANDLE port, completion;
- PSCANNER_MESSAGE msg;
+ PSCANNER_MESSAGE messages;
DWORD threadId;
HRESULT hr;
- DWORD i, j;
//
// Check how many threads and per thread requests are desired.
@@ -343,11 +340,23 @@ main (
context.Completion = completion;
//
- // Create specified number of threads.
+ // Allocate messages.
//
- for (i = 0; i < threadCount; i++) {
+ messages = calloc(((size_t) threadCount) * requestCount, sizeof(SCANNER_MESSAGE));
+
+ if (messages == NULL) {
+ hr = ERROR_NOT_ENOUGH_MEMORY;
+ goto main_cleanup;
+ }
+
+ //
+ // Create specified number of threads.
+ //
+
+ for (DWORD i = 0; i < threadCount; i++) {
+
threads[i] = CreateThread( NULL,
0,
(LPTHREAD_START_ROUTINE) ScannerWorker,
@@ -366,20 +375,9 @@ main (
goto main_cleanup;
}
- for (j = 0; j < requestCount; j++) {
-
- //
- // Allocate the message.
- //
-
-#pragma prefast(suppress:__WARNING_MEMORY_LEAK, "msg will not be leaked because it is freed in ScannerWorker")
- msg = malloc( sizeof( SCANNER_MESSAGE ) );
-
- if (msg == NULL) {
-
- hr = ERROR_NOT_ENOUGH_MEMORY;
- goto main_cleanup;
- }
+ for (DWORD j = 0; j < requestCount; j++) {
+
+ PSCANNER_MESSAGE msg = &(messages[i * requestCount + j]);
memset( &msg->Ovlp, 0, sizeof( OVERLAPPED ) );
@@ -393,24 +391,26 @@ main (
&msg->Ovlp );
if (hr != HRESULT_FROM_WIN32( ERROR_IO_PENDING )) {
-
- free( msg );
goto main_cleanup;
}
}
}
hr = S_OK;
-
- WaitForMultipleObjectsEx( i, threads, TRUE, INFINITE, FALSE );
-
+
main_cleanup:
+ for (INT i = 0; threads[i] != NULL; ++i) {
+ WaitForSingleObjectEx(threads[i], INFINITE, FALSE);
+ }
+
printf( "Scanner: All done. Result = 0x%08x\n", hr );
CloseHandle( port );
CloseHandle( completion );
+ free(messages);
+
return hr;
}
diff --git a/simbatt/func/miniclass.c b/simbatt/func/miniclass.c
index ba2df340..612b4c66 100644
--- a/simbatt/func/miniclass.c
+++ b/simbatt/func/miniclass.c
@@ -202,7 +202,7 @@ Return Value:
}
Status = GetSimBattStateFromRegistry(Device, RegState);
- if (!NT_SUCCESS(Status)) {
+ if (NT_SUCCESS(Status)) {
RtlZeroMemory(RegState, sizeof(SIMBATT_STATE));
WdfWaitLockAcquire(DevExt->StateLock, NULL);
--
cgit v1.3.1
From 5c4ceaef72f0af992966a7d2ac7ac7d897f091d3 Mon Sep 17 00:00:00 2001
From: Matt <138825652+middlemose@users.noreply.github.com>
Date: Mon, 23 Sep 2024 19:43:48 -0700
Subject: Deprecate WDK VSIX Install (#1219)
* Deprecate WDK vsix install
* Fix WDK extension version print
* Remove unecessary splitting on version
* Minor build info refactor
* Fix indentation of output info
* Enough messing with volume size output
* Cleanup comment for vsix version
* More cleanup and doc update
* Remove deprecation statement and install vsix script.
* Fixes and updates to building locally documentation.
* Dont code scan on license or .md files.
* Code scanning ignore changes to .md when pull request is made
---
.github/scripts/Install-Vsix.ps1 | 38 --------------------
.github/workflows/Code-Scanning.yml | 9 +++--
.github/workflows/ci-pr.yml | 3 --
.github/workflows/ci.yml | 3 --
Build-SampleSet.ps1 | 39 +++++++++------------
Building-Locally.md | 70 +++++++++++++++++++++++--------------
configuration.dsc.yaml | 19 ++--------
configuration_vsonly.dsc.yaml | 3 +-
8 files changed, 71 insertions(+), 113 deletions(-)
delete mode 100644 .github/scripts/Install-Vsix.ps1
(limited to 'Building-Locally.md')
diff --git a/.github/scripts/Install-Vsix.ps1 b/.github/scripts/Install-Vsix.ps1
deleted file mode 100644
index 50ef088b..00000000
--- a/.github/scripts/Install-Vsix.ps1
+++ /dev/null
@@ -1,38 +0,0 @@
-<#
-
-.SYNOPSIS
-Download and install the latest WDK VSIX.
-
-#>
-
-# set uri by resolving amd64 vsix
-$uri = "https://marketplace.visualstudio.com$((Invoke-WebRequest -Uri "https://marketplace.visualstudio.com/items?itemName=DriverDeveloperKits-WDK.WDKVsix").Links | Where-Object outerHTML -like '*(amd64)*' | select -expand href)"
-
-# set download version
-$uri_version = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($uri).Value
-
-# set msbuild path
-$msbuild_path = (Resolve-Path "$env:ProgramFiles\Microsoft Visual Studio\2022\*\MSBuild\")
-
-# download vsix, expand, and store the downloaded version extracted from the extension manifest
-"Downloading WDK VSIX version: $uri_version..."
-Invoke-WebRequest -Uri "$uri" -OutFile wdk.zip
-"Expanding WDK VSIX archive..."
-Expand-Archive ".\wdk.zip" .\
-"Extracting version from manifest..."
-$downloaded_version = ([xml](Get-Content .\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
-"Downloaded WDK VSIX version: $downloaded_version"
-
-# copy msbuild files, extension manifest, and check installed version from the extension manifest
-"Copying WDK extension files to build path..."
-cp (".\`$MSBuild\*", ".\extension.vsixmanifest") "$msbuild_path" -Recurse -Force
-"Extracting version from copied manifest..."
-$installed_version = ([xml](Get-Content ${msbuild_path}\extension.vsixmanifest)).PackageManifest.Metadata.Identity.Version
-"Installed WDK VSIX Version: $installed_version"
-if (-not ("$downloaded_version" -eq "$installed_version")) {
- "WDK VSIX installation failed due to version mismatch"
- exit 1
-}
-
-# set github environment variable for vsix version
-"SAMPLES_VSIX_VERSION=$installed_version" | Out-File -FilePath "$env:GITHUB_ENV" -Append
diff --git a/.github/workflows/Code-Scanning.yml b/.github/workflows/Code-Scanning.yml
index cd0d8abf..16aaff39 100644
--- a/.github/workflows/Code-Scanning.yml
+++ b/.github/workflows/Code-Scanning.yml
@@ -8,11 +8,17 @@ on:
branches:
- main
- develop
+ paths-ignore:
+ - '**.md'
+ - 'LICENSE'
pull_request:
# The branches below must be a subset of the branches above
branches:
- main
- develop
+ paths-ignore:
+ - '**.md'
+ - 'LICENSE'
# Allow manual scheduling
workflow_dispatch:
@@ -37,9 +43,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci-pr.yml b/.github/workflows/ci-pr.yml
index c04f4adb..72fb176f 100644
--- a/.github/workflows/ci-pr.yml
+++ b/.github/workflows/ci-pr.yml
@@ -22,9 +22,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c35a81ec..11dee203 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,9 +22,6 @@ jobs:
with:
submodules: 'recursive'
- - name: Install WDK VSIX
- run: .\.github\scripts\Install-Vsix.ps1
-
- name: Install Nuget Packages
run: nuget restore .\packages.config -PackagesDirectory .\packages\
diff --git a/Build-SampleSet.ps1 b/Build-SampleSet.ps1
index adae8bb0..f6765395 100644
--- a/Build-SampleSet.ps1
+++ b/Build-SampleSet.ps1
@@ -56,20 +56,17 @@ finally {
# Determine build environment: 'GitHub', 'NuGet', 'EWDK', or 'WDK'.
# Determine build number (used for exclusions based on build number). Five digits. Say, '22621'.
# Determine NuGet package version (if applicable).
-# Determine WDK vsix version.
#
$build_environment=""
$build_number=0
$nuget_package_version=0
-$vsix_version=""
#
-# In Github we build using NuGet and get the version from packages and vsix version from env var set from the install vsix step.
+# In Github we build using NuGet.
#
if ($env:GITHUB_REPOSITORY) {
$build_environment="GitHub"
$nuget_package_version=([regex]'(?<=x64\.)(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches((Get-Childitem .\packages\*WDK.x64* -Name)).Value
$build_number=$nuget_package_version.split('.')[2]
- $vsix_version = $env:SAMPLES_VSIX_VERSION
}
#
# WDK NuGet will require presence of a folder 'packages'. The version is sourced from repo .\Env-Vars.ps1.
@@ -107,16 +104,12 @@ else {
exit 1
}
#
-# Get the vsix version from packages if not set
-if (-not $vsix_version) {
- $vsix_version = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
- if ($vsix_version) {
- $vsix_version = $vsix_version.split('=')[1]
- }
- else {
- Write-Error "No version of the WDK VSIX could be found. The WDK VSIX is not installed."
- exit 1
- }
+# Get the WDK extension version from installed packages
+$wdk_extension_ver = ls "${env:ProgramData}\Microsoft\VisualStudio\Packages\Microsoft.Windows.DriverKit,version=*" | Select -ExpandProperty Name
+$wdk_extension_ver = ([regex]'(\d+\.)(\d+\.)(\d+\.)(\d+)').Matches($wdk_extension_ver).Value
+if (-not $wdk_extension_ver) {
+ Write-Error "No version of the WDK Visual Studio Extension could be found. The WDK Extension is not installed."
+ exit 1
}
#
#
@@ -180,20 +173,22 @@ $jresult = @{
$SolutionsTotal = $sampleSet.Count * $Configurations.Count * $Platforms.Count
-Write-Output ("Build Environment: " + $build_environment)
-Write-Output ("Build Number: " + $build_number)
-if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) { Write-Output ("Nuget Package Version: " + $nuget_package_version) }
-Write-Output ("WDK VSIX Version: " + $vsix_version)
-Write-Output ("Samples: " + $sampleSet.Count)
-Write-Output ("Configurations: " + $Configurations.Count + " (" + $Configurations + ")")
-Write-Output ("Platforms: " + $Platforms.Count + " (" + $Platforms + ")")
+Write-Output "WDK Build Environment: $build_environment"
+Write-Output "WDK Build Number: $build_number"
+if (($build_environment -eq "GitHub") -or ($build_environment -eq "NuGet")) {
+Write-Output "WDK Nuget Version: $nuget_package_version"
+}
+Write-Output "WDK Extension Version: $wdk_extension_ver"
+Write-Output "Samples: $($sampleSet.Count)"
+Write-Output "Configurations: $($Configurations.Count) ($Configurations)"
+Write-Output "Platforms: $($Platforms.Count) ($Platforms)"
Write-Output "InfVerif_AdditionalOptions: $InfVerif_AdditionalOptions"
Write-Output "Combinations: $SolutionsTotal"
Write-Output "LogicalProcessors: $LogicalProcessors"
Write-Output "ThrottleFactor: $ThrottleFactor"
Write-Output "ThrottleLimit: $ThrottleLimit"
Write-Output "WDS_WipeOutputs: $env:WDS_WipeOutputs"
-Write-Output ("Disk Remaining (GB): " + (((Get-Volume ($DriveLetter = (Get-Item ".").PSDrive.Name)).SizeRemaining / 1GB)))
+Write-Output "Disk Remaining (GB): $(((Get-Volume ((Get-Item ".").PSDrive.Name)).SizeRemaining) / 1GB)"
Write-Output ""
Write-Output "T: Combinations"
Write-Output "B: Built"
diff --git a/Building-Locally.md b/Building-Locally.md
index e3db8dde..312c5967 100644
--- a/Building-Locally.md
+++ b/Building-Locally.md
@@ -2,16 +2,19 @@
## Step 1: Install Tools
-```
+```powershell
winget install --id Microsoft.Powershell --source winget
winget install --id Git.Git --source winget
```
For using WDK NuGet feed based build additionally:
-```
+
+```powershell
winget install --id Microsoft.NuGet --source winget
```
+---
+
## Step 2: Optional: Disable Strong Name Validation
When: This step is only required if you will be using pre-release versions of the WDK.
@@ -26,16 +29,20 @@ reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\StrongName\Verification\*,31bf3856
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\StrongName\Verification\*,31bf3856ad364e35 /v TestPublicKey /t REG_SZ /d 00240000048000009400000006020000002400005253413100040000010001003f8c902c8fe7ac83af7401b14c1bd103973b26dfafb2b77eda478a2539b979b56ce47f36336741b4ec52bbc51fecd51ba23810cec47070f3e29a2261a2d1d08e4b2b4b457beaa91460055f78cc89f21cd028377af0cc5e6c04699b6856a1e49d5fad3ef16d3c3d6010f40df0a7d6cc2ee11744b5cfb42e0f19a52b8a29dc31b0 /f
```
+---
+
## Step 3: Optional: Install Microsoft .NET Framework 4.7.2 Targeting Pack and Microsoft .NET Framework 4.8.1 SDK
When: This step is only required to build sample usb\usbview .
### Option A: Install VS Components
+
Easy: If you will install Visual Studio (see later) you may at that point select to add both of following individual components:
* .NET Framework 4.7.2 targeting pack
* .NET Framework 4.8.1 SDK
### Option B: Use EWDK
+
Easy: If you use EWDK, then all necessary prequisites are included.
### Option C: Install Developer Pack
@@ -52,24 +59,30 @@ This will install following Apps:
* Microsoft .NET Framework 4.8.1 Targeting Pack
* Microsoft .NET Framework 4.8.1 Targeting Pack (ENU)
+---
+
## Step 4: Clone Windows Driver Samples and checkout relevant branch
-```
-cd path\to\your\repos
-git clone --recurse-submodules https://github.com/microsoft/Windows-driver-samples.git
-cd Windows-driver-samples
+```powershell
+cd "path\to\your\repos"
+git clone --recurse-submodules "https://github.com/microsoft/Windows-driver-samples.git"
+cd ".\Windows-driver-samples"
```
If you are planning to use in-market WDK, then you would typically want to use the 'main' branch:
+
```
git checkout main
```
If you are planning to use a WDK Preview or WDK EEAP release, then you would typically want to use the 'develop' branch:
+
```
git checkout develop
```
+---
+
## Step 5: Create a "driver build environment"
To build the Windows Driver Samples you need a "driver build environment". In essence an environment that consist of following prerequisites:
@@ -78,53 +91,55 @@ To build the Windows Driver Samples you need a "driver build environment". In e
* The Windows Driver Kit.
### Option A: Use WDK NuGet Packages
-* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete "Step 1". You do not need to install the SDK or the WDK.
-* Install the Visual Studio Windows Driver Kit Extension (WDK.vsix).
- * Open Visual Studio -> Extensions -> Manage Extensions... -> Browse.
- * In the search bar type: `Windows Driver Kit`.
- * Find the `Microsoft` signed extension.
- * Click the Install button.
+
+* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, but only complete `Step 1`. You do not need to install the SDK or the WDK.
* Launch a "Developer Command Prompt for VS 2022".
* Restore WDK packages from feed :
-```
->cd path\to\your\repos\Windows-driver-samples
->nuget restore -PackagesDirectory .\packages
+```powershell
+cd "path\to\your\repos\Windows-driver-samples"
+nuget restore -PackagesDirectory ".\packages"
```
-* When this is done you should have a .\packages folder that looks exactly as follows:
-```
->cd path\to\your\repos\Windows-driver-samples
->dir /b packages
+* When this is done you should have a .\packages folder that looks like example below:
+
+```powershell
+cd "path\to\your\repos\Windows-driver-samples"
+dir /b packages
Microsoft.Windows.SDK.CPP.10.0.26000.1
Microsoft.Windows.SDK.CPP.x64.10.0.26000.1
Microsoft.Windows.SDK.CPP.arm64.10.0.26000.1
Microsoft.Windows.WDK.x64.10.0.26000.1
Microsoft.Windows.WDK.arm64.10.0.26000.1
```
+
### Option B: Use the Windows Driver Kit
+
* Here you will install each of above prerequisites one at a time.
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to install Visual Studio, SDK, and WDK.
* Launch a "Developer Command Prompt for VS 2022".
### Option C: Use an Enterprise WDK
+
* You can also simply use the Enterprise WDK (EWDK), a standalone, self-contained command-line environment for building drivers that contains all prerequisites in one combined ISO.
* See [Download the Windows Driver Kit (WDK)](https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk) for instructions on how to download the EWDK.
* Mount ISO image
* Open a terminal
* `.\LaunchBuildEnv`
+---
## Step 6: Check all samples builds with expected results for all flavors
-```
+```powershell
pwsh
.\Build-AllSamples
```
Above builds all samples for all configurations and platforms.
You can refine what exact samples to build, what configurations, and platforms to build. build Here are a few examples:
-```
+
+```powershell
# Get Help:
Get-Help .\Build-AllSamples
@@ -144,9 +159,9 @@ Get-Help .\Build-AllSamples
.\Build-AllSamples -Samples '^tools.' -Configurations 'Debug' -Platforms 'x64'
```
-Expected output:
+Example of expected output:
+
```
-PS > .\build-AllSamples.ps1
Build Environment: NuGet
Build Number: 26100
Samples: 132
@@ -190,6 +205,8 @@ Log files directory: .\_logs
Overview report: .\_overview.htm
```
+---
+
## 7: NuGet - Additional Notes
To restore a specific version of our WDK NuGet packages:
@@ -201,12 +218,13 @@ Follow these steps before running "nuget restore" command:
* Now you can run "nuget restore"
A few examples of how to interact with nuget:
-```
+
+```powershell
# To add an alternative online NuGet source:
-nuget sources add -Name "MyNuGetFeed" -Source https://nugetserver.com/_packaging/feedname/nuget/v3/index.json
+nuget sources add -Name "MyNuGetFeed" -Source "https://nugetserver.com/_packaging/feedname/nuget/v3/index.json"
# To add an alternative local NuGet source:
-nuget sources add -Name "MyNuGetFeed" -Source \\path\to\mylocalrepo
+nuget sources add -Name "MyNuGetFeed" -Source "\\path\to\mylocalrepo"
# To remove an alternative NuGet source:
nuget sources remove -Name "MyNuGetFeed"
diff --git a/configuration.dsc.yaml b/configuration.dsc.yaml
index f8245c08..3d25ff06 100644
--- a/configuration.dsc.yaml
+++ b/configuration.dsc.yaml
@@ -42,6 +42,7 @@ properties:
- Microsoft.VisualStudio.Component.VC.MFC.ARM64
- Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre
- Microsoft.VisualStudio.Workload.NativeDesktop
+ - Component.Microsoft.Windows.DriverKit
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: sdkPackage
directives:
@@ -62,20 +63,4 @@ properties:
id: Microsoft.WindowsWDK.10.0.26100
source: winget
useLatest: true
- - resource: PSDscResources/Script
- id: wdkVsix
- dependsOn:
- - wdkPackage
- - vsComponents
- directives:
- description: Install Windows Driver Kit VSIX
- settings:
- GetScript: |
- return & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -version '[17.0,18.0)' -requires Microsoft.Windows.DriverKit -property installationVersion
- SetScript: |
- $installerPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -latest -products * -property enginePath | Join-Path -ChildPath 'VSIXInstaller.exe'
- if (Test-Path $installerPath) { & $installerPath /q "${env:ProgramFiles(x86)}\Windows Kits\10\Vsix\VS2022\10.0.26100.0\${env:PROCESSOR_ARCHITECTURE}\WDK.vsix" }
- TestScript: |
- $versionString = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -nologo -version '[17.0,18.0)' -requires Microsoft.Windows.DriverKit -property installationVersion
- return $versionString -match "^17\."
- configurationVersion: 0.2.0
+ configurationVersion: 0.2.1
diff --git a/configuration_vsonly.dsc.yaml b/configuration_vsonly.dsc.yaml
index 6ce4fc83..9d86a4f7 100644
--- a/configuration_vsonly.dsc.yaml
+++ b/configuration_vsonly.dsc.yaml
@@ -42,4 +42,5 @@ properties:
- Microsoft.VisualStudio.Component.VC.MFC.ARM64
- Microsoft.VisualStudio.Component.VC.MFC.ARM64.Spectre
- Microsoft.VisualStudio.Workload.NativeDesktop
- configurationVersion: 0.2.0
+ - Component.Microsoft.Windows.DriverKit
+ configurationVersion: 0.2.1
--
cgit v1.3.1