* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* DEFINES: i386 - Target platform is i386
- * _NDIS_ - Define only for NDIS library
+ * NDIS_WRAPPER - 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
#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>
+#include <qos.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
-#if defined(_NDIS_)
+#if defined(NDIS_WRAPPER)
#define NDISAPI DECLSPEC_EXPORT
#else
#define NDISAPI DECLSPEC_IMPORT
#define NDIS_PROTOCOL_MINOR_VERSION 1
#endif
+#if defined(NDIS_MINIPORT_DRIVER) && !defined(BINARY_COMPATIBLE)
+#define BINARY_COMPATIBLE 1
+#endif
+
+#if !defined(_M_IX86) && BINARY_COMPATIBLE
+#undef BINARY_COMPATIBLE
+#define BINARY_COMPATIBLE 0
+#endif
+
#if 1
/* FIXME: */
typedef PVOID QUEUED_CLOSE;
struct {
KSPIN_LOCK SpinLock;
PVOID Context;
- } s;
+ };
UCHAR Reserved[16];
- } u;
+ };
NDIS_RW_LOCK_REFCOUNT RefCount[MAXIMUM_PROCESSORS];
} NDIS_RW_LOCK, *PNDIS_RW_LOCK;
#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;
+typedef HANDLE PNDIS_PACKET_POOL;
/* NDIS_PACKET_PRIVATE.Flags constants */
#define fPACKET_CONTAINS_MEDIA_SPECIFIC_INFO 0x40
struct {
UCHAR MiniportReserved[2 * sizeof(PVOID)];
UCHAR WrapperReserved[2 * sizeof(PVOID)];
- } s1;
+ };
struct {
UCHAR MiniportReservedEx[3 * sizeof(PVOID)];
UCHAR WrapperReservedEx[sizeof(PVOID)];
- } s2;
+ };
struct {
UCHAR MacReserved[4 * sizeof(PVOID)];
- } s3;
- } u;
+ };
+ };
ULONG_PTR Reserved[2];
UCHAR ProtocolReserved[1];
} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;
#define NDIS_DMA_32BITS ((NDIS_DMA_SIZE)1)
#define NDIS_DMA_64BITS ((NDIS_DMA_SIZE)2)
+typedef enum _NDIS_PROCESSOR_TYPE {
+ NdisProcessorX86,
+ NdisProcessorMips,
+ NdisProcessorAlpha,
+ NdisProcessorPpc,
+ NdisProcessorAmd64
+} NDIS_PROCESSOR_TYPE, *PNDIS_PROCESSOR_TYPE;
+
+typedef enum _NDIS_ENVIRONMENT_TYPE {
+ NdisEnvironmentWindows,
+ NdisEnvironmentWindowsNt
+} NDIS_ENVIRONMENT_TYPE, *PNDIS_ENVIRONMENT_TYPE;
+
/* Possible hardware architecture */
typedef enum _NDIS_INTERFACE_TYPE {
NdisInterfaceInternal = Internal,
/* OID_GEN_NETWORK_LAYER_ADDRESSES */
typedef struct _NETWORK_ADDRESS {
- USHORT AddressLength;
- USHORT AddressType;
- UCHAR Address[1];
+ USHORT AddressLength;
+ USHORT AddressType;
+ UCHAR Address[1];
} NETWORK_ADDRESS, *PNETWORK_ADDRESS;
typedef struct _NETWORK_ADDRESS_LIST {
- LONG AddressCount;
- USHORT AddressType;
- NETWORK_ADDRESS Address[1];
+ LONG AddressCount;
+ USHORT AddressType;
+ NETWORK_ADDRESS Address[1];
} NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
/* Protocol types supported by NDIS */
/* OID_GEN_TRANSPORT_HEADER_OFFSET */
typedef struct _TRANSPORT_HEADER_OFFSET {
- USHORT ProtocolType;
- USHORT HeaderOffset;
+ USHORT ProtocolType;
+ USHORT HeaderOffset;
} TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
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;
} CO_SPECIFIC_PARAMETERS, *PCO_SPECIFIC_PARAMETERS;
typedef struct _CO_CALL_MANAGER_PARAMETERS {
- CO_FLOW_PARAMETERS Transmit;
- CO_FLOW_PARAMETERS Receive;
+ FLOWSPEC Transmit;
+ FLOWSPEC Receive;
CO_SPECIFIC_PARAMETERS CallMgrSpecific;
} CO_CALL_MANAGER_PARAMETERS, *PCO_CALL_MANAGER_PARAMETERS;
ULONG V4_OPTIONS;
ULONG RESERVED;
} Supported;
-
+
struct {
ULONG MD5 : 1;
ULONG SHA_1 : 1;
ULONG Send : 1;
ULONG Receive : 1;
} V4AH;
-
+
struct {
ULONG DES : 1;
ULONG RESERVED : 1;
ULONG UdpChecksum:1;
ULONG IpChecksum:1;
} V4Transmit;
-
+
struct {
ULONG IpOptionsSupported : 1;
ULONG TcpOptionsSupported : 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 NdisPacketUdpChecksum : 1;
ULONG NdisPacketIpChecksum : 1;
} Transmit;
-
+
struct {
ULONG NdisPacketTcpChecksumFailed : 1;
ULONG NdisPacketUdpChecksumFailed : 1;
} NDIS_WAN_FRAGMENT, *PNDIS_WAN_FRAGMENT;
typedef struct _WAN_CO_LINKPARAMS {
- ULONG TransmitSpeed;
- ULONG ReceiveSpeed;
- ULONG SendWindow;
+ ULONG TransmitSpeed;
+ ULONG ReceiveSpeed;
+ ULONG SendWindow;
} WAN_CO_LINKPARAMS, *PWAN_CO_LINKPARAMS;
BIND_HANDLER BindAdapterHandler; \
UNBIND_HANDLER UnbindAdapterHandler; \
PNP_EVENT_HANDLER PnPEventHandler; \
- UNLOAD_PROTOCOL_HANDLER UnloadHandler;
+ UNLOAD_PROTOCOL_HANDLER UnloadHandler;
#else /* !__cplusplus */
BIND_HANDLER BindAdapterHandler; \
UNBIND_HANDLER UnbindAdapterHandler; \
PNP_EVENT_HANDLER PnPEventHandler; \
- UNLOAD_PROTOCOL_HANDLER UnloadHandler;
+ UNLOAD_PROTOCOL_HANDLER UnloadHandler;
#endif /* __cplusplus */
IN UINT SourceOffset,
OUT PUINT BytesCopied);
+/*
+ * VOID
+ * NdisCopyLookaheadData(
+ * IN PVOID Destination,
+ * IN PVOID Source,
+ * IN ULONG Length,
+ * IN ULONG ReceiveFlags);
+ */
+
+#ifdef _M_IX86
+#define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
+ RtlCopyMemory(Destination, Source, Length)
+#else
+#define NdisCopyLookaheadData(Destination, Source, Length, MacOptions) \
+ { \
+ if ((MacOptions) & NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA) \
+ { \
+ RtlCopyMemory(_Destination, _Source, _Length); \
+ } \
+ else \
+ { \
+ PUCHAR _Src = (PUCHAR)(Source); \
+ PUCHAR _Dest = (PUCHAR)(Destination); \
+ PUCHAR _End = _Dest + (Length); \
+ while (_Dest < _End) \
+ *_Dest++ = *_Src++; \
+ } \
+ }
+#endif
+
NDISAPI
VOID
DDKAPI
NdisFreeBuffer(
IN PNDIS_BUFFER Buffer);
+#if BINARY_COMPATIBLE
+
NDISAPI
VOID
DDKAPI
OUT PUINT Offset,
OUT PUINT Length);
-NDISAPI
-VOID
-DDKAPI
-NdisFreeBuffer(
- IN PNDIS_BUFFER Buffer);
+#else
/*
* VOID
(*(ArraySize) = NDIS_BUFFER_TO_SPAN_PAGES(Buffer)) \
}
-
/*
* VOID
* NdisGetFirstBufferFromPacket(
*((PUINT)Length) = MmGetMdlByteCount(Buffer); \
}
+#endif /* BINARY_COMPATIBLE */
/*
* PVOID
/*
* UINT
* NdisGetPacketFlags(
- * IN PNDIS_PACKET Packet);
+ * IN PNDIS_PACKET Packet);
*/
#define NdisGetPacketFlags(Packet)(Packet)->Private.Flags;
(PNDIS_PACKET_OOB_DATA)((PUCHAR)(_Packet) + \
(_Packet)->Private.NdisPacketOobOffset)
-
+
/*
* VOID
* NdisQueryPacket(
* VOID
* NdisSetPacketFlags(
* IN PNDIS_PACKET Packet,
- * IN UINT Flags);
+ * IN UINT Flags);
*/
#define NdisSetPacketFlags(Packet, Flags) \
(Packet)->Private.Flags |= (Flags);
/* Memory management routines */
+#if BINARY_COMPATIBLE
+
+NDISAPI
+VOID
+DDKAPI
+NdisCreateLookaheadBufferFromSharedMemory(
+ IN PVOID pSharedMemory,
+ IN UINT LookaheadLength,
+ OUT PVOID *pLookaheadBuffer);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDestroyLookaheadBufferFromSharedMemory(
+ IN PVOID pLookaheadBuffer);
+
+#else
+
/*
* VOID
* NdisCreateLookaheadBufferFromSharedMemory(
*/
#define NdisDestroyLookaheadBufferFromSharedMemory(_pLookaheadBuffer)
-#if defined(i386)
+#endif
+
+#if defined(_M_IX86) || defined(_M_AMD64)
/*
* VOID
- * NdisMoveFromMappedMemory(
+ * NdisMoveMappedMemory(
* OUT PVOID Destination,
* IN PVOID Source,
* IN ULONG Length);
*/
-#define NdisMoveFromMappedMemory(Destination, Source, Length) \
- NdisMoveMappedMemory(Destination, Source, Length)
+#define NdisMoveMappedMemory(Destination, Source, Length) \
+ RtlCopyMemory(Destination, Source, Length)
/*
* VOID
- * NdisMoveMappedMemory(
+ * NdisZeroMappedMemory(
+ * IN PVOID Destination,
+ * IN ULONG Length);
+ */
+#define NdisZeroMappedMemory(Destination, Length) \
+ RtlZeroMemory(Destination, Length)
+
+#else
+
+#define NdisMoveMappedMemory(Destination, Source, Length) \
+{
+ PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length;
+ while (_Dest < _End)
+ *_Dest++ = _Src++;
+}
+
+#define NdisZeroMappedMemory(Destination, Length) \
+{
+ PUCHAR _Dest = Destination, _End = _Dest + Length;
+ while (_Dest < _End)
+ *_Dest++ = 0;
+}
+
+#endif /* _M_IX86 or _M_AMD64 */
+
+/*
+ * VOID
+ * NdisMoveFromMappedMemory(
* OUT PVOID Destination,
* IN PVOID Source,
* IN ULONG Length);
*/
-#define NdisMoveMappedMemory(Destination, Source, Length) \
- RtlCopyMemory(Destination, Source, Length)
+#define NdisMoveFromMappedMemory(Destination, Source, Length) \
+ NdisMoveMappedMemory(Destination, Source, Length)
/*
* VOID
#define NdisMoveToMappedMemory(Destination, Source, Length) \
NdisMoveMappedMemory(Destination, Source, Length)
-#endif /* i386 */
-
/*
* VOID
* NdisMUpdateSharedMemory(
* VOID
* NDIS_PHYSICAL_ADDRESS_CONST(
* IN ULONG Low,
- * IN LONG High);
+ * IN LONG High);
*/
#define NDIS_PHYSICAL_ADDRESS_CONST(Low, High) \
{ {(ULONG)(Low), (LONG)(High)} }
#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(
* VOID
* NdisStoreUlong(
* IN PULONG DestinationAddress,
- * IN ULONG Value);
+ * IN ULONG Value);
*/
#define NdisStoreUlong(DestinationAddress, Value) \
RtlStoreUlong(DestinationAddress, Value)
IN ULONG Length);
NDISAPI
-ULONG
+ULONG
DDKAPI
NdisWritePciSlotInformation(
IN NDIS_HANDLE NdisAdapterHandle,
/* Spin lock reoutines */
+#if BINARY_COMPATIBLE
+
+NDISAPI
+VOID
+DDKAPI
+NdisAllocateSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisFreeSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisAcquireSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisReleaseSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprAcquireSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+NDISAPI
+VOID
+DDKAPI
+NdisDprReleaseSpinLock(
+ IN PNDIS_SPIN_LOCK SpinLock);
+
+#else
+
/*
* VOID
* NdisAllocateSpinLock(
#define NdisDprReleaseSpinLock(_SpinLock) \
KeReleaseSpinLockFromDpcLevel(&(_SpinLock)->SpinLock)
-
+#endif /* BINARY_COMPATIBLE */
/* I/O routines */
OUT PNDIS_STATUS Status,
IN NDIS_HANDLE WrapperConfigurationContext,
IN PNDIS_STRING Keyword,
- IN PNDIS_CONFIGURATION_PARAMETER *ParameterValue);
+ IN PNDIS_CONFIGURATION_PARAMETER ParameterValue);
NDISAPI
VOID
*/
#define NdisStallExecution KeStallExecutionProcessor
+#if BINARY_COMPATIBLE
+
+NDISAPI
+VOID
+DDKAPI
+NdisGetCurrentSystemTime(
+ IN PLARGE_INTEGER pSystemTime);
+
+#else
+
/*
* VOID
* NdisGetCurrentSystemTime(
*/
#define NdisGetCurrentSystemTime KeQuerySystemTime
+#endif
+
+NDISAPI
+CCHAR
+DDKAPI
+NdisSystemProcessorCount(VOID);
+
NDISAPI
VOID
DDKAPI
/*
* VOID
- * NDIS_PAGABLE_FUNCTION(FunctionName)
+ * NDIS_PAGABLE_FUNCTION(FunctionName)
*/
#define NDIS_PAGEABLE_FUNCTION(FunctionName) \
alloc_text(page, FunctionName)
OUT PNDIS_HANDLE NdisPartyHandle OPTIONAL);
NDISAPI
-NDIS_STATUS
+NDIS_STATUS
DDKAPI
NdisClModifyCallQoS(
IN NDIS_HANDLE NdisVcHandle,
IN PNDIS_REQUEST Request);
NDISAPI
-VOID
+VOID
DDKAPI
NdisMCoSendComplete(
IN NDIS_STATUS Status,
IN NDIS_HANDLE ProtocolHandle);
NDISAPI
-NDIS_STATUS
+NDIS_STATUS
DDKAPI
NdisIMCancelInitializeDeviceInstance(
IN NDIS_HANDLE DriverHandle,
BOOLEAN Filler1;
KEVENT DpcsCompletedEvent;
BOOLEAN SharedInterrupt;
- BOOLEAN IsrRequested;
+ BOOLEAN IsrRequested;
} NDIS_MINIPORT_INTERRUPT, *PNDIS_MINIPORT_INTERRUPT;
typedef struct _NDIS_MINIPORT_TIMER {
PETH_BINDING_INFO DirectedList;
PETH_BINDING_INFO BMList;
PETH_BINDING_INFO MCastSet;
-#if defined(_NDIS_)
+#if defined(NDIS_WRAPPER)
UINT NumOpens;
PVOID BindListLock;
#endif
#endif /* ARCNET */
-#define NDIS_MINIPORT_WORK_QUEUE_SIZE 10
-
typedef struct _NDIS_LOG {
PNDIS_MINIPORT_BLOCK Miniport;
KSPIN_LOCK LogLock;
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
+#define FILTERDBS_ARCNET_S \
PARC_FILTER ArcDB;
#else /* !ARCNET */
+#define FILTERDBS_ARCNET_S \
PVOID XXXDB;
#endif /* !ARCNET */
+
+#define FILTERDBS_S \
+ _ANONYMOUS_UNION union { \
+ PETH_FILTER EthDB; \
+ PNULL_FILTER NullDB; \
+ } DUMMYUNIONNAME; \
+ PTR_FILTER TrDB; \
+ PFDDI_FILTER FddiDB; \
+ FILTERDBS_ARCNET_S
+
+typedef struct _FILTERDBS {
+ FILTERDBS_S
} FILTERDBS, *PFILTERDBS;
UNICODE_STRING MiniportName;
PNDIS_BIND_PATHS BindPaths;
NDIS_HANDLE OpenQueue;
- REFERENCE Ref;
+ REFERENCE ShortRef;
NDIS_HANDLE DeviceContext;
UCHAR Padding1;
UCHAR LockAcquired;
USHORT CFHangCurrentTick;
NDIS_STATUS ResetStatus;
NDIS_HANDLE ResetOpen;
- FILTERDBS FilterDbs;
+ FILTERDBS_S
FILTER_PACKET_INDICATION_HANDLER PacketIndicateHandler;
NDIS_M_SEND_COMPLETE_HANDLER SendCompleteHandler;
NDIS_M_SEND_RESOURCES_HANDLER SendResourcesHandler;
NDIS_WM_SEND_COMPLETE_HANDLER WanSendCompleteHandler;
WAN_RCV_HANDLER WanRcvHandler;
WAN_RCV_COMPLETE_HANDLER WanRcvCompleteHandler;
-#if defined(_NDIS_)
+#if defined(NDIS_WRAPPER)
PNDIS_MINIPORT_BLOCK NextGlobalMiniport;
SINGLE_LIST_ENTRY WorkQueue[NUMBER_OF_WORK_ITEM_TYPES];
SINGLE_LIST_ENTRY SingleWorkItems[NUMBER_OF_SINGLE_WORK_ITEMS];
} DUMMYUNIONNAME2;
PVOID SavedSendPacketsHandler;
PVOID SavedCancelSendPacketsHandler;
- W_SEND_PACKETS_HANDLER WSendPacketsHandler;
+ W_SEND_PACKETS_HANDLER WSendPacketsHandler;
ULONG MiniportAttributes;
PDMA_ADAPTER SavedSystemAdapterObject;
USHORT NumOpens;
- USHORT CFHangXTicks;
+ USHORT CFHangXTicks;
ULONG RequestCount;
ULONG IndicatedPacketsCount;
ULONG PhysicalMediumType;
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets);
+#if defined(NDIS_WRAPPER)
+#define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S \
+ 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;
+#else
+#define NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
+#endif
+
+#define NDIS_COMMON_OPEN_BLOCK_S \
+ 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; \
+ NDIS_COMMON_OPEN_BLOCK_WRAPPER_S
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_S
} 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;
- };
+#ifdef __cplusplus
+ NDIS_COMMON_OPEN_BLOCK NdisCommonOpenBlock;
+#else
+ NDIS_COMMON_OPEN_BLOCK_S
+#endif
+#if defined(NDIS_WRAPPER)
+ 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_ */
};
Length) \
{ \
ArcFilterDprIndicateReceive( \
- (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.ArcDB), \
+ (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->ArcDB), \
(HeaderBuffer), \
(DataBuffer), \
(Length)); \
PacketSize) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxIndicateHandler)( \
- ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.EthDB, \
+ ((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthDB, \
(MiniportReceiveContext), \
(HeaderBuffer), \
(HeaderBuffer), \
#define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->EthRxCompleteHandler)( \
- ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.EthDB); \
+ ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->EthDB); \
}
/*
PacketSize) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxIndicateHandler)( \
- (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.FddiDB), \
+ (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiDB), \
(MiniportReceiveContext), \
(PUCHAR)(HeaderBuffer) + 1, \
(((*(PUCHAR*)(HeaderBuffer)) & 0x40) ? \
#define NdisMFddiIndicateReceiveComplete(MiniportAdapterHandle) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FddiRxCompleteHandler)( \
- ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.FddiDB); \
+ ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FddiDB); \
}
NDISAPI
IN PNDIS_MINIPORT_TIMER Timer,
OUT PBOOLEAN TimerCancelled);
-#if !defined(_NDIS_)
+#if !defined(NDIS_WRAPPER)
/*
* VOID
AdapterType)
NDISAPI
-VOID
+VOID
DDKAPI
NdisMSetAttributesEx(
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE MiniportAdapterContext,
IN UINT CheckForHangTimeInSeconds OPTIONAL,
IN ULONG AttributeFlags,
- IN NDIS_INTERFACE_TYPE AdapterType);
+ IN NDIS_INTERFACE_TYPE AdapterType);
/*
* VOID
PacketSize) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxIndicateHandler)( \
- (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->FilterDbs.TrDB), \
+ (((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrDB), \
(MiniportReceiveContext), \
(HeaderBuffer), \
(HeaderBuffer), \
#define NdisMTrIndicateReceiveComplete(MiniportAdapterHandle) \
{ \
(*((PNDIS_MINIPORT_BLOCK)(MiniportAdapterHandle))->TrRxCompleteHandler)( \
- ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->FilterDbs.TrDB); \
+ ((PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle)->TrDB); \
}
NDISAPI
+/* Event functions */
+
+NDISAPI
+VOID
+DDKAPI
+NdisInitializeEvent(
+ IN PNDIS_EVENT Event);
+
+NDISAPI
+VOID
+DDKAPI
+NdisSetEvent(
+ IN PNDIS_EVENT Event);
+
+NDISAPI
+VOID
+DDKAPI
+NdisResetEvent(
+ IN PNDIS_EVENT Event);
+
+NDISAPI
+BOOLEAN
+DDKAPI
+NdisWaitEvent(
+ IN PNDIS_EVENT Event,
+ IN UINT Timeout);
+
+
+
/* NDIS intermediate miniport structures */
typedef VOID (DDKAPI *W_MINIPORT_CALLBACK)(
NTSTATUS
DDKAPI
NdisUpcaseUnicodeString(
- OUT PUNICODE_STRING DestinationString,
+ OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString);