#ifndef __MINIPORT_H
#define __MINIPORT_H
+#include <ndis.h>
#include <ndissys.h>
+struct _ADAPTER_BINDING;
typedef struct _HARDWARE_ADDRESS {
union {
} HARDWARE_ADDRESS, *PHARDWARE_ADDRESS;
/* Information about a miniport */
-typedef struct _MINIPORT_DRIVER {
- LIST_ENTRY ListEntry; /* Entry on global list */
- KSPIN_LOCK Lock; /* Protecting spin lock */
- ULONG RefCount; /* Reference count */
- NDIS_MINIPORT_CHARACTERISTICS Chars; /* Miniport characteristics */
- WORK_QUEUE_ITEM WorkItem; /* Work item */
- PDRIVER_OBJECT DriverObject; /* Driver object of miniport */
- LIST_ENTRY AdapterListHead; /* Adapters created by miniport */
- PUNICODE_STRING RegistryPath; /* SCM Registry key */
-} MINIPORT_DRIVER, *PMINIPORT_DRIVER;
+typedef struct _NDIS_M_DRIVER_BLOCK {
+ LIST_ENTRY ListEntry; /* Entry on global list */
+ KSPIN_LOCK Lock; /* Protecting spin lock */
+ NDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics; /* Miniport characteristics */
+ WORK_QUEUE_ITEM WorkItem; /* Work item */
+ PDRIVER_OBJECT DriverObject; /* Driver object of miniport */
+ LIST_ENTRY DeviceList; /* Adapters created by miniport */
+ PUNICODE_STRING RegistryPath; /* SCM Registry key */
+} NDIS_M_DRIVER_BLOCK, *PNDIS_M_DRIVER_BLOCK;
/* resources allocated on behalf on the miniport */
#define MINIPORT_RESOURCE_TYPE_MEMORY 0
ULONG BusNumber;
} NDIS_WRAPPER_CONTEXT, *PNDIS_WRAPPER_CONTEXT;
-#define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
+#define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
+
+#ifndef NUMBER_OF_WORK_ITEM_TYPES
+
+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 _X_FILTER FDDI_FILTER, *PFDDI_FILTER;
+
+typedef VOID (NTAPI *W_MINIPORT_CALLBACK)(
+ IN NDIS_HANDLE MiniportAdapterContext,
+ IN PVOID CallbackContext);
+#endif
/* Information about a logical adapter */
-typedef struct _LOGICAL_ADAPTER
+typedef struct _LOGICAL_ADAPTER
{
NDIS_MINIPORT_BLOCK NdisMiniportBlock; /* NDIS defined fields */
- KDPC MiniportDpc; /* DPC routine for adapter */
BOOLEAN MiniportBusy; /* A MiniportXxx routine is executing */
- ULONG WorkQueueLevel; /* Number of used work item buffers */
- NDIS_MINIPORT_WORK_ITEM WorkQueue[NDIS_MINIPORT_WORK_QUEUE_SIZE];
PNDIS_MINIPORT_WORK_ITEM WorkQueueHead; /* Head of work queue */
PNDIS_MINIPORT_WORK_ITEM WorkQueueTail; /* Tail of work queue */
LIST_ENTRY ListEntry; /* Entry on global list */
LIST_ENTRY MiniportListEntry; /* Entry on miniport driver list */
LIST_ENTRY ProtocolListHead; /* List of bound protocols */
- ULONG RefCount; /* Reference count */
- PMINIPORT_DRIVER Miniport; /* Miniport owning this adapter */
- ULONG Attributes; /* Attributes of adapter */
- BOOLEAN AttributesSet; /* Whether NdisMSetAttributes(Ex) has been called */
- PVOID QueryBuffer; /* Buffer to use for queries */
- ULONG QueryBufferLength; /* Length of QueryBuffer */
ULONG MediumHeaderSize; /* Size of medium header */
HARDWARE_ADDRESS Address; /* Hardware address of adapter */
ULONG AddressLength; /* Length of hardware address */
PUCHAR LookaheadBuffer; /* Pointer to lookahead buffer */
ULONG LookaheadLength; /* Length of lookahead buffer */
- PNDIS_PACKET PacketQueueHead; /* Head of packet queue */
- PNDIS_PACKET PacketQueueTail; /* Head of packet queue */
- PNDIS_PACKET LoopPacket; /* Current packet beeing looped */
PMINIPORT_BUGCHECK_CONTEXT BugcheckContext; /* Adapter's shutdown handler */
- KEVENT DmaEvent; /* Event to support DMA register allocation */
- KSPIN_LOCK DmaLock; /* Spinlock to protect the dma list */
} LOGICAL_ADAPTER, *PLOGICAL_ADAPTER;
#define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
PLOGICAL_ADAPTER Adapter,
NDIS_OID Oid,
ULONG Size,
+ PVOID Buffer,
PULONG BytesWritten);
NDIS_STATUS
NDIS_STATUS
MiniDoRequest(
- PLOGICAL_ADAPTER Adapter,
+ PNDIS_MINIPORT_BLOCK Adapter,
PNDIS_REQUEST NdisRequest);
-BOOLEAN
+BOOLEAN
NdisFindDevice(
- UINT VendorID,
- UINT DeviceID,
- PUINT BusNumber,
+ UINT VendorID,
+ UINT DeviceID,
+ PUINT BusNumber,
PUINT SlotNumber);
VOID