#ifndef __MINIPORT_H
#define __MINIPORT_H
+#include <ndis.h>
#include <ndissys.h>
-#define ETH_LENGTH_OF_ADDRESS 6
+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 */
-} MINIPORT_DRIVER, *PMINIPORT_DRIVER;
-
-#define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
+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
+typedef struct _MINIPORT_RESOURCE {
+ LIST_ENTRY ListEntry;
+ ULONG ResourceType;
+ PVOID Resource;
+} MINIPORT_RESOURCE, *PMINIPORT_RESOURCE;
+
+/* Configuration context */
+typedef struct _MINIPORT_CONFIGURATION_CONTEXT {
+ NDIS_HANDLE Handle;
+ LIST_ENTRY ResourceListHead;
+ KSPIN_LOCK ResourceLock;
+} MINIPORT_CONFIGURATION_CONTEXT, *PMINIPORT_CONFIGURATION_CONTEXT;
+
+/* Bugcheck callback context */
+typedef struct _MINIPORT_BUGCHECK_CONTEXT {
+ PVOID DriverContext;
+ ADAPTER_SHUTDOWN_HANDLER ShutdownHandler;
+ PKBUGCHECK_CALLBACK_RECORD CallbackRecord;
+} MINIPORT_BUGCHECK_CONTEXT, *PMINIPORT_BUGCHECK_CONTEXT;
+
+/* a miniport's shared memory */
+typedef struct _MINIPORT_SHARED_MEMORY {
+ PDMA_ADAPTER AdapterObject;
+ ULONG Length;
+ PHYSICAL_ADDRESS PhysicalAddress;
+ PVOID VirtualAddress;
+ BOOLEAN Cached;
+} MINIPORT_SHARED_MEMORY, *PMINIPORT_SHARED_MEMORY;
+
+/* A structure of WrapperConfigurationContext (not compatible with the
+ Windows one). */
+typedef struct _NDIS_WRAPPER_CONTEXT {
+ HANDLE RegistryHandle;
+ PDEVICE_OBJECT DeviceObject;
+ ULONG BusNumber;
+} NDIS_WRAPPER_CONTEXT, *PNDIS_WRAPPER_CONTEXT;
+
+#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 {
- NDIS_MINIPORT_BLOCK NdisMiniportBlock; /* NDIS defined fields */
-
- KDPC MiniportDpc; /* DPC routine for adapter */
+typedef struct _LOGICAL_ADAPTER
+{
+ NDIS_MINIPORT_BLOCK NdisMiniportBlock; /* NDIS defined fields */
BOOLEAN MiniportBusy; /* A MiniportXxx routine is executing */
- NDIS_HANDLE MiniportAdapterBinding; /* Binding handle for current caller */
- 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 */
- UNICODE_STRING DeviceName; /* Device name of this adapter */
- ULONG Attributes; /* Attributes of adapter */
- /* TRUE if the miniport has called NdisSetAttributes(Ex) for this adapter */
- BOOLEAN AttributesSet;
- 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 */
- ULONG CurLookaheadLength; /* Current (selected) length of lookahead buffer */
- ULONG MaxLookaheadLength; /* Maximum 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 */
} 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
MiniQueueWorkItem(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE WorkItemType,
- PVOID WorkItemContext,
- NDIS_HANDLE Initiator);
+ PVOID WorkItemContext);
NDIS_STATUS
FASTCALL
MiniDequeueWorkItem(
PLOGICAL_ADAPTER Adapter,
NDIS_WORK_ITEM_TYPE *WorkItemType,
- PVOID *WorkItemContext,
- NDIS_HANDLE *Initiator);
+ PVOID *WorkItemContext);
NDIS_STATUS
MiniDoRequest(
- PLOGICAL_ADAPTER Adapter,
+ PNDIS_MINIPORT_BLOCK Adapter,
PNDIS_REQUEST NdisRequest);
+BOOLEAN
+NdisFindDevice(
+ UINT VendorID,
+ UINT DeviceID,
+ PUINT BusNumber,
+ PUINT SlotNumber);
+
+VOID
+NdisStartDevices();
+
#endif /* __MINIPORT_H */
/* EOF */
+