blob: fb4ca92af6393a3977172ecd0e8aeeeefe77624b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
---
page_type: sample
description: "Demonstrates how to use WIFICX for control flow and NetAdapterCx for data flow."
languages:
- cpp
products:
- windows
- windows-wdk
---
# WIFICX and NetAdapterCx Samples
This sample illustrates how to leverage **WIFICX** for control flow and **NetAdapterCx** for data flow. It supports both **KMDF** and **UMDF(In Preview Stage)** drivers.
## How to Build
1. Mount the EWDK ISO from a local drive (network share paths are not supported).
2. Run `LaunchBuildEnv.cmd`.
3. In the environment created in step 2, type `SetupVSEnv` and press **Enter**.
4. Navigate to the current folder and open the solution file, for example:
`X:\Windows-driver-samples\network\wlan\WIFICX\wificxsampleclient.sln`
5. Build the solution from the Visual Studio UI.
## Interfaces and Abstraction
The sample interacts with three OS components:
- **WDF**
`driver.cpp`, `device.cpp`, and `adapter.cpp` demonstrate proper registration for PnP and power event callbacks. WDF manages system PnP and power requests (e.g., power IRPs), so IHV drivers should follow the flow triggered through these callbacks.
- **WDF Wi-Fi Class Extension (WIFICX)**
`wifixxxxx.cpp` files implement the **control path**, handling commands sent to Wi-Fi firmware (e.g., scan access points, connect, disconnect).
- **WDF NetAdapter Class Extension (NetAdapterCx)**
`netvxxxx` files and classes implement the **data path**, managing network buffers and synchronizing with the control path for transfer start/stop operations.
## Data Buffers from Firmware
The control path uses hardcoded data since this sample does not target real hardware. The data path uses **Emulated Network Link (ENL)**, which connects two virtual network adapters directly. Packets sent over one adapter are delivered to the other and vice versa.
## Supported Scenarios
- [x] Scan access points and report BSS entries to the Windows UI.
- [x] Connect to an open access point from the Windows UI.
- [x] Disconnect from the connected access point.
- [x] Transfer data between two Wi-Fi device instances (e.g., ping and throughput test).
## 🎥 Control & Data Path Demo Video
A walkthrough video demonstrating the Control & Data Path flow are available here:
[▶ Watch Control Path Demo](video/ControlPath.mp4)
[▶ Watch Data Path Demo](video/DataPath.mp4)
|