2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
4 * FILE: ndis/miniport.h
5 * PURPOSE: Definitions for routines used by NDIS miniport drivers
13 struct _ADAPTER_BINDING
;
15 typedef struct _HARDWARE_ADDRESS
{
17 UCHAR Medium802_3
[ETH_LENGTH_OF_ADDRESS
];
19 } HARDWARE_ADDRESS
, *PHARDWARE_ADDRESS
;
21 /* Information about a miniport */
22 typedef struct _MINIPORT_DRIVER
{
23 LIST_ENTRY ListEntry
; /* Entry on global list */
24 KSPIN_LOCK Lock
; /* Protecting spin lock */
25 ULONG RefCount
; /* Reference count */
26 NDIS_MINIPORT_CHARACTERISTICS Chars
; /* Miniport characteristics */
27 WORK_QUEUE_ITEM WorkItem
; /* Work item */
28 PDRIVER_OBJECT DriverObject
; /* Driver object of miniport */
29 LIST_ENTRY AdapterListHead
; /* Adapters created by miniport */
30 PUNICODE_STRING RegistryPath
; /* SCM Registry key */
31 } MINIPORT_DRIVER
, *PMINIPORT_DRIVER
;
33 /* resources allocated on behalf on the miniport */
34 #define MINIPORT_RESOURCE_TYPE_MEMORY 0
35 typedef struct _MINIPORT_RESOURCE
{
39 } MINIPORT_RESOURCE
, *PMINIPORT_RESOURCE
;
41 /* Configuration context */
42 typedef struct _MINIPORT_CONFIGURATION_CONTEXT
{
44 LIST_ENTRY ResourceListHead
;
45 KSPIN_LOCK ResourceLock
;
46 } MINIPORT_CONFIGURATION_CONTEXT
, *PMINIPORT_CONFIGURATION_CONTEXT
;
48 /* Bugcheck callback context */
49 typedef struct _MINIPORT_BUGCHECK_CONTEXT
{
51 ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
;
52 PKBUGCHECK_CALLBACK_RECORD CallbackRecord
;
53 } MINIPORT_BUGCHECK_CONTEXT
, *PMINIPORT_BUGCHECK_CONTEXT
;
55 /* a miniport's shared memory */
56 typedef struct _MINIPORT_SHARED_MEMORY
{
57 PDMA_ADAPTER AdapterObject
;
59 PHYSICAL_ADDRESS PhysicalAddress
;
62 } MINIPORT_SHARED_MEMORY
, *PMINIPORT_SHARED_MEMORY
;
64 /* A structure of WrapperConfigurationContext (not compatible with the
66 typedef struct _NDIS_WRAPPER_CONTEXT
{
67 HANDLE RegistryHandle
;
68 PDEVICE_OBJECT DeviceObject
;
70 } NDIS_WRAPPER_CONTEXT
, *PNDIS_WRAPPER_CONTEXT
;
72 #define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
74 /* Information about a logical adapter */
75 typedef struct _LOGICAL_ADAPTER
77 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
78 KDPC MiniportDpc
; /* DPC routine for adapter */
79 BOOLEAN MiniportBusy
; /* A MiniportXxx routine is executing */
80 ULONG WorkQueueLevel
; /* Number of used work item buffers */
81 INTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueue
[NDIS_MINIPORT_WORK_QUEUE_SIZE
];
82 PINTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
83 PINTERNAL_NDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
84 LIST_ENTRY ListEntry
; /* Entry on global list */
85 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
86 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
87 ULONG RefCount
; /* Reference count */
88 PMINIPORT_DRIVER Miniport
; /* Miniport owning this adapter */
89 ULONG Attributes
; /* Attributes of adapter */
90 BOOLEAN AttributesSet
; /* Whether NdisMSetAttributes(Ex) has been called */
91 PVOID QueryBuffer
; /* Buffer to use for queries */
92 ULONG QueryBufferLength
; /* Length of QueryBuffer */
93 ULONG MediumHeaderSize
; /* Size of medium header */
94 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
95 ULONG AddressLength
; /* Length of hardware address */
96 PUCHAR LookaheadBuffer
; /* Pointer to lookahead buffer */
97 ULONG LookaheadLength
; /* Length of lookahead buffer */
98 PNDIS_PACKET PacketQueueHead
; /* Head of packet queue */
99 PNDIS_PACKET PacketQueueTail
; /* Head of packet queue */
100 PNDIS_PACKET LoopPacket
; /* Current packet beeing looped */
101 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
102 KEVENT DmaEvent
; /* Event to support DMA register allocation */
103 KSPIN_LOCK DmaLock
; /* Spinlock to protect the dma list */
104 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
106 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
108 extern LIST_ENTRY MiniportListHead
;
109 extern KSPIN_LOCK MiniportListLock
;
110 extern LIST_ENTRY AdapterListHead
;
111 extern KSPIN_LOCK AdapterListLock
;
117 PNDIS_PACKET Packet
);
122 PLOGICAL_ADAPTER Adapter
,
123 NDIS_HANDLE MacReceiveContext
,
125 UINT HeaderBufferSize
,
126 PVOID LookaheadBuffer
,
127 UINT LookaheadBufferSize
,
131 MiniAdapterHasAddress(
132 PLOGICAL_ADAPTER Adapter
,
133 PNDIS_PACKET Packet
);
137 PNDIS_STRING AdapterName
);
140 MiniQueryInformation(
141 PLOGICAL_ADAPTER Adapter
,
144 PULONG BytesWritten
);
149 struct _ADAPTER_BINDING
*AdapterBinding
,
150 NDIS_WORK_ITEM_TYPE WorkItemType
,
151 PVOID WorkItemContext
);
156 PLOGICAL_ADAPTER Adapter
,
157 struct _ADAPTER_BINDING
**AdapterBinding
,
158 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
159 PVOID
*WorkItemContext
);
163 struct _ADAPTER_BINDING
*AdapterBinding
,
164 PNDIS_REQUEST NdisRequest
);
176 #endif /* __MINIPORT_H */