/*++ Copyright (c) Microsoft Corporation. All rights reserved. Module Name: NetPowerOffload.h Environment: user mode NOTE: This header is generated by stubwork. To modify contents, add or remove or tags in the corresponding .x and .y template files. --*/ #pragma once #ifndef WDF_EXTERN_C #ifdef __cplusplus #define WDF_EXTERN_C extern "C" #define WDF_EXTERN_C_START extern "C" { #define WDF_EXTERN_C_END } #else #define WDF_EXTERN_C #define WDF_EXTERN_C_START #define WDF_EXTERN_C_END #endif #endif WDF_EXTERN_C_START typedef struct _NET_POWER_OFFLOAD_ARP_PARAMETERS { ULONG Size; ULONG Id; NET_IPV4_ADDRESS RemoteIPv4Address; NET_IPV4_ADDRESS HostIPv4Address; NET_ADAPTER_LINK_LAYER_ADDRESS LinkLayerAddress; } NET_POWER_OFFLOAD_ARP_PARAMETERS; inline void NET_POWER_OFFLOAD_ARP_PARAMETERS_INIT( _Out_ NET_POWER_OFFLOAD_ARP_PARAMETERS * Parameters ) { RtlZeroMemory(Parameters, sizeof(*Parameters)); Parameters->Size = sizeof(*Parameters); } typedef struct _NET_POWER_OFFLOAD_NS_PARAMETERS { ULONG Size; ULONG Id; NET_IPV6_ADDRESS RemoteIPv6Address; NET_IPV6_ADDRESS SolicitedNodeIPv6Address; NET_IPV6_ADDRESS TargetIPv6Addresses[2]; NET_ADAPTER_LINK_LAYER_ADDRESS LinkLayerAddress; } NET_POWER_OFFLOAD_NS_PARAMETERS; inline void NET_POWER_OFFLOAD_NS_PARAMETERS_INIT( _Out_ NET_POWER_OFFLOAD_NS_PARAMETERS * Parameters ) { RtlZeroMemory(Parameters, sizeof(*Parameters)); Parameters->Size = sizeof(*Parameters); } typedef enum _NET_POWER_OFFLOAD_TYPE { NetPowerOffloadTypeArp = 1, NetPowerOffloadTypeNS, } NET_POWER_OFFLOAD_TYPE; // // NET Function: NetPowerOffloadGetType // typedef _IRQL_requires_(PASSIVE_LEVEL) WDFAPI NET_POWER_OFFLOAD_TYPE (NTAPI *PFN_NETPOWEROFFLOADGETTYPE)( _In_ PNET_DRIVER_GLOBALS DriverGlobals, _In_ NETPOWEROFFLOAD PowerOffload ); _IRQL_requires_(PASSIVE_LEVEL) FORCEINLINE NET_POWER_OFFLOAD_TYPE NetPowerOffloadGetType( _In_ NETPOWEROFFLOAD PowerOffload ) { #if defined(NET_EVERYTHING_ALWAYS_AVAILABLE) return ((PFN_NETPOWEROFFLOADGETTYPE) NetFunctions[NetPowerOffloadGetTypeTableIndex])(NetDriverGlobals, PowerOffload); #else if (NET_IS_FUNCTION_AVAILABLE(NetPowerOffloadGetType)) { return ((PFN_NETPOWEROFFLOADGETTYPE) NetFunctions[NetPowerOffloadGetTypeTableIndex])(NetDriverGlobals, PowerOffload); } else { ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), NetFrameworkExtensionName, NetPowerOffloadGetTypeTableIndex, FALSE); return (NET_POWER_OFFLOAD_TYPE)0; } #endif } // // NET Function: NetPowerOffloadGetAdapter // typedef _IRQL_requires_(PASSIVE_LEVEL) WDFAPI NETADAPTER (NTAPI *PFN_NETPOWEROFFLOADGETADAPTER)( _In_ PNET_DRIVER_GLOBALS DriverGlobals, _In_ NETPOWEROFFLOAD PowerOffload ); _IRQL_requires_(PASSIVE_LEVEL) FORCEINLINE NETADAPTER NetPowerOffloadGetAdapter( _In_ NETPOWEROFFLOAD PowerOffload ) { #if defined(NET_EVERYTHING_ALWAYS_AVAILABLE) return ((PFN_NETPOWEROFFLOADGETADAPTER) NetFunctions[NetPowerOffloadGetAdapterTableIndex])(NetDriverGlobals, PowerOffload); #else if (NET_IS_FUNCTION_AVAILABLE(NetPowerOffloadGetAdapter)) { return ((PFN_NETPOWEROFFLOADGETADAPTER) NetFunctions[NetPowerOffloadGetAdapterTableIndex])(NetDriverGlobals, PowerOffload); } else { ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), NetFrameworkExtensionName, NetPowerOffloadGetAdapterTableIndex, FALSE); return (NETADAPTER)0; } #endif } // // NET Function: NetPowerOffloadGetArpParameters // typedef _IRQL_requires_(PASSIVE_LEVEL) WDFAPI void (NTAPI *PFN_NETPOWEROFFLOADGETARPPARAMETERS)( _In_ PNET_DRIVER_GLOBALS DriverGlobals, _In_ NETPOWEROFFLOAD PowerOffload, _Inout_ NET_POWER_OFFLOAD_ARP_PARAMETERS* Parameters ); _IRQL_requires_(PASSIVE_LEVEL) FORCEINLINE void NetPowerOffloadGetArpParameters( _In_ NETPOWEROFFLOAD PowerOffload, _Inout_ NET_POWER_OFFLOAD_ARP_PARAMETERS* Parameters ) { #if defined(NET_EVERYTHING_ALWAYS_AVAILABLE) ((PFN_NETPOWEROFFLOADGETARPPARAMETERS) NetFunctions[NetPowerOffloadGetArpParametersTableIndex])(NetDriverGlobals, PowerOffload, Parameters); #else if (NET_IS_FUNCTION_AVAILABLE(NetPowerOffloadGetArpParameters)) { ((PFN_NETPOWEROFFLOADGETARPPARAMETERS) NetFunctions[NetPowerOffloadGetArpParametersTableIndex])(NetDriverGlobals, PowerOffload, Parameters); } else { ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), NetFrameworkExtensionName, NetPowerOffloadGetArpParametersTableIndex, FALSE); } #endif } // // NET Function: NetPowerOffloadGetNSParameters // typedef _IRQL_requires_(PASSIVE_LEVEL) WDFAPI void (NTAPI *PFN_NETPOWEROFFLOADGETNSPARAMETERS)( _In_ PNET_DRIVER_GLOBALS DriverGlobals, _In_ NETPOWEROFFLOAD PowerOffload, _Inout_ NET_POWER_OFFLOAD_NS_PARAMETERS* Parameters ); _IRQL_requires_(PASSIVE_LEVEL) FORCEINLINE void NetPowerOffloadGetNSParameters( _In_ NETPOWEROFFLOAD PowerOffload, _Inout_ NET_POWER_OFFLOAD_NS_PARAMETERS* Parameters ) { #if defined(NET_EVERYTHING_ALWAYS_AVAILABLE) ((PFN_NETPOWEROFFLOADGETNSPARAMETERS) NetFunctions[NetPowerOffloadGetNSParametersTableIndex])(NetDriverGlobals, PowerOffload, Parameters); #else if (NET_IS_FUNCTION_AVAILABLE(NetPowerOffloadGetNSParameters)) { ((PFN_NETPOWEROFFLOADGETNSPARAMETERS) NetFunctions[NetPowerOffloadGetNSParametersTableIndex])(NetDriverGlobals, PowerOffload, Parameters); } else { ((PFN_WDFDRIVERERRORREPORTAPIMISSING) WdfFunctions[WdfDriverErrorReportApiMissingTableIndex])(WdfDriverGlobals, WdfGetDriver(), NetFrameworkExtensionName, NetPowerOffloadGetNSParametersTableIndex, FALSE); } #endif } WDF_EXTERN_C_END