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 PUNICODE_STRING RegistryPath
; /* SCM Registry key */
30 } MINIPORT_DRIVER
, *PMINIPORT_DRIVER
;
32 /* resources allocated on behalf on the miniport */
33 #define MINIPORT_RESOURCE_TYPE_MEMORY 0
34 typedef struct _MINIPORT_RESOURCE
{
38 } MINIPORT_RESOURCE
, *PMINIPORT_RESOURCE
;
40 /* Configuration context */
41 typedef struct _MINIPORT_CONFIGURATION_CONTEXT
{
43 LIST_ENTRY ResourceListHead
;
44 KSPIN_LOCK ResourceLock
;
45 } MINIPORT_CONFIGURATION_CONTEXT
, *PMINIPORT_CONFIGURATION_CONTEXT
;
47 /* Bugcheck callback context */
48 typedef struct _MINIPORT_BUGCHECK_CONTEXT
{
50 ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
;
51 PKBUGCHECK_CALLBACK_RECORD CallbackRecord
;
52 } MINIPORT_BUGCHECK_CONTEXT
, *PMINIPORT_BUGCHECK_CONTEXT
;
54 #define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
56 /* Information about a logical adapter */
57 typedef struct _LOGICAL_ADAPTER
{
58 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
60 KDPC MiniportDpc
; /* DPC routine for adapter */
61 BOOLEAN MiniportBusy
; /* A MiniportXxx routine is executing */
62 NDIS_HANDLE MiniportAdapterBinding
; /* Binding handle for current caller */
63 ULONG WorkQueueLevel
; /* Number of used work item buffers */
64 NDIS_MINIPORT_WORK_ITEM WorkQueue
[NDIS_MINIPORT_WORK_QUEUE_SIZE
];
65 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
66 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
68 LIST_ENTRY ListEntry
; /* Entry on global list */
69 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
70 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
71 ULONG RefCount
; /* Reference count */
72 PMINIPORT_DRIVER Miniport
; /* Miniport owning this adapter */
73 UNICODE_STRING DeviceName
; /* Device name of this adapter */
74 ULONG Attributes
; /* Attributes of adapter */
75 /* TRUE if the miniport has called NdisSetAttributes(Ex) for this adapter */
76 BOOLEAN AttributesSet
;
77 PVOID QueryBuffer
; /* Buffer to use for queries */
78 ULONG QueryBufferLength
; /* Length of QueryBuffer */
79 ULONG MediumHeaderSize
; /* Size of medium header */
80 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
81 ULONG AddressLength
; /* Length of hardware address */
82 PUCHAR LookaheadBuffer
; /* Pointer to lookahead buffer */
83 ULONG LookaheadLength
; /* Length of lookahead buffer */
84 ULONG CurLookaheadLength
; /* Current (selected) length of lookahead buffer */
85 ULONG MaxLookaheadLength
; /* Maximum length of lookahead buffer */
87 PNDIS_PACKET PacketQueueHead
; /* Head of packet queue */
88 PNDIS_PACKET PacketQueueTail
; /* Head of packet queue */
90 PNDIS_PACKET LoopPacket
; /* Current packet beeing looped */
91 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
92 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
94 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
96 extern LIST_ENTRY MiniportListHead
;
97 extern KSPIN_LOCK MiniportListLock
;
98 extern LIST_ENTRY AdapterListHead
;
99 extern KSPIN_LOCK AdapterListLock
;
105 PNDIS_PACKET Packet
);
110 PLOGICAL_ADAPTER Adapter
,
111 NDIS_HANDLE MacReceiveContext
,
113 UINT HeaderBufferSize
,
114 PVOID LookaheadBuffer
,
115 UINT LookaheadBufferSize
,
119 MiniAdapterHasAddress(
120 PLOGICAL_ADAPTER Adapter
,
121 PNDIS_PACKET Packet
);
125 PNDIS_STRING AdapterName
);
128 MiniQueryInformation(
129 PLOGICAL_ADAPTER Adapter
,
132 PULONG BytesWritten
);
137 PLOGICAL_ADAPTER Adapter
,
138 NDIS_WORK_ITEM_TYPE WorkItemType
,
139 PVOID WorkItemContext
,
140 NDIS_HANDLE Initiator
);
145 PLOGICAL_ADAPTER Adapter
,
146 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
147 PVOID
*WorkItemContext
,
148 NDIS_HANDLE
*Initiator
);
152 PLOGICAL_ADAPTER Adapter
,
153 PNDIS_REQUEST NdisRequest
);
155 #endif /* __MINIPORT_H */