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 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
);
145 PLOGICAL_ADAPTER Adapter
,
146 NDIS_WORK_ITEM_TYPE WorkItemType
,
147 PVOID WorkItemContext
);
150 MiniQueueWorkItemHead(
151 PLOGICAL_ADAPTER Adapter
,
152 NDIS_WORK_ITEM_TYPE WorkItemType
,
153 PVOID WorkItemContext
);
157 PLOGICAL_ADAPTER Adapter
,
158 NDIS_WORK_ITEM_TYPE WorkItemType
);
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 */