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_MEMORY 0
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
;
83 } NDIS_WRAPPER_CONTEXT
, *PNDIS_WRAPPER_CONTEXT
;
85 #define GET_MINIPORT_DRIVER(Handle)((PNDIS_M_DRIVER_BLOCK)Handle)
87 /* Information about a logical adapter */
88 typedef struct _LOGICAL_ADAPTER
90 NDIS_MINIPORT_BLOCK NdisMiniportBlock
; /* NDIS defined fields */
91 PNDIS_MINIPORT_WORK_ITEM WorkQueueHead
; /* Head of work queue */
92 PNDIS_MINIPORT_WORK_ITEM WorkQueueTail
; /* Tail of work queue */
93 LIST_ENTRY ListEntry
; /* Entry on global list */
94 LIST_ENTRY MiniportListEntry
; /* Entry on miniport driver list */
95 LIST_ENTRY ProtocolListHead
; /* List of bound protocols */
96 ULONG MediumHeaderSize
; /* Size of medium header */
97 HARDWARE_ADDRESS Address
; /* Hardware address of adapter */
98 ULONG AddressLength
; /* Length of hardware address */
99 PMINIPORT_BUGCHECK_CONTEXT BugcheckContext
; /* Adapter's shutdown handler */
100 } LOGICAL_ADAPTER
, *PLOGICAL_ADAPTER
;
102 #define GET_LOGICAL_ADAPTER(Handle)((PLOGICAL_ADAPTER)Handle)
104 extern LIST_ENTRY MiniportListHead
;
105 extern KSPIN_LOCK MiniportListLock
;
106 extern LIST_ENTRY AdapterListHead
;
107 extern KSPIN_LOCK AdapterListLock
;
113 PNDIS_PACKET Packet
);
118 PLOGICAL_ADAPTER Adapter
,
119 NDIS_HANDLE MacReceiveContext
,
121 UINT HeaderBufferSize
,
122 PVOID LookaheadBuffer
,
123 UINT LookaheadBufferSize
,
127 MiniAdapterHasAddress(
128 PLOGICAL_ADAPTER Adapter
,
129 PNDIS_PACKET Packet
);
133 PNDIS_STRING AdapterName
);
136 MiniQueryInformation(
137 PLOGICAL_ADAPTER Adapter
,
141 PULONG BytesWritten
);
146 PLOGICAL_ADAPTER Adapter
,
147 NDIS_WORK_ITEM_TYPE WorkItemType
,
148 PVOID WorkItemContext
,
154 PLOGICAL_ADAPTER Adapter
,
155 NDIS_WORK_ITEM_TYPE
*WorkItemType
,
156 PVOID
*WorkItemContext
);
160 PLOGICAL_ADAPTER Adapter
,
161 PNDIS_REQUEST NdisRequest
);
176 IN PDEVICE_OBJECT DeviceObject
,
181 IN NDIS_HANDLE MiniportAdapterHandle
,
182 IN PNDIS_PACKET Packet
,
183 IN NDIS_STATUS Status
);
187 PLOGICAL_ADAPTER Adapter
,
188 NDIS_WORK_ITEM_TYPE Type
);
190 #endif /* __MINIPORT_H */