summaryrefslogtreecommitdiff
path: root/network/wlan/WIFICX/drivercode/driver.cpp
diff options
context:
space:
mode:
authorYang You (UU) <[email protected]>2025-12-11 17:51:43 -0800
committerYang You (UU) <[email protected]>2025-12-11 17:51:43 -0800
commit0ee210e9311f3837f6885580767458b9f5a43b1c (patch)
tree0e50fad345da0ef980846cb16ba38520069e8610 /network/wlan/WIFICX/drivercode/driver.cpp
parent308a30fbcd81b9bd374f7b7fed758f72a5136939 (diff)
rename the WIFICX folder into wificx
Diffstat (limited to 'network/wlan/WIFICX/drivercode/driver.cpp')
-rw-r--r--network/wlan/WIFICX/drivercode/driver.cpp210
1 files changed, 0 insertions, 210 deletions
diff --git a/network/wlan/WIFICX/drivercode/driver.cpp b/network/wlan/WIFICX/drivercode/driver.cpp
deleted file mode 100644
index bbc4d151..00000000
--- a/network/wlan/WIFICX/drivercode/driver.cpp
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-#include "precomp.h"
-
-#include "device.h"
-#include "driver.h"
-#include "driver.tmh"
-
-NTSTATUS DriverEntry(
- _In_ PDRIVER_OBJECT driverObject,
- _In_ PUNICODE_STRING registryPath)
-/*++
-
-Routine Description:
- DriverEntry initializes the driver and is the first routine called by the
- system after the driver is loaded. DriverEntry specifies the other entry
- points in the function driver, such as EvtDevice and DriverUnload.
-
-Parameters Description:
-
- DriverObject - represents the instance of the function driver that is loaded
- into memory. DriverEntry must initialize members of DriverObject before it
- returns to the caller. DriverObject is allocated by the system before the
- driver is loaded, and it is released by the system after the system unloads
- the function driver from memory.
-
- RegistryPath - represents the driver specific path in the Registry.
- The function driver can use the path to store driver related data between
- reboots. The path does not store hardware instance specific data.
-
-Return Value:
-
- STATUS_SUCCESS if successful,
- STATUS_UNSUCCESSFUL otherwise.
-
---*/
-{
- NTSTATUS status = STATUS_SUCCESS;
- WDF_DRIVER_CONFIG driverConfig{};
- WDF_OBJECT_ATTRIBUTES attributes;
-
- //
- // Initialize WPP Tracing
- //
- WPP_INIT_TRACING(driverObject, registryPath);
-
- // Since WPP tracing is now initialized, we can use Trace functions
- TraceEntry();
-
- //
- // Register a cleanup callback so that we can call WPP_CLEANUP when
- // the framework driver object is deleted during driver unload.
- //
- WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
- attributes.EvtCleanupCallback = EvtWifiDriverContextCleanup;
-
- WDF_DRIVER_CONFIG_INIT(&driverConfig, EvtWifiDriverDeviceAdd);
- driverConfig.DriverPoolTag = WIFI_DRIVER_DEFAULT_POOL_TAG;
-
- status = WdfDriverCreate(driverObject, registryPath, &attributes, &driverConfig, WDF_NO_HANDLE);
- if (!NT_SUCCESS(status))
- {
- WFCError("WdfDriverCreate failed %!STATUS!", status);
- WPP_CLEANUP(driverObject);
- return status;
- }
-
- TraceExit(status);
-
- return status;
-}
-
-NTSTATUS EvtWifiDriverDeviceAdd(_In_ WDFDRIVER driver, _Inout_ PWDFDEVICE_INIT deviceInit)
-/*++
-Routine Description:
-
- EvtWifiDriverDeviceAdd is called by the framework in response to AddDevice
- call from the PnP manager. We create and initialize a device object to
- represent a new instance of the device.
-
-Arguments:
-
- Driver - Handle to a framework driver object created in DriverEntry
-
- DeviceInit - Pointer to a framework-allocated WDFDEVICE_INIT structure.
-
-Return Value:
-
- NTSTATUS
-
---*/
-{
- UNREFERENCED_PARAMETER(driver);
-
- TraceEntry();
-
- NTSTATUS status = STATUS_SUCCESS;
-
- // Configure the device init for NetAdapterCx (Data Path)
- status = NetDeviceInitConfig(deviceInit);
- if (!NT_SUCCESS(status))
- {
- WFCError("NetDeviceInitConfig failed, status=0x%x", status);
- goto Exit;
- }
-
- // Configure the device init for WifiCx (Control Path)
- status = WifiDeviceInitConfig(deviceInit);
- if (!NT_SUCCESS(status))
- {
- WFCError("WifiDeviceInitConfig failed, status=0x%x", status);
- goto Exit;
- }
-
- // Set PnP and Power Callbacks.
- // [Scope: Only PrepareHardware and ReleaseHardware are implemented in this sample.]
- WDF_PNPPOWER_EVENT_CALLBACKS pnpPowerCallbacks;
- WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnpPowerCallbacks);
- pnpPowerCallbacks.EvtDevicePrepareHardware = EvtDevicePrepareHardware;
- pnpPowerCallbacks.EvtDeviceReleaseHardware = EvtDeviceReleaseHardware;
- WdfDeviceInitSetPnpPowerEventCallbacks(deviceInit, &pnpPowerCallbacks);
-
- // [Scope: ArmWake and DisarmWake are not implemented in this sample.]
- //WDF_POWER_POLICY_EVENT_CALLBACKS powerPolicyCallbacks;
- //WdfDeviceInitSetPowerPolicyEventCallbacks(deviceInit, &powerPolicyCallbacks);
-
- WDFDEVICE wdfIhvDevice{};
- // Create the device object context to store the device specific information
- WDF_OBJECT_ATTRIBUTES ihvDeviceAttributes;
- WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&ihvDeviceAttributes, WIFI_IHV_DEVICE_CONTEXT);
-
- status = WdfDeviceCreate(&deviceInit, &ihvDeviceAttributes, &wdfIhvDevice);
- if (!NT_SUCCESS(status))
- {
- WFCError("WdfDeviceCreate failed, status=0x%x", status);
- goto Exit;
- }
-
- //
- // Create a device interface so that applications can find and talk
- // to us.
- //
- status = WdfDeviceCreateDeviceInterface(wdfIhvDevice, &GUID_WIFICX_SAMPLE_CLIENT_INTERFACE, nullptr);
- if (!NT_SUCCESS(status))
- {
- WFCError("WdfDeviceCreateDeviceInterface failed with status=0x%x", status);
- goto Exit;
- }
-
- // Initialize WifiCx device now that the WDFDEVICE has been created.
- // In short the WifICx is the "wdf managed WDI", so the Wdi core
- // concepts still applies.
- WIFI_DEVICE_CONFIG wifiDeviceConfig;
- WIFI_DEVICE_CONFIG_INIT(
- &wifiDeviceConfig,
- WDI_VERSION_LATEST, // The "WDI" version supported by this Ihv driver
- EvtWifiDeviceSendCommand, // The Wdi command and task, now called "wifirequest".
- EvtWifiDeviceCreateAdapter, // The Wdi "ports", now support by the netadapter instances.
- EvtWifiDeviceCreateWifiDirectDevice); // [Scope: No WiFi Direct support in this sample]
-
- // Initialize the WifiCx device with the configuration above to let OS side ready.
- status = WifiDeviceInitialize(wdfIhvDevice, &wifiDeviceConfig);
- if (!NT_SUCCESS(status))
- {
- WFCError("WifiDeviceInitialize failed, status=0x%x", status);
- goto Exit;
- }
-
- // Get a pointer to the device context structure that we just associated
- // with the device object. We define this structure in the device.h
- // header file. WifiGetIhvDeviceContext is an inline function generated by
- // using the WDF_DECLARE_CONTEXT_TYPE_WITH_NAME macro in device.h.
- // This function will do the type checking and return the device context.
- // If you pass a wrong object handle it will return NULL and assert if
- // run under framework verifier mode.
- auto deviceIhvContext = WifiGetIhvDeviceContext(wdfIhvDevice);
- deviceIhvContext->WdfDevice = wdfIhvDevice;
- deviceIhvContext->WdfTriageInfoPtr = WdfGetTriageInfo();
-
- deviceIhvContext->TlvContext.AllocationContext = 0;
- deviceIhvContext->TlvContext.PeerVersion = WifiDeviceGetOsWdiVersion(wdfIhvDevice);
-
-Exit:
- TraceExit(status);
- return status;
-}
-
-void EvtWifiDriverContextCleanup(_In_ WDFOBJECT DriverObject)
-/*++
-Routine Description:
-
- Free all the resources allocated in DriverEntry.
-
-Arguments:
-
- DriverObject - handle to a WDF Driver object.
-
-Return Value:
-
- VOID.
-
---*/
-{
-#ifndef _KERNEL_MODE
- // follow https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/wdf/using-wpp-software-tracing-in-kmdf-and-umdf-2-drivers.md
- // because UMDF drivers use the kernel-mode signatures of these macros for initializing and cleaning up tracing, the calls look identical for KMDF and UMDF.
- UNREFERENCED_PARAMETER(DriverObject);
-#endif // !_KERNEL_MODE
-
- WPP_CLEANUP(WdfDriverWdmGetDriverObject(static_cast<WDFDRIVER>(DriverObject)));
-}