Skip to content

TEST-COMPAT-WIN10-001: Verify Windows 10/11 Compatibility and HLK Compliance #268

Description

@zarfld

Test Objective

Verify that the IntelAvbFilter driver installs and operates correctly on Windows 10 (version 1809+) and Windows 11, using only documented NDIS 6.50+ APIs, passes Windows Hardware Lab Kit (HLK) tests, and supports UEFI Secure Boot.

Traceability

Test Type

  • Type: Compatibility Test (Platform Validation)
  • Level: System Test (driver + OS)
  • Priority: P0 (Critical) - Platform requirement
  • Execution: Manual (OS matrix testing) + Automated (HLK)

Test Environment

Windows Versions (Test Matrix):

  • Windows 10 version 1809 (October 2018) - Minimum supported
  • Windows 10 version 22H2 (latest)
  • Windows 11 21H2 (first release)
  • Windows 11 23H2 (latest)

Hardware:

  • Intel I210/I225 NIC (PCIe)
  • UEFI Secure Boot enabled system
  • x64 architecture only

Tools:

  • Windows Driver Kit (WDK) 10.0.17763.0+
  • Windows Hardware Lab Kit (HLK) for Windows 10/11
  • DevCon.exe (driver installation)
  • Driver Verifier (runtime validation)

Prerequisites

  • Driver signed with EV certificate (required for Secure Boot)
  • INF file configured for Windows 10 1809+ (TargetOSVersion = 10.0.17763)
  • NDIS 6.50+ APIs used exclusively
  • x64 build only (no x86 or ARM64)

Test Procedure

Test Case 1: Install on Windows 10 1809 (Minimum Version)

Steps:

  1. Boot Windows 10 version 1809 (build 17763)
  2. Verify OS version: winver
  3. Install driver: devcon.exe install IntelAvbFilter.inf
  4. Check installation status: sc query IntelAvbFilter

Expected Results:

  • ✅ Driver installs without errors
  • ✅ Service state: RUNNING
  • ✅ Device Manager shows no warnings
  • ✅ All IOCTLs functional (PHC query, TAS/CBS config)

Verification:

# Check Windows version
$osVersion = (Get-WmiObject Win32_OperatingSystem).Version
if ($osVersion -lt "10.0.17763") {
    throw "❌ Windows version too old: $osVersion"
}

# Install driver
devcon.exe install IntelAvbFilter.inf "PCI\VEN_8086&DEV_15F2"  # I225 example

# Verify service running
$service = Get-Service IntelAvbFilter -ErrorAction SilentlyContinue
if ($service.Status -ne "Running") {
    throw "❌ Driver not running"
}

Write-Host "✅ Driver installed on Windows 10 1809"

Test Case 2: Install on Windows 11 23H2 (Latest)

Steps:

  1. Boot Windows 11 version 23H2
  2. Verify OS version: winver
  3. Install driver (same as Test Case 1)
  4. Verify all features functional

Expected Results:

  • ✅ Driver installs without errors
  • ✅ All features work (no API deprecation issues)
  • ✅ No compatibility warnings in Event Viewer

Test Case 3: UEFI Secure Boot Compatibility

Steps:

  1. Enable UEFI Secure Boot in BIOS
  2. Boot Windows 10/11
  3. Verify Secure Boot status: Confirm-SecureBootUEFI
  4. Install driver (must be EV-signed)

Expected Results:

  • ✅ Secure Boot remains enabled after driver installation
  • ✅ Driver loads successfully
  • ✅ No tamper warnings

Verification:

# Check Secure Boot status
if (-not (Confirm-SecureBootUEFI)) {
    throw "❌ Secure Boot not enabled"
}

# Install driver
devcon.exe install IntelAvbFilter.inf "PCI\VEN_8086&DEV_15F2"

# Verify Secure Boot still enabled (driver didn't disable it)
if (-not (Confirm-SecureBootUEFI)) {
    throw "❌ Secure Boot disabled after driver install"
}

Write-Host "✅ Driver compatible with Secure Boot"

Test Case 4: NDIS 6.50+ API Usage Validation

Steps:

  1. Parse driver source code for NDIS API calls
  2. Cross-reference with NDIS 6.50 documentation (WDK)
  3. Verify no deprecated or undocumented APIs used

Expected Results:

  • ✅ All NDIS APIs ≥ version 6.50
  • ✅ No NdisXxx calls from NDIS <6.50
  • ✅ Static assertion in code: C_ASSERT(NDIS_MINIPORT_VERSION >= NDIS_MINIPORT_VERSION_650)

Code Review:

// filter.c - Driver entry point

C_ASSERT(NDIS_MINIPORT_VERSION >= NDIS_MINIPORT_VERSION_650);

NDIS_STATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
    NDIS_FILTER_DRIVER_CHARACTERISTICS characteristics = {0};
    
    characteristics.Header.Type = NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS;
    characteristics.Header.Size = NDIS_SIZEOF_FILTER_DRIVER_CHARACTERISTICS_REVISION_3;  // NDIS 6.50
    characteristics.Header.Revision = NDIS_FILTER_CHARACTERISTICS_REVISION_3;
    
    // ... (rest of initialization)
}

Static Analysis (PowerShell):

# Scan source for deprecated NDIS APIs
$deprecatedApis = @(
    "NdisAllocateMemory",  # Deprecated in NDIS 6.0
    "NdisFreeMemory",      # Deprecated in NDIS 6.0
    "NdisScheduleWorkItem" # Deprecated in NDIS 6.20
)

$sourceFiles = Get-ChildItem -Path "*.c" -Recurse

foreach ($api in $deprecatedApis) {
    $matches = Select-String -Path $sourceFiles -Pattern $api
    
    if ($matches.Count -gt 0) {
        Write-Host "❌ Deprecated API used: $api"
        $matches | ForEach-Object { Write-Host "  $($_.Path):$($_.LineNumber)" }
        exit 1
    }
}

Write-Host "✅ No deprecated NDIS APIs found"

Test Case 5: Windows Hardware Lab Kit (HLK) Tests

Steps:

  1. Set up Windows HLK environment (controller + test client)
  2. Install driver on test client
  3. Run HLK tests for NDIS filters:
    • NDIS Filter Driver Tests
    • Device Fundamentals Tests
    • Static Driver Verifier (SDV)
    • Code Analysis (PREfast)

Expected Results:

  • ✅ All HLK tests pass
  • ✅ Zero failures or warnings
  • ✅ Driver eligible for Windows Hardware Compatibility Program

HLK Test Suite (Key Tests):

  • DF - PNP (disable and enable) with IO Before and After
  • DF - Sleep with IO Before and After
  • NDIS - Filter Driver Tests
  • Static Driver Verifier (SDV)

Execution:

1. Install Windows HLK Studio on controller
2. Install HLK Client on test machine
3. HLK Studio → Select Test Client → Select NIC
4. Run "NDIS Filter Driver" test package
5. Wait for results (may take hours)
6. Export results (XML)

Test Case 6: Driver Verifier Stress Test

Steps:

  1. Enable Driver Verifier for IntelAvbFilter.sys:
    verifier /standard /driver IntelAvbFilter.sys
    
  2. Reboot system
  3. Run stress test (continuous IOCTL calls, network traffic)
  4. Monitor for crashes (5+ hours)

Expected Results:

  • ✅ No BSODs during stress test
  • ✅ No Driver Verifier violations
  • ✅ System remains stable

Stress Test Script (PowerShell):

# Run for 5 hours
$endTime = (Get-Date).AddHours(5)

while ((Get-Date) -lt $endTime) {
    # PHC query (1000 iterations)
    for ($i = 0; $i -lt 1000; $i++) {
        Invoke-AvbIoctl -Code 0x9C40A010 -Output PHC_TIME_QUERY
    }
    
    # Generate network traffic
    ping -n 100 192.168.1.1 > $null
    
    Start-Sleep -Seconds 10
}

Write-Host "✅ Stress test completed (no crashes)"

Test Case 7: Upgrade Path (Windows 10 → 11)

Steps:

  1. Install driver on Windows 10 22H2
  2. Upgrade OS to Windows 11 23H2
  3. Verify driver still functional after upgrade

Expected Results:

  • ✅ Driver survives OS upgrade
  • ✅ No reinstallation required
  • ✅ All features still functional

Test Case 8: Clean Uninstall

Steps:

  1. Install driver
  2. Uninstall via Device Manager or devcon.exe remove
  3. Verify no leftover files or registry keys

Expected Results:

  • ✅ Driver files removed from C:\Windows\System32\drivers\
  • ✅ Service removed (not in sc query)
  • ✅ No orphaned registry keys under HKLM\SYSTEM\CurrentControlSet\Services\IntelAvbFilter

Verification (PowerShell):

# Uninstall
devcon.exe remove "PCI\VEN_8086&DEV_15F2"

# Check files removed
if (Test-Path "C:\Windows\System32\drivers\IntelAvbFilter.sys") {
    throw "❌ Driver file not removed"
}

# Check service removed
$service = Get-Service IntelAvbFilter -ErrorAction SilentlyContinue
if ($service) {
    throw "❌ Service not removed"
}

Write-Host "✅ Clean uninstall verified"

Test Case 9: Multi-NIC Configuration

Steps:

  1. Install 2+ Intel I210/I225 NICs in system
  2. Install driver (binds to all compatible NICs)
  3. Verify each NIC independently functional

Expected Results:

  • ✅ Driver binds to all compatible NICs
  • ✅ Each NIC has separate PHC instance
  • ✅ No conflicts between NICs

Test Case 10: Event Viewer Compatibility Warnings

Steps:

  1. Install driver on Windows 10 1809 and Windows 11 23H2
  2. Check Event Viewer → Windows Logs → System
  3. Filter by Source: "Microsoft-Windows-Kernel-PnP"

Expected Results:

  • ✅ No "compatibility mode" warnings
  • ✅ No API deprecation warnings
  • ✅ No "unsigned driver" warnings (with EV signature)

Pass/Fail Criteria

Pass Criteria

  • ✅ Driver installs on Windows 10 1809 (Test Case 1)
  • ✅ Driver installs on Windows 11 23H2 (Test Case 2)
  • ✅ Secure Boot compatible (Test Case 3)
  • ✅ NDIS 6.50+ APIs only (Test Case 4)
  • ✅ All HLK tests pass (Test Case 5)
  • ✅ No Driver Verifier violations (Test Case 6)
  • ✅ Survives OS upgrade (Test Case 7)
  • ✅ Clean uninstall (Test Case 8)
  • ✅ Multi-NIC support (Test Case 9)
  • ✅ No Event Viewer warnings (Test Case 10)

Fail Criteria

  • ❌ Driver fails to install on Windows 10 1809
  • ❌ Driver fails to install on Windows 11
  • ❌ Secure Boot incompatible (driver rejected)
  • ❌ Deprecated NDIS APIs used
  • ❌ HLK test failures
  • ❌ Driver Verifier violations (BSOD)
  • ❌ Driver lost after OS upgrade
  • ❌ Leftover files/registry keys after uninstall
  • ❌ Compatibility warnings in Event Viewer

Test Data

Windows Versions (Test Matrix):

  • Windows 10 1809 (build 17763) - Minimum
  • Windows 10 22H2 (build 19045) - Latest
  • Windows 11 21H2 (build 22000) - First W11
  • Windows 11 23H2 (build 22631) - Latest

NDIS Version:

  • Minimum: NDIS 6.50 (Windows 10 1809)
  • Driver uses: NDIS 6.50+ APIs only

Expected Event Logs:

  • INFO: "IntelAvbFilter driver started successfully" (Source: IntelAvbFilter)
  • No WARN or ERROR events related to compatibility

Automation

CI/CD Matrix Testing (GitHub Actions):

name: Windows Compatibility

on: [push, pull_request]

strategy:
  matrix:
    os: 
      - windows-2019  # Windows 10 1809
      - windows-2022  # Windows Server 2022 (similar to Win11)

jobs:
  test-install:
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3
      
      - name: Check OS Version
        run: |
          $osVersion = (Get-WmiObject Win32_OperatingSystem).Version
          Write-Host "OS Version: $osVersion"
      
      - name: Build Driver
        run: msbuild IntelAvbFilter.sln /p:Configuration=Release /p:Platform=x64
      
      - name: Install Driver (Test Mode)
        run: |
          bcdedit /set TESTSIGNING ON  # Enable test mode
          devcon.exe install x64/Release/IntelAvbFilter.inf "ROOT\IntelAvbFilter"
      
      - name: Verify Installation
        run: |
          $service = Get-Service IntelAvbFilter -ErrorAction SilentlyContinue
          if (-not $service) {
            throw "❌ Driver not installed"
          }
          Write-Host "✅ Driver installed on ${{ matrix.os }}"

Dependencies

  • Requires: Driver built with WDK 10.0.17763.0+
  • Requires: EV code signing certificate (for Secure Boot)
  • Blocks: Production deployment (must pass HLK)

Notes

  • Windows 10 LTSC: Also supported (uses same WDK version)
  • ARM64: Not currently supported (driver is x64 only)
  • HLK: Required for Windows Hardware Compatibility Program
  • Secure Boot: EV certificate mandatory (Standard Code Signing insufficient)
  • Driver Verifier: Should be part of regular CI testing

Related Issues


Version: 1.0
Created: 2025-12-19
Author: Standards Compliance Team

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions