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 struct _ADAPTER_BINDING
;
16 typedef struct _HARDWARE_ADDRESS
{
18 UCHAR Medium802_3
[ETH_LENGTH_OF_ADDRESS
];
20 } HARDWARE_ADDRESS
, *PHARDWARE_ADDRESS
;
22 /* Information about a miniport */
23 typedef struct _NDIS_M_DRIVER_BLOCK
{
24 LIST_ENTRY ListEntry
; /* Entry on global list */
25 KSPIN_LOCK Lock
; /* Protecting spin lock */
26 NDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics
; /* Miniport characteristics */
27 WORK_QUEUE_ITEM WorkItem
; /* Work item */
28 PDRIVER_OBJECT DriverObject
; /* Driver object of miniport */
29 LIST_ENTRY DeviceList
; /* Adapters created by miniport */
30 PUNICODE_STRING RegistryPath
; /* SCM Registry key */
31 #if !defined(_MSC_VER) && defined(__NDIS_H)
32 } NDIS_M_DRIVER_BLOCK_COMPATIBILITY_HACK_DONT_USE
;
34 } NDIS_M_DRIVER_BLOCK
, *PNDIS_M_DRIVER_BLOCK
;
37 /* There must be some defined struct to do this... */
38 typedef struct _NDIS_M_DEVICE_BLOCK
{
39 PDEVICE_OBJECT DeviceObject
;
40 PNDIS_STRING SymbolicName
;
41 } NDIS_M_DEVICE_BLOCK
, *PNDIS_M_DEVICE_BLOCK
;
43 /* resources allocated on behalf on the miniport */
44 #define MINIPORT_RESOURCE_TYPE_REGISTRY_DATA 0
45 #define MINIPORT_RESOURCE_TYPE_MEMORY 1
46 typedef struct _MINIPORT_RESOURCE
{
50 } MINIPORT_RESOURCE
, *PMINIPORT_RESOURCE
;
52 /* Configuration context */
53 typedef struct _MINIPORT_CONFIGURATION_CONTEXT
{
55 LIST_ENTRY ResourceListHead
;
56 KSPIN_LOCK ResourceLock
;
57 } MINIPORT_CONFIGURATION_CONTEXT
, *PMINIPORT_CONFIGURATION_CONTEXT
;
59 /* Bugcheck callback context */
60 typedef struct _MINIPORT_BUGCHECK_CONTEXT
{
62 ADAPTER_SHUTDOWN_HANDLER ShutdownHandler
;
63 PKBUGCHECK_CALLBACK_RECORD CallbackRecord
;
64 } MINIPORT_BUGCHECK_CONTEXT
, *PMINIPORT_BUGCHECK_CONTEXT
;
66 /* a miniport's shared memory */
67 typedef struct _MINIPORT_SHARED_MEMORY
{
68 PDMA_ADAPTER AdapterObject
;
70 PHYSICAL_ADDRESS PhysicalAddress
;
73 PNDIS_MINIPORT_BLOCK Adapter
;
76 } MINIPORT_SHARED_MEMORY
, *PMINIPORT_SHARED_MEMORY
;
78 /* A structure of WrapperConfigurationContext (not compatible with the
80 typedef struct _NDIS_WRAPPER_CONTEXT
{
81 HANDLE RegistryHandle
;
82 PDEVICE_OBJECT DeviceObject
;
85 } NDIS_WRAPPER_CONTEXT
, *PNDIS_WRAPPER_CONTEXT
;
87 #define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
89 /* Information about a logical adapter */
90 typedef struct _LOGICAL_ADAPTER
92 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
93 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
94 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
95 LIST_ENTRY ListEntry
; /* Entry on global list */
96 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
97 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
98 ULONG MediumHeaderSize
; /* Size of medium header */
99 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
100 ULONG AddressLength
; /* Length of hardware address */
101 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
102 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
104 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
106 extern LIST_ENTRY MiniportListHead
;
107 extern KSPIN_LOCK MiniportListLock
;
108 extern LIST_ENTRY AdapterListHead
;
109 extern KSPIN_LOCK AdapterListLock
;
115 PNDIS_PACKET Packet
);
120 PLOGICAL_ADAPTER Adapter
,
121 NDIS_HANDLE MacReceiveContext
,
123 UINT HeaderBufferSize
,
124 PVOID LookaheadBuffer
,
125 UINT LookaheadBufferSize
,
129 MiniAdapterHasAddress(
130 PLOGICAL_ADAPTER Adapter
,
131 PNDIS_PACKET Packet
);
135 PNDIS_STRING AdapterName
);
138 MiniQueryInformation(
139 PLOGICAL_ADAPTER Adapter
,
143 PULONG BytesWritten
);
148 PLOGICAL_ADAPTER Adapter
,
149 NDIS_WORK_ITEM_TYPE WorkItemType
,
150 PVOID WorkItemContext
,
156 PLOGICAL_ADAPTER Adapter
,
157 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
158 PVOID
*WorkItemContext
);
162 PLOGICAL_ADAPTER Adapter
,
163 PNDIS_REQUEST NdisRequest
);
178 IN PDEVICE_OBJECT DeviceObject
,
183 IN NDIS_HANDLE MiniportAdapterHandle
,
184 IN PNDIS_PACKET Packet
,
185 IN NDIS_STATUS Status
);
189 PLOGICAL_ADAPTER Adapter
,
190 NDIS_WORK_ITEM_TYPE Type
);
194 PLOGICAL_ADAPTER Adapter
);
197 MiniDoAddressingReset(
198 PLOGICAL_ADAPTER Adapter
);
200 #endif /* __MINIPORT_H */