diff options
Diffstat (limited to 'winsup/w32api/include/ddk/ndis.h')
-rw-r--r-- | winsup/w32api/include/ddk/ndis.h | 5317 |
1 files changed, 0 insertions, 5317 deletions
diff --git a/winsup/w32api/include/ddk/ndis.h b/winsup/w32api/include/ddk/ndis.h deleted file mode 100644 index 2e61beaa1..000000000 --- a/winsup/w32api/include/ddk/ndis.h +++ /dev/null @@ -1,5317 +0,0 @@ -/* - * ndis.h - * - * Network Device Interface Specification definitions - * - * This file is part of the w32api package. - * - * Contributors: - * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> - * - * THIS SOFTWARE IS NOT COPYRIGHTED - * - * This source code is offered for use in the public domain. You may - * use, modify or distribute it freely. - * - * This code is distributed in the hope that it will be useful but - * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY - * DISCLAIMED. This includes but is not limited to warranties of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * DEFINES: i386 - Target platform is i386 - * _NDIS_ - Define only for NDIS library - * NDIS_MINIPORT_DRIVER - Define only for NDIS miniport drivers - * NDIS40 - Use NDIS 4.0 structures by default - * NDIS50 - Use NDIS 5.0 structures by default - * NDIS50_MINIPORT - Building NDIS 5.0 miniport driver - * NDIS51_MINIPORT - Building NDIS 5.1 miniport driver - */ -#ifndef __NDIS_H -#define __NDIS_H - -#if __GNUC__ >=3 -#pragma GCC system_header -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include "ntddk.h" -#include "ntddndis.h" -#include "netpnp.h" -#include "netevent.h" -#include <winsock2.h> - -#if defined(_NDIS_) - #define NDISAPI DECLSPEC_EXPORT -#else - #define NDISAPI DECLSPEC_IMPORT -#endif - -#if defined(NDIS50_MINIPORT) -#ifndef NDIS50 -#define NDIS50 -#define NDIS_MINIPORT_MAJOR_VERSION 5 -#define NDIS_MINIPORT_MINOR_VERSION 0 -#endif -#endif /* NDIS50_MINIPORT */ - -#if defined(NDIS51_MINIPORT) -#ifndef NDIS51 -#define NDIS51 -#define NDIS_MINIPORT_MAJOR_VERSION 5 -#define NDIS_MINIPORT_MINOR_VERSION 1 -#endif -#endif /* NDIS51_MINIPORT */ - -/* NDIS 3.0 is default */ -#if !defined(NDIS30) || !defined(NDIS40) || !defined(NDIS50) || !defined(NDIS51) -#define NDIS30 -#endif /* !NDIS30 || !NDIS40 || !NDIS50 || !NDIS51 */ - -#if 1 -/* FIXME: */ -typedef PVOID QUEUED_CLOSE; -#endif - -typedef ULONG NDIS_OID, *PNDIS_OID; - -typedef struct _X_FILTER FDDI_FILTER, *PFDDI_FILTER; -typedef struct _X_FILTER TR_FILTER, *PTR_FILTER; -typedef struct _X_FILTER NULL_FILTER, *PNULL_FILTER; - -typedef struct _REFERENCE { - KSPIN_LOCK SpinLock; - USHORT ReferenceCount; - BOOLEAN Closing; -} REFERENCE, * PREFERENCE; - - -/* NDIS base types */ - -typedef struct _NDIS_SPIN_LOCK { - KSPIN_LOCK SpinLock; - KIRQL OldIrql; -} NDIS_SPIN_LOCK, * PNDIS_SPIN_LOCK; - -typedef struct _NDIS_EVENT { - KEVENT Event; -} NDIS_EVENT, *PNDIS_EVENT; - -typedef PVOID NDIS_HANDLE, *PNDIS_HANDLE; -typedef int NDIS_STATUS, *PNDIS_STATUS; - -typedef ANSI_STRING NDIS_ANSI_STRING, *PNDIS_ANSI_STRING; -typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING; - -typedef MDL NDIS_BUFFER, *PNDIS_BUFFER; -typedef ULONG NDIS_ERROR_CODE, *PNDIS_ERROR_CODE; - - -/* NDIS_STATUS constants */ -#define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS) -#define NDIS_STATUS_PENDING ((NDIS_STATUS)STATUS_PENDING) -#define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L) -#define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L) -#define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L) -#define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L) -#define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L) -#define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L) -#define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L) -#define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L) -#define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L) -#define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L) -#define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L) -#define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL) -#define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL) -#define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL) -#define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL) -#define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL) -#define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL) -#define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L) -#define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L) -#define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L) -#define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION -#define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L) -#define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L) -#define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L) -#define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L) - -#define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L) -#define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L) -#define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L) -#define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW) - -#define NDIS_STATUS_FAILURE ((NDIS_STATUS)STATUS_UNSUCCESSFUL) -#define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES) -#define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L) -#define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L) -#define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L) -#define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L) -#define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L) -#define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L) -#define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L) -#define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL) -#define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL) -#define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL) -#define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL) -#define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL) -#define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED) -#define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL) -#define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L) -#define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L) -#define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L) -#define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L) -#define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L) -#define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L) -#define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L) -#define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L) -#define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L) -#define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L) -#define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL) -#define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL) -#define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL) -#define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL) -#define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL) -#define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL) - -#define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L) -#define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L) -#define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L) -#define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L) -#define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L) -#define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L) -#define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L) -#define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L) -#define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L) -#define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L) - -#define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L) -#define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST) -#define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE) - - -/* NDIS error codes for error logging */ - -#define NDIS_ERROR_CODE_RESOURCE_CONFLICT EVENT_NDIS_RESOURCE_CONFLICT -#define NDIS_ERROR_CODE_OUT_OF_RESOURCES EVENT_NDIS_OUT_OF_RESOURCE -#define NDIS_ERROR_CODE_HARDWARE_FAILURE EVENT_NDIS_HARDWARE_FAILURE -#define NDIS_ERROR_CODE_ADAPTER_NOT_FOUND EVENT_NDIS_ADAPTER_NOT_FOUND -#define NDIS_ERROR_CODE_INTERRUPT_CONNECT EVENT_NDIS_INTERRUPT_CONNECT -#define NDIS_ERROR_CODE_DRIVER_FAILURE EVENT_NDIS_DRIVER_FAILURE -#define NDIS_ERROR_CODE_BAD_VERSION EVENT_NDIS_BAD_VERSION -#define NDIS_ERROR_CODE_TIMEOUT EVENT_NDIS_TIMEOUT -#define NDIS_ERROR_CODE_NETWORK_ADDRESS EVENT_NDIS_NETWORK_ADDRESS -#define NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION EVENT_NDIS_UNSUPPORTED_CONFIGURATION -#define NDIS_ERROR_CODE_INVALID_VALUE_FROM_ADAPTER EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER -#define NDIS_ERROR_CODE_MISSING_CONFIGURATION_PARAMETER EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER -#define NDIS_ERROR_CODE_BAD_IO_BASE_ADDRESS EVENT_NDIS_BAD_IO_BASE_ADDRESS -#define NDIS_ERROR_CODE_RECEIVE_SPACE_SMALL EVENT_NDIS_RECEIVE_SPACE_SMALL -#define NDIS_ERROR_CODE_ADAPTER_DISABLED EVENT_NDIS_ADAPTER_DISABLED - - -/* Memory allocation flags. Used by Ndis[Allocate|Free]Memory */ -#define NDIS_MEMORY_CONTIGUOUS 0x00000001 -#define NDIS_MEMORY_NONCACHED 0x00000002 - -/* NIC attribute flags. Used by NdisMSetAttributes(Ex) */ -#define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT 0x00000001 -#define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT 0x00000002 -#define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS 0x00000004 -#define NDIS_ATTRIBUTE_BUS_MASTER 0x00000008 -#define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER 0x00000010 -#define NDIS_ATTRIBUTE_DESERIALIZE 0x00000020 -#define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 0x00000040 -#define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK 0x00000080 -#define NDIS_ATTRIBUTE_NOT_CO_NDIS 0x00000100 -#define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS 0x00000200 - - -/* Lock */ - -typedef union _NDIS_RW_LOCK_REFCOUNT { - UINT RefCount; - UCHAR cacheLine[16]; -} NDIS_RW_LOCK_REFCOUNT; - -typedef struct _NDIS_RW_LOCK { - union { - struct { - KSPIN_LOCK SpinLock; - PVOID Context; - } s; - UCHAR Reserved[16]; - } u; - - NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS]; -} NDIS_RW_LOCK, *PNDIS_RW_LOCK; - -typedef struct _LOCK_STATE { - USHORT LockState; - KIRQL OldIrql; -} LOCK_STATE, *PLOCK_STATE; - - - -/* Timer */ - -typedef VOID DDKAPI -(*PNDIS_TIMER_FUNCTION)( - /*IN*/ PVOID SystemSpecific1, - /*IN*/ PVOID FunctionContext, - /*IN*/ PVOID SystemSpecific2, - /*IN*/ PVOID SystemSpecific3); - -typedef struct _NDIS_TIMER { - KTIMER Timer; - KDPC Dpc; -} NDIS_TIMER, *PNDIS_TIMER; - - - -/* Hardware */ - -typedef CM_MCA_POS_DATA NDIS_MCA_POS_DATA, *PNDIS_MCA_POS_DATA; -typedef CM_EISA_SLOT_INFORMATION NDIS_EISA_SLOT_INFORMATION, *PNDIS_EISA_SLOT_INFORMATION; -typedef CM_EISA_FUNCTION_INFORMATION NDIS_EISA_FUNCTION_INFORMATION, *PNDIS_EISA_FUNCTION_INFORMATION; -typedef CM_PARTIAL_RESOURCE_LIST NDIS_RESOURCE_LIST, *PNDIS_RESOURCE_LIST; - -/* Hardware status codes (OID_GEN_HARDWARE_STATUS) */ -typedef enum _NDIS_HARDWARE_STATUS { - NdisHardwareStatusReady, - NdisHardwareStatusInitializing, - NdisHardwareStatusReset, - NdisHardwareStatusClosing, - NdisHardwareStatusNotReady -} NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS; - -/* OID_GEN_GET_TIME_CAPS */ -typedef struct _GEN_GET_TIME_CAPS { - ULONG Flags; - ULONG ClockPrecision; -} GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS; - -/* Flag bits */ -#define READABLE_LOCAL_CLOCK 0x00000001 -#define CLOCK_NETWORK_DERIVED 0x00000002 -#define CLOCK_PRECISION 0x00000004 -#define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008 -#define TIMED_SEND_CAPABLE 0x00000010 -#define TIME_STAMP_CAPABLE 0x00000020 - -/* OID_GEN_GET_NETCARD_TIME */ -typedef struct _GEN_GET_NETCARD_TIME { - ULONGLONG ReadTime; -} GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME; - -/* NDIS driver medium (OID_GEN_MEDIA_SUPPORTED / OID_GEN_MEDIA_IN_USE) */ -typedef enum _NDIS_MEDIUM { - NdisMedium802_3, - NdisMedium802_5, - NdisMediumFddi, - NdisMediumWan, - NdisMediumLocalTalk, - NdisMediumDix, - NdisMediumArcnetRaw, - NdisMediumArcnet878_2, - NdisMediumAtm, - NdisMediumWirelessWan, - NdisMediumIrda, - NdisMediumBpc, - NdisMediumCoWan, - NdisMedium1394, - NdisMediumMax -} NDIS_MEDIUM, *PNDIS_MEDIUM; - -/* NDIS packet filter bits (OID_GEN_CURRENT_PACKET_FILTER) */ -#define NDIS_PACKET_TYPE_DIRECTED 0x00000001 -#define NDIS_PACKET_TYPE_MULTICAST 0x00000002 -#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004 -#define NDIS_PACKET_TYPE_BROADCAST 0x00000008 -#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010 -#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020 -#define NDIS_PACKET_TYPE_SMT 0x00000040 -#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080 -#define NDIS_PACKET_TYPE_GROUP 0x00001000 -#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000 -#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000 -#define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000 - -/* NDIS protocol option bits (OID_GEN_PROTOCOL_OPTIONS) */ -#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001 -#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002 -#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004 - -/* NDIS MAC option bits (OID_GEN_MAC_OPTIONS) */ -#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001 -#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002 -#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004 -#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008 -#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010 -#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020 -#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040 -#define NDIS_MAC_OPTION_RESERVED 0x80000000 - -/* State of the LAN media (OID_GEN_MEDIA_CONNECT_STATUS) */ -typedef enum _NDIS_MEDIA_STATE { - NdisMediaStateConnected, - NdisMediaStateDisconnected -} NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE; - -/* OID_GEN_SUPPORTED_GUIDS */ -typedef struct _NDIS_GUID { - GUID Guid; - union { - NDIS_OID Oid; - NDIS_STATUS Status; - } u; - ULONG Size; - ULONG Flags; -} NDIS_GUID, *PNDIS_GUID; - -#define NDIS_GUID_TO_OID 0x00000001 -#define NDIS_GUID_TO_STATUS 0x00000002 -#define NDIS_GUID_ANSI_STRING 0x00000004 -#define NDIS_GUID_UNICODE_STRING 0x00000008 -#define NDIS_GUID_ARRAY 0x00000010 - - -typedef struct _NDIS_PACKET_POOL { - NDIS_SPIN_LOCK SpinLock; - struct _NDIS_PACKET *FreeList; - UINT PacketLength; - UCHAR Buffer[1]; -} NDIS_PACKET_POOL, * PNDIS_PACKET_POOL; - -/* NDIS_PACKET_PRIVATE.Flags constants */ -#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40 -#define fPACKET_ALLOCATED_BY_NDIS 0x80 - -typedef struct _NDIS_PACKET_PRIVATE { - UINT PhysicalCount; - UINT TotalLength; - PNDIS_BUFFER Head; - PNDIS_BUFFER Tail; - PNDIS_PACKET_POOL Pool; - UINT Count; - ULONG Flags; - BOOLEAN ValidCounts; - UCHAR NdisPacketFlags; - USHORT NdisPacketOobOffset; -} NDIS_PACKET_PRIVATE, * PNDIS_PACKET_PRIVATE; - -typedef struct _NDIS_PACKET { - NDIS_PACKET_PRIVATE Private; - _ANONYMOUS_UNION union { - _ANONYMOUS_STRUCT struct { - UCHAR MiniportReserved[2 * sizeof(PVOID)]; - UCHAR WrapperReserved[2 * sizeof(PVOID)]; - } DUMMYSTRUCTNAME; - _ANONYMOUS_STRUCT struct { - UCHAR MiniportReservedEx[3 * sizeof(PVOID)]; - UCHAR WrapperReservedEx[sizeof(PVOID)]; - } DUMMYSTRUCTNAME; - _ANONYMOUS_STRUCT struct { - UCHAR MacReserved[4 * sizeof(PVOID)]; - } DUMMYSTRUCTNAME; - } DUMMYUNIONNAME; - ULONG_PTR Reserved[2]; - UCHAR ProtocolReserved[1]; -} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET; - -typedef enum _NDIS_CLASS_ID { - NdisClass802_3Priority, - NdisClassWirelessWanMbxMailbox, - NdisClassIrdaPacketInfo, - NdisClassAtmAALInfo -} NDIS_CLASS_ID; - -typedef struct MediaSpecificInformation { - UINT NextEntryOffset; - NDIS_CLASS_ID ClassId; - UINT Size; - UCHAR ClassInformation[1]; -} MEDIA_SPECIFIC_INFORMATION; - -typedef struct _NDIS_PACKET_OOB_DATA { - _ANONYMOUS_UNION union { - ULONGLONG TimeToSend; - ULONGLONG TimeSent; - } DUMMYUNIONNAME; - ULONGLONG TimeReceived; - UINT HeaderSize; - UINT SizeMediaSpecificInfo; - PVOID MediaSpecificInformation; - NDIS_STATUS Status; -} NDIS_PACKET_OOB_DATA, *PNDIS_PACKET_OOB_DATA; - -typedef struct _NDIS_PM_PACKET_PATTERN { - ULONG Priority; - ULONG Reserved; - ULONG MaskSize; - ULONG PatternOffset; - ULONG PatternSize; - ULONG PatternFlags; -} NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN; - - -/* Request types used by NdisRequest */ -typedef enum _NDIS_REQUEST_TYPE { - NdisRequestQueryInformation, - NdisRequestSetInformation, - NdisRequestQueryStatistics, - NdisRequestOpen, - NdisRequestClose, - NdisRequestSend, - NdisRequestTransferData, - NdisRequestReset, - NdisRequestGeneric1, - NdisRequestGeneric2, - NdisRequestGeneric3, - NdisRequestGeneric4 -} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE; - -typedef struct _NDIS_REQUEST { - UCHAR MacReserved[4 * sizeof(PVOID)]; - NDIS_REQUEST_TYPE RequestType; - union _DATA { - struct QUERY_INFORMATION { - NDIS_OID Oid; - PVOID InformationBuffer; - UINT InformationBufferLength; - UINT BytesWritten; - UINT BytesNeeded; - } QUERY_INFORMATION; - struct SET_INFORMATION { - NDIS_OID Oid; - PVOID InformationBuffer; - UINT InformationBufferLength; - UINT BytesRead; - UINT BytesNeeded; - } SET_INFORMATION; - } DATA; -#if (defined(NDIS50) || defined(NDIS51)) - UCHAR NdisReserved[9 * sizeof(PVOID)]; - union { - UCHAR CallMgrReserved[2 * sizeof(PVOID)]; - UCHAR ProtocolReserved[2 * sizeof(PVOID)]; - }; - UCHAR MiniportReserved[2 * sizeof(PVOID)]; -#endif -} NDIS_REQUEST, *PNDIS_REQUEST; - - - -/* Wide Area Networks definitions */ - -typedef struct _NDIS_WAN_PACKET { - LIST_ENTRY WanPacketQueue; - PUCHAR CurrentBuffer; - ULONG CurrentLength; - PUCHAR StartBuffer; - PUCHAR EndBuffer; - PVOID ProtocolReserved1; - PVOID ProtocolReserved2; - PVOID ProtocolReserved3; - PVOID ProtocolReserved4; - PVOID MacReserved1; - PVOID MacReserved2; - PVOID MacReserved3; - PVOID MacReserved4; -} NDIS_WAN_PACKET, *PNDIS_WAN_PACKET; - - - -/* DMA channel information */ - -typedef struct _NDIS_DMA_DESCRIPTION { - BOOLEAN DemandMode; - BOOLEAN AutoInitialize; - BOOLEAN DmaChannelSpecified; - DMA_WIDTH DmaWidth; - DMA_SPEED DmaSpeed; - ULONG DmaPort; - ULONG DmaChannel; -} NDIS_DMA_DESCRIPTION, *PNDIS_DMA_DESCRIPTION; - -typedef struct _NDIS_DMA_BLOCK { - PVOID MapRegisterBase; - KEVENT AllocationEvent; - PADAPTER_OBJECT SystemAdapterObject; - PVOID Miniport; - BOOLEAN InProgress; -} NDIS_DMA_BLOCK, *PNDIS_DMA_BLOCK; - - -/* Possible hardware architecture */ -typedef enum _NDIS_INTERFACE_TYPE { - NdisInterfaceInternal = Internal, - NdisInterfaceIsa = Isa, - NdisInterfaceEisa = Eisa, - NdisInterfaceMca = MicroChannel, - NdisInterfaceTurboChannel = TurboChannel, - NdisInterfacePci = PCIBus, - NdisInterfacePcMcia = PCMCIABus, - NdisInterfaceCBus = CBus, - NdisInterfaceMPIBus = MPIBus, - NdisInterfaceMPSABus = MPSABus, - NdisInterfaceProcessorInternal = ProcessorInternal, - NdisInterfaceInternalPowerBus = InternalPowerBus, - NdisInterfacePNPISABus = PNPISABus, - NdisInterfacePNPBus = PNPBus, - NdisMaximumInterfaceType -} NDIS_INTERFACE_TYPE, *PNDIS_INTERFACE_TYPE; - -#define NdisInterruptLevelSensitive LevelSensitive -#define NdisInterruptLatched Latched -typedef KINTERRUPT_MODE NDIS_INTERRUPT_MODE, *PNDIS_INTERRUPT_MODE; - - -typedef enum _NDIS_PARAMETER_TYPE { - NdisParameterInteger, - NdisParameterHexInteger, - NdisParameterString, - NdisParameterMultiString, - NdisParameterBinary -} NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE; - -typedef struct { - USHORT Length; - PVOID Buffer; -} BINARY_DATA; - -typedef struct _NDIS_CONFIGURATION_PARAMETER { - NDIS_PARAMETER_TYPE ParameterType; - union { - ULONG IntegerData; - NDIS_STRING StringData; - BINARY_DATA BinaryData; - } ParameterData; -} NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER; - - -typedef PHYSICAL_ADDRESS NDIS_PHYSICAL_ADDRESS, *PNDIS_PHYSICAL_ADDRESS; - -typedef struct _NDIS_PHYSICAL_ADDRESS_UNIT { - NDIS_PHYSICAL_ADDRESS PhysicalAddress; - UINT Length; -} NDIS_PHYSICAL_ADDRESS_UNIT, *PNDIS_PHYSICAL_ADDRESS_UNIT; - -typedef struct _NDIS_WAN_LINE_DOWN { - UCHAR RemoteAddress[6]; - UCHAR LocalAddress[6]; -} NDIS_WAN_LINE_DOWN, *PNDIS_WAN_LINE_DOWN; - -typedef struct _NDIS_WAN_LINE_UP { - ULONG LinkSpeed; - ULONG MaximumTotalSize; - NDIS_WAN_QUALITY Quality; - USHORT SendWindow; - UCHAR RemoteAddress[6]; - /*OUT*/ UCHAR LocalAddress[6]; - ULONG ProtocolBufferLength; - PUCHAR ProtocolBuffer; - USHORT ProtocolType; - NDIS_STRING DeviceName; -} NDIS_WAN_LINE_UP, *PNDIS_WAN_LINE_UP; - - -typedef VOID DDKAPI -(*ADAPTER_SHUTDOWN_HANDLER)( - /*IN*/ PVOID ShutdownContext); - - -typedef struct _OID_LIST OID_LIST, *POID_LIST; - -/* PnP state */ - -typedef enum _NDIS_PNP_DEVICE_STATE { - NdisPnPDeviceAdded, - NdisPnPDeviceStarted, - NdisPnPDeviceQueryStopped, - NdisPnPDeviceStopped, - NdisPnPDeviceQueryRemoved, - NdisPnPDeviceRemoved, - NdisPnPDeviceSurpriseRemoved -} NDIS_PNP_DEVICE_STATE; - -#define NDIS_DEVICE_NOT_STOPPABLE 0x00000001 -#define NDIS_DEVICE_NOT_REMOVEABLE 0x00000002 -#define NDIS_DEVICE_NOT_SUSPENDABLE 0x00000004 -#define NDIS_DEVICE_DISABLE_PM 0x00000008 -#define NDIS_DEVICE_DISABLE_WAKE_UP 0x00000010 -#define NDIS_DEVICE_DISABLE_WAKE_ON_RECONNECT 0x00000020 -#define NDIS_DEVICE_RESERVED 0x00000040 -#define NDIS_DEVICE_DISABLE_WAKE_ON_MAGIC_PACKET 0x00000080 -#define NDIS_DEVICE_DISABLE_WAKE_ON_PATTERN_MATCH 0x00000100 - - -/* OID_GEN_NETWORK_LAYER_ADDRESSES */ -typedef struct _NETWORK_ADDRESS { - USHORT AddressLength; - USHORT AddressType; - UCHAR Address[1]; -} NETWORK_ADDRESS, *PNETWORK_ADDRESS; - -typedef struct _NETWORK_ADDRESS_LIST { - LONG AddressCount; - USHORT AddressType; - NETWORK_ADDRESS Address[1]; -} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST; - -/* Protocol types supported by NDIS */ -#define NDIS_PROTOCOL_ID_DEFAULT 0x00 -#define NDIS_PROTOCOL_ID_TCP_IP 0x02 -#define NDIS_PROTOCOL_ID_IPX 0x06 -#define NDIS_PROTOCOL_ID_NBF 0x07 -#define NDIS_PROTOCOL_ID_MAX 0x0F -#define NDIS_PROTOCOL_ID_MASK 0x0F - - -/* OID_GEN_TRANSPORT_HEADER_OFFSET */ -typedef struct _TRANSPORT_HEADER_OFFSET { - USHORT ProtocolType; - USHORT HeaderOffset; -} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET; - - -/* OID_GEN_CO_LINK_SPEED / OID_GEN_CO_MINIMUM_LINK_SPEED */ -typedef struct _NDIS_CO_LINK_SPEED { - ULONG Outbound; - ULONG Inbound; -} NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED; - -typedef ULONG NDIS_AF, *PNDIS_AF; -#define CO_ADDRESS_FAMILY_Q2931 ((NDIS_AF)0x1) -#define CO_ADDRESS_FAMILY_PSCHED ((NDIS_AF)0x2) -#define CO_ADDRESS_FAMILY_L2TP ((NDIS_AF)0x3) -#define CO_ADDRESS_FAMILY_IRDA ((NDIS_AF)0x4) -#define CO_ADDRESS_FAMILY_1394 ((NDIS_AF)0x5) -#define CO_ADDRESS_FAMILY_PPP ((NDIS_AF)0x6) -#define CO_ADDRESS_FAMILY_TAPI ((NDIS_AF)0x800) -#define CO_ADDRESS_FAMILY_TAPI_PROXY ((NDIS_AF)0x801) - -#define CO_ADDRESS_FAMILY_PROXY 0x80000000 - -typedef struct { - NDIS_AF AddressFamily; - ULONG MajorVersion; - ULONG MinorVersion; -} CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY; - -typedef struct _CO_FLOW_PARAMETERS { - ULONG TokenRate; - ULONG TokenBucketSize; - ULONG PeakBandwidth; - ULONG Latency; - ULONG DelayVariation; - SERVICETYPE ServiceType; - ULONG MaxSduSize; - ULONG MinimumPolicedSize; -} CO_FLOW_PARAMETERS, *PCO_FLOW_PARAMETERS; - -typedef struct _CO_SPECIFIC_PARAMETERS { - ULONG ParamType; - ULONG Length; - UCHAR Parameters[1]; -} CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS; - -typedef struct _CO_CALL_MANAGER_PARAMETERS { - CO_FLOW_PARAMETERS Transmit; - CO_FLOW_PARAMETERS Receive; - CO_SPECIFIC_PARAMETERS CallMgrSpecific; -} CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS; - -/* CO_MEDIA_PARAMETERS.Flags constants */ -#define RECEIVE_TIME_INDICATION 0x00000001 -#define USE_TIME_STAMPS 0x00000002 -#define TRANSMIT_VC 0x00000004 -#define RECEIVE_VC 0x00000008 -#define INDICATE_ERRED_PACKETS 0x00000010 -#define INDICATE_END_OF_TX 0x00000020 -#define RESERVE_RESOURCES_VC 0x00000040 -#define ROUND_DOWN_FLOW 0x00000080 -#define ROUND_UP_FLOW 0x00000100 - -typedef struct _CO_MEDIA_PARAMETERS { - ULONG Flags; - ULONG ReceivePriority; - ULONG ReceiveSizeHint; - CO_SPECIFIC_PARAMETERS MediaSpecific; -} CO_MEDIA_PARAMETERS, *PCO_MEDIA_PARAMETERS; - -/* CO_CALL_PARAMETERS.Flags constants */ -#define PERMANENT_VC 0x00000001 -#define CALL_PARAMETERS_CHANGED 0x00000002 -#define QUERY_CALL_PARAMETERS 0x00000004 -#define BROADCAST_VC 0x00000008 -#define MULTIPOINT_VC 0x00000010 - -typedef struct _CO_CALL_PARAMETERS { - ULONG Flags; - PCO_CALL_MANAGER_PARAMETERS CallMgrParameters; - PCO_MEDIA_PARAMETERS MediaParameters; -} CO_CALL_PARAMETERS, *PCO_CALL_PARAMETERS; - -typedef struct _CO_SAP { - ULONG SapType; - ULONG SapLength; - UCHAR Sap[1]; -} CO_SAP, *PCO_SAP; - -typedef struct _NDIS_IPSEC_PACKET_INFO { - _ANONYMOUS_UNION union { - struct { - NDIS_HANDLE OffloadHandle; - NDIS_HANDLE NextOffloadHandle; - } Transmit; - struct { - ULONG SA_DELETE_REQ : 1; - ULONG CRYPTO_DONE : 1; - ULONG NEXT_CRYPTO_DONE : 1; - ULONG CryptoStatus; - } Receive; - } DUMMYUNIONNAME; -} NDIS_IPSEC_PACKET_INFO, *PNDIS_IPSEC_PACKET_INFO; - -/* NDIS_MAC_FRAGMENT.Errors constants */ -#define WAN_ERROR_CRC 0x00000001 -#define WAN_ERROR_FRAMING 0x00000002 -#define WAN_ERROR_HARDWAREOVERRUN 0x00000004 -#define WAN_ERROR_BUFFEROVERRUN 0x00000008 -#define WAN_ERROR_TIMEOUT 0x00000010 -#define WAN_ERROR_ALIGNMENT 0x00000020 - -typedef struct _NDIS_MAC_FRAGMENT { - NDIS_HANDLE NdisLinkContext; - ULONG Errors; -} NDIS_MAC_FRAGMENT, *PNDIS_MAC_FRAGMENT; - -typedef struct _NDIS_MAC_LINE_DOWN { - NDIS_HANDLE NdisLinkContext; -} NDIS_MAC_LINE_DOWN, *PNDIS_MAC_LINE_DOWN; - -typedef struct _NDIS_MAC_LINE_UP { - ULONG LinkSpeed; - NDIS_WAN_QUALITY Quality; - USHORT SendWindow; - NDIS_HANDLE ConnectionWrapperID; - NDIS_HANDLE NdisLinkHandle; - NDIS_HANDLE NdisLinkContext; -} NDIS_MAC_LINE_UP, *PNDIS_MAC_LINE_UP; - -typedef struct _NDIS_PACKET_8021Q_INFO { - _ANONYMOUS_UNION union { - struct { - UINT32 UserPriority : 3; - UINT32 CanonicalFormatId : 1; - UINT32 VlanId : 12; - UINT32 Reserved : 16; - } TagHeader; - PVOID Value; - } DUMMYUNIONNAME; -} NDIS_PACKET_8021Q_INFO, *PNDIS_PACKET_8021Q_INFO; - -typedef enum _NDIS_PER_PACKET_INFO { - TcpIpChecksumPacketInfo, - IpSecPacketInfo, - TcpLargeSendPacketInfo, - ClassificationHandlePacketInfo, - NdisReserved, - ScatterGatherListPacketInfo, - Ieee8021QInfo, - OriginalPacketInfo, - PacketCancelId, - MaxPerPacketInfo -} NDIS_PER_PACKET_INFO, *PNDIS_PER_PACKET_INFO; - -typedef struct _NDIS_PACKET_EXTENSION { - PVOID NdisPacketInfo[MaxPerPacketInfo]; -} NDIS_PACKET_EXTENSION, *PNDIS_PACKET_EXTENSION; - -/* - * PNDIS_PACKET - * NDIS_GET_ORIGINAL_PACKET( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_ORIGINAL_PACKET(Packet) \ - NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) - -/* - * PVOID - * NDIS_GET_PACKET_CANCEL_ID( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_CANCEL_ID(Packet) \ - NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) - -/* - * PNDIS_PACKET_EXTENSION - * NDIS_PACKET_EXTENSION_FROM_PACKET( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_PACKET_EXTENSION_FROM_PACKET(Packet) \ - ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) \ - + (Packet)->Private.NdisPacketOobOffset + sizeof(NDIS_PACKET_OOB_DATA))) - -/* - * PVOID - * NDIS_PER_PACKET_INFO_FROM_PACKET( - * IN OUT PNDIS_PACKET Packet, - * IN NDIS_PER_PACKET_INFO InfoType); - */ -#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType) \ - ((PNDIS_PACKET_EXTENSION)((PUCHAR)(Packet) + (Packet)->Private.NdisPacketOobOffset \ - + sizeof(NDIS_PACKET_OOB_DATA)))->NdisPacketInfo[(InfoType)] - -/* - * VOID - * NDIS_SET_ORIGINAL_PACKET( - * IN OUT PNDIS_PACKET Packet, - * IN PNDIS_PACKET OriginalPacket); - */ -#define NDIS_SET_ORIGINAL_PACKET(Packet, OriginalPacket) \ - NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, OriginalPacketInfo) = (OriginalPacket) - -/* - * VOID - * NDIS_SET_PACKET_CANCEL_ID( - * IN PNDIS_PACKET Packet - * IN ULONG_PTR CancelId); - */ -#define NDIS_SET_PACKET_CANCEL_ID(Packet, CancelId) \ - NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, PacketCancelId) = (CancelId) - -typedef enum _NDIS_TASK { - TcpIpChecksumNdisTask, - IpSecNdisTask, - TcpLargeSendNdisTask, - MaxNdisTask -} NDIS_TASK, *PNDIS_TASK; - -typedef struct _NDIS_TASK_IPSEC { - struct { - ULONG AH_ESP_COMBINED; - ULONG TRANSPORT_TUNNEL_COMBINED; - ULONG V4_OPTIONS; - ULONG RESERVED; - } Supported; - - struct { - ULONG MD5 : 1; - ULONG SHA_1 : 1; - ULONG Transport : 1; - ULONG Tunnel : 1; - ULONG Send : 1; - ULONG Receive : 1; - } V4AH; - - struct { - ULONG DES : 1; - ULONG RESERVED : 1; - ULONG TRIPLE_DES : 1; - ULONG NULL_ESP : 1; - ULONG Transport : 1; - ULONG Tunnel : 1; - ULONG Send : 1; - ULONG Receive : 1; - } V4ESP; -} NDIS_TASK_IPSEC, *PNDIS_TASK_IPSEC; - -typedef enum _NDIS_ENCAPSULATION { - UNSPECIFIED_Encapsulation, - NULL_Encapsulation, - IEEE_802_3_Encapsulation, - IEEE_802_5_Encapsulation, - LLC_SNAP_ROUTED_Encapsulation, - LLC_SNAP_BRIDGED_Encapsulation -} NDIS_ENCAPSULATION; - -typedef struct _NDIS_ENCAPSULATION_FORMAT { - NDIS_ENCAPSULATION Encapsulation; - struct { - ULONG FixedHeaderSize : 1; - ULONG Reserved : 31; - } Flags; - ULONG EncapsulationHeaderSize; -} NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT; - -typedef struct _NDIS_TASK_OFFLOAD_HEADER -{ - ULONG Version; - ULONG Size; - ULONG Reserved; - UCHAR OffsetFirstTask; - NDIS_ENCAPSULATION_FORMAT EncapsulationFormat; -} NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER; - -typedef struct _NDIS_TASK_OFFLOAD { - ULONG Version; - ULONG Size; - NDIS_TASK Task; - ULONG OffsetNextTask; - ULONG TaskBufferLength; - UCHAR TaskBuffer[1]; -} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD; - -/* NDIS_TASK_OFFLOAD_HEADER.Version constants */ -#define NDIS_TASK_OFFLOAD_VERSION 1 - -typedef struct _NDIS_TASK_TCP_IP_CHECKSUM { - struct { - ULONG IpOptionsSupported:1; - ULONG TcpOptionsSupported:1; - ULONG TcpChecksum:1; - ULONG UdpChecksum:1; - ULONG IpChecksum:1; - } V4Transmit; - - struct { - ULONG IpOptionsSupported : 1; - ULONG TcpOptionsSupported : 1; - ULONG TcpChecksum : 1; - ULONG UdpChecksum : 1; - ULONG IpChecksum : 1; - } V4Receive; - - struct { - ULONG IpOptionsSupported : 1; - ULONG TcpOptionsSupported : 1; - ULONG TcpChecksum : 1; - ULONG UdpChecksum : 1; - } V6Transmit; - - struct { - ULONG IpOptionsSupported : 1; - ULONG TcpOptionsSupported : 1; - ULONG TcpChecksum : 1; - ULONG UdpChecksum : 1; - } V6Receive; -} NDIS_TASK_TCP_IP_CHECKSUM, *PNDIS_TASK_TCP_IP_CHECKSUM; - -typedef struct _NDIS_TASK_TCP_LARGE_SEND { - ULONG Version; - ULONG MaxOffLoadSize; - ULONG MinSegmentCount; - BOOLEAN TcpOptions; - BOOLEAN IpOptions; -} NDIS_TASK_TCP_LARGE_SEND, *PNDIS_TASK_TCP_LARGE_SEND; - -typedef struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO { - _ANONYMOUS_UNION union { - struct { - ULONG NdisPacketChecksumV4 : 1; - ULONG NdisPacketChecksumV6 : 1; - ULONG NdisPacketTcpChecksum : 1; - ULONG NdisPacketUdpChecksum : 1; - ULONG NdisPacketIpChecksum : 1; - } Transmit; - - struct { - ULONG NdisPacketTcpChecksumFailed : 1; - ULONG NdisPacketUdpChecksumFailed : 1; - ULONG NdisPacketIpChecksumFailed : 1; - ULONG NdisPacketTcpChecksumSucceeded : 1; - ULONG NdisPacketUdpChecksumSucceeded : 1; - ULONG NdisPacketIpChecksumSucceeded : 1; - ULONG NdisPacketLoopback : 1; - } Receive; - ULONG Value; - } DUMMYUNIONNAME; -} NDIS_TCP_IP_CHECKSUM_PACKET_INFO, *PNDIS_TCP_IP_CHECKSUM_PACKET_INFO; - -typedef struct _NDIS_WAN_CO_FRAGMENT { - ULONG Errors; -} NDIS_WAN_CO_FRAGMENT, *PNDIS_WAN_CO_FRAGMENT; - -typedef struct _NDIS_WAN_FRAGMENT { - UCHAR RemoteAddress[6]; - UCHAR LocalAddress[6]; -} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT; - -typedef struct _WAN_CO_LINKPARAMS { - ULONG TransmitSpeed; - ULONG ReceiveSpeed; - ULONG SendWindow; -} WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS; - - -/* Call Manager */ - -typedef VOID DDKAPI -(*CM_ACTIVATE_VC_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef NDIS_STATUS DDKAPI -(*CM_ADD_PARTY_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters, - /*IN*/ NDIS_HANDLE NdisPartyHandle, - /*OUT*/ PNDIS_HANDLE CallMgrPartyContext); - -typedef NDIS_STATUS DDKAPI -(*CM_CLOSE_AF_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrAfContext); - -typedef NDIS_STATUS DDKAPI -(*CM_CLOSE_CALL_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN*/ NDIS_HANDLE CallMgrPartyContext /*OPTIONAL*/, - /*IN*/ PVOID CloseData /*OPTIONAL*/, - /*IN*/ UINT Size /*OPTIONAL*/); - -typedef NDIS_STATUS DDKAPI -(*CM_DEREG_SAP_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrSapContext); - -typedef VOID DDKAPI -(*CM_DEACTIVATE_VC_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE CallMgrVcContext); - -typedef NDIS_STATUS DDKAPI -(*CM_DROP_PARTY_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrPartyContext, - /*IN*/ PVOID CloseData /*OPTIONAL*/, - /*IN*/ UINT Size /*OPTIONAL*/); - -typedef VOID DDKAPI -(*CM_INCOMING_CALL_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef NDIS_STATUS DDKAPI -(*CM_MAKE_CALL_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*OUT*/ PNDIS_HANDLE CallMgrPartyContext /*OPTIONAL*/); - -typedef NDIS_STATUS DDKAPI -(*CM_MODIFY_CALL_QOS_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrVcContext, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef NDIS_STATUS DDKAPI -(*CM_OPEN_AF_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrBindingContext, - /*IN*/ PCO_ADDRESS_FAMILY AddressFamily, - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*OUT*/ PNDIS_HANDLE CallMgrAfContext); - -typedef NDIS_STATUS DDKAPI -(*CM_REG_SAP_HANDLER)( - /*IN*/ NDIS_HANDLE CallMgrAfContext, - /*IN*/ PCO_SAP Sap, - /*IN*/ NDIS_HANDLE NdisSapHandle, - /*OUT*/ PNDIS_HANDLE CallMgrSapContext); - -typedef NDIS_STATUS DDKAPI -(*CO_CREATE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolAfContext, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*OUT*/ PNDIS_HANDLE ProtocolVcContext); - -typedef NDIS_STATUS DDKAPI -(*CO_DELETE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolVcContext); - -typedef VOID DDKAPI -(*CO_REQUEST_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolAfContext /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE ProtocolVcContext /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE ProtocolPartyContext /*OPTIONAL*/, - /*IN*/ PNDIS_REQUEST NdisRequest); - -typedef NDIS_STATUS DDKAPI -(*CO_REQUEST_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolAfContext, - /*IN*/ NDIS_HANDLE ProtocolVcContext /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE ProtocolPartyContext /*OPTIONAL*/, - /*IN OUT*/ PNDIS_REQUEST NdisRequest); - -typedef struct _NDIS_CALL_MANAGER_CHARACTERISTICS { - UCHAR MajorVersion; - UCHAR MinorVersion; - USHORT Filler; - UINT Reserved; - CO_CREATE_VC_HANDLER CmCreateVcHandler; - CO_DELETE_VC_HANDLER CmDeleteVcHandler; - CM_OPEN_AF_HANDLER CmOpenAfHandler; - CM_CLOSE_AF_HANDLER CmCloseAfHandler; - CM_REG_SAP_HANDLER CmRegisterSapHandler; - CM_DEREG_SAP_HANDLER CmDeregisterSapHandler; - CM_MAKE_CALL_HANDLER CmMakeCallHandler; - CM_CLOSE_CALL_HANDLER CmCloseCallHandler; - CM_INCOMING_CALL_COMPLETE_HANDLER CmIncomingCallCompleteHandler; - CM_ADD_PARTY_HANDLER CmAddPartyHandler; - CM_DROP_PARTY_HANDLER CmDropPartyHandler; - CM_ACTIVATE_VC_COMPLETE_HANDLER CmActivateVcCompleteHandler; - CM_DEACTIVATE_VC_COMPLETE_HANDLER CmDeactivateVcCompleteHandler; - CM_MODIFY_CALL_QOS_HANDLER CmModifyCallQoSHandler; - CO_REQUEST_HANDLER CmRequestHandler; - CO_REQUEST_COMPLETE_HANDLER CmRequestCompleteHandler; -} NDIS_CALL_MANAGER_CHARACTERISTICS, *PNDIS_CALL_MANAGER_CHARACTERISTICS; - - - -/* Call Manager clients */ - -typedef VOID (*CL_OPEN_AF_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolAfContext, - /*IN*/ NDIS_HANDLE NdisAfHandle); - -typedef VOID DDKAPI -(*CL_CLOSE_AF_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolAfContext); - -typedef VOID DDKAPI -(*CL_REG_SAP_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolSapContext, - /*IN*/ PCO_SAP Sap, - /*IN*/ NDIS_HANDLE NdisSapHandle); - -typedef VOID DDKAPI -(*CL_DEREG_SAP_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolSapContext); - -typedef VOID DDKAPI -(*CL_MAKE_CALL_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef VOID DDKAPI -(*CL_MODIFY_CALL_QOS_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef VOID DDKAPI -(*CL_CLOSE_CALL_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ NDIS_HANDLE ProtocolPartyContext /*OPTIONAL*/); - -typedef VOID DDKAPI -(*CL_ADD_PARTY_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolPartyContext, - /*IN*/ NDIS_HANDLE NdisPartyHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef VOID DDKAPI -(*CL_DROP_PARTY_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolPartyContext); - -typedef NDIS_STATUS DDKAPI -(*CL_INCOMING_CALL_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolSapContext, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters); - -typedef VOID DDKAPI -(*CL_INCOMING_CALL_QOS_CHANGE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -typedef VOID DDKAPI -(*CL_INCOMING_CLOSE_CALL_HANDLER)( - /*IN*/ NDIS_STATUS CloseStatus, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ PVOID CloseData /*OPTIONAL*/, - /*IN*/ UINT Size /*OPTIONAL*/); - -typedef VOID DDKAPI -(*CL_INCOMING_DROP_PARTY_HANDLER)( - /*IN*/ NDIS_STATUS DropStatus, - /*IN*/ NDIS_HANDLE ProtocolPartyContext, - /*IN*/ PVOID CloseData /*OPTIONAL*/, - /*IN*/ UINT Size /*OPTIONAL*/); - -typedef VOID DDKAPI -(*CL_CALL_CONNECTED_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolVcContext); - - -typedef struct _NDIS_CLIENT_CHARACTERISTICS { - UCHAR MajorVersion; - UCHAR MinorVersion; - USHORT Filler; - UINT Reserved; - CO_CREATE_VC_HANDLER ClCreateVcHandler; - CO_DELETE_VC_HANDLER ClDeleteVcHandler; - CO_REQUEST_HANDLER ClRequestHandler; - CO_REQUEST_COMPLETE_HANDLER ClRequestCompleteHandler; - CL_OPEN_AF_COMPLETE_HANDLER ClOpenAfCompleteHandler; - CL_CLOSE_AF_COMPLETE_HANDLER ClCloseAfCompleteHandler; - CL_REG_SAP_COMPLETE_HANDLER ClRegisterSapCompleteHandler; - CL_DEREG_SAP_COMPLETE_HANDLER ClDeregisterSapCompleteHandler; - CL_MAKE_CALL_COMPLETE_HANDLER ClMakeCallCompleteHandler; - CL_MODIFY_CALL_QOS_COMPLETE_HANDLER ClModifyCallQoSCompleteHandler; - CL_CLOSE_CALL_COMPLETE_HANDLER ClCloseCallCompleteHandler; - CL_ADD_PARTY_COMPLETE_HANDLER ClAddPartyCompleteHandler; - CL_DROP_PARTY_COMPLETE_HANDLER ClDropPartyCompleteHandler; - CL_INCOMING_CALL_HANDLER ClIncomingCallHandler; - CL_INCOMING_CALL_QOS_CHANGE_HANDLER ClIncomingCallQoSChangeHandler; - CL_INCOMING_CLOSE_CALL_HANDLER ClIncomingCloseCallHandler; - CL_INCOMING_DROP_PARTY_HANDLER ClIncomingDropPartyHandler; - CL_CALL_CONNECTED_HANDLER ClCallConnectedHandler; -} NDIS_CLIENT_CHARACTERISTICS, *PNDIS_CLIENT_CHARACTERISTICS; - - -/* NDIS protocol structures */ - -/* Prototypes for NDIS 3.0 protocol characteristics */ - -typedef VOID DDKAPI -(*OPEN_ADAPTER_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_STATUS OpenErrorStatus); - -typedef VOID DDKAPI -(*CLOSE_ADAPTER_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*RESET_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*REQUEST_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_REQUEST NdisRequest, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*STATUS_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_STATUS GeneralStatus, - /*IN*/ PVOID StatusBuffer, - /*IN*/ UINT StatusBufferSize); - -typedef VOID DDKAPI -(*STATUS_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext); - -typedef VOID DDKAPI -(*SEND_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_PACKET Packet, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*WAN_SEND_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_WAN_PACKET Packet, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*TRANSFER_DATA_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_PACKET Packet, - /*IN*/ NDIS_STATUS Status, - /*IN*/ UINT BytesTransferred); - -typedef VOID DDKAPI -(*WAN_TRANSFER_DATA_COMPLETE_HANDLER)( - VOID); - - -typedef NDIS_STATUS DDKAPI -(*RECEIVE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ PVOID HeaderBuffer, - /*IN*/ UINT HeaderBufferSize, - /*IN*/ PVOID LookAheadBuffer, - /*IN*/ UINT LookaheadBufferSize, - /*IN*/ UINT PacketSize); - -typedef NDIS_STATUS DDKAPI -(*WAN_RECEIVE_HANDLER)( - /*IN*/ NDIS_HANDLE NdisLinkHandle, - /*IN*/ PUCHAR Packet, - /*IN*/ ULONG PacketSize); - -typedef VOID DDKAPI -(*RECEIVE_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext); - - -/* Protocol characteristics for NDIS 3.0 protocols */ - -#define NDIS30_PROTOCOL_CHARACTERISTICS_S \ - UCHAR MajorNdisVersion; \ - UCHAR MinorNdisVersion; \ - _ANONYMOUS_UNION union { \ - UINT Reserved; \ - UINT Flags; \ - } DUMMYUNIONNAME; \ - OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler; \ - CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler; \ - _ANONYMOUS_UNION union { \ - SEND_COMPLETE_HANDLER SendCompleteHandler; \ - WAN_SEND_COMPLETE_HANDLER WanSendCompleteHandler; \ - } DUMMYUNIONNAME2; \ - _ANONYMOUS_UNION union { \ - TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; \ - WAN_TRANSFER_DATA_COMPLETE_HANDLER WanTransferDataCompleteHandler; \ - } DUMMYUNIONNAME3; \ - RESET_COMPLETE_HANDLER ResetCompleteHandler; \ - REQUEST_COMPLETE_HANDLER RequestCompleteHandler; \ - _ANONYMOUS_UNION union { \ - RECEIVE_HANDLER ReceiveHandler; \ - WAN_RECEIVE_HANDLER WanReceiveHandler; \ - } DUMMYUNIONNAME4; \ - RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; \ - STATUS_HANDLER StatusHandler; \ - STATUS_COMPLETE_HANDLER StatusCompleteHandler; \ - NDIS_STRING Name; - -typedef struct _NDIS30_PROTOCOL_CHARACTERISTICS { - NDIS30_PROTOCOL_CHARACTERISTICS_S -} NDIS30_PROTOCOL_CHARACTERISTICS, *PNDIS30_PROTOCOL_CHARACTERISTICS; - - -/* Prototypes for NDIS 4.0 protocol characteristics */ - -typedef INT DDKAPI -(*RECEIVE_PACKET_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_PACKET Packet); - -typedef VOID DDKAPI -(*BIND_HANDLER)( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE BindContext, - /*IN*/ PNDIS_STRING DeviceName, - /*IN*/ PVOID SystemSpecific1, - /*IN*/ PVOID SystemSpecific2); - -typedef VOID DDKAPI -(*UNBIND_HANDLER)( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_HANDLE UnbindContext); - -typedef NDIS_STATUS DDKAPI -(*PNP_EVENT_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNET_PNP_EVENT NetPnPEvent); - -typedef VOID DDKAPI -(*UNLOAD_PROTOCOL_HANDLER)( - VOID); - - -/* Protocol characteristics for NDIS 4.0 protocols */ - -#ifdef __cplusplus - -#define NDIS40_PROTOCOL_CHARACTERISTICS_S \ - NDIS30_PROTOCOL_CHARACTERISTICS Ndis30Chars; \ - RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ - BIND_HANDLER BindAdapterHandler; \ - UNBIND_HANDLER UnbindAdapterHandler; \ - PNP_EVENT_HANDLER PnPEventHandler; \ - UNLOAD_PROTOCOL_HANDLER UnloadHandler; - -#else /* !__cplusplus */ - -#define NDIS40_PROTOCOL_CHARACTERISTICS_S \ - NDIS30_PROTOCOL_CHARACTERISTICS_S \ - RECEIVE_PACKET_HANDLER ReceivePacketHandler; \ - BIND_HANDLER BindAdapterHandler; \ - UNBIND_HANDLER UnbindAdapterHandler; \ - PNP_EVENT_HANDLER PnPEventHandler; \ - UNLOAD_PROTOCOL_HANDLER UnloadHandler; - -#endif /* __cplusplus */ - -typedef struct _NDIS40_PROTOCOL_CHARACTERISTICS { - NDIS40_PROTOCOL_CHARACTERISTICS_S -} NDIS40_PROTOCOL_CHARACTERISTICS, *PNDIS40_PROTOCOL_CHARACTERISTICS; - -/* Prototypes for NDIS 5.0 protocol characteristics */ - -typedef VOID DDKAPI -(*CO_SEND_COMPLETE_HANDLER)( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ PNDIS_PACKET Packet); - -typedef VOID DDKAPI -(*CO_STATUS_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_HANDLE ProtocolVcContext /*OPTIONAL*/, - /*IN*/ NDIS_STATUS GeneralStatus, - /*IN*/ PVOID StatusBuffer, - /*IN*/ UINT StatusBufferSize); - -typedef UINT DDKAPI -(*CO_RECEIVE_PACKET_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN*/ PNDIS_PACKET Packet); - -typedef VOID DDKAPI -(*CO_AF_REGISTER_NOTIFY_HANDLER)( - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PCO_ADDRESS_FAMILY AddressFamily); - -#ifdef __cplusplus \ - -#define NDIS50_PROTOCOL_CHARACTERISTICS_S \ - NDIS40_PROTOCOL_CHARACTERISTICS Ndis40Chars; \ - PVOID ReservedHandlers[4]; \ - CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \ - CO_STATUS_HANDLER CoStatusHandler; \ - CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \ - CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; - -#else /* !__cplusplus */ - -#define NDIS50_PROTOCOL_CHARACTERISTICS_S \ - NDIS40_PROTOCOL_CHARACTERISTICS_S \ - PVOID ReservedHandlers[4]; \ - CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler; \ - CO_STATUS_HANDLER CoStatusHandler; \ - CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler; \ - CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler; - -#endif /* !__cplusplus */ - -typedef struct _NDIS50_PROTOCOL_CHARACTERISTICS { - NDIS50_PROTOCOL_CHARACTERISTICS_S -} NDIS50_PROTOCOL_CHARACTERISTICS, *PNDIS50_PROTOCOL_CHARACTERISTICS; - -#if defined(NDIS50) || defined(NDIS51) -typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { - NDIS50_PROTOCOL_CHARACTERISTICS_S; -} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; -#elif defined(NDIS40) -typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { - NDIS40_PROTOCOL_CHARACTERISTICS_S; -} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; -#elif defined(NDIS30) -typedef struct _NDIS_PROTOCOL_CHARACTERISTICS { - NDIS30_PROTOCOL_CHARACTERISTICS_S -} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS; -#else -#error Define an NDIS version -#endif /* NDIS30 */ - - - -/* Buffer management routines */ - -NDISAPI -VOID -DDKAPI -NdisAllocateBuffer( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_BUFFER *Buffer, - /*IN*/ NDIS_HANDLE PoolHandle, - /*IN*/ PVOID VirtualAddress, - /*IN*/ UINT Length); - - -NDISAPI -VOID -DDKAPI -NdisAllocateBufferPool( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE PoolHandle, - /*IN*/ UINT NumberOfDescriptors); - -NDISAPI -VOID -DDKAPI -NdisAllocatePacket( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_PACKET *Packet, - /*IN*/ NDIS_HANDLE PoolHandle); - -NDISAPI -VOID -DDKAPI -NdisAllocatePacketPool( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE PoolHandle, - /*IN*/ UINT NumberOfDescriptors, - /*IN*/ UINT ProtocolReservedLength); - -#define PROTOCOL_RESERVED_SIZE_IN_PACKET (4 * sizeof(PVOID)) - -NDISAPI -VOID -DDKAPI -NdisCopyBuffer( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_BUFFER *Buffer, - /*IN*/ NDIS_HANDLE PoolHandle, - /*IN*/ PVOID MemoryDescriptor, - /*IN*/ UINT Offset, - /*IN*/ UINT Length); - -NDISAPI -VOID -DDKAPI -NdisCopyFromPacketToPacket( - /*IN*/ PNDIS_PACKET Destination, - /*IN*/ UINT DestinationOffset, - /*IN*/ UINT BytesToCopy, - /*IN*/ PNDIS_PACKET Source, - /*IN*/ UINT SourceOffset, - /*OUT*/ PUINT BytesCopied); - -NDISAPI -VOID -DDKAPI -NdisDprAllocatePacket( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_PACKET *Packet, - /*IN*/ NDIS_HANDLE PoolHandle); - -NDISAPI -VOID -DDKAPI -NdisDprAllocatePacketNonInterlocked( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_PACKET *Packet, - /*IN*/ NDIS_HANDLE PoolHandle); - -NDISAPI -VOID -DDKAPI -NdisDprFreePacket( - /*IN*/ PNDIS_PACKET Packet); - -NDISAPI -VOID -DDKAPI -NdisDprFreePacketNonInterlocked( - /*IN*/ PNDIS_PACKET Packet); - -NDISAPI -VOID -DDKAPI -NdisFreeBufferPool( - /*IN*/ NDIS_HANDLE PoolHandle); - -NDISAPI -VOID -DDKAPI -NdisFreePacket( - /*IN*/ PNDIS_PACKET Packet); - -NDISAPI -VOID -DDKAPI -NdisFreePacketPool( - /*IN*/ NDIS_HANDLE PoolHandle); - -NDISAPI -VOID -DDKAPI -NdisReturnPackets( - /*IN*/ PNDIS_PACKET *PacketsToReturn, - /*IN*/ UINT NumberOfPackets); - -NDISAPI -VOID -DDKAPI -NdisUnchainBufferAtBack( - /*IN OUT*/ PNDIS_PACKET Packet, - /*OUT*/ PNDIS_BUFFER *Buffer); - -NDISAPI -VOID -DDKAPI -NdisUnchainBufferAtFront( - /*IN OUT*/ PNDIS_PACKET Packet, - /*OUT*/ PNDIS_BUFFER *Buffer); - -NDISAPI -VOID -DDKAPI -NdisAdjustBufferLength( - /*IN*/ PNDIS_BUFFER Buffer, - /*IN*/ UINT Length); - -NDISAPI -ULONG -DDKAPI -NdisBufferLength( - /*IN*/ PNDIS_BUFFER Buffer); - -NDISAPI -PVOID -DDKAPI -NdisBufferVirtualAddress( - /*IN*/ PNDIS_BUFFER Buffer); - -NDISAPI -ULONG -DDKAPI -NDIS_BUFFER_TO_SPAN_PAGES( - /*IN*/ PNDIS_BUFFER Buffer); - -NDISAPI -VOID -DDKAPI -NdisFreeBuffer( - /*IN*/ PNDIS_BUFFER Buffer); - -NDISAPI -VOID -DDKAPI -NdisGetBufferPhysicalArraySize( - /*IN*/ PNDIS_BUFFER Buffer, - /*OUT*/ PUINT ArraySize); - -NDISAPI -VOID -DDKAPI -NdisGetFirstBufferFromPacket( - /*IN*/ PNDIS_PACKET _Packet, - /*OUT*/ PNDIS_BUFFER *_FirstBuffer, - /*OUT*/ PVOID *_FirstBufferVA, - /*OUT*/ PUINT _FirstBufferLength, - /*OUT*/ PUINT _TotalBufferLength); - -NDISAPI -VOID -DDKAPI -NdisQueryBuffer( - /*IN*/ PNDIS_BUFFER Buffer, - /*OUT*/ PVOID *VirtualAddress /*OPTIONAL*/, - /*OUT*/ PUINT Length); - -NDISAPI -VOID -DDKAPI -NdisQueryBufferOffset( - /*IN*/ PNDIS_BUFFER Buffer, - /*OUT*/ PUINT Offset, - /*OUT*/ PUINT Length); - -NDISAPI -VOID -DDKAPI -NdisFreeBuffer( - /*IN*/ PNDIS_BUFFER Buffer); - - -/* - * VOID - * NdisGetBufferPhysicalArraySize( - * IN PNDIS_BUFFER Buffer, - * OUT PUINT ArraySize); - */ -#define NdisGetBufferPhysicalArraySize(Buffer, \ - ArraySize) \ -{ \ - (*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer)) \ -} - - -/* - * VOID - * NdisGetFirstBufferFromPacket( - * IN PNDIS_PACKET _Packet, - * OUT PNDIS_BUFFER * _FirstBuffer, - * OUT PVOID * _FirstBufferVA, - * OUT PUINT _FirstBufferLength, - * OUT PUINT _TotalBufferLength) - */ -#define NdisGetFirstBufferFromPacket(_Packet, \ - _FirstBuffer, \ - _FirstBufferVA, \ - _FirstBufferLength, \ - _TotalBufferLength) \ -{ \ - PNDIS_BUFFER _Buffer; \ - \ - _Buffer = (_Packet)->Private.Head; \ - *(_FirstBuffer) = _Buffer; \ - if (_Buffer != NULL) \ - { \ - *(_FirstBufferVA) = MmGetSystemAddressForMdl(_Buffer); \ - *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \ - _Buffer = _Buffer->Next; \ - *(_TotalBufferLength) = *(_FirstBufferLength); \ - while (_Buffer != NULL) { \ - *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \ - _Buffer = _Buffer->Next; \ - } \ - } \ - else \ - { \ - *(_FirstBufferVA) = 0; \ - *(_FirstBufferLength) = 0; \ - *(_TotalBufferLength) = 0; \ - } \ -} - -/* - * VOID - * NdisGetFirstBufferFromPacketSafe( - * IN PNDIS_PACKET _Packet, - * OUT PNDIS_BUFFER * _FirstBuffer, - * OUT PVOID * _FirstBufferVA, - * OUT PUINT _FirstBufferLength, - * OUT PUINT _TotalBufferLength), - * IN MM_PAGE_PRIORITY _Priority) - */ -#define NdisGetFirstBufferFromPacketSafe(_Packet, \ - _FirstBuffer, \ - _FirstBufferVA, \ - _FirstBufferLength, \ - _TotalBufferLength, \ - _Priority) \ -{ \ - PNDIS_BUFFER _Buffer; \ - \ - _Buffer = (_Packet)->Private.Head; \ - *(_FirstBuffer) = _Buffer; \ - if (_Buffer != NULL) \ - { \ - *(_FirstBufferVA) = MmGetSystemAddressForMdlSafe(_Buffer, _Priority); \ - *(_FirstBufferLength) = MmGetMdlByteCount(_Buffer); \ - _Buffer = _Buffer->Next; \ - *(_TotalBufferLength) = *(_FirstBufferLength); \ - while (_Buffer != NULL) { \ - *(_TotalBufferLength) += MmGetMdlByteCount(_Buffer); \ - _Buffer = _Buffer->Next; \ - } \ - } \ - else \ - { \ - *(_FirstBufferVA) = 0; \ - *(_FirstBufferLength) = 0; \ - *(_TotalBufferLength) = 0; \ - } \ -} - -/* - * VOID - * NdisQueryBuffer( - * IN PNDIS_BUFFER Buffer, - * OUT PVOID *VirtualAddress OPTIONAL, - * OUT PUINT Length) - */ -#define NdisQueryBuffer(Buffer, \ - VirtualAddress, \ - Length) \ -{ \ - if (VirtualAddress) \ - *((PVOID*)VirtualAddress) = MmGetSystemAddressForMdl(Buffer); \ - \ - *((PUINT)Length) = MmGetMdlByteCount(Buffer); \ -} - - -/* - * VOID - * NdisQueryBufferOffset( - * IN PNDIS_BUFFER Buffer, - * OUT PUINT Offset, - * OUT PUINT Length); - */ -#define NdisQueryBufferOffset(Buffer, \ - Offset, \ - Length) \ -{ \ - *((PUINT)Offset) = MmGetMdlByteOffset(Buffer); \ - *((PUINT)Length) = MmGetMdlByteCount(Buffer); \ -} - - -/* - * PVOID - * NDIS_BUFFER_LINKAGE( - * IN PNDIS_BUFFER Buffer); - */ -#define NDIS_BUFFER_LINKAGE(Buffer)(Buffer)->Next; - - -/* - * VOID - * NdisChainBufferAtBack( - * IN OUT PNDIS_PACKET Packet, - * IN OUT PNDIS_BUFFER Buffer) - */ -#define NdisChainBufferAtBack(Packet, \ - Buffer) \ -{ \ - PNDIS_BUFFER NdisBuffer = (Buffer); \ - \ - while (NdisBuffer->Next != NULL) \ - NdisBuffer = NdisBuffer->Next; \ - \ - NdisBuffer->Next = NULL; \ - \ - if ((Packet)->Private.Head != NULL) \ - (Packet)->Private.Tail->Next = (Buffer); \ - else \ - (Packet)->Private.Head = (Buffer); \ - \ - (Packet)->Private.Tail = NdisBuffer; \ - (Packet)->Private.ValidCounts = FALSE; \ -} - - -/* - * VOID - * NdisChainBufferAtFront( - * IN OUT PNDIS_PACKET Packet, - * IN OUT PNDIS_BUFFER Buffer) - */ -#define NdisChainBufferAtFront(Packet, \ - Buffer) \ -{ \ - PNDIS_BUFFER _NdisBuffer = (Buffer); \ - \ - while (_NdisBuffer->Next != NULL) \ - _NdisBuffer = _NdisBuffer->Next; \ - \ - if ((Packet)->Private.Head == NULL) \ - (Packet)->Private.Tail = _NdisBuffer; \ - \ - _NdisBuffer->Next = (Packet)->Private.Head; \ - (Packet)->Private.Head = (Buffer); \ - (Packet)->Private.ValidCounts = FALSE; \ -} - - -/* - * VOID - * NdisGetNextBuffer( - * IN PNDIS_BUFFER CurrentBuffer, - * OUT PNDIS_BUFFER * NextBuffer) - */ -#define NdisGetNextBuffer(CurrentBuffer, \ - NextBuffer) \ -{ \ - *(NextBuffer) = (CurrentBuffer)->Next; \ -} - - -/* - * UINT - * NdisGetPacketFlags( - * IN PNDIS_PACKET Packet); - */ -#define NdisGetPacketFlags(Packet)(Packet)->Private.Flags; - - -/* - * VOID - * NdisClearPacketFlags( - * IN PNDIS_PACKET Packet, - * IN UINT Flags); - */ -#define NdisClearPacketFlags(Packet, Flags) \ - (Packet)->Private.Flags &= ~(Flags) - - -/* - * VOID - * NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO( - * IN PNDIS_PACKET Packet, - * IN PPVOID pMediaSpecificInfo, - * IN PUINT pSizeMediaSpecificInfo); - */ -#define NDIS_GET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ - _pMediaSpecificInfo, \ - _pSizeMediaSpecificInfo) \ -{ \ - if (!((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) || \ - !((_Packet)->Private.NdisPacketFlags & fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO)) \ - { \ - *(_pMediaSpecificInfo) = NULL; \ - *(_pSizeMediaSpecificInfo) = 0; \ - } \ - else \ - { \ - *(_pMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation; \ - *(_pSizeMediaSpecificInfo) = ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo; \ - } \ -} - - -/* - * ULONG - * NDIS_GET_PACKET_PROTOCOL_TYPE( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet) \ - ((_Packet)->Private.Flags & NDIS_PROTOCOL_ID_MASK) - -/* - * ULONG - * NDIS_GET_PACKET_HEADER_SIZE( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_HEADER_SIZE(_Packet) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->HeaderSize - - -/* - * NDIS_STATUS - * NDIS_GET_PACKET_STATUS( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_STATUS(_Packet) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->Status - - -/* - * ULONGLONG - * NDIS_GET_PACKET_TIME_RECEIVED( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_TIME_RECEIVED(_Packet) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeReceived - - -/* - * ULONGLONG - * NDIS_GET_PACKET_TIME_SENT( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_TIME_SENT(_Packet) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeSent - - -/* - * ULONGLONG - * NDIS_GET_PACKET_TIME_TO_SEND( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_GET_PACKET_TIME_TO_SEND(_Packet) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeToSend - - -/* - * PNDIS_PACKET_OOB_DATA - * NDIS_OOB_DATA_FROM_PACKET( - * IN PNDIS_PACKET Packet); - */ -#define NDIS_OOB_DATA_FROM_PACKET(_Packet) \ - (PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset) - - -/* - * VOID - * NdisQueryPacket( - * IN PNDIS_PACKET Packet, - * OUT PUINT PhysicalBufferCount OPTIONAL, - * OUT PUINT BufferCount OPTIONAL, - * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, - * OUT PUINT TotalPacketLength OPTIONAL); - */ -#define NdisQueryPacket(Packet, \ - PhysicalBufferCount, \ - BufferCount, \ - FirstBuffer, \ - TotalPacketLength) \ -{ \ - if (FirstBuffer) \ - *((PNDIS_BUFFER*)FirstBuffer) = (Packet)->Private.Head; \ - if ((TotalPacketLength) || (BufferCount) || (PhysicalBufferCount)) \ - { \ - if (!(Packet)->Private.ValidCounts) { \ - UINT _Offset; \ - UINT _PacketLength; \ - PNDIS_BUFFER _NdisBuffer; \ - UINT _PhysicalBufferCount = 0; \ - UINT _TotalPacketLength = 0; \ - UINT _Count = 0; \ - \ - for (_NdisBuffer = (Packet)->Private.Head; \ - _NdisBuffer != (PNDIS_BUFFER)NULL; \ - _NdisBuffer = _NdisBuffer->Next) \ - { \ - _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \ - NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \ - _TotalPacketLength += _PacketLength; \ - _Count++; \ - } \ - (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \ - (Packet)->Private.TotalLength = _TotalPacketLength; \ - (Packet)->Private.Count = _Count; \ - (Packet)->Private.ValidCounts = TRUE; \ - } \ - \ - if (PhysicalBufferCount) \ - *((PUINT)PhysicalBufferCount) = (Packet)->Private.PhysicalCount; \ - \ - if (BufferCount) \ - *((PUINT)BufferCount) = (Packet)->Private.Count; \ - \ - if (TotalPacketLength) \ - *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \ - } \ -} - -/* - * VOID - * NdisQueryPacketLength( - * IN PNDIS_PACKET Packet, - * OUT PUINT PhysicalBufferCount OPTIONAL, - * OUT PUINT BufferCount OPTIONAL, - * OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, - * OUT PUINT TotalPacketLength OPTIONAL); - */ -#define NdisQueryPacketLength(Packet, \ - TotalPacketLength) \ -{ \ - if ((TotalPacketLength)) \ - { \ - if (!(Packet)->Private.ValidCounts) { \ - UINT _Offset; \ - UINT _PacketLength; \ - PNDIS_BUFFER _NdisBuffer; \ - UINT _PhysicalBufferCount = 0; \ - UINT _TotalPacketLength = 0; \ - UINT _Count = 0; \ - \ - for (_NdisBuffer = (Packet)->Private.Head; \ - _NdisBuffer != (PNDIS_BUFFER)NULL; \ - _NdisBuffer = _NdisBuffer->Next) \ - { \ - _PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \ - NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \ - _TotalPacketLength += _PacketLength; \ - _Count++; \ - } \ - (Packet)->Private.PhysicalCount = _PhysicalBufferCount; \ - (Packet)->Private.TotalLength = _TotalPacketLength; \ - (Packet)->Private.Count = _Count; \ - (Packet)->Private.ValidCounts = TRUE; \ - } \ - \ - if (TotalPacketLength) \ - *((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \ - } \ -} - - -/* - * VOID - * NdisRecalculatePacketCounts( - * IN OUT PNDIS_PACKET Packet); - */ -#define NdisRecalculatePacketCounts(Packet) \ -{ \ - PNDIS_BUFFER _Buffer = (Packet)->Private.Head; \ - if (_Buffer != NULL) \ - { \ - while (_Buffer->Next != NULL) \ - { \ - ´_Buffer = _Buffer->Next; \ - } \ - (Packet)->Private.Tail = _Buffer; \ - } \ - (Packet)->Private.ValidCounts = FALSE; \ -} - - -/* - * VOID - * NdisReinitializePacket( - * IN OUT PNDIS_PACKET Packet); - */ -#define NdisReinitializePacket(Packet) \ -{ \ - (Packet)->Private.Head = (PNDIS_BUFFER)NULL; \ - (Packet)->Private.ValidCounts = FALSE; \ -} - - -/* - * VOID - * NdisSetPacketFlags( - * IN PNDIS_PACKET Packet, - * IN UINT Flags); - */ -#define NdisSetPacketFlags(Packet, Flags) \ - (Packet)->Private.Flags |= (Flags); - - -/* - * VOID - * NDIS_SET_PACKET_HEADER_SIZE( - * IN PNDIS_PACKET Packet, - * IN UINT HdrSize); - */ -#define NDIS_SET_PACKET_HEADER_SIZE(_Packet, _HdrSize) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->HeaderSize = (_HdrSize) - - -/* - * VOID - * NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO( - * IN PNDIS_PACKET Packet, - * IN PVOID MediaSpecificInfo, - * IN UINT SizeMediaSpecificInfo); - */ -#define NDIS_SET_PACKET_MEDIA_SPECIFIC_INFO(_Packet, \ - _MediaSpecificInfo, \ - _SizeMediaSpecificInfo) \ -{ \ - if ((_Packet)->Private.NdisPacketFlags & fPACKET_ALLOCATED_BY_NDIS) \ - { \ - (_Packet)->Private.NdisPacketFlags |= fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO; \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->MediaSpecificInformation = \ - (_MediaSpecificInfo); \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->SizeMediaSpecificInfo = \ - (_SizeMediaSpecificInfo); \ - } \ -} - - -/* - * VOID - * NDIS_SET_PACKET_STATUS( - * IN PNDIS_PACKET Packet, - * IN NDIS_STATUS Status); - */ -#define NDIS_SET_PACKET_STATUS(_Packet, _Status) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->Status = (_Status) - - -/* - * VOID - * NDIS_SET_PACKET_TIME_RECEIVED( - * IN PNDIS_PACKET Packet, - * IN ULONGLONG TimeReceived); - */ -#define NDIS_SET_PACKET_TIME_RECEIVED(_Packet, _TimeReceived) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeReceived = (_TimeReceived) - - -/* - * VOID - * NDIS_SET_PACKET_TIME_SENT( - * IN PNDIS_PACKET Packet, - * IN ULONGLONG TimeSent); - */ -#define NDIS_SET_PACKET_TIME_SENT(_Packet, _TimeSent) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeSent = (_TimeSent) - - -/* - * VOID - * NDIS_SET_PACKET_TIME_TO_SEND( - * IN PNDIS_PACKET Packet, - * IN ULONGLONG TimeToSend); - */ -#define NDIS_SET_PACKET_TIME_TO_SEND(_Packet, _TimeToSend) \ - ((PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \ - (_Packet)->Private.NdisPacketOobOffset))->TimeToSend = (_TimeToSend) - - -/* - * VOID - * NdisSetSendFlags( - * IN PNDIS_PACKET Packet, - * IN UINT Flags); - */ -#define NdisSetSendFlags(_Packet,_Flags)(_Packet)->Private.Flags = (_Flags) - - - -/* Memory management routines */ - -/* - * VOID - * NdisCreateLookaheadBufferFromSharedMemory( - * IN PVOID pSharedMemory, - * IN UINT LookaheadLength, - * OUT PVOID *pLookaheadBuffer) - */ -#define NdisCreateLookaheadBufferFromSharedMemory(_pSharedMemory, \ - _LookaheadLength, \ - _pLookaheadBuffer) \ - ((*(_pLookaheadBuffer)) = (_pSharedMemory)) - -/* - * VOID - * NdisDestroyLookaheadBufferFromSharedMemory( - * IN PVOID pLookaheadBuffer) - */ -#define NdisDestroyLookaheadBufferFromSharedMemory(_pLookaheadBuffer) - -#if defined(i386) - -/* - * VOID - * NdisMoveFromMappedMemory( - * OUT PVOID Destination, - * IN PVOID Source, - * IN ULONG Length); - */ -#define NdisMoveFromMappedMemory(Destination, Source, Length) \ - NdisMoveMappedMemory(Destination, Source, Length) - -/* - * VOID - * NdisMoveMappedMemory( - * OUT PVOID Destination, - * IN PVOID Source, - * IN ULONG Length); - */ -#define NdisMoveMappedMemory(Destination, Source, Length) \ - RtlCopyMemory(Destination, Source, Length) - -/* - * VOID - * NdisMoveToMappedMemory( - * OUT PVOID Destination, - * IN PVOID Source, - * IN ULONG Length); - */ -#define NdisMoveToMappedMemory(Destination, Source, Length) \ - NdisMoveMappedMemory(Destination, Source, Length) - -#endif /* i386 */ - -/* - * VOID - * NdisMUpdateSharedMemory( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN ULONG Length, - * IN PVOID VirtualAddress, - * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); - */ -#define NdisMUpdateSharedMemory(_H, _L, _V, _P) \ - NdisUpdateSharedMemory(_H, _L, _V, _P) - -NDISAPI -NDIS_STATUS -DDKAPI -NdisAllocateMemory( - /*OUT*/ PVOID *VirtualAddress, - /*IN*/ UINT Length, - /*IN*/ UINT MemoryFlags, - /*IN*/ NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress); - -NDISAPI -VOID -DDKAPI -NdisFreeMemory( - /*IN*/ PVOID VirtualAddress, - /*IN*/ UINT Length, - /*IN*/ UINT MemoryFlags); - -NDISAPI -VOID -DDKAPI -NdisImmediateReadSharedMemory( - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*IN*/ ULONG SharedMemoryAddress, - /*OUT*/ PUCHAR Buffer, - /*IN*/ ULONG Length); - -NDISAPI -VOID -DDKAPI -NdisImmediateWriteSharedMemory( - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*IN*/ ULONG SharedMemoryAddress, - /*IN*/ PUCHAR Buffer, - /*IN*/ ULONG Length); - -NDISAPI -VOID -DDKAPI -NdisMAllocateSharedMemory( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ ULONG Length, - /*IN*/ BOOLEAN Cached, - /*OUT*/ PVOID *VirtualAddress, - /*OUT*/ PNDIS_PHYSICAL_ADDRESS PhysicalAddress); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMAllocateSharedMemoryAsync( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ ULONG Length, - /*IN*/ BOOLEAN Cached, - /*IN*/ PVOID Context); - -#if defined(NDIS50) - -#define NdisUpdateSharedMemory(NdisAdapterHandle, \ - Length, \ - VirtualAddress, \ - PhysicalAddress) - -#else - -NDISAPI -VOID -DDKAPI -NdisUpdateSharedMemory( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ ULONG Length, - /*IN*/ PVOID VirtualAddress, - /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress); - -#endif /* defined(NDIS50) */ - -/* - * ULONG - * NdisGetPhysicalAddressHigh( - * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); - */ -#define NdisGetPhysicalAddressHigh(PhysicalAddress) \ - ((PhysicalAddress).HighPart) - -/* - * VOID - * NdisSetPhysicalAddressHigh( - * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, - * IN ULONG Value); - */ -#define NdisSetPhysicalAddressHigh(PhysicalAddress, Value) \ - ((PhysicalAddress).HighPart) = (Value) - -/* - * ULONG - * NdisGetPhysicalAddressLow( - * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress); - */ -#define NdisGetPhysicalAddressLow(PhysicalAddress) \ - ((PhysicalAddress).LowPart) - - -/* - * VOID - * NdisSetPhysicalAddressLow( - * IN NDIS_PHYSICAL_ADDRESS PhysicalAddress, - * IN ULONG Value); - */ -#define NdisSetPhysicalAddressLow(PhysicalAddress, Value) \ - ((PhysicalAddress).LowPart) = (Value) - -/* - * VOID - * NDIS_PHYSICAL_ADDRESS_CONST( - * IN ULONG Low, - * IN LONG High); - */ -#define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \ - { {(ULONG)(Low), (LONG)(High)} } - -/* - * ULONG - * NdisEqualMemory( - * IN CONST VOID *Source1, - * IN CONST VOID *Source2, - * IN ULONG Length); - */ -#define NdisEqualMemory(Source1, Source2, Length) \ - RtlEqualMemory(Source1, Source2, Length) - -/* - * VOID - * NdisFillMemory( - * IN PVOID Destination, - * IN ULONG Length, - * IN UCHAR Fill); - */ -#define NdisFillMemory(Destination, Length, Fill) \ - RtlFillMemory(Destination, Length, Fill) - -/* - * VOID - * NdisZeroMappedMemory( - * IN PVOID Destination, - * IN ULONG Length); - */ -#define NdisZeroMappedMemory(Destination, Length) \ - RtlZeroMemory(Destination, Length) - -/* - * VOID - * NdisMoveMemory( - * OUT PVOID Destination, - * IN PVOID Source, - * IN ULONG Length); - */ -#define NdisMoveMemory(Destination, Source, Length) \ - RtlCopyMemory(Destination, Source, Length) - - -/* - * VOID - * NdisRetrieveUlong( - * IN PULONG DestinationAddress, - * IN PULONG SourceAddress); - */ -#define NdisRetrieveUlong(DestinationAddress, SourceAddress) \ - RtlRetrieveUlong(DestinationAddress, SourceAddress) - - -/* - * VOID - * NdisStoreUlong( - * IN PULONG DestinationAddress, - * IN ULONG Value); - */ -#define NdisStoreUlong(DestinationAddress, Value) \ - RtlStoreUlong(DestinationAddress, Value) - - -/* - * VOID - * NdisZeroMemory( - * IN PVOID Destination, - * IN ULONG Length) - */ -#define NdisZeroMemory(Destination, Length) \ - RtlZeroMemory(Destination, Length) - - - -/* Configuration routines */ - -NDISAPI -VOID -DDKAPI -NdisOpenConfiguration( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE ConfigurationHandle, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext); - -NDISAPI -VOID -DDKAPI -NdisReadNetworkAddress( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PVOID *NetworkAddress, - /*OUT*/ PUINT NetworkAddressLength, - /*IN*/ NDIS_HANDLE ConfigurationHandle); - -NDISAPI -VOID -DDKAPI -NdisReadEisaSlotInformation( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*OUT*/ PUINT SlotNumber, - /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION EisaData); - -NDISAPI -VOID -DDKAPI -NdisReadEisaSlotInformationEx( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*OUT*/ PUINT SlotNumber, - /*OUT*/ PNDIS_EISA_FUNCTION_INFORMATION *EisaData, - /*OUT*/ PUINT NumberOfFunctions); - -NDISAPI -ULONG -DDKAPI -NdisReadPciSlotInformation( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ ULONG SlotNumber, - /*IN*/ ULONG Offset, - /*IN*/ PVOID Buffer, - /*IN*/ ULONG Length); - -NDISAPI -ULONG -DDKAPI -NdisWritePciSlotInformation( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ ULONG SlotNumber, - /*IN*/ ULONG Offset, - /*IN*/ PVOID Buffer, - /*IN*/ ULONG Length); - - - -/* String management routines */ - -NDISAPI -NDIS_STATUS -DDKAPI -NdisAnsiStringToUnicodeString( - /*IN OUT*/ PNDIS_STRING DestinationString, - /*IN*/ PNDIS_ANSI_STRING SourceString); - -/* - * BOOLEAN - * NdisEqualString( - * IN PNDIS_STRING String1, - * IN PNDIS_STRING String2, - * IN BOOLEAN CaseInsensitive); - */ -#define NdisEqualString(_String1, _String2, _CaseInsensitive) \ - RtlEqualUnicodeString(_String1, _String2, _CaseInsensitive) - -NDISAPI -VOID -DDKAPI -NdisInitAnsiString( - /*IN OUT*/ PNDIS_ANSI_STRING DestinationString, - /*IN*/ PCSTR SourceString); - -NDISAPI -VOID -DDKAPI -NdisInitUnicodeString( - /*IN OUT*/ PNDIS_STRING DestinationString, - /*IN*/ PCWSTR SourceString); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisUnicodeStringToAnsiString( - /*IN OUT*/ PNDIS_ANSI_STRING DestinationString, - /*IN*/ PNDIS_STRING SourceString); - -#define NdisFreeString(_s) NdisFreeMemory((_s).Buffer, (_s).MaximumLength, 0) -#define NdisPrintString(_s) DbgPrint("%ls", (_s).Buffer) - - -/* Spin lock reoutines */ - -/* - * VOID - * NdisAllocateSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisAllocateSpinLock(_SpinLock) \ - KeInitializeSpinLock(&(_SpinLock)->SpinLock) - -/* - * VOID - * NdisFreeSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisFreeSpinLock(_SpinLock) - -/* - * VOID - * NdisAcquireSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisAcquireSpinLock(_SpinLock) \ - KeAcquireSpinLock(&(_SpinLock)->SpinLock, &(_SpinLock)->OldIrql) - -/* - * VOID - * NdisReleaseSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisReleaseSpinLock(_SpinLock) \ - KeReleaseSpinLock(&(_SpinLock)->SpinLock, (_SpinLock)->OldIrql) - -/* - * VOID - * NdisDprAcquireSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisDprAcquireSpinLock(_SpinLock) \ -{ \ - KeAcquireSpinLockAtDpcLevel(&(_SpinLock)->SpinLock); \ - (_SpinLock)->OldIrql = DISPATCH_LEVEL; \ -} - -/* - * VOID - * NdisDprReleaseSpinLock( - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisDprReleaseSpinLock(_SpinLock) \ - KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock) - - - -/* I/O routines */ - -/* - * VOID - * NdisRawReadPortBufferUchar( - * IN ULONG Port, - * OUT PUCHAR Buffer, - * IN ULONG Length); - */ -#define NdisRawReadPortBufferUchar(Port, Buffer, Length) \ - READ_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) - -/* - * VOID - * NdisRawReadPortBufferUlong( - * IN ULONG Port, - * OUT PULONG Buffer, - * IN ULONG Length); - */ -#define NdisRawReadPortBufferUlong(Port, Buffer, Length) \ - READ_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) - -/* - * VOID - * NdisRawReadPortBufferUshort( - * IN ULONG Port, - * OUT PUSHORT Buffer, - * IN ULONG Length); - */ -#define NdisRawReadPortBufferUshort(Port, Buffer, Length) \ - READ_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) - - -/* - * VOID - * NdisRawReadPortUchar( - * IN ULONG Port, - * OUT PUCHAR Data); - */ -#define NdisRawReadPortUchar(Port, Data) \ - *(Data) = READ_PORT_UCHAR((PUCHAR)(Port)) - -/* - * VOID - * NdisRawReadPortUlong( - * IN ULONG Port, - * OUT PULONG Data); - */ -#define NdisRawReadPortUlong(Port, Data) \ - *(Data) = READ_PORT_ULONG((PULONG)(Port)) - -/* - * VOID - * NdisRawReadPortUshort( - * IN ULONG Port, - * OUT PUSHORT Data); - */ -#define NdisRawReadPortUshort(Port, Data) \ - *(Data) = READ_PORT_USHORT((PUSHORT)(Port)) - - -/* - * VOID - * NdisRawWritePortBufferUchar( - * IN ULONG Port, - * IN PUCHAR Buffer, - * IN ULONG Length); - */ -#define NdisRawWritePortBufferUchar(Port, Buffer, Length) \ - WRITE_PORT_BUFFER_UCHAR((PUCHAR)(Port), (PUCHAR)(Buffer), (Length)) - -/* - * VOID - * NdisRawWritePortBufferUlong( - * IN ULONG Port, - * IN PULONG Buffer, - * IN ULONG Length); - */ -#define NdisRawWritePortBufferUlong(Port, Buffer, Length) \ - WRITE_PORT_BUFFER_ULONG((PULONG)(Port), (PULONG)(Buffer), (Length)) - -/* - * VOID - * NdisRawWritePortBufferUshort( - * IN ULONG Port, - * IN PUSHORT Buffer, - * IN ULONG Length); - */ -#define NdisRawWritePortBufferUshort(Port, Buffer, Length) \ - WRITE_PORT_BUFFER_USHORT((PUSHORT)(Port), (PUSHORT)(Buffer), (Length)) - - -/* - * VOID - * NdisRawWritePortUchar( - * IN ULONG Port, - * IN UCHAR Data); - */ -#define NdisRawWritePortUchar(Port, Data) \ - WRITE_PORT_UCHAR((PUCHAR)(Port), (UCHAR)(Data)) - -/* - * VOID - * NdisRawWritePortUlong( - * IN ULONG Port, - * IN ULONG Data); - */ -#define NdisRawWritePortUlong(Port, Data) \ - WRITE_PORT_ULONG((PULONG)(Port), (ULONG)(Data)) - -/* - * VOID - * NdisRawWritePortUshort( - * IN ULONG Port, - * IN USHORT Data); - */ -#define NdisRawWritePortUshort(Port, Data) \ - WRITE_PORT_USHORT((PUSHORT)(Port), (USHORT)(Data)) - - -/* - * VOID - * NdisReadRegisterUchar( - * IN PUCHAR Register, - * OUT PUCHAR Data); - */ -#define NdisReadRegisterUchar(Register, Data) \ - *(Data) = *(Register) - -/* - * VOID - * NdisReadRegisterUlong( - * IN PULONG Register, - * OUT PULONG Data); - */ -#define NdisReadRegisterUlong(Register, Data) \ - *(Data) = *(Register) - -/* - * VOID - * NdisReadRegisterUshort( - * IN PUSHORT Register, - * OUT PUSHORT Data); - */ -#define NdisReadRegisterUshort(Register, Data) \ - *(Data) = *(Register) - -/* - * VOID - * NdisReadRegisterUchar( - * IN PUCHAR Register, - * IN UCHAR Data); - */ -#define NdisWriteRegisterUchar(Register, Data) \ - WRITE_REGISTER_UCHAR((Register), (Data)) - -/* - * VOID - * NdisReadRegisterUlong( - * IN PULONG Register, - * IN ULONG Data); - */ -#define NdisWriteRegisterUlong(Register, Data) \ - WRITE_REGISTER_ULONG((Register), (Data)) - -/* - * VOID - * NdisReadRegisterUshort( - * IN PUSHORT Register, - * IN USHORT Data); - */ -#define NdisWriteRegisterUshort(Register, Data) \ - WRITE_REGISTER_USHORT((Register), (Data)) - - -/* Linked lists */ - -/* - * VOID - * NdisInitializeListHead( - * IN PLIST_ENTRY ListHead); - */ -#define NdisInitializeListHead(_ListHead) \ - InitializeListHead(_ListHead) - -/* - * PLIST_ENTRY - * NdisInterlockedInsertHeadList( - * IN PLIST_ENTRY ListHead, - * IN PLIST_ENTRY ListEntry, - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisInterlockedInsertHeadList(_ListHead, _ListEntry, _SpinLock) \ - ExInterlockedInsertHeadList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) - -/* - * PLIST_ENTRY - * NdisInterlockedInsertTailList( - * IN PLIST_ENTRY ListHead, - * IN PLIST_ENTRY ListEntry, - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisInterlockedInsertTailList(_ListHead, _ListEntry, _SpinLock) \ - ExInterlockedInsertTailList(_ListHead, _ListEntry, &(_SpinLock)->SpinLock) - -/* - * PLIST_ENTRY - * NdisInterlockedRemoveHeadList( - * IN PLIST_ENTRY ListHead, - * IN PNDIS_SPIN_LOCK SpinLock); -*/ -#define NdisInterlockedRemoveHeadList(_ListHead, _SpinLock) \ - ExInterlockedRemoveHeadList(_ListHead, &(_SpinLock)->SpinLock) - -/* - * VOID - * NdisInitializeSListHead( - * IN PSLIST_HEADER SListHead); - */ -#define NdisInitializeSListHead(SListHead) ExInitializeSListHead(SListHead) - -/* - * USHORT NdisQueryDepthSList( - * IN PSLIST_HEADER SListHead); - */ -#define NdisQueryDepthSList(SListHead) ExQueryDepthSList(SListHead) - - - -/* Interlocked routines */ - -/* - * LONG - * NdisInterlockedDecrement( - * IN PLONG Addend); - */ -#define NdisInterlockedDecrement(Addend) InterlockedDecrement(Addend) - -/* - * LONG - * NdisInterlockedIncrement( - * IN PLONG Addend); - */ -#define NdisInterlockedIncrement(Addend) InterlockedIncrement(Addend) - -/* - * VOID - * NdisInterlockedAddUlong( - * IN PULONG Addend, - * IN ULONG Increment, - * IN PNDIS_SPIN_LOCK SpinLock); - */ -#define NdisInterlockedAddUlong(_Addend, _Increment, _SpinLock) \ - ExInterlockedAddUlong(_Addend, _Increment, &(_SpinLock)->SpinLock) - - - -/* Miscellaneous routines */ - -NDISAPI -VOID -DDKAPI -NdisCloseConfiguration( - /*IN*/ NDIS_HANDLE ConfigurationHandle); - -NDISAPI -VOID -DDKAPI -NdisReadConfiguration( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_CONFIGURATION_PARAMETER *ParameterValue, - /*IN*/ NDIS_HANDLE ConfigurationHandle, - /*IN*/ PNDIS_STRING Keyword, - /*IN*/ NDIS_PARAMETER_TYPE ParameterType); - -NDISAPI -VOID -DDKAPI -NdisWriteConfiguration( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*IN*/ PNDIS_STRING Keyword, - /*IN*/ PNDIS_CONFIGURATION_PARAMETER *ParameterValue); - -NDISAPI -VOID -DDKCDECLAPI -NdisWriteErrorLogEntry( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ NDIS_ERROR_CODE ErrorCode, - /*IN*/ ULONG NumberOfErrorValues, - /*IN*/ ...); - -/* - * VOID - * NdisStallExecution( - * IN UINT MicrosecondsToStall) - */ -#define NdisStallExecution KeStallExecutionProcessor - -/* - * VOID - * NdisGetCurrentSystemTime( - * IN PLARGE_INTEGER pSystemTime); - */ -#define NdisGetCurrentSystemTime KeQuerySystemTime - -NDISAPI -VOID -DDKAPI -NdisGetCurrentProcessorCpuUsage( - /*OUT*/ PULONG pCpuUsage); - - - -/* NDIS helper macros */ - -/* - * VOID - * NDIS_INIT_FUNCTION(FunctionName) - */ -#define NDIS_INIT_FUNCTION(FunctionName) \ - alloc_text(init, FunctionName) - -/* - * VOID - * NDIS_PAGABLE_FUNCTION(FunctionName) - */ -#define NDIS_PAGEABLE_FUNCTION(FunctionName) \ - alloc_text(page, FunctionName) - -#define NDIS_PAGABLE_FUNCTION NDIS_PAGEABLE_FUNCTION - - -/* NDIS 4.0 extensions */ - -NDISAPI -VOID -DDKAPI -NdisMFreeSharedMemory( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ ULONG Length, - /*IN*/ BOOLEAN Cached, - /*IN*/ PVOID VirtualAddress, - /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress); - -NDISAPI -VOID -DDKAPI -NdisMWanIndicateReceive( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE NdisLinkContext, - /*IN*/ PUCHAR PacketBuffer, - /*IN*/ UINT PacketSize); - -#define NdisMIndicateReceivePacket(_handle, _packets, _number) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(_handle))->PacketIndicateHandler)(_handle, _packets, _number); \ -} - -NDISAPI -VOID -DDKAPI -NdisMWanIndicateReceiveComplete( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -VOID -DDKAPI -NdisMWanSendComplete( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PNDIS_WAN_PACKET Packet, - /*IN*/ NDIS_STATUS Status); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisPciAssignResources( - /*IN*/ NDIS_HANDLE NdisMacHandle, - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*IN*/ ULONG SlotNumber, - /*OUT*/ PNDIS_RESOURCE_LIST *AssignedResources); - - -/* NDIS 5.0 extensions */ - -NDISAPI -VOID -DDKAPI -NdisAcquireReadWriteLock( - /*IN*/ PNDIS_RW_LOCK Lock, - /*IN*/ BOOLEAN fWrite, - /*IN*/ PLOCK_STATE LockState); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisAllocateMemoryWithTag( - /*OUT*/ PVOID *VirtualAddress, - /*IN*/ UINT Length, - /*IN*/ ULONG Tag); - -NDISAPI -VOID -DDKAPI -NdisAllocatePacketPoolEx( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE PoolHandle, - /*IN*/ UINT NumberOfDescriptors, - /*IN*/ UINT NumberOfOverflowDescriptors, - /*IN*/ UINT ProtocolReservedLength); - -NDISAPI -VOID -DDKAPI -NdisCompletePnPEvent( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PNET_PNP_EVENT NetPnPEvent); - -NDISAPI -VOID -DDKAPI -NdisGetCurrentProcessorCounts( - /*OUT*/ PULONG pIdleCount, - /*OUT*/ PULONG pKernelAndUser, - /*OUT*/ PULONG pIndex); - -NDISAPI -VOID -DDKAPI -NdisGetDriverHandle( - /*IN*/ PNDIS_HANDLE NdisBindingHandle, - /*OUT*/ PNDIS_HANDLE NdisDriverHandle); - -NDISAPI -PNDIS_PACKET -DDKAPI -NdisGetReceivedPacket( - /*IN*/ PNDIS_HANDLE NdisBindingHandle, - /*IN*/ PNDIS_HANDLE MacContext); - -NDISAPI -VOID -DDKAPI -NdisGetSystemUptime( - /*OUT*/ PULONG pSystemUpTime); - -NDISAPI -VOID -DDKAPI -NdisInitializeReadWriteLock( - /*IN*/ PNDIS_RW_LOCK Lock); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMDeregisterDevice( - /*IN*/ NDIS_HANDLE NdisDeviceHandle); - -NDISAPI -VOID -DDKAPI -NdisMGetDeviceProperty( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN OUT*/ PDEVICE_OBJECT *PhysicalDeviceObject /*OPTIONAL*/, - /*IN OUT*/ PDEVICE_OBJECT *FunctionalDeviceObject /*OPTIONAL*/, - /*IN OUT*/ PDEVICE_OBJECT *NextDeviceObject /*OPTIONAL*/, - /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResources /*OPTIONAL*/, - /*IN OUT*/ PCM_RESOURCE_LIST *AllocatedResourcesTranslated /*OPTIONAL*/); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMInitializeScatterGatherDma( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ BOOLEAN Dma64BitAddresses, - /*IN*/ ULONG MaximumPhysicalMapping); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMPromoteMiniport( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMQueryAdapterInstanceName( - /*OUT*/ PNDIS_STRING AdapterInstanceName, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMRegisterDevice( - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ PNDIS_STRING DeviceName, - /*IN*/ PNDIS_STRING SymbolicName, - /*IN*/ PDRIVER_DISPATCH MajorFunctions[], - /*OUT*/ PDEVICE_OBJECT *pDeviceObject, - /*OUT*/ NDIS_HANDLE *NdisDeviceHandle); - -NDISAPI -VOID -DDKAPI -NdisMRegisterUnloadHandler( - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ PDRIVER_UNLOAD UnloadHandler); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMRemoveMiniport( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMSetMiniportSecondary( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE PrimaryMiniportAdapterHandle); - -NDISAPI -VOID -DDKAPI -NdisOpenConfigurationKeyByIndex( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ConfigurationHandle, - /*IN*/ ULONG Index, - /*OUT*/ PNDIS_STRING KeyName, - /*OUT*/ PNDIS_HANDLE KeyHandle); - -NDISAPI -VOID -DDKAPI -NdisOpenConfigurationKeyByName( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE ConfigurationHandle, - /*IN*/ PNDIS_STRING SubKeyName, - /*OUT*/ PNDIS_HANDLE SubKeyHandle); - -NDISAPI -UINT -DDKAPI -NdisPacketPoolUsage( - /*IN*/ NDIS_HANDLE PoolHandle); - -NTOSAPI -VOID -DDKAPI -NdisSetPacketPoolProtocolId( - /*IN*/ NDIS_HANDLE PacketPoolHandle, - /*IN*/ UINT ProtocolId); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisQueryAdapterInstanceName( - /*OUT*/ PNDIS_STRING AdapterInstanceName, - /*IN*/ NDIS_HANDLE NdisBindingHandle); - -NDISAPI -ULONG -DDKAPI -NdisReadPcmciaAttributeMemory( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ ULONG Offset, - /*IN*/ PVOID Buffer, - /*IN*/ ULONG Length); - -NDISAPI -VOID -DDKAPI -NdisReleaseReadWriteLock( - /*IN*/ PNDIS_RW_LOCK Lock, - /*IN*/ PLOCK_STATE LockState); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisWriteEventLogEntry( - /*IN*/ PVOID LogHandle, - /*IN*/ NDIS_STATUS EventCode, - /*IN*/ ULONG UniqueEventValue, - /*IN*/ USHORT NumStrings, - /*IN*/ PVOID StringsList /*OPTIONAL*/, - /*IN*/ ULONG DataSize, - /*IN*/ PVOID Data /*OPTIONAL*/); - -NDISAPI -ULONG -DDKAPI -NdisWritePcmciaAttributeMemory( - /*IN*/ NDIS_HANDLE NdisAdapterHandle, - /*IN*/ ULONG Offset, - /*IN*/ PVOID Buffer, - /*IN*/ ULONG Length); - - -/* Connectionless services */ - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClAddParty( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ NDIS_HANDLE ProtocolPartyContext, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters, - /*OUT*/ PNDIS_HANDLE NdisPartyHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClCloseAddressFamily( - /*IN*/ NDIS_HANDLE NdisAfHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClCloseCall( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN*/ PVOID Buffer /*OPTIONAL*/, - /*IN*/ UINT Size); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClDeregisterSap( - /*IN*/ NDIS_HANDLE NdisSapHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClDropParty( - /*IN*/ NDIS_HANDLE NdisPartyHandle, - /*IN*/ PVOID Buffer /*OPTIONAL*/, - /*IN*/ UINT Size); - -NDISAPI -VOID -DDKAPI -NdisClIncomingCallComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClMakeCall( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters, - /*IN*/ NDIS_HANDLE ProtocolPartyContext /*OPTIONAL*/, - /*OUT*/ PNDIS_HANDLE NdisPartyHandle /*OPTIONAL*/); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClModifyCallQoS( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClOpenAddressFamily( - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PCO_ADDRESS_FAMILY AddressFamily, - /*IN*/ NDIS_HANDLE ProtocolAfContext, - /*IN*/ PNDIS_CLIENT_CHARACTERISTICS ClCharacteristics, - /*IN*/ UINT SizeOfClCharacteristics, - /*OUT*/ PNDIS_HANDLE NdisAfHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisClRegisterSap( - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*IN*/ NDIS_HANDLE ProtocolSapContext, - /*IN*/ PCO_SAP Sap, - /*OUT*/ PNDIS_HANDLE NdisSapHandle); - - -/* Call Manager services */ - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCmActivateVc( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmAddPartyComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisPartyHandle, - /*IN*/ NDIS_HANDLE CallMgrPartyContext /*OPTIONAL*/, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmCloseAddressFamilyComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisAfHandle); - -NDISAPI -VOID -DDKAPI -NdisCmCloseCallComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCmDeactivateVc( - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -VOID -DDKAPI -NdisCmDeregisterSapComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisSapHandle); - -NDISAPI -VOID -DDKAPI -NdisCmDispatchCallConnected( - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCmDispatchIncomingCall( - /*IN*/ NDIS_HANDLE NdisSapHandle, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmDispatchIncomingCallQoSChange( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmDispatchIncomingCloseCall( - /*IN*/ NDIS_STATUS CloseStatus, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PVOID Buffer /*OPTIONAL*/, - /*IN*/ UINT Size); - -NDISAPI -VOID -DDKAPI -NdisCmDispatchIncomingDropParty( - /*IN*/ NDIS_STATUS DropStatus, - /*IN*/ NDIS_HANDLE NdisPartyHandle, - /*IN*/ PVOID Buffer /*OPTIONAL*/, - /*IN*/ UINT Size); - -NDISAPI -VOID -DDKAPI -NdisCmDropPartyComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisPartyHandle); - -NDISAPI -VOID -DDKAPI -NdisCmMakeCallComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE CallMgrPartyContext /*OPTIONAL*/, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmModifyCallQoSComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisCmOpenAddressFamilyComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*IN*/ NDIS_HANDLE CallMgrAfContext); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCmRegisterAddressFamily( - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PCO_ADDRESS_FAMILY AddressFamily, - /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, - /*IN*/ UINT SizeOfCmCharacteristics); - -NDISAPI -VOID -DDKAPI -NdisCmRegisterSapComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisSapHandle, - /*IN*/ NDIS_HANDLE CallMgrSapContext); - - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmActivateVc( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmCreateVc( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*IN*/ NDIS_HANDLE MiniportVcContext, - /*OUT*/ PNDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmDeactivateVc( - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmDeleteVc( - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmRegisterAddressFamily( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PCO_ADDRESS_FAMILY AddressFamily, - /*IN*/ PNDIS_CALL_MANAGER_CHARACTERISTICS CmCharacteristics, - /*IN*/ UINT SizeOfCmCharacteristics); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCmRequest( - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*IN*/ NDIS_HANDLE NdisVcHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN OUT*/ PNDIS_REQUEST NdisRequest); - - -/* Connection-oriented services */ - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCoCreateVc( - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ NDIS_HANDLE NdisAfHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE ProtocolVcContext, - /*IN OUT*/ PNDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCoDeleteVc( - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisCoRequest( - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ NDIS_HANDLE NdisAfHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE NdisVcHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN OUT*/ PNDIS_REQUEST NdisRequest); - -NDISAPI -VOID -DDKAPI -NdisCoRequestComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisAfHandle, - /*IN*/ NDIS_HANDLE NdisVcHandle /*OPTIONAL*/, - /*IN*/ NDIS_HANDLE NdisPartyHandle /*OPTIONAL*/, - /*IN*/ PNDIS_REQUEST NdisRequest); - -NDISAPI -VOID -DDKAPI -NdisCoSendPackets( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -NDISAPI -VOID -DDKAPI -NdisMCoActivateVcComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PCO_CALL_PARAMETERS CallParameters); - -NDISAPI -VOID -DDKAPI -NdisMCoDeactivateVcComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle); - -NDISAPI -VOID -DDKAPI -NdisMCoIndicateReceivePacket( - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -NDISAPI -VOID -DDKAPI -NdisMCoIndicateStatus( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE NdisVcHandle /*OPTIONAL*/, - /*IN*/ NDIS_STATUS GeneralStatus, - /*IN*/ PVOID StatusBuffer /*OPTIONAL*/, - /*IN*/ ULONG StatusBufferSize); - -NDISAPI -VOID -DDKAPI -NdisMCoReceiveComplete( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -VOID -DDKAPI -NdisMCoRequestComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PNDIS_REQUEST Request); - -NDISAPI -VOID -DDKAPI -NdisMCoSendComplete( - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*IN*/ PNDIS_PACKET Packet); - - -/* NDIS 5.0 extensions for intermediate drivers */ - -NDISAPI -VOID -DDKAPI -NdisIMAssociateMiniport( - /*IN*/ NDIS_HANDLE DriverHandle, - /*IN*/ NDIS_HANDLE ProtocolHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisIMCancelInitializeDeviceInstance( - /*IN*/ NDIS_HANDLE DriverHandle, - /*IN*/ PNDIS_STRING DeviceInstance); - -NDISAPI -VOID -DDKAPI -NdisIMCopySendCompletePerPacketInfo( - /*IN*/ PNDIS_PACKET DstPacket, - /*IN*/ PNDIS_PACKET SrcPacket); - -NDISAPI -VOID -DDKAPI -NdisIMCopySendPerPacketInfo( - /*IN*/ PNDIS_PACKET DstPacket, - /*IN*/ PNDIS_PACKET SrcPacket); - -NDISAPI -VOID -DDKAPI -NdisIMDeregisterLayeredMiniport( - /*IN*/ NDIS_HANDLE DriverHandle); - -NDISAPI -NDIS_HANDLE -DDKAPI -NdisIMGetBindingContext( - /*IN*/ NDIS_HANDLE NdisBindingHandle); - -NDISAPI -NDIS_HANDLE -DDKAPI -NdisIMGetDeviceContext( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisIMInitializeDeviceInstanceEx( - /*IN*/ NDIS_HANDLE DriverHandle, - /*IN*/ PNDIS_STRING DriverInstance, - /*IN*/ NDIS_HANDLE DeviceContext /*OPTIONAL*/); - -NDISAPI -PSINGLE_LIST_ENTRY -DDKAPI -NdisInterlockedPopEntrySList( - /*IN*/ PSLIST_HEADER ListHead, - /*IN*/ PKSPIN_LOCK Lock); - -NDISAPI -PSINGLE_LIST_ENTRY -DDKAPI -NdisInterlockedPushEntrySList( - /*IN*/ PSLIST_HEADER ListHead, - /*IN*/ PSINGLE_LIST_ENTRY ListEntry, - /*IN*/ PKSPIN_LOCK Lock); - -NDISAPI -VOID -DDKAPI -NdisQueryBufferSafe( - /*IN*/ PNDIS_BUFFER Buffer, - /*OUT*/ PVOID *VirtualAddress /*OPTIONAL*/, - /*OUT*/ PUINT Length, - /*IN*/ UINT Priority); - - -/* Prototypes for NDIS_MINIPORT_CHARACTERISTICS */ - -typedef BOOLEAN DDKAPI -(*W_CHECK_FOR_HANG_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef VOID DDKAPI -(*W_DISABLE_INTERRUPT_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef VOID DDKAPI -(*W_ENABLE_INTERRUPT_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef VOID DDKAPI -(*W_HALT_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef VOID DDKAPI -(*W_HANDLE_INTERRUPT_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef NDIS_STATUS DDKAPI -(*W_INITIALIZE_HANDLER)( - /*OUT*/ PNDIS_STATUS OpenErrorStatus, - /*OUT*/ PUINT SelectedMediumIndex, - /*IN*/ PNDIS_MEDIUM MediumArray, - /*IN*/ UINT MediumArraySize, - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext); - -typedef VOID DDKAPI -(*W_ISR_HANDLER)( - /*OUT*/ PBOOLEAN InterruptRecognized, - /*OUT*/ PBOOLEAN QueueMiniportHandleInterrupt, - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef NDIS_STATUS DDKAPI -(*W_QUERY_INFORMATION_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_OID Oid, - /*IN*/ PVOID InformationBuffer, - /*IN*/ ULONG InformationBufferLength, - /*OUT*/ PULONG BytesWritten, - /*OUT*/ PULONG BytesNeeded); - -typedef NDIS_STATUS DDKAPI -(*W_RECONFIGURE_HANDLER)( - /*OUT*/ PNDIS_STATUS OpenErrorStatus, - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext); - -typedef NDIS_STATUS DDKAPI -(*W_RESET_HANDLER)( - /*OUT*/ PBOOLEAN AddressingReset, - /*IN*/ NDIS_HANDLE MiniportAdapterContext); - -typedef NDIS_STATUS DDKAPI -(*W_SEND_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PNDIS_PACKET Packet, - /*IN*/ UINT Flags); - -typedef NDIS_STATUS DDKAPI -(*WM_SEND_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE NdisLinkHandle, - /*IN*/ PNDIS_WAN_PACKET Packet); - -typedef NDIS_STATUS DDKAPI -(*W_SET_INFORMATION_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_OID Oid, - /*IN*/ PVOID InformationBuffer, - /*IN*/ ULONG InformationBufferLength, - /*OUT*/ PULONG BytesRead, - /*OUT*/ PULONG BytesNeeded); - -typedef NDIS_STATUS DDKAPI -(*W_TRANSFER_DATA_HANDLER)( - /*OUT*/ PNDIS_PACKET Packet, - /*OUT*/ PUINT BytesTransferred, - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE MiniportReceiveContext, - /*IN*/ UINT ByteOffset, - /*IN*/ UINT BytesToTransfer); - -typedef NDIS_STATUS DDKAPI -(*WM_TRANSFER_DATA_HANDLER)( - VOID); - - -/* NDIS structures available only to miniport drivers */ - -#define NDIS30_MINIPORT_CHARACTERISTICS_S \ - UCHAR MajorNdisVersion; \ - UCHAR MinorNdisVersion; \ - UINT Reserved; \ - W_CHECK_FOR_HANG_HANDLER CheckForHangHandler; \ - W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; \ - W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; \ - W_HALT_HANDLER HaltHandler; \ - W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; \ - W_INITIALIZE_HANDLER InitializeHandler; \ - W_ISR_HANDLER ISRHandler; \ - W_QUERY_INFORMATION_HANDLER QueryInformationHandler; \ - W_RECONFIGURE_HANDLER ReconfigureHandler; \ - W_RESET_HANDLER ResetHandler; \ - _ANONYMOUS_UNION union { \ - W_SEND_HANDLER SendHandler; \ - WM_SEND_HANDLER WanSendHandler; \ - } _UNION_NAME(u1); \ - W_SET_INFORMATION_HANDLER SetInformationHandler; \ - _ANONYMOUS_UNION union { \ - W_TRANSFER_DATA_HANDLER TransferDataHandler; \ - WM_TRANSFER_DATA_HANDLER WanTransferDataHandler; \ - } _UNION_NAME(u2); - -typedef struct _NDIS30_MINIPORT_CHARACTERISTICS { - NDIS30_MINIPORT_CHARACTERISTICS_S -} NDIS30_MINIPORT_CHARACTERISTICS, *PSNDIS30_MINIPORT_CHARACTERISTICS; - - -/* Extensions for NDIS 4.0 miniports */ - -typedef VOID DDKAPI -(*W_SEND_PACKETS_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -typedef VOID DDKAPI -(*W_RETURN_PACKET_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PNDIS_PACKET Packet); - -typedef VOID DDKAPI -(*W_ALLOCATE_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PVOID VirtualAddress, - /*IN*/ PNDIS_PHYSICAL_ADDRESS PhysicalAddress, - /*IN*/ ULONG Length, - /*IN*/ PVOID Context); - -#ifdef __cplusplus - -#define NDIS40_MINIPORT_CHARACTERISTICS_S \ - NDIS30_MINIPORT_CHARACTERISTICS Ndis30Chars; \ - W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ - W_SEND_PACKETS_HANDLER SendPacketsHandler; \ - W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; - -#else /* !__cplusplus */ - -#define NDIS40_MINIPORT_CHARACTERISTICS_S \ - NDIS30_MINIPORT_CHARACTERISTICS_S \ - W_RETURN_PACKET_HANDLER ReturnPacketHandler; \ - W_SEND_PACKETS_HANDLER SendPacketsHandler; \ - W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler; - -#endif /* !__cplusplus */ - -typedef struct _NDIS40_MINIPORT_CHARACTERISTICS { - NDIS40_MINIPORT_CHARACTERISTICS_S -} NDIS40_MINIPORT_CHARACTERISTICS, *PNDIS40_MINIPORT_CHARACTERISTICS; - - -/* Extensions for NDIS 5.0 miniports */ - -typedef NDIS_STATUS DDKAPI -(*W_CO_CREATE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE NdisVcHandle, - /*OUT*/ PNDIS_HANDLE MiniportVcContext); - -typedef NDIS_STATUS DDKAPI -(*W_CO_DELETE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportVcContext); - -typedef NDIS_STATUS DDKAPI -(*W_CO_ACTIVATE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportVcContext, - /*IN OUT*/ PCO_CALL_PARAMETERS CallParameters); - -typedef NDIS_STATUS DDKAPI -(*W_CO_DEACTIVATE_VC_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportVcContext); - -typedef VOID DDKAPI -(*W_CO_SEND_PACKETS_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportVcContext, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -typedef NDIS_STATUS DDKAPI -(*W_CO_REQUEST_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ NDIS_HANDLE MiniportVcContext /*OPTIONAL*/, - /*IN OUT*/ PNDIS_REQUEST NdisRequest); - -#ifdef __cplusplus - -#define NDIS50_MINIPORT_CHARACTERISTICS_S \ - NDIS40_MINIPORT_CHARACTERISTICS Ndis40Chars; \ - W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ - W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ - W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ - W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ - W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ - W_CO_REQUEST_HANDLER CoRequestHandler; - -#else /* !__cplusplus */ - -#define NDIS50_MINIPORT_CHARACTERISTICS_S \ - NDIS40_MINIPORT_CHARACTERISTICS_S \ - W_CO_CREATE_VC_HANDLER CoCreateVcHandler; \ - W_CO_DELETE_VC_HANDLER CoDeleteVcHandler; \ - W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler; \ - W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler; \ - W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler; \ - W_CO_REQUEST_HANDLER CoRequestHandler; - -#endif /* !__cplusplus */ - -typedef struct _NDIS50_MINIPORT_CHARACTERISTICS { - NDIS50_MINIPORT_CHARACTERISTICS_S -} NDIS50_MINIPORT_CHARACTERISTICS, *PSNDIS50_MINIPORT_CHARACTERISTICS; - - -/* Extensions for NDIS 5.1 miniports */ - -typedef VOID DDKAPI -(*W_CANCEL_SEND_PACKETS_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PVOID CancelId); - - -#if defined(NDIS51) -typedef struct _NDIS_MINIPORT_CHARACTERISTICS { - NDIS50_MINIPORT_CHARACTERISTICS_S -} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; -#elif defined(NDIS50) -typedef struct _NDIS_MINIPORT_CHARACTERISTICS { - NDIS50_MINIPORT_CHARACTERISTICS_S -} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; -#elif defined(NDIS40) -typedef struct _NDIS_MINIPORT_CHARACTERISTICS { - NDIS40_MINIPORT_CHARACTERISTICS_S -} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; -#elif defined(NDIS30) -typedef struct _NDIS_MINIPORT_CHARACTERISTICS { - NDIS30_MINIPORT_CHARACTERISTICS_S -} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS; -#endif /* NDIS30 */ - - -typedef NDIS_STATUS DDKAPI -(*SEND_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle, - /*IN*/ PNDIS_PACKET Packet); - -typedef NDIS_STATUS DDKAPI -(*TRANSFER_DATA_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ UINT ByteOffset, - /*IN*/ UINT BytesToTransfer, - /*OUT*/ PNDIS_PACKET Packet, - /*OUT*/ PUINT BytesTransferred); - -typedef NDIS_STATUS DDKAPI -(*RESET_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle); - -typedef NDIS_STATUS DDKAPI -(*REQUEST_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle, - /*IN*/ PNDIS_REQUEST NdisRequest); - - - -/* Structures available only to full MAC drivers */ - -typedef BOOLEAN DDKAPI -(*PNDIS_INTERRUPT_SERVICE)( - /*IN*/ PVOID InterruptContext); - -typedef VOID DDKAPI -(*PNDIS_DEFERRED_PROCESSING)( - /*IN*/ PVOID SystemSpecific1, - /*IN*/ PVOID InterruptContext, - /*IN*/ PVOID SystemSpecific2, - /*IN*/ PVOID SystemSpecific3); - - - -typedef struct _NDIS_MINIPORT_BLOCK NDIS_MINIPORT_BLOCK, *PNDIS_MINIPORT_BLOCK; -typedef struct _NDIS_PROTOCOL_BLOCK NDIS_PROTOCOL_BLOCK, *PNDIS_PROTOCOL_BLOCK; -typedef struct _NDIS_OPEN_BLOCK NDIS_OPEN_BLOCK, *PNDIS_OPEN_BLOCK; -typedef struct _NDIS_M_DRIVER_BLOCK NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK; -typedef struct _NDIS_AF_LIST NDIS_AF_LIST, *PNDIS_AF_LIST; - - -typedef struct _NDIS_MINIPORT_INTERRUPT { - PKINTERRUPT InterruptObject; - KSPIN_LOCK DpcCountLock; - PVOID MiniportIdField; - W_ISR_HANDLER MiniportIsr; - W_HANDLE_INTERRUPT_HANDLER MiniportDpc; - KDPC InterruptDpc; - PNDIS_MINIPORT_BLOCK Miniport; - UCHAR DpcCount; - BOOLEAN Filler1; - KEVENT DpcsCompletedEvent; - BOOLEAN SharedInterrupt; - BOOLEAN IsrRequested; -} NDIS_MINIPORT_INTERRUPT, *PNDIS_MINIPORT_INTERRUPT; - -typedef struct _NDIS_MINIPORT_TIMER { - KTIMER Timer; - KDPC Dpc; - PNDIS_TIMER_FUNCTION MiniportTimerFunction; - PVOID MiniportTimerContext; - PNDIS_MINIPORT_BLOCK Miniport; - struct _NDIS_MINIPORT_TIMER *NextDeferredTimer; -} NDIS_MINIPORT_TIMER, *PNDIS_MINIPORT_TIMER; - -typedef struct _NDIS_INTERRUPT { - PKINTERRUPT InterruptObject; - KSPIN_LOCK DpcCountLock; - PNDIS_INTERRUPT_SERVICE MacIsr; - PNDIS_DEFERRED_PROCESSING MacDpc; - KDPC InterruptDpc; - PVOID InterruptContext; - UCHAR DpcCount; - BOOLEAN Removing; - KEVENT DpcsCompletedEvent; -} NDIS_INTERRUPT, *PNDIS_INTERRUPT; - - -typedef struct _MAP_REGISTER_ENTRY { - PVOID MapRegister; - BOOLEAN WriteToDevice; -} MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY; - - -typedef enum _NDIS_WORK_ITEM_TYPE { - NdisWorkItemRequest, - NdisWorkItemSend, - NdisWorkItemReturnPackets, - NdisWorkItemResetRequested, - NdisWorkItemResetInProgress, - NdisWorkItemHalt, - NdisWorkItemSendLoopback, - NdisWorkItemMiniportCallback, - NdisMaxWorkItems -} NDIS_WORK_ITEM_TYPE, *PNDIS_WORK_ITEM_TYPE; - -#define NUMBER_OF_WORK_ITEM_TYPES NdisMaxWorkItems -#define NUMBER_OF_SINGLE_WORK_ITEMS 6 - -typedef struct _NDIS_MINIPORT_WORK_ITEM { - SINGLE_LIST_ENTRY Link; - NDIS_WORK_ITEM_TYPE WorkItemType; - PVOID WorkItemContext; -} NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM; - - -typedef struct _NDIS_BIND_PATHS { - UINT Number; - NDIS_STRING Paths[1]; -} NDIS_BIND_PATHS, *PNDIS_BIND_PATHS; - -#define DECLARE_UNKNOWN_STRUCT(BaseName) \ - typedef struct _##BaseName BaseName, *P##BaseName; - -#define DECLARE_UNKNOWN_PROTOTYPE(Name) \ - typedef VOID (*(Name))(VOID); - -#define ETH_LENGTH_OF_ADDRESS 6 - -DECLARE_UNKNOWN_STRUCT(ETH_BINDING_INFO) - -DECLARE_UNKNOWN_PROTOTYPE(ETH_ADDRESS_CHANGE) -DECLARE_UNKNOWN_PROTOTYPE(ETH_FILTER_CHANGE) -DECLARE_UNKNOWN_PROTOTYPE(ETH_DEFERRED_CLOSE) - -typedef struct _ETH_FILTER { - PNDIS_SPIN_LOCK Lock; - CHAR (*MCastAddressBuf)[ETH_LENGTH_OF_ADDRESS]; - struct _NDIS_MINIPORT_BLOCK *Miniport; - UINT CombinedPacketFilter; - PETH_BINDING_INFO OpenList; - ETH_ADDRESS_CHANGE AddressChangeAction; - ETH_FILTER_CHANGE FilterChangeAction; - ETH_DEFERRED_CLOSE CloseAction; - UINT MaxMulticastAddresses; - UINT NumAddresses; - UCHAR AdapterAddress[ETH_LENGTH_OF_ADDRESS]; - UINT OldCombinedPacketFilter; - CHAR (*OldMCastAddressBuf)[ETH_LENGTH_OF_ADDRESS]; - UINT OldNumAddresses; - PETH_BINDING_INFO DirectedList; - PETH_BINDING_INFO BMList; - PETH_BINDING_INFO MCastSet; -#if defined(_NDIS_) - UINT NumOpens; - PVOID BindListLock; -#endif -} ETH_FILTER, *PETH_FILTER; - -typedef VOID DDKAPI -(*ETH_RCV_COMPLETE_HANDLER)( - /*IN*/ PETH_FILTER Filter); - -typedef VOID DDKAPI -(*ETH_RCV_INDICATE_HANDLER)( - /*IN*/ PETH_FILTER Filter, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ PCHAR Address, - /*IN*/ PVOID HeaderBuffer, - /*IN*/ UINT HeaderBufferSize, - /*IN*/ PVOID LookaheadBuffer, - /*IN*/ UINT LookaheadBufferSize, - /*IN*/ UINT PacketSize); - -typedef VOID DDKAPI -(*FDDI_RCV_COMPLETE_HANDLER)( - /*IN*/ PFDDI_FILTER Filter); - -typedef VOID DDKAPI -(*FDDI_RCV_INDICATE_HANDLER)( - /*IN*/ PFDDI_FILTER Filter, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ PCHAR Address, - /*IN*/ UINT AddressLength, - /*IN*/ PVOID HeaderBuffer, - /*IN*/ UINT HeaderBufferSize, - /*IN*/ PVOID LookaheadBuffer, - /*IN*/ UINT LookaheadBufferSize, - /*IN*/ UINT PacketSize); - -typedef VOID DDKAPI -(*FILTER_PACKET_INDICATION_HANDLER)( - /*IN*/ NDIS_HANDLE Miniport, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -typedef VOID DDKAPI -(*TR_RCV_COMPLETE_HANDLER)( - /*IN*/ PTR_FILTER Filter); - -typedef VOID DDKAPI -(*TR_RCV_INDICATE_HANDLER)( - /*IN*/ PTR_FILTER Filter, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ PVOID HeaderBuffer, - /*IN*/ UINT HeaderBufferSize, - /*IN*/ PVOID LookaheadBuffer, - /*IN*/ UINT LookaheadBufferSize, - /*IN*/ UINT PacketSize); - -typedef VOID DDKAPI -(*WAN_RCV_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE NdisLinkContext); - -typedef VOID DDKAPI -(*WAN_RCV_HANDLER)( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE NdisLinkContext, - /*IN*/ PUCHAR Packet, - /*IN*/ ULONG PacketSize); - -typedef VOID DDKFASTAPI -(*NDIS_M_DEQUEUE_WORK_ITEM)( - /*IN*/ PNDIS_MINIPORT_BLOCK Miniport, - /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType, - /*OUT*/ PVOID *WorkItemContext); - -typedef NDIS_STATUS DDKFASTAPI -(*NDIS_M_QUEUE_NEW_WORK_ITEM)( - /*IN*/ PNDIS_MINIPORT_BLOCK Miniport, - /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType, - /*IN*/ PVOID WorkItemContext); - -typedef NDIS_STATUS DDKFASTAPI -(*NDIS_M_QUEUE_WORK_ITEM)( - /*IN*/ PNDIS_MINIPORT_BLOCK Miniport, - /*IN*/ NDIS_WORK_ITEM_TYPE WorkItemType, - /*IN*/ PVOID WorkItemContext); - -typedef VOID DDKAPI -(*NDIS_M_REQ_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*NDIS_M_RESET_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_STATUS Status, - /*IN*/ BOOLEAN AddressingReset); - -typedef VOID DDKAPI -(*NDIS_M_SEND_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PNDIS_PACKET Packet, - /*IN*/ NDIS_STATUS Status); - -typedef VOID DDKAPI -(*NDIS_M_SEND_RESOURCES_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -typedef BOOLEAN DDKFASTAPI -(*NDIS_M_START_SENDS)( - /*IN*/ PNDIS_MINIPORT_BLOCK Miniport); - -typedef VOID DDKAPI -(*NDIS_M_STATUS_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportHandle, - /*IN*/ NDIS_STATUS GeneralStatus, - /*IN*/ PVOID StatusBuffer, - /*IN*/ UINT StatusBufferSize); - -typedef VOID DDKAPI -(*NDIS_M_STS_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -typedef VOID DDKAPI -(*NDIS_M_TD_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PNDIS_PACKET Packet, - /*IN*/ NDIS_STATUS Status, - /*IN*/ UINT BytesTransferred); - -typedef VOID (DDKAPI *NDIS_WM_SEND_COMPLETE_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PVOID Packet, - /*IN*/ NDIS_STATUS Status); - - -#if ARCNET - -#define ARC_SEND_BUFFERS 8 -#define ARC_HEADER_SIZE 4 - -typedef struct _NDIS_ARC_BUF { - NDIS_HANDLE ArcnetBufferPool; - PUCHAR ArcnetLookaheadBuffer; - UINT NumFree; - ARC_BUFFER_LIST ArcnetBuffers[ARC_SEND_BUFFERS]; -} NDIS_ARC_BUF, *PNDIS_ARC_BUF; - -#endif /* ARCNET */ - -#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10 - -typedef struct _NDIS_LOG { - PNDIS_MINIPORT_BLOCK Miniport; - KSPIN_LOCK LogLock; - PIRP Irp; - UINT TotalSize; - UINT CurrentSize; - UINT InPtr; - UINT OutPtr; - UCHAR LogBuf[1]; -} NDIS_LOG, *PNDIS_LOG; - -typedef struct _FILTERDBS { - _ANONYMOUS_UNION union { - PETH_FILTER EthDB; - PNULL_FILTER NullDB; - } DUMMYUNIONNAME; - PTR_FILTER TrDB; - PFDDI_FILTER FddiDB; -#if ARCNET - PARC_FILTER ArcDB; -#else /* !ARCNET */ - PVOID XXXDB; -#endif /* !ARCNET */ -} FILTERDBS, *PFILTERDBS; - - -struct _NDIS_MINIPORT_BLOCK { - PVOID Signature; - PNDIS_MINIPORT_BLOCK NextMiniport; - PNDIS_M_DRIVER_BLOCK DriverHandle; - NDIS_HANDLE MiniportAdapterContext; - UNICODE_STRING MiniportName; - PNDIS_BIND_PATHS BindPaths; - NDIS_HANDLE OpenQueue; - REFERENCE Ref; - NDIS_HANDLE DeviceContext; - UCHAR Padding1; - UCHAR LockAcquired; - UCHAR PmodeOpens; - UCHAR AssignedProcessor; - KSPIN_LOCK Lock; - PNDIS_REQUEST MediaRequest; - PNDIS_MINIPORT_INTERRUPT Interrupt; - ULONG Flags; - ULONG PnPFlags; - LIST_ENTRY PacketList; - PNDIS_PACKET FirstPendingPacket; - PNDIS_PACKET ReturnPacketsQueue; - ULONG RequestBuffer; - PVOID SetMCastBuffer; - PNDIS_MINIPORT_BLOCK PrimaryMiniport; - PVOID WrapperContext; - PVOID BusDataContext; - ULONG PnPCapabilities; - PCM_RESOURCE_LIST Resources; - NDIS_TIMER WakeUpDpcTimer; - UNICODE_STRING BaseName; - UNICODE_STRING SymbolicLinkName; - ULONG CheckForHangSeconds; - USHORT CFHangTicks; - USHORT CFHangCurrentTick; - NDIS_STATUS ResetStatus; - NDIS_HANDLE ResetOpen; - FILTERDBS FilterDbs; - FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler; - NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler; - NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler; - NDIS_M_RESET_COMPLETE_HANDLER ResetCompleteHandler; - NDIS_MEDIUM MediaType; - ULONG BusNumber; - NDIS_INTERFACE_TYPE BusType; - NDIS_INTERFACE_TYPE AdapterType; - PDEVICE_OBJECT DeviceObject; - PDEVICE_OBJECT PhysicalDeviceObject; - PDEVICE_OBJECT NextDeviceObject; - PMAP_REGISTER_ENTRY MapRegisters; - PNDIS_AF_LIST CallMgrAfList; - PVOID MiniportThread; - PVOID SetInfoBuf; - USHORT SetInfoBufLen; - USHORT MaxSendPackets; - NDIS_STATUS FakeStatus; - PVOID LockHandler; - PUNICODE_STRING pAdapterInstanceName; - PNDIS_MINIPORT_TIMER TimerQueue; - UINT MacOptions; - PNDIS_REQUEST PendingRequest; - UINT MaximumLongAddresses; - UINT MaximumShortAddresses; - UINT CurrentLookahead; - UINT MaximumLookahead; - W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler; - W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler; - W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler; - W_SEND_PACKETS_HANDLER SendPacketsHandler; - NDIS_M_START_SENDS DeferredSendHandler; - ETH_RCV_INDICATE_HANDLER EthRxIndicateHandler; - TR_RCV_INDICATE_HANDLER TrRxIndicateHandler; - FDDI_RCV_INDICATE_HANDLER FddiRxIndicateHandler; - ETH_RCV_COMPLETE_HANDLER EthRxCompleteHandler; - TR_RCV_COMPLETE_HANDLER TrRxCompleteHandler; - FDDI_RCV_COMPLETE_HANDLER FddiRxCompleteHandler; - NDIS_M_STATUS_HANDLER StatusHandler; - NDIS_M_STS_COMPLETE_HANDLER StatusCompleteHandler; - NDIS_M_TD_COMPLETE_HANDLER TDCompleteHandler; - NDIS_M_REQ_COMPLETE_HANDLER QueryCompleteHandler; - NDIS_M_REQ_COMPLETE_HANDLER SetCompleteHandler; - NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler; - WAN_RCV_HANDLER WanRcvHandler; - WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler; -#if defined(_NDIS_) - PNDIS_MINIPORT_BLOCK NextGlobalMiniport; - SINGLE_LIST_ENTRY WorkQueue[NUMBER_OF_WORK_ITEM_TYPES]; - SINGLE_LIST_ENTRY SingleWorkItems[NUMBER_OF_SINGLE_WORK_ITEMS]; - UCHAR SendFlags; - UCHAR TrResetRing; - UCHAR ArcnetAddress; - UCHAR XState; - _ANONYMOUS_UNION union { -#if ARCNET - PNDIS_ARC_BUF ArcBuf; -#endif - PVOID BusInterface; - } DUMMYUNIONNAME; - PNDIS_LOG Log; - ULONG SlotNumber; - PCM_RESOURCE_LIST AllocatedResources; - PCM_RESOURCE_LIST AllocatedResourcesTranslated; - SINGLE_LIST_ENTRY PatternList; - NDIS_PNP_CAPABILITIES PMCapabilities; - DEVICE_CAPABILITIES DeviceCaps; - ULONG WakeUpEnable; - DEVICE_POWER_STATE CurrentDevicePowerState; - PIRP pIrpWaitWake; - SYSTEM_POWER_STATE WaitWakeSystemState; - LARGE_INTEGER VcIndex; - KSPIN_LOCK VcCountLock; - LIST_ENTRY WmiEnabledVcs; - PNDIS_GUID pNdisGuidMap; - PNDIS_GUID pCustomGuidMap; - USHORT VcCount; - USHORT cNdisGuidMap; - USHORT cCustomGuidMap; - USHORT CurrentMapRegister; - PKEVENT AllocationEvent; - USHORT BaseMapRegistersNeeded; - USHORT SGMapRegistersNeeded; - ULONG MaximumPhysicalMapping; - NDIS_TIMER MediaDisconnectTimer; - USHORT MediaDisconnectTimeOut; - USHORT InstanceNumber; - NDIS_EVENT OpenReadyEvent; - NDIS_PNP_DEVICE_STATE PnPDeviceState; - NDIS_PNP_DEVICE_STATE OldPnPDeviceState; - PGET_SET_DEVICE_DATA SetBusData; - PGET_SET_DEVICE_DATA GetBusData; - KDPC DeferredDpc; -#if 0 - /* FIXME: */ - NDIS_STATS NdisStats; -#else - ULONG NdisStats; -#endif - PNDIS_PACKET IndicatedPacket[MAXIMUM_PROCESSORS]; - PKEVENT RemoveReadyEvent; - PKEVENT AllOpensClosedEvent; - PKEVENT AllRequestsCompletedEvent; - ULONG InitTimeMs; - NDIS_MINIPORT_WORK_ITEM WorkItemBuffer[NUMBER_OF_SINGLE_WORK_ITEMS]; - PDMA_ADAPTER SystemAdapterObject; - ULONG DriverVerifyFlags; - POID_LIST OidList; - USHORT InternalResetCount; - USHORT MiniportResetCount; - USHORT MediaSenseConnectCount; - USHORT MediaSenseDisconnectCount; - PNDIS_PACKET *xPackets; - ULONG UserModeOpenReferences; - _ANONYMOUS_UNION union { - PVOID SavedSendHandler; - PVOID SavedWanSendHandler; - } DUMMYUNIONNAME2; - PVOID SavedSendPacketsHandler; - PVOID SavedCancelSendPacketsHandler; - W_SEND_PACKETS_HANDLER WSendPacketsHandler; - ULONG MiniportAttributes; - PDMA_ADAPTER SavedSystemAdapterObject; - USHORT NumOpens; - USHORT CFHangXTicks; - ULONG RequestCount; - ULONG IndicatedPacketsCount; - ULONG PhysicalMediumType; - PNDIS_REQUEST LastRequest; - LONG DmaAdapterRefCount; - PVOID FakeMac; - ULONG LockDbg; - ULONG LockDbgX; - PVOID LockThread; - ULONG InfoFlags; - KSPIN_LOCK TimerQueueLock; - PKEVENT ResetCompletedEvent; - PKEVENT QueuedBindingCompletedEvent; - PKEVENT DmaResourcesReleasedEvent; - FILTER_PACKET_INDICATION_HANDLER SavedPacketIndicateHandler; - ULONG RegisteredInterrupts; - PNPAGED_LOOKASIDE_LIST SGListLookasideList; - ULONG ScatterGatherListSize; -#endif /* _NDIS_ */ -}; - - -/* Handler prototypes for NDIS_OPEN_BLOCK */ - -typedef NDIS_STATUS (DDKAPI *WAN_SEND_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle, - /*IN*/ NDIS_HANDLE LinkHandle, - /*IN*/ PVOID Packet); - -/* NDIS 4.0 extension */ - -typedef VOID (DDKAPI *SEND_PACKETS_HANDLER)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - - -typedef struct _NDIS_COMMON_OPEN_BLOCK { - PVOID MacHandle; - NDIS_HANDLE BindingHandle; - PNDIS_MINIPORT_BLOCK MiniportHandle; - PNDIS_PROTOCOL_BLOCK ProtocolHandle; - NDIS_HANDLE ProtocolBindingContext; - PNDIS_OPEN_BLOCK MiniportNextOpen; - PNDIS_OPEN_BLOCK ProtocolNextOpen; - NDIS_HANDLE MiniportAdapterContext; - BOOLEAN Reserved1; - BOOLEAN Reserved2; - BOOLEAN Reserved3; - BOOLEAN Reserved4; - PNDIS_STRING BindDeviceName; - KSPIN_LOCK Reserved5; - PNDIS_STRING RootDeviceName; - _ANONYMOUS_UNION union { - SEND_HANDLER SendHandler; - WAN_SEND_HANDLER WanSendHandler; - } DUMMYUNIONNAME; - TRANSFER_DATA_HANDLER TransferDataHandler; - SEND_COMPLETE_HANDLER SendCompleteHandler; - TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler; - RECEIVE_HANDLER ReceiveHandler; - RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler; - WAN_RECEIVE_HANDLER WanReceiveHandler; - REQUEST_COMPLETE_HANDLER RequestCompleteHandler; - RECEIVE_PACKET_HANDLER ReceivePacketHandler; - SEND_PACKETS_HANDLER SendPacketsHandler; - RESET_HANDLER ResetHandler; - REQUEST_HANDLER RequestHandler; - RESET_COMPLETE_HANDLER ResetCompleteHandler; - STATUS_HANDLER StatusHandler; - STATUS_COMPLETE_HANDLER StatusCompleteHandler; -#if defined(_NDIS_) - ULONG Flags; - ULONG References; - KSPIN_LOCK SpinLock; - NDIS_HANDLE FilterHandle; - ULONG ProtocolOptions; - USHORT CurrentLookahead; - USHORT ConnectDampTicks; - USHORT DisconnectDampTicks; - W_SEND_HANDLER WSendHandler; - W_TRANSFER_DATA_HANDLER WTransferDataHandler; - W_SEND_PACKETS_HANDLER WSendPacketsHandler; - W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler; - ULONG WakeUpEnable; - PKEVENT CloseCompleteEvent; - QUEUED_CLOSE QC; - ULONG AfReferences; - PNDIS_OPEN_BLOCK NextGlobalOpen; -#endif /* _NDIS_ */ -} NDIS_COMMON_OPEN_BLOCK; - -struct _NDIS_OPEN_BLOCK -{ - NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock; -#if defined(_NDIS_) - struct _NDIS_OPEN_CO - { - struct _NDIS_CO_AF_BLOCK * NextAf; - W_CO_CREATE_VC_HANDLER MiniportCoCreateVcHandler; - W_CO_REQUEST_HANDLER MiniportCoRequestHandler; - CO_CREATE_VC_HANDLER CoCreateVcHandler; - CO_DELETE_VC_HANDLER CoDeleteVcHandler; - PVOID CmActivateVcCompleteHandler; - PVOID CmDeactivateVcCompleteHandler; - PVOID CoRequestCompleteHandler; - LIST_ENTRY ActiveVcHead; - LIST_ENTRY InactiveVcHead; - LONG PendingAfNotifications; - PKEVENT AfNotifyCompleteEvent; - }; -#endif /* _NDIS_ */ -}; - - - -/* Routines for NDIS miniport drivers */ - -NTOSAPI -VOID -DDKAPI -NdisMInitializeTimer( - /*IN*/ /*OUT*/ PNDIS_MINIPORT_TIMER Timer, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PNDIS_TIMER_FUNCTION TimerFunction, - /*IN*/ PVOID FunctionContext); - -NTOSAPI -VOID -DDKAPI -NdisMSetPeriodicTimer( - /*IN*/ PNDIS_MINIPORT_TIMER Timer, - /*IN*/ UINT MillisecondsPeriod); - -NTOSAPI -VOID -DDKAPI -NdisMCancelTimer( - /*IN*/ PNDIS_MINIPORT_TIMER Timer, - /*OUT*/ PBOOLEAN TimerCancelled); - -NDISAPI -VOID -DDKAPI -NdisInitializeWrapper( - /*OUT*/ PNDIS_HANDLE NdisWrapperHandle, - /*IN*/ PVOID SystemSpecific1, - /*IN*/ PVOID SystemSpecific2, - /*IN*/ PVOID SystemSpecific3); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMAllocateMapRegisters( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ UINT DmaChannel, - /*IN*/ BOOLEAN Dma32BitAddresses, - /*IN*/ ULONG PhysicalMapRegistersNeeded, - /*IN*/ ULONG MaximumPhysicalMapping); - -/* - * VOID - * NdisMArcIndicateReceive( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN PUCHAR HeaderBuffer, - * IN PUCHAR DataBuffer, - * IN UINT Length); - */ -#define NdisMArcIndicateReceive(MiniportAdapterHandle, \ - HeaderBuffer, \ - DataBuffer, \ - Length) \ -{ \ - ArcFilterDprIndicateReceive( \ - (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \ - (HeaderBuffer), \ - (DataBuffer), \ - (Length)); \ -} - -/* - * VOID - * NdisMArcIndicateReceiveComplete( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMArcIndicateReceiveComplete(MiniportAdapterHandle) \ -{ \ - if (((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB) \ - { \ - NdisMEthIndicateReceiveComplete(_H); \ - } \ - \ - ArcFilterDprIndicateReceiveComplete( \ - ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->ArcDB); \ -} - -NDISAPI -VOID -DDKAPI -NdisMCloseLog( - /*IN*/ NDIS_HANDLE LogHandle); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMCreateLog( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ UINT Size, - /*OUT*/ PNDIS_HANDLE LogHandle); - -NDISAPI -VOID -DDKAPI -NdisMDeregisterAdapterShutdownHandler( - /*IN*/ NDIS_HANDLE MiniportHandle); - -NDISAPI -VOID -DDKAPI -NdisMDeregisterInterrupt( - /*IN*/ PNDIS_MINIPORT_INTERRUPT Interrupt); - -NDISAPI -VOID -DDKAPI -NdisMDeregisterIoPortRange( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ UINT InitialPort, - /*IN*/ UINT NumberOfPorts, - /*IN*/ PVOID PortOffset); - -/* - * VOID - * NdisMEthIndicateReceive( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_HANDLE MiniportReceiveContext, - * IN PVOID HeaderBuffer, - * IN UINT HeaderBufferSize, - * IN PVOID LookaheadBuffer, - * IN UINT LookaheadBufferSize, - * IN UINT PacketSize); - */ -#define NdisMEthIndicateReceive(MiniportAdapterHandle, \ - MiniportReceiveContext, \ - HeaderBuffer, \ - HeaderBufferSize, \ - LookaheadBuffer, \ - LookaheadBufferSize, \ - PacketSize) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \ - (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.EthDB), \ - (MiniportReceiveContext), \ - (HeaderBuffer), \ - (HeaderBuffer), \ - (HeaderBufferSize), \ - (LookaheadBuffer), \ - (LookaheadBufferSize), \ - (PacketSize)); \ -} - -/* - * VOID - * NdisMEthIndicateReceiveComplete( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \ - ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.EthDB); \ -} - -/* - * VOID - * NdisMFddiIndicateReceive( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_HANDLE MiniportReceiveContext, - * IN PVOID HeaderBuffer, - * IN UINT HeaderBufferSize, - * IN PVOID LookaheadBuffer, - * IN UINT LookaheadBufferSize, - * IN UINT PacketSize); - */ -#define NdisMFddiIndicateReceive(MiniportAdapterHandle, \ - MiniportReceiveContext, \ - HeaderBuffer, \ - HeaderBufferSize, \ - LookaheadBuffer, \ - LookaheadBufferSize, \ - PacketSize) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \ - (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB), \ - (MiniportReceiveContext), \ - (PUCHAR)(HeaderBuffer) + 1, \ - (((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \ - FDDI_LENGTH_OF_LONG_ADDRESS : \ - FDDI_LENGTH_OF_SHORT_ADDRESS), \ - (HeaderBuffer), \ - (HeaderBufferSize), \ - (LookaheadBuffer), \ - (LookaheadBufferSize), \ - (PacketSize)); \ -} - - - -/* - * VOID - * NdisMFddiIndicateReceiveComplete( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \ - ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB); \ -} - -NDISAPI -VOID -DDKAPI -NdisMFlushLog( - /*IN*/ NDIS_HANDLE LogHandle); - -NDISAPI -VOID -DDKAPI -NdisMFreeMapRegisters( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle); - -/* - * VOID - * NdisMIndicateStatus( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_STATUS GeneralStatus, - * IN PVOID StatusBuffer, - * IN UINT StatusBufferSize); - */ - -#define NdisMIndicateStatus(MiniportAdapterHandle, \ - GeneralStatus, StatusBuffer, StatusBufferSize) \ - (*((PNDIS_MINIPORT_BLOCK)(_M))->StatusHandler)( \ - MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize) - -/* - * VOID - * NdisMIndicateStatusComplete( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMIndicateStatusComplete(MiniportAdapterHandle) \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->StatusCompleteHandler)( \ - MiniportAdapterHandle) - -/* - * VOID - * NdisMInitializeWrapper( - * OUT PNDIS_HANDLE NdisWrapperHandle, - * IN PVOID SystemSpecific1, - * IN PVOID SystemSpecific2, - * IN PVOID SystemSpecific3); - */ -#define NdisMInitializeWrapper(NdisWrapperHandle, \ - SystemSpecific1, \ - SystemSpecific2, \ - SystemSpecific3) \ - NdisInitializeWrapper((NdisWrapperHandle), \ - (SystemSpecific1), \ - (SystemSpecific2), \ - (SystemSpecific3)) - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMMapIoSpace( - /*OUT*/ PVOID *VirtualAddress, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_PHYSICAL_ADDRESS PhysicalAddress, - /*IN*/ UINT Length); - -/* - * VOID - * NdisMQueryInformationComplete( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_STATUS Status); - */ -#define NdisMQueryInformationComplete(MiniportAdapterHandle, Status) \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->QueryCompleteHandler)(MiniportAdapterHandle, Status) - -NDISAPI -VOID -DDKAPI -NdisMRegisterAdapterShutdownHandler( - /*IN*/ NDIS_HANDLE MiniportHandle, - /*IN*/ PVOID ShutdownContext, - /*IN*/ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMRegisterInterrupt( - /*OUT*/ PNDIS_MINIPORT_INTERRUPT Interrupt, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ UINT InterruptVector, - /*IN*/ UINT InterruptLevel, - /*IN*/ BOOLEAN RequestIsr, - /*IN*/ BOOLEAN SharedInterrupt, - /*IN*/ NDIS_INTERRUPT_MODE InterruptMode); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMRegisterIoPortRange( - /*OUT*/ PVOID *PortOffset, - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ UINT InitialPort, - /*IN*/ UINT NumberOfPorts); - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMRegisterMiniport( - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, - /*IN*/ UINT CharacteristicsLength); - - -#if !defined(_NDIS_) - -/* - * VOID - * NdisMResetComplete( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_STATUS Status, - * IN BOOLEAN AddressingReset); - */ -#define NdisMResetComplete(MiniportAdapterHandle, \ - Status, \ - AddressingReset) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ResetCompleteHandler)( \ - MiniportAdapterHandle, Status, AddressingReset); \ -} - -/* - * VOID - * NdisMSendComplete( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN PNDIS_PACKET Packet, - * IN NDIS_STATUS Status); - */ -#define NdisMSendComplete(MiniportAdapterHandle, \ - Packet, \ - Status) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendCompleteHandler)( \ - MiniportAdapterHandle, Packet, Status); \ -} - -/* - * VOID - * NdisMSendResourcesAvailable( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMSendResourcesAvailable(MiniportAdapterHandle) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SendResourcesHandler)( \ - MiniportAdapterHandle); \ -} - -/* - * VOID - * NdisMTransferDataComplete( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN PNDIS_PACKET Packet, - * IN NDIS_STATUS Status, - * IN UINT BytesTransferred); - */ -#define NdisMTransferDataComplete(MiniportAdapterHandle, \ - Packet, \ - Status, \ - BytesTransferred) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TDCompleteHandler)( \ - MiniportAdapterHandle, Packet, Status, BytesTransferred) \ -} - -#endif /* !_NDIS_ */ - - -/* - * VOID - * NdisMSetAttributes( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_HANDLE MiniportAdapterContext, - * IN BOOLEAN BusMaster, - * IN NDIS_INTERFACE_TYPE AdapterType); - */ -#define NdisMSetAttributes(MiniportAdapterHandle, \ - MiniportAdapterContext, \ - BusMaster, \ - AdapterType) \ - NdisMSetAttributesEx(MiniportAdapterHandle, \ - MiniportAdapterContext, \ - 0, \ - (BusMaster) ? NDIS_ATTRIBUTE_BUS_MASTER : 0, \ - AdapterType) - -NDISAPI -VOID -DDKAPI -NdisMSetAttributesEx( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ UINT CheckForHangTimeInSeconds /*OPTIONAL*/, - /*IN*/ ULONG AttributeFlags, - /*IN*/ NDIS_INTERFACE_TYPE AdapterType); - -/* - * VOID - * NdisMSetInformationComplete( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_STATUS Status); - */ -#define NdisMSetInformationComplete(MiniportAdapterHandle, \ - Status) \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->SetCompleteHandler)( \ - MiniportAdapterHandle, Status) - -NDISAPI -VOID -DDKAPI -NdisMSleep( - /*IN*/ ULONG MicrosecondsToSleep); - -NDISAPI -BOOLEAN -DDKAPI -NdisMSynchronizeWithInterrupt( - /*IN*/ PNDIS_MINIPORT_INTERRUPT Interrupt, - /*IN*/ PVOID SynchronizeFunction, - /*IN*/ PVOID SynchronizeContext); - -/* - * VOID - * NdisMTrIndicateReceive( - * IN NDIS_HANDLE MiniportAdapterHandle, - * IN NDIS_HANDLE MiniportReceiveContext, - * IN PVOID HeaderBuffer, - * IN UINT HeaderBufferSize, - * IN PVOID LookaheadBuffer, - * IN UINT LookaheadBufferSize, - * IN UINT PacketSize); - */ -#define NdisMTrIndicateReceive(MiniportAdapterHandle, \ - MiniportReceiveContext, \ - HeaderBuffer, \ - HeaderBufferSize, \ - LookaheadBuffer, \ - LookaheadBufferSize, \ - PacketSize) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \ - (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB), \ - (MiniportReceiveContext), \ - (HeaderBuffer), \ - (HeaderBuffer), \ - (HeaderBufferSize), \ - (LookaheadBuffer), \ - (LookaheadBufferSize), \ - (PacketSize)); \ -} - -/* - * VOID - * NdisMTrIndicateReceiveComplete( - * IN NDIS_HANDLE MiniportAdapterHandle); - */ -#define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \ -{ \ - (*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \ - ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB); \ -} - -NDISAPI -NDIS_STATUS -DDKAPI -NdisMWriteLogData( - /*IN*/ NDIS_HANDLE LogHandle, - /*IN*/ PVOID LogBuffer, - /*IN*/ UINT LogBufferSize); - -NDISAPI -VOID -DDKAPI -NdisMQueryAdapterResources( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*OUT*/ PNDIS_RESOURCE_LIST ResourceList, - /*IN OUT*/ PUINT BufferSize); - -NDISAPI -VOID -DDKAPI -NdisTerminateWrapper( - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ PVOID SystemSpecific); - -NDISAPI -VOID -DDKAPI -NdisMUnmapIoSpace( - /*IN*/ NDIS_HANDLE MiniportAdapterHandle, - /*IN*/ PVOID VirtualAddress, - /*IN*/ UINT Length); - - - -/* NDIS intermediate miniport structures */ - -typedef VOID (DDKAPI *W_MINIPORT_CALLBACK)( - /*IN*/ NDIS_HANDLE MiniportAdapterContext, - /*IN*/ PVOID CallbackContext); - - - -/* Routines for intermediate miniport drivers */ - -NDISAPI -NDIS_STATUS -DDKAPI -NdisIMDeInitializeDeviceInstance( - /*IN*/ NDIS_HANDLE NdisMiniportHandle); - -/* - * NDIS_STATUS - * NdisIMInitializeDeviceInstance( - * IN NDIS_HANDLE DriverHandle, - * IN PNDIS_STRING DeviceInstance); - */ -#define NdisIMInitializeDeviceInstance(DriverHandle, DeviceInstance) \ - NdisIMInitializeDeviceInstanceEx(DriverHandle, DeviceInstance, NULL) - -NDISAPI -NDIS_STATUS -DDKAPI -NdisIMRegisterLayeredMiniport( - /*IN*/ NDIS_HANDLE NdisWrapperHandle, - /*IN*/ PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, - /*IN*/ UINT CharacteristicsLength, - /*OUT*/ PNDIS_HANDLE DriverHandle); - - -/* Functions obsoleted by NDIS 5.0 */ - -NDISAPI -VOID -DDKAPI -NdisFreeDmaChannel( - /*IN*/ PNDIS_HANDLE NdisDmaHandle); - -NDISAPI -VOID -DDKAPI -NdisSetupDmaTransfer( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ PNDIS_HANDLE NdisDmaHandle, - /*IN*/ PNDIS_BUFFER Buffer, - /*IN*/ ULONG Offset, - /*IN*/ ULONG Length, - /*IN*/ BOOLEAN WriteToDevice); - -NDISAPI -NTSTATUS -DDKAPI -NdisUpcaseUnicodeString( - /*OUT*/ PUNICODE_STRING DestinationString, - /*IN*/ PUNICODE_STRING SourceString); - - -/* Routines for NDIS protocol drivers */ - -NDISAPI -VOID -DDKAPI -NdisRequest( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PNDIS_REQUEST NdisRequest); - -NDISAPI -VOID -DDKAPI -NdisReset( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle); - -NDISAPI -VOID -DDKAPI -NdisSend( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PNDIS_PACKET Packet); - -NDISAPI -VOID -DDKAPI -NdisSendPackets( - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ PPNDIS_PACKET PacketArray, - /*IN*/ UINT NumberOfPackets); - -NDISAPI -VOID -DDKAPI -NdisTransferData( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle, - /*IN*/ NDIS_HANDLE MacReceiveContext, - /*IN*/ UINT ByteOffset, - /*IN*/ UINT BytesToTransfer, - /*IN OUT*/ PNDIS_PACKET Packet, - /*OUT*/ PUINT BytesTransferred); - -NDISAPI -VOID -DDKAPI -NdisCloseAdapter( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisBindingHandle); - -NDISAPI -VOID -DDKAPI -NdisCompleteBindAdapter( - /*IN*/ NDIS_HANDLE BindAdapterContext, - /*IN*/ NDIS_STATUS Status, - /*IN*/ NDIS_STATUS OpenStatus); - -NDISAPI -VOID -DDKAPI -NdisCompleteUnbindAdapter( - /*IN*/ NDIS_HANDLE UnbindAdapterContext, - /*IN*/ NDIS_STATUS Status); - -NDISAPI -VOID -DDKAPI -NdisDeregisterProtocol( - /*OUT*/ PNDIS_STATUS Status, - /*IN*/ NDIS_HANDLE NdisProtocolHandle); - -NDISAPI -VOID -DDKAPI -NdisOpenAdapter( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_STATUS OpenErrorStatus, - /*OUT*/ PNDIS_HANDLE NdisBindingHandle, - /*OUT*/ PUINT SelectedMediumIndex, - /*IN*/ PNDIS_MEDIUM MediumArray, - /*IN*/ UINT MediumArraySize, - /*IN*/ NDIS_HANDLE NdisProtocolHandle, - /*IN*/ NDIS_HANDLE ProtocolBindingContext, - /*IN*/ PNDIS_STRING AdapterName, - /*IN*/ UINT OpenOptions, - /*IN*/ PSTRING AddressingInformation); - -NDISAPI -VOID -DDKAPI -NdisOpenProtocolConfiguration( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE ConfigurationHandle, - /*IN*/ PNDIS_STRING ProtocolSection); - -NDISAPI -VOID -DDKAPI -NdisRegisterProtocol( - /*OUT*/ PNDIS_STATUS Status, - /*OUT*/ PNDIS_HANDLE NdisProtocolHandle, - /*IN*/ PNDIS_PROTOCOL_CHARACTERISTICS ProtocolCharacteristics, - /*IN*/ UINT CharacteristicsLength); - -/* Obsoleted in Windows XP */ - -/* Prototypes for NDIS_MAC_CHARACTERISTICS */ - -typedef NDIS_STATUS (*OPEN_ADAPTER_HANDLER)( - /*OUT*/ PNDIS_STATUS OpenErrorStatus, - /*OUT*/ NDIS_HANDLE *MacBindingHandle, - /*OUT*/ PUINT SelectedMediumIndex, - /*IN*/ PNDIS_MEDIUM MediumArray, - /*IN*/ UINT MediumArraySize, - /*IN*/ NDIS_HANDLE NdisBindingContext, - /*IN*/ NDIS_HANDLE MacAdapterContext, - /*IN*/ UINT OpenOptions, - /*IN*/ PSTRING AddressingInformation /*OPTIONAL*/); - -typedef NDIS_STATUS (DDKAPI *CLOSE_ADAPTER_HANDLER)( - /*IN*/ NDIS_HANDLE MacBindingHandle); - -typedef NDIS_STATUS (DDKAPI *WAN_TRANSFER_DATA_HANDLER)( - VOID); - -typedef NDIS_STATUS (DDKAPI *QUERY_GLOBAL_STATISTICS_HANDLER)( - /*IN*/ NDIS_HANDLE MacAdapterContext, - /*IN*/ PNDIS_REQUEST NdisRequest); - -typedef VOID (DDKAPI *UNLOAD_MAC_HANDLER)( - /*IN*/ NDIS_HANDLE MacMacContext); - -typedef NDIS_STATUS (DDKAPI *ADD_ADAPTER_HANDLER)( - /*IN*/ NDIS_HANDLE MacMacContext, - /*IN*/ NDIS_HANDLE WrapperConfigurationContext, - /*IN*/ PNDIS_STRING AdapterName); - -typedef VOID (*REMOVE_ADAPTER_HANDLER)( - /*IN*/ NDIS_HANDLE MacAdapterContext); - -typedef struct _NDIS_MAC_CHARACTERISTICS { - UCHAR MajorNdisVersion; - UCHAR MinorNdisVersion; - UINT Reserved; - OPEN_ADAPTER_HANDLER OpenAdapterHandler; - CLOSE_ADAPTER_HANDLER CloseAdapterHandler; - SEND_HANDLER SendHandler; - TRANSFER_DATA_HANDLER TransferDataHandler; - RESET_HANDLER ResetHandler; - REQUEST_HANDLER RequestHandler; - QUERY_GLOBAL_STATISTICS_HANDLER QueryGlobalStatisticsHandler; - UNLOAD_MAC_HANDLER UnloadMacHandler; - ADD_ADAPTER_HANDLER AddAdapterHandler; - REMOVE_ADAPTER_HANDLER RemoveAdapterHandler; - NDIS_STRING Name; -} NDIS_MAC_CHARACTERISTICS, *PNDIS_MAC_CHARACTERISTICS; - -typedef NDIS_MAC_CHARACTERISTICS NDIS_WAN_MAC_CHARACTERISTICS; -typedef NDIS_WAN_MAC_CHARACTERISTICS *PNDIS_WAN_MAC_CHARACTERISTICS; - -#ifdef __cplusplus -} -#endif - -#endif /* __NDIS_H */ - -/* EOF */ |