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 /* a miniport's shared memory */
55 typedef struct _MINIPORT_SHARED_MEMORY
{
56 PDMA_ADAPTER AdapterObject
;
58 PHYSICAL_ADDRESS PhysicalAddress
;
61 } MINIPORT_SHARED_MEMORY
, *PMINIPORT_SHARED_MEMORY
;
63 /* A structure of WrapperConfigurationContext (not compatible with the
65 typedef struct _NDIS_WRAPPER_CONTEXT
{
66 HANDLE RegistryHandle
;
67 PDEVICE_OBJECT DeviceObject
;
69 } NDIS_WRAPPER_CONTEXT
, *PNDIS_WRAPPER_CONTEXT
;
71 #define GET_MINIPORT_DRIVER(Handle)((PMINIPORT_DRIVER)Handle)
73 /* Information about a logical adapter */
74 typedef struct _LOGICAL_ADAPTER
76 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
77 KDPC MiniportDpc
; /* DPC routine for adapter */
78 BOOLEAN MiniportBusy
; /* A MiniportXxx routine is executing */
79 ULONG WorkQueueLevel
; /* Number of used work item buffers */
80 NDIS_MINIPORT_WORK_ITEM WorkQueue
[NDIS_MINIPORT_WORK_QUEUE_SIZE
];
81 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
82 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
83 LIST_ENTRY ListEntry
; /* Entry on global list */
84 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
85 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
86 ULONG RefCount
; /* Reference count */
87 PMINIPORT_DRIVER Miniport
; /* Miniport owning this adapter */
88 ULONG Attributes
; /* Attributes of adapter */
89 BOOLEAN AttributesSet
; /* Whether NdisMSetAttributes(Ex) has been called */
90 PVOID QueryBuffer
; /* Buffer to use for queries */
91 ULONG QueryBufferLength
; /* Length of QueryBuffer */
92 ULONG MediumHeaderSize
; /* Size of medium header */
93 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
94 ULONG AddressLength
; /* Length of hardware address */
95 PUCHAR LookaheadBuffer
; /* Pointer to lookahead buffer */
96 ULONG LookaheadLength
; /* Length of lookahead buffer */
97 PNDIS_PACKET PacketQueueHead
; /* Head of packet queue */
98 PNDIS_PACKET PacketQueueTail
; /* Head of packet queue */
99 PNDIS_PACKET LoopPacket
; /* Current packet beeing looped */
100 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
101 KEVENT DmaEvent
; /* Event to support DMA register allocation */
102 KSPIN_LOCK DmaLock
; /* Spinlock to protect the dma list */
103 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
105 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
107 extern LIST_ENTRY MiniportListHead
;
108 extern KSPIN_LOCK MiniportListLock
;
109 extern LIST_ENTRY AdapterListHead
;
110 extern KSPIN_LOCK AdapterListLock
;
116 PNDIS_PACKET Packet
);
121 PLOGICAL_ADAPTER Adapter
,
122 NDIS_HANDLE MacReceiveContext
,
124 UINT HeaderBufferSize
,
125 PVOID LookaheadBuffer
,
126 UINT LookaheadBufferSize
,
130 MiniAdapterHasAddress(
131 PLOGICAL_ADAPTER Adapter
,
132 PNDIS_PACKET Packet
);
136 PNDIS_STRING AdapterName
);
139 MiniQueryInformation(
140 PLOGICAL_ADAPTER Adapter
,
143 PULONG BytesWritten
);
148 PLOGICAL_ADAPTER Adapter
,
149 NDIS_WORK_ITEM_TYPE WorkItemType
,
150 PVOID WorkItemContext
);
155 PLOGICAL_ADAPTER Adapter
,
156 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
157 PVOID
*WorkItemContext
);
161 PLOGICAL_ADAPTER Adapter
,
162 PNDIS_REQUEST NdisRequest
);
174 #endif /* __MINIPORT_H */