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 #if !defined(_MSC_VER) && defined(__NDIS_H)
31 } NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE
;
33 } NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
36 /* There must be some defined struct to do this... */
37 typedef struct _NDIS_M_DEVICE_BLOCK
{
38 PDEVICE_OBJECT DeviceObject
;
39 PNDIS_STRING SymbolicName
;
40 } NDIS_M_DEVICE_BLOCK
, *PNDIS_M_DEVICE_BLOCK
;
42 /* resources allocated on behalf on the miniport */
43 #define MINIPORT_RESOURCE_TYPE_REGISTRY_DATA 0
44 #define MINIPORT_RESOURCE_TYPE_MEMORY 1
45 typedef struct _MINIPORT_RESOURCE
{
49 } MINIPORT_RESOURCE
, *PMINIPORT_RESOURCE
;
51 /* Configuration context */
52 typedef struct _MINIPORT_CONFIGURATION_CONTEXT
{
54 LIST_ENTRY ResourceListHead
;
55 KSPIN_LOCK ResourceLock
;
56 } MINIPORT_CONFIGURATION_CONTEXT
, *PMINIPORT_CONFIGURATION_CONTEXT
;
58 /* Bugcheck callback context */
59 typedef struct _MINIPORT_BUGCHECK_CONTEXT
{
61 ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
;
62 PKBUGCHECK_CALLBACK_RECORD CallbackRecord
;
63 } MINIPORT_BUGCHECK_CONTEXT
, *PMINIPORT_BUGCHECK_CONTEXT
;
65 /* a miniport's shared memory */
66 typedef struct _MINIPORT_SHARED_MEMORY
{
67 PDMA_ADAPTER AdapterObject
;
69 PHYSICAL_ADDRESS PhysicalAddress
;
72 PNDIS_MINIPORT_BLOCK Adapter
;
75 } MINIPORT_SHARED_MEMORY
, *PMINIPORT_SHARED_MEMORY
;
77 /* A structure of WrapperConfigurationContext (not compatible with the
79 typedef struct _NDIS_WRAPPER_CONTEXT
{
80 HANDLE RegistryHandle
;
81 PDEVICE_OBJECT DeviceObject
;
84 } NDIS_WRAPPER_CONTEXT
, *PNDIS_WRAPPER_CONTEXT
;
86 #define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
88 /* Information about a logical adapter */
89 typedef struct _LOGICAL_ADAPTER
91 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
92 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
93 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
94 LIST_ENTRY ListEntry
; /* Entry on global list */
95 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
96 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
97 ULONG MediumHeaderSize
; /* Size of medium header */
98 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
99 ULONG AddressLength
; /* Length of hardware address */
100 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
101 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
103 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
105 extern LIST_ENTRY MiniportListHead
;
106 extern KSPIN_LOCK MiniportListLock
;
107 extern LIST_ENTRY AdapterListHead
;
108 extern KSPIN_LOCK AdapterListLock
;
114 PNDIS_PACKET Packet
);
119 PLOGICAL_ADAPTER Adapter
,
120 NDIS_HANDLE MacReceiveContext
,
122 UINT HeaderBufferSize
,
123 PVOID LookaheadBuffer
,
124 UINT LookaheadBufferSize
,
128 MiniAdapterHasAddress(
129 PLOGICAL_ADAPTER Adapter
,
130 PNDIS_PACKET Packet
);
134 PNDIS_STRING AdapterName
);
137 MiniQueryInformation(
138 PLOGICAL_ADAPTER Adapter
,
142 PULONG BytesWritten
);
147 PLOGICAL_ADAPTER Adapter
,
148 NDIS_WORK_ITEM_TYPE WorkItemType
,
149 PVOID WorkItemContext
,
155 PLOGICAL_ADAPTER Adapter
,
156 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
157 PVOID
*WorkItemContext
);
161 PLOGICAL_ADAPTER Adapter
,
162 PNDIS_REQUEST NdisRequest
);
177 IN PDEVICE_OBJECT DeviceObject
,
182 IN NDIS_HANDLE MiniportAdapterHandle
,
183 IN PNDIS_PACKET Packet
,
184 IN NDIS_STATUS Status
);
188 PLOGICAL_ADAPTER Adapter
,
189 NDIS_WORK_ITEM_TYPE Type
);
193 PLOGICAL_ADAPTER Adapter
);
196 MiniDoAddressingReset(
197 PLOGICAL_ADAPTER Adapter
);