| /* |
| * 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 */ |