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 _NDIS_M_DRIVER_BLOCK
{
23 LIST_ENTRY ListEntry
; /* Entry on global list */
24 KSPIN_LOCK Lock
; /* Protecting spin lock */
25 NDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
; /* Miniport characteristics */
26 WORK_QUEUE_ITEM WorkItem
; /* Work item */
27 PDRIVER_OBJECT DriverObject
; /* Driver object of miniport */
28 LIST_ENTRY DeviceList
; /* Adapters created by miniport */
29 PUNICODE_STRING RegistryPath
; /* SCM Registry key */
30 } NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
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)((PNDIS_M_DRIVER_BLOCK)Handle)
73 /* Information about a logical adapter */
74 typedef struct _LOGICAL_ADAPTER
76 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
77 BOOLEAN MiniportBusy
; /* A MiniportXxx routine is executing */
78 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
79 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
80 LIST_ENTRY ListEntry
; /* Entry on global list */
81 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
82 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
83 PVOID QueryBuffer
; /* Buffer to use for queries */
84 ULONG QueryBufferLength
; /* Length of QueryBuffer */
85 ULONG MediumHeaderSize
; /* Size of medium header */
86 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
87 ULONG AddressLength
; /* Length of hardware address */
88 PUCHAR LookaheadBuffer
; /* Pointer to lookahead buffer */
89 ULONG LookaheadLength
; /* Length of lookahead buffer */
90 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
91 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
93 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
95 extern LIST_ENTRY MiniportListHead
;
96 extern KSPIN_LOCK MiniportListLock
;
97 extern LIST_ENTRY AdapterListHead
;
98 extern KSPIN_LOCK AdapterListLock
;
104 PNDIS_PACKET Packet
);
109 PLOGICAL_ADAPTER Adapter
,
110 NDIS_HANDLE MacReceiveContext
,
112 UINT HeaderBufferSize
,
113 PVOID LookaheadBuffer
,
114 UINT LookaheadBufferSize
,
118 MiniAdapterHasAddress(
119 PLOGICAL_ADAPTER Adapter
,
120 PNDIS_PACKET Packet
);
124 PNDIS_STRING AdapterName
);
127 MiniQueryInformation(
128 PLOGICAL_ADAPTER Adapter
,
131 PULONG BytesWritten
);
136 PLOGICAL_ADAPTER Adapter
,
137 NDIS_WORK_ITEM_TYPE WorkItemType
,
138 PVOID WorkItemContext
);
143 PLOGICAL_ADAPTER Adapter
,
144 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
145 PVOID
*WorkItemContext
);
149 PNDIS_MINIPORT_BLOCK Adapter
,
150 PNDIS_REQUEST NdisRequest
);
162 #endif /* __MINIPORT_H */