diff options
16 files changed, 1196 insertions, 0 deletions
diff --git a/network/netadaptercx/netvadapter/README.md b/network/netadaptercx/netvadapter/README.md new file mode 100644 index 00000000..894f5e40 --- /dev/null +++ b/network/netadaptercx/netvadapter/README.md @@ -0,0 +1,113 @@ +--- +page_type: sample +description: "A virtual NIC (NetAdapterCx) miniport driver built on top of netvadapterlibrary, in both KMDF and UMDF flavors." +languages: +- cpp +products: +- windows +- windows-wdk +--- + +# netvadapter — Virtual NIC Sample + +`netvadapter` is a **virtual Ethernet NIC** driver that uses **NetAdapterCx** for its data +path. It links against the shared **netvadapterlibrary** static library (the same library used +by the WIFICX sample) and ships in both **KMDF** and **UMDF** flavors. + +Two `netvadapter` instances can be paired together through the library's **Emulated Network +Link (ENL)**: packets sent on one adapter are delivered to the other and vice‑versa, so you can +run connectivity tests (ping, throughput) entirely in software with no physical hardware. + +--- + +## Layout + +| Path | Description | +| --- | --- | +| `netvadapter.sln` | Solution containing both drivers + the library project references. | +| `build.cmd` | Build wrapper (see **Building** — pins UMDF to 2.33). | +| `km\netvadapterkm.vcxproj` | KMDF driver → `netvadapter.sys` (INF: `km\netvadapter.inf`). | +| `um\netvadapterum.vcxproj` | UMDF driver → `netvadapterum.dll` (INF: `um\netvadapterum.inf`). | +| `drivercode\` | Shared driver source (see below). | + +## Building + +The UMDF driver targets **UMDF 2.33** (to match `netvadapterum.inf`'s +`UmdfLibraryVersion = 2.33.0`), while the shared `netvadapterlibrary` is checked in at **UMDF +2.35** (so the WIFICX sample is unaffected). Because the WDF version must match within a single +binary, **build through `build.cmd`**, which forces the library and driver to 2.33 for this +solution only: + +```cmd +build.cmd :: Debug x64 (defaults) +build.cmd Release x64 +``` + +> A plain `msbuild netvadapter.sln` or a Visual Studio IDE build will fail to link with an +> unresolved `WdfFunctions_02035` symbol, because it does not apply the 2.33 override. + +### Signing the package (test signing) + +The build signs the binaries but does **not** produce a catalog. To create and test‑sign the +catalogs (required to install while in test‑signing mode): + +```cmd +:: From an EWDK environment, for each package folder under x64\<Config>\: +Inf2Cat /driver:.\netvadapterkm /os:10_X64,Server10_X64 +Inf2Cat /driver:.\netvadapterum /os:10_X64,Server10_X64 + +signtool sign /fd SHA256 /sha1 <WDKTestCertThumbprint> /tr http://timestamp.digicert.com /td SHA256 .\netvadapterkm\netvadapter.cat +signtool sign /fd SHA256 /sha1 <WDKTestCertThumbprint> /tr http://timestamp.digicert.com /td SHA256 .\netvadapterum\netvadapterum.cat +``` + +--- + +## Installing + +Enable test signing once (elevated, then reboot), and install the test certificate into the +**Root** and **TrustedPublisher** stores on the target machine. Then install the driver with +`devcon`: + +```cmd +.\devcon.exe install .\netvadapterum.inf root\netvadapterum +``` + +If the command fails, inspect the device‑install log at: + +``` +C:\Windows\INF\setupapi.dev.log +``` + +### Pairing two adapters + +A working link requires **two** `netvadapter` instances. Create both by running the install +command **twice**: + +```cmd +.\devcon.exe install .\netvadapterum.inf root\netvadapterum +.\devcon.exe install .\netvadapterum.inf root\netvadapterum +``` + +Then set the **`MACLastByte`** advanced keyword to 1 and 2 on both adapters via Device Manager → adapter → **Advanced**, or the network adapter +property pages. + +> ⚠️ `MACLastByte` defaults to **0**. If an adapter is left at the default, the device fails +> to start and shows a **yellow bang** (error) in Device Manager. Assign distinct values such as +> `1` and `2` for the pair to link correctly. + +--- + +## Managing the driver + +List installed `net`‑class drivers (to find the `oemNN.inf` published name): + +```cmd +pnputil /enum-drivers /class net +``` + +Remove the driver and prepare for a clean reinstall (substitute the `oemNN.inf` from the command +above): + +```cmd +pnputil /delete-driver oem2.inf /uninstall /force +``` diff --git a/network/netadaptercx/netvadapter/build.cmd b/network/netadaptercx/netvadapter/build.cmd new file mode 100644 index 00000000..3f7c8e5d --- /dev/null +++ b/network/netadaptercx/netvadapter/build.cmd @@ -0,0 +1,25 @@ +@echo off +REM ============================================================================ +REM Build wrapper for netvadapter.sln +REM +REM The netvadapter UM driver targets UMDF 2.33 (matching netvadapterum.inf's +REM UmdfLibraryVersion = 2.33.0). It links the shared netvadapterlibrary, whose +REM checked-in project targets UMDF 2.35 (so the wificx sample is unaffected). +REM +REM WDF version must match within a single binary, so this script forces the +REM library + driver to 2.33 *for this solution's build only* via a global +REM MSBuild property. A plain "msbuild netvadapter.sln" (without these props) +REM will fail to link with an unresolved WdfFunctions_02035 symbol. +REM +REM Usage: build.cmd [Configuration] [Platform] (defaults: Debug x64) +REM Example: build.cmd Release x64 +REM ============================================================================ + +setlocal +set CONFIG=%~1 +set PLAT=%~2 +if "%CONFIG%"=="" set CONFIG=Debug +if "%PLAT%"=="" set PLAT=x64 + +msbuild "%~dp0netvadapter.sln" /t:Build /p:Configuration=%CONFIG% /p:Platform=%PLAT% /p:UMDF_VERSION_MINOR=33 /p:UMDF_MINIMUM_VERSION_REQUIRED=33 /m +endlocal diff --git a/network/netadaptercx/netvadapter/drivercode/device.cpp b/network/netadaptercx/netvadapter/drivercode/device.cpp new file mode 100644 index 00000000..6cbad327 --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/device.cpp @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved + +#include "pch.hpp" + +#include <wil/resource.h> + +#include "netvadapter.h" +#include "device.h" +#include "trace.h" +#include "device.tmh" +#include "power.h" + +static +EVT_NET_ADAPTER_CREATE_TXQUEUE + EvtAdapterCreateTxQueue; + +static +EVT_NET_ADAPTER_CREATE_RXQUEUE + EvtAdapterCreateRxQueue; + +NetvDevice::NetvDevice( + WDFDEVICE Handle +) + : m_triage(WdfGetTriageInfo()) + , m_handle(Handle) +{ +} + +_Use_decl_annotations_ +NTSTATUS +NetvDevice::Initialize( + void +) +{ + using unique_adapterinit = wil::unique_any<NETADAPTER_INIT*, + decltype(&::NetAdapterInitFree), + ::NetAdapterInitFree>; + + unique_adapterinit adapterInit{NetAdapterInitAllocate(m_handle)}; + RETURN_NTSTATUS_IF( + STATUS_INSUFFICIENT_RESOURCES, + ! adapterInit); + + NET_ADAPTER_DATAPATH_CALLBACKS datapathCallbacks; + NET_ADAPTER_DATAPATH_CALLBACKS_INIT( + &datapathCallbacks, + EvtAdapterCreateTxQueue, + EvtAdapterCreateRxQueue); + + NetAdapterInitSetDatapathCallbacks( + adapterInit.get(), + &datapathCallbacks); + + WDF_OBJECT_ATTRIBUTES adapterAttributes; + WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&adapterAttributes, NetvAdapter); + adapterAttributes.EvtDestroyCallback = [](WDFOBJECT Handle) { + NetvAdapterGetContext(static_cast<NETADAPTER>(Handle))->Destroy(); + }; + + NETADAPTER netAdapter; + RETURN_IF_NOT_STATUS_SUCCESS( + NetAdapterCreate(adapterInit.get(), &adapterAttributes, &netAdapter)); + + m_adapter = new (NetvAdapterGetContext(netAdapter)) NetvAdapter(netAdapter, m_handle); + + RETURN_IF_NOT_STATUS_SUCCESS( + m_adapter->Initialize()); + + RETURN_STATUS_SUCCESS(); +} + +NTSTATUS +NetvDevice::PrepareHardware( + WDFCMRESLIST ResourcesRaw, + WDFCMRESLIST ResourcesTranslated +) +{ + UNREFERENCED_PARAMETER(ResourcesRaw); + UNREFERENCED_PARAMETER(ResourcesTranslated); + + NetvDeviceInitializePowerManagement(this); + + RETURN_IF_NOT_STATUS_SUCCESS( + m_adapter->ConfigureDataCapabilities()); + + RETURN_IF_NOT_STATUS_SUCCESS( + NetAdapterStart(m_adapter->m_handle)); + + RETURN_STATUS_SUCCESS(); +} + +_Use_decl_annotations_ +NTSTATUS +EvtDevicePrepareHardware( + WDFDEVICE Device, + WDFCMRESLIST ResourcesRaw, + WDFCMRESLIST ResourcesTranslated + ) +{ + return NetvDeviceGetContext(Device)->PrepareHardware(ResourcesRaw, ResourcesTranslated); +} + +_Use_decl_annotations_ +NTSTATUS +EvtAdapterCreateTxQueue( + NETADAPTER Adapter, + NETTXQUEUE_INIT * Init +) +{ + return NetvAdapterGetContext(Adapter)->CreateTxQueue(Init); +} + +_Use_decl_annotations_ +NTSTATUS +EvtAdapterCreateRxQueue( + NETADAPTER Adapter, + NETRXQUEUE_INIT * Init +) +{ + return NetvAdapterGetContext(Adapter)->CreateRxQueue(Init); +} + +NetvAdapter* NetvAdapterGetContextFromWDFObject(NETADAPTER netAdapter) +{ + return NetvAdapterGetContext(netAdapter); +} diff --git a/network/netadaptercx/netvadapter/drivercode/device.h b/network/netadaptercx/netvadapter/drivercode/device.h new file mode 100644 index 00000000..3b8e5d2d --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/device.h @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved + +#pragma once + +#include "netvadapter.h" + +class NetvDevice +{ + +public: + + // + // Do not add variable before WdfTriageInfoPtr. + // NetAdapterCx carving code requires the first field of + // WDF context to be a pointer to WDF_TRIAGE_INFO. + // + void * + m_triage = nullptr; + + NetvDevice( + WDFDEVICE Handle + ); + + NTSTATUS + Initialize( + void + ); + + NTSTATUS + PrepareHardware( + WDFCMRESLIST ResourcesRaw, + WDFCMRESLIST ResourcesTranslated + ); + +public: // private: + + WDFDEVICE + m_handle = WDF_NO_HANDLE; + + NetvAdapter * + m_adapter = nullptr; + +}; +static_assert(FIELD_OFFSET(NetvDevice, m_triage) == 0u); + +WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(NetvDevice, NetvDeviceGetContext); +WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(NetvAdapter, NetvAdapterGetContext); + +EVT_WDF_DEVICE_PREPARE_HARDWARE + EvtDevicePrepareHardware; diff --git a/network/netadaptercx/netvadapter/drivercode/driver.cpp b/network/netadaptercx/netvadapter/drivercode/driver.cpp new file mode 100644 index 00000000..393292c1 --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/driver.cpp @@ -0,0 +1,98 @@ +// Copyright (c) Microsoft Corporation. All rights reserved + +#include "pch.hpp" + +#include <wil/resource.h> + +#include "netvadapter.h" +#include "trace.h" +#include "driver.tmh" +#include "device.h" +#include "power.h" + +GLOBAL_CONTEXT NetvGlobalContext; + +EXTERN_C +DRIVER_INITIALIZE + DriverEntry; + +EVT_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd; +EVT_WDF_DRIVER_UNLOAD EvtDriverUnload; + +_Use_decl_annotations_ +NTSTATUS +DriverEntry( + PDRIVER_OBJECT DriverObject, + PUNICODE_STRING RegistryPath + ) +{ + WPP_INIT_TRACING(DriverObject, RegistryPath); + + WDF_DRIVER_CONFIG config; + WDF_DRIVER_CONFIG_INIT(&config, EvtDriverDeviceAdd); + config.EvtDriverUnload = EvtDriverUnload; + + NTSTATUS status = WdfDriverCreate(DriverObject, + RegistryPath, + WDF_NO_OBJECT_ATTRIBUTES, + &config, + NULL); + + if (!NT_SUCCESS(status)) + { + LogError(FLAG_DRIVER, "%!STATUS! WdfDriverCreate", status); + WPP_CLEANUP(DriverObject); + + return status; + } + + RETURN_STATUS_SUCCESS(); +} + +_Use_decl_annotations_ +NTSTATUS +EvtDriverDeviceAdd( + WDFDRIVER Driver, + PWDFDEVICE_INIT DeviceInit + ) +{ + UNREFERENCED_PARAMETER(Driver); + + RETURN_IF_NOT_STATUS_SUCCESS( + NetDeviceInitConfig(DeviceInit)); + + WDF_PNPPOWER_EVENT_CALLBACKS pnpPowerCallbacks; + WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnpPowerCallbacks); + pnpPowerCallbacks.EvtDevicePrepareHardware = EvtDevicePrepareHardware; + WdfDeviceInitSetPnpPowerEventCallbacks(DeviceInit, &pnpPowerCallbacks); + + WDF_POWER_POLICY_EVENT_CALLBACKS powerPolicyCallbacks; + WDF_POWER_POLICY_EVENT_CALLBACKS_INIT(&powerPolicyCallbacks); + powerPolicyCallbacks.EvtDeviceArmWakeFromS0 = EvtDeviceArmWakeFromS0; + powerPolicyCallbacks.EvtDeviceDisarmWakeFromS0 = EvtDeviceDisarmWakeFromS0; + WdfDeviceInitSetPowerPolicyEventCallbacks(DeviceInit, &powerPolicyCallbacks); + + WDF_OBJECT_ATTRIBUTES deviceAttributes; + WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, NetvDevice); + + WDFDEVICE wdfDevice; + RETURN_IF_NOT_STATUS_SUCCESS( + WdfDeviceCreate(&DeviceInit, &deviceAttributes, &wdfDevice)); + + auto device = new (NetvDeviceGetContext(wdfDevice)) NetvDevice(wdfDevice); + + RETURN_IF_NOT_STATUS_SUCCESS( + device->Initialize()); + + RETURN_STATUS_SUCCESS(); +} + +_Use_decl_annotations_ +VOID +EvtDriverUnload( + WDFDRIVER Driver +) +{ + UNREFERENCED_PARAMETER(Driver); + WPP_CLEANUP(WdfDriverWdmGetDriverObject(Driver)); +} diff --git a/network/netadaptercx/netvadapter/drivercode/memorymanagement.cpp b/network/netadaptercx/netvadapter/drivercode/memorymanagement.cpp new file mode 100644 index 00000000..29a2006a --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/memorymanagement.cpp @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved +// +// Global operator new / delete for the driver. +// +// The shared netvadapterlibrary routes its allocations through the global +// operator new (see memory.cpp in the library, which provides the nothrow +// variant that forwards to operator new(size_t)). The client driver is +// responsible for providing the backing implementation. We use WDF managed +// memory so that the same implementation works for both KMDF and UMDF, the +// same approach used by the WIFICX sample. + +#include "pch.hpp" + +#define NETV_POOL_TAG 'vteN' + +struct NETV_MEMORY_HEADER +{ + size_t HeaderSize; + WDFMEMORY WdfMemoryHandle; +}; + +static void* AllocateBuffer(size_t Size) +{ + const size_t totalSize = Size + sizeof(NETV_MEMORY_HEADER); + + WDF_OBJECT_ATTRIBUTES attributes; + WDF_OBJECT_ATTRIBUTES_INIT(&attributes); + + WDFMEMORY wdfMemory = WDF_NO_HANDLE; + void* buffer = nullptr; + + if (!NT_SUCCESS(WdfMemoryCreate(&attributes, NonPagedPoolNx, NETV_POOL_TAG, totalSize, &wdfMemory, &buffer))) + { + return nullptr; + } + + RtlZeroMemory(buffer, totalSize); + + auto header = static_cast<NETV_MEMORY_HEADER*>(buffer); + header->HeaderSize = sizeof(NETV_MEMORY_HEADER); + header->WdfMemoryHandle = wdfMemory; + + return reinterpret_cast<void*>(reinterpret_cast<ULONG_PTR>(buffer) + sizeof(NETV_MEMORY_HEADER)); +} + +static void FreeBuffer(void* Buffer) +{ + if (Buffer == nullptr) + { + return; + } + + auto header = reinterpret_cast<NETV_MEMORY_HEADER*>( + reinterpret_cast<ULONG_PTR>(Buffer) - sizeof(NETV_MEMORY_HEADER)); + + NT_ASSERT(header->HeaderSize == sizeof(NETV_MEMORY_HEADER)); + + WdfObjectDelete(header->WdfMemoryHandle); +} + +void* __cdecl operator new(size_t Size) +{ + return AllocateBuffer(Size); +} + +void* __cdecl operator new[](size_t Size) +{ + return AllocateBuffer(Size); +} + +void __cdecl operator delete(void* Buffer) noexcept +{ + FreeBuffer(Buffer); +} + +void __cdecl operator delete[](void* Buffer) noexcept +{ + FreeBuffer(Buffer); +} + +void __cdecl operator delete(void* Buffer, size_t) noexcept +{ + FreeBuffer(Buffer); +} + +void __cdecl operator delete[](void* Buffer, size_t) noexcept +{ + FreeBuffer(Buffer); +} diff --git a/network/netadaptercx/netvadapter/drivercode/pch.hpp b/network/netadaptercx/netvadapter/drivercode/pch.hpp new file mode 100644 index 00000000..b0e017ef --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/pch.hpp @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved +#pragma once + +#include <initguid.h> + +#ifdef _KERNEL_MODE +#include <ntddk.h> +#else +#include <windows.h> +#include <new> +#endif + +#include <wdf.h> +#include <netadaptercx.h> diff --git a/network/netadaptercx/netvadapter/drivercode/power.cpp b/network/netadaptercx/netvadapter/drivercode/power.cpp new file mode 100644 index 00000000..68b057ff --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/power.cpp @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved + +#include "pch.hpp" +#include "netvadapter.h" +#include "device.h" +#include "trace.h" +#include "power.h" +#include "power.tmh" + +void +NetvDeviceInitializePowerManagement( + _In_ NetvDevice * Device +) +{ +#ifdef _KERNEL_MODE + WDFDEVICE wdfDevice = Device->m_handle; + NetvAdapter * adapter = Device->m_adapter; + + if (!adapter->S0Idle) + { + return; + } + + WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS idleSettings; + WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT( + &idleSettings, + IdleCanWakeFromS0); + + idleSettings.IdleTimeout = 3000; + idleSettings.IdleTimeoutType = SystemManagedIdleTimeoutWithHint; + + NTSTATUS ntStatus = WdfDeviceAssignS0IdleSettings( + wdfDevice, + &idleSettings); + + if (ntStatus != STATUS_SUCCESS) + { + // MSDN says we should ignore error codes from assign S0 idle settings, do that + return; + } + + // Now tell NetAdapterCx we support wake on packet filter match + NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES wakeOnPacketFilterMatch; + NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES_INIT(&wakeOnPacketFilterMatch); + wakeOnPacketFilterMatch.PacketFilterMatch = TRUE; + + NetAdapterWakeSetPacketFilterCapabilities(adapter->m_handle, &wakeOnPacketFilterMatch); +#else + UNREFERENCED_PARAMETER(Device); +#endif +} + +_Use_decl_annotations_ +NTSTATUS +EvtDeviceArmWakeFromS0( + WDFDEVICE Device +) +{ + auto adapter = NetvDeviceGetContext(Device)->m_adapter; + adapter->ArmWakeFromS0(); + + return STATUS_SUCCESS; +} + +_Use_decl_annotations_ +void +EvtDeviceDisarmWakeFromS0( + WDFDEVICE Device +) +{ + auto adapter = NetvDeviceGetContext(Device)->m_adapter; + adapter->DisarmWakeFromS0(); +} diff --git a/network/netadaptercx/netvadapter/drivercode/power.h b/network/netadaptercx/netvadapter/drivercode/power.h new file mode 100644 index 00000000..6a5e2399 --- /dev/null +++ b/network/netadaptercx/netvadapter/drivercode/power.h @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved +#pragma once + +EVT_WDF_DEVICE_ARM_WAKE_FROM_S0 EvtDeviceArmWakeFromS0; +EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0 EvtDeviceDisarmWakeFromS0; + +void +NetvDeviceInitializePowerManagement( + _In_ NetvDevice * Device +); diff --git a/network/netadaptercx/netvadapter/km/netvadapter.inf b/network/netadaptercx/netvadapter/km/netvadapter.inf Binary files differnew file mode 100644 index 00000000..a5565a86 --- /dev/null +++ b/network/netadaptercx/netvadapter/km/netvadapter.inf diff --git a/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj b/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj new file mode 100644 index 00000000..c5381da8 --- /dev/null +++ b/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj @@ -0,0 +1,217 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM64"> + <Configuration>Debug</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM64"> + <Configuration>Release</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{B4044984-19DD-456F-9D47-565F59A47F5E}</ProjectGuid> + <TemplateGuid>{1bc93793-694f-48fe-9372-81e2b05556fd}</TemplateGuid> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> + <Configuration>Debug</Configuration> + <Platform Condition="'$(Platform)' == ''">x64</Platform> + <RootNamespace>netvadapterkm</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Windows Driver</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <SupportsPackaging>true</SupportsPackaging> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Windows Driver</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <SupportsPackaging>true</SupportsPackaging> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Windows Driver</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <SupportsPackaging>true</SupportsPackaging> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset> + <ConfigurationType>Driver</ConfigurationType> + <DriverType>KMDF</DriverType> + <DriverTargetPlatform>Windows Driver</DriverTargetPlatform> + <KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR> + <KMDF_VERSION_MINOR>33</KMDF_VERSION_MINOR> + <KMDF_MINIMUM_VERSION_REQUIRED>33</KMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + <NETADAPTER_MINIMUM_VERSION_REQUIRED>4</NETADAPTER_MINIMUM_VERSION_REQUIRED> + <SupportsPackaging>true</SupportsPackaging> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup> + <SkipPackageVerification>true</SkipPackageVerification> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + <RunCodeAnalysis>false</RunCodeAnalysis> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapter</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + <RunCodeAnalysis>false</RunCodeAnalysis> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapter</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + <RunCodeAnalysis>false</RunCodeAnalysis> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapter</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> + <RunCodeAnalysis>false</RunCodeAnalysis> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapter</TargetName> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <WppEnabled>true</WppEnabled> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppRecorderEnabled>true</WppRecorderEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessorDefinitions>_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Inf> + <TimeStamp>1.0</TimeStamp> + </Inf> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <WppEnabled>true</WppEnabled> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppRecorderEnabled>true</WppRecorderEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessorDefinitions>_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Inf> + <TimeStamp>1.0</TimeStamp> + </Inf> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <WppEnabled>true</WppEnabled> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppRecorderEnabled>true</WppRecorderEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessorDefinitions>_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Inf> + <TimeStamp>1.0</TimeStamp> + </Inf> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <WppEnabled>true</WppEnabled> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppRecorderEnabled>true</WppRecorderEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessorDefinitions>_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> + </ClCompile> + <Inf> + <TimeStamp>1.0</TimeStamp> + </Inf> + </ItemDefinitionGroup> + <ItemGroup> + <Inf Include="netvadapter.inf" /> + </ItemGroup> + <ItemGroup> + <FilesToPackage Include="$(TargetPath)" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\driver.cpp" /> + <ClCompile Include="..\drivercode\device.cpp" /> + <ClCompile Include="..\drivercode\power.cpp" /> + <ClCompile Include="..\drivercode\memorymanagement.cpp" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\pch.hpp" /> + <ClInclude Include="..\drivercode\device.h" /> + <ClInclude Include="..\drivercode\power.h" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\netvadapterlibrary\km\netvadapterlibrarykm.vcxproj"> + <Project>{e2a65efd-25cc-4af0-b180-0cd56ee277a9}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj.filters b/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj.filters new file mode 100644 index 00000000..3d80c128 --- /dev/null +++ b/network/netadaptercx/netvadapter/km/netvadapterkm.vcxproj.filters @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Driver Files"> + <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> + <Extensions>inf;inv;inx;mof;mc;</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <Inf Include="netvadapter.inf"> + <Filter>Driver Files</Filter> + </Inf> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\driver.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\device.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\power.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\memorymanagement.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\pch.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\drivercode\device.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\drivercode\power.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project> diff --git a/network/netadaptercx/netvadapter/netvadapter.sln b/network/netadaptercx/netvadapter/netvadapter.sln new file mode 100644 index 00000000..866a8ac2 --- /dev/null +++ b/network/netadaptercx/netvadapter/netvadapter.sln @@ -0,0 +1,82 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 +MinimumVisualStudioVersion = 12.0 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netvadapterkm", "km\netvadapterkm.vcxproj", "{B4044984-19DD-456F-9D47-565F59A47F5E}" + ProjectSection(ProjectDependencies) = postProject + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9} = {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netvadapterum", "um\netvadapterum.vcxproj", "{1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}" + ProjectSection(ProjectDependencies) = postProject + {612F33AD-430C-4FE7-8000-35E15A5EB757} = {612F33AD-430C-4FE7-8000-35E15A5EB757} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netvadapterlibrarykm", "..\netvadapterlibrary\km\netvadapterlibrarykm.vcxproj", "{E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "netvadapterlibraryum", "..\netvadapterlibrary\um\netvadapterlibraryum.vcxproj", "{612F33AD-430C-4FE7-8000-35E15A5EB757}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|ARM64.Build.0 = Debug|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|x64.ActiveCfg = Debug|x64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|x64.Build.0 = Debug|x64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Debug|x64.Deploy.0 = Debug|x64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|ARM64.ActiveCfg = Release|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|ARM64.Build.0 = Release|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|ARM64.Deploy.0 = Release|ARM64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|x64.ActiveCfg = Release|x64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|x64.Build.0 = Release|x64 + {B4044984-19DD-456F-9D47-565F59A47F5E}.Release|x64.Deploy.0 = Release|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|ARM64.Build.0 = Debug|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|x64.ActiveCfg = Debug|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|x64.Build.0 = Debug|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Debug|x64.Deploy.0 = Debug|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|ARM64.ActiveCfg = Release|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|ARM64.Build.0 = Release|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|ARM64.Deploy.0 = Release|ARM64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|x64.ActiveCfg = Release|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|x64.Build.0 = Release|x64 + {1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}.Release|x64.Deploy.0 = Release|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|ARM64.Build.0 = Debug|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|x64.ActiveCfg = Debug|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|x64.Build.0 = Debug|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Debug|x64.Deploy.0 = Debug|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|ARM64.ActiveCfg = Release|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|ARM64.Build.0 = Release|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|ARM64.Deploy.0 = Release|ARM64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|x64.ActiveCfg = Release|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|x64.Build.0 = Release|x64 + {E2A65EFD-25CC-4AF0-B180-0CD56EE277A9}.Release|x64.Deploy.0 = Release|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|ARM64.Build.0 = Debug|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|x64.ActiveCfg = Debug|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|x64.Build.0 = Debug|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Debug|x64.Deploy.0 = Debug|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|ARM64.ActiveCfg = Release|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|ARM64.Build.0 = Release|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|ARM64.Deploy.0 = Release|ARM64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|x64.ActiveCfg = Release|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|x64.Build.0 = Release|x64 + {612F33AD-430C-4FE7-8000-35E15A5EB757}.Release|x64.Deploy.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B869660E-4622-49A7-A458-819E1C98599D} + EndGlobalSection +EndGlobal diff --git a/network/netadaptercx/netvadapter/um/netvadapterum.inf b/network/netadaptercx/netvadapter/um/netvadapterum.inf Binary files differnew file mode 100644 index 00000000..4b55d229 --- /dev/null +++ b/network/netadaptercx/netvadapter/um/netvadapterum.inf diff --git a/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj b/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj new file mode 100644 index 00000000..0dfc43d3 --- /dev/null +++ b/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM64"> + <Configuration>Debug</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM64"> + <Configuration>Release</Configuration> + <Platform>ARM64</Platform> + </ProjectConfiguration> + </ItemGroup> + <ItemGroup> + <Inf Include="netvadapterum.inf" /> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{1CDC2CE3-19F3-4200-87C7-C343FB2D8ED3}</ProjectGuid> + <TemplateGuid>{2177f19c-eb4c-4687-9e7f-f9eec1f12cf1}</TemplateGuid> + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> + <MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion> + <Configuration>Debug</Configuration> + <Platform Condition="'$(Platform)' == ''">x64</Platform> + <RootNamespace>netvadapterum</RootNamespace> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <PropertyGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <PlatformToolset>WindowsUserModeDriver10.0</PlatformToolset> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <DriverTargetPlatform>Universal</DriverTargetPlatform> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>33</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>33</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>33</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>33</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>true</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>33</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>33</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration"> + <TargetVersion>Windows10</TargetVersion> + <UseDebugLibraries>false</UseDebugLibraries> + <UMDF_VERSION_MAJOR>2</UMDF_VERSION_MAJOR> + <UMDF_VERSION_MINOR>33</UMDF_VERSION_MINOR> + <UMDF_MINIMUM_VERSION_REQUIRED>33</UMDF_MINIMUM_VERSION_REQUIRED> + <NetAdapterDriver>true</NetAdapterDriver> + <NETADAPTER_VERSION_MAJOR>2</NETADAPTER_VERSION_MAJOR> + <NETADAPTER_VERSION_MINOR>5</NETADAPTER_VERSION_MINOR> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <PropertyGroup> + <SkipPackageVerification>true</SkipPackageVerification> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapterum</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapterum</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapterum</TargetName> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DebuggerFlavor>DbgengRemoteDebugger</DebuggerFlavor> + <EnableInf2cat>false</EnableInf2cat> + <TargetName>netvadapterum</TargetName> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;$(KIT_SHARED_INC_PATH_WDK);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppEnabled>true</WppEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessToFile>false</PreprocessToFile> + <WppRecorderEnabled>true</WppRecorderEnabled> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;$(KIT_SHARED_INC_PATH_WDK);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppEnabled>true</WppEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessToFile>false</PreprocessToFile> + <WppRecorderEnabled>true</WppRecorderEnabled> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;$(KIT_SHARED_INC_PATH_WDK);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppEnabled>true</WppEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessToFile>false</PreprocessToFile> + <WppRecorderEnabled>true</WppRecorderEnabled> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'"> + <DriverSign> + <FileDigestAlgorithm>sha256</FileDigestAlgorithm> + </DriverSign> + <ClCompile> + <AdditionalIncludeDirectories>..\..\netvadapterlibrary\Interface;..\..\netvadapterlibrary\code;..\..\..\..\wil\include;$(KIT_SHARED_INC_PATH_WDK);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <WppEnabled>true</WppEnabled> + <WppScanConfigurationData>..\..\netvadapterlibrary\code\trace.h</WppScanConfigurationData> + <WppMinimalRebuildFromTracking>false</WppMinimalRebuildFromTracking> + <PreprocessToFile>false</PreprocessToFile> + <WppRecorderEnabled>true</WppRecorderEnabled> + </ClCompile> + </ItemDefinitionGroup> + <ItemGroup> + <FilesToPackage Include="$(TargetPath)" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\pch.hpp" /> + <ClInclude Include="..\drivercode\device.h" /> + <ClInclude Include="..\drivercode\power.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\driver.cpp" /> + <ClCompile Include="..\drivercode\device.cpp" /> + <ClCompile Include="..\drivercode\power.cpp" /> + <ClCompile Include="..\drivercode\memorymanagement.cpp" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\netvadapterlibrary\um\netvadapterlibraryum.vcxproj"> + <Project>{612f33ad-430c-4fe7-8000-35e15a5eb757}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> +</Project> diff --git a/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj.filters b/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj.filters new file mode 100644 index 00000000..b43c1b22 --- /dev/null +++ b/network/netadaptercx/netvadapter/um/netvadapterum.vcxproj.filters @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="Driver Files"> + <UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> + <Extensions>inf;inv;inx;mof;mc;</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <Inf Include="netvadapterum.inf"> + <Filter>Driver Files</Filter> + </Inf> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\drivercode\driver.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\device.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\power.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="..\drivercode\memorymanagement.cpp"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\drivercode\pch.hpp"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\drivercode\device.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="..\drivercode\power.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project> |
