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
14 typedef struct _HARDWARE_ADDRESS
{
16 UCHAR Medium802_3
[ETH_LENGTH_OF_ADDRESS
];
18 } HARDWARE_ADDRESS
, *PHARDWARE_ADDRESS
;
20 /* Information about a miniport */
21 typedef struct _MINIPORT_DRIVER
{
22 LIST_ENTRY ListEntry
; /* Entry on global list */
23 KSPIN_LOCK Lock
; /* Protecting spin lock */
24 ULONG RefCount
; /* Reference count */
25 NDIS_MINIPORT_CHARACTERISTICS Chars
; /* Miniport characteristics */
26 WORK_QUEUE_ITEM WorkItem
; /* Work item */
27 PDRIVER_OBJECT DriverObject
; /* Driver object of miniport */
28 LIST_ENTRY AdapterListHead
; /* Adapters created by miniport */
29 } MINIPORT_DRIVER
, *PMINIPORT_DRIVER
;
31 #define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
33 /* Information about a logical adapter */
34 typedef struct _LOGICAL_ADAPTER
{
35 NDIS_MINIPORT_BLOCK
; /* NDIS defined fields */
37 KDPC MiniportDpc
; /* DPC routine for adapter */
38 BOOLEAN MiniportBusy
; /* A MiniportXxx routine is executing */
39 NDIS_HANDLE MiniportAdapterBinding
; /* Binding handle for current caller */
40 ULONG WorkQueueLevel
; /* Number of used work item buffers */
41 NDIS_MINIPORT_WORK_ITEM WorkQueue
[NDIS_MINIPORT_WORK_QUEUE_SIZE
];
42 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
43 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
45 LIST_ENTRY ListEntry
; /* Entry on global list */
46 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
47 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
48 ULONG RefCount
; /* Reference count */
49 PMINIPORT_DRIVER Miniport
; /* Miniport owning this adapter */
50 UNICODE_STRING DeviceName
; /* Device name of this adapter */
51 ULONG Attributes
; /* Attributes of adapter */
52 /* TRUE if the miniport has called NdisSetAttributes(Ex) for this adapter */
53 BOOLEAN AttributesSet
;
54 PVOID QueryBuffer
; /* Buffer to use for queries */
55 ULONG QueryBufferLength
; /* Length of QueryBuffer */
56 ULONG MediumHeaderSize
; /* Size of medium header */
57 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
58 ULONG AddressLength
; /* Length of hardware address */
59 PUCHAR LookaheadBuffer
; /* Pointer to lookahead buffer */
60 ULONG LookaheadLength
; /* Length of lookahead buffer */
61 ULONG CurLookaheadLength
; /* Current (selected) length of lookahead buffer */
62 ULONG MaxLookaheadLength
; /* Maximum length of lookahead buffer */
64 PNDIS_PACKET PacketQueueHead
; /* Head of packet queue */
65 PNDIS_PACKET PacketQueueTail
; /* Head of packet queue */
67 PNDIS_PACKET LoopPacket
; /* Current packet beeing looped */
68 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
70 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
72 extern LIST_ENTRY MiniportListHead
;
73 extern KSPIN_LOCK MiniportListLock
;
74 extern LIST_ENTRY AdapterListHead
;
75 extern KSPIN_LOCK AdapterListLock
;
86 PLOGICAL_ADAPTER Adapter
,
87 NDIS_HANDLE MacReceiveContext
,
89 UINT HeaderBufferSize
,
90 PVOID LookaheadBuffer
,
91 UINT LookaheadBufferSize
,
95 MiniAdapterHasAddress(
96 PLOGICAL_ADAPTER Adapter
,
101 PNDIS_STRING AdapterName
);
104 MiniQueryInformation(
105 PLOGICAL_ADAPTER Adapter
,
108 PULONG BytesWritten
);
113 PLOGICAL_ADAPTER Adapter
,
114 NDIS_WORK_ITEM_TYPE WorkItemType
,
115 PVOID WorkItemContext
,
116 NDIS_HANDLE Initiator
);
121 PLOGICAL_ADAPTER Adapter
,
122 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
123 PVOID
*WorkItemContext
,
124 NDIS_HANDLE
*Initiator
);
128 PLOGICAL_ADAPTER Adapter
,
129 PNDIS_REQUEST NdisRequest
);
131 #endif /* __MINIPORT_H */