name: Virtual Display Driver Building on: workflow_dispatch: push: branches: - master pull_request: branches: - master jobs: build: runs-on: windows-latest strategy: matrix: configuration: [Debug, Release] platform: [x64, ARM64] steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup MSBuild uses: microsoft/setup-msbuild@v1 - name: Check Chocolatey installation run: choco --version - name: Install Visual Studio 2022 dependencies run: | choco install visualstudio2022-workload-manageddesktop -y if ($LASTEXITCODE -ne 0) { exit 1 } choco install visualstudio2022-workload-nativedesktop -y if ($LASTEXITCODE -ne 0) { exit 1 } choco install visualstudio2022-workload-vctools -y if ($LASTEXITCODE -ne 0) { exit 1 } choco install windowsdriverkit11 -y if ($LASTEXITCODE -ne 0) { exit 1 } # Fix the string conversion warning treated as error - name: Fix string conversion in Driver.cpp run: | $filePath = "Virtual Display Driver (HDR)/MttVDD/Driver.cpp" $content = Get-Content -Path $filePath -Raw $content = $content -replace 'string edidPath\(edidname\.begin\(\), edidname\.end\(\)\);', 'string edidPath = WStringToString(edidname);' Set-Content -Path $filePath -Value $content # Fix the missing InfVerif.dll issue - name: Fix WDK paths for InfVerif run: | # Find where infverif.dll actually exists in the WDK installation Write-Host "Searching for infverif.dll..." Get-ChildItem -Path "C:\Program Files (x86)\Windows Kits\10" -Recurse -Filter "infverif.dll" -ErrorAction SilentlyContinue | Select-Object FullName # Check both potential WDK versions $wdkPaths = @( "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0", "C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0" ) foreach ($basePath in $wdkPaths) { Write-Host "Checking $basePath..." if (Test-Path "$basePath\x86") { # Create the subfolder if it doesn't exist if (-not (Test-Path "$basePath\x86\x86")) { New-Item -Path "$basePath\x86\x86" -ItemType Directory -Force Write-Host "Created directory: $basePath\x86\x86" } # Copy files if they exist if (Test-Path "$basePath\x86\infverif.dll") { Copy-Item "$basePath\x86\infverif.dll" "$basePath\x86\x86\" -Force Write-Host "Copied infverif.dll to $basePath\x86\x86\" } elseif (Test-Path "$basePath\x86\InfVerif.exe") { # Sometimes it's an exe instead of dll Copy-Item "$basePath\x86\InfVerif.exe" "$basePath\x86\x86\" -Force Write-Host "Copied InfVerif.exe to $basePath\x86\x86\" } # List contents to verify Write-Host "Contents of $basePath\x86\x86:" Get-ChildItem "$basePath\x86\x86" -ErrorAction SilentlyContinue } } # Try another approach - check if we need to extract infverif.dll from somewhere Write-Host "Checking for InfVerif.exe..." $infVerifExe = Get-ChildItem -Path "C:\Program Files (x86)\Windows Kits\10" -Recurse -Filter "InfVerif.exe" -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName if ($infVerifExe) { Write-Host "Found InfVerif.exe at: $infVerifExe" $exeDir = Split-Path -Parent $infVerifExe $targetDir = "$exeDir\x86" # Create directory if needed if (-not (Test-Path $targetDir)) { New-Item -Path $targetDir -ItemType Directory -Force Write-Host "Created directory: $targetDir" } # Create a dummy infverif.dll if needed if (-not (Test-Path "$targetDir\infverif.dll")) { # Create empty dll as placeholder (this is a hacky fix but might work) [System.IO.File]::WriteAllBytes("$targetDir\infverif.dll", [byte[]]@(0x4D, 0x5A)) Write-Host "Created placeholder infverif.dll at: $targetDir\infverif.dll" } } # Print the directory structure to help diagnose Write-Host "WDK bin directory structure:" Get-ChildItem "C:\Program Files (x86)\Windows Kits\10\bin" -Recurse -Depth 3 | Where-Object { $_.Name -like "*inf*" -or $_.FullName -like "*\x86\*" } - name: Build the driver run: | msbuild "Virtual Display Driver (HDR)/MTTVDD.sln" /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} - name: List build directory run: dir "Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD" - name: Upload built driver id: upload_artifact uses: actions/upload-artifact@v4 with: name: Built-Driver-${{ matrix.configuration }}-${{ matrix.platform }} path: | Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD\MttVDD.dll Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD\MttVDD.inf Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD\mttvdd.cat Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD\vdd_settings.xml - name: Generate release tag id: generate_tag run: | $releaseTag = (Get-Date).ToString('yy.MM.dd') echo "RELEASE_TAG=$releaseTag" >> $env:GITHUB_ENV - name: Show generated release tag run: | echo "Generated Release Tag: ${{ env.RELEASE_TAG }}" - name: Verify Built Artifacts run: dir 'Virtual Display Driver (HDR)\${{ matrix.platform }}\${{ matrix.configuration }}\MttVDD'