2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS User I/O driver
5 * PURPOSE: NDISUIO definitions
14 extern PDEVICE_OBJECT GlobalDeviceObject
;
15 extern NDIS_HANDLE GlobalProtocolHandle
;
16 extern LIST_ENTRY GlobalAdapterList
;
17 extern KSPIN_LOCK GlobalAdapterListLock
;
19 typedef struct _NDISUIO_ADAPTER_CONTEXT
21 /* Asynchronous completion */
22 NDIS_STATUS AsyncStatus
;
25 /* NDIS binding information */
26 NDIS_HANDLE BindingHandle
;
28 /* Reference count information */
30 LIST_ENTRY OpenEntryList
;
33 NDIS_HANDLE PacketPoolHandle
;
34 NDIS_HANDLE BufferPoolHandle
;
36 /* Receive packet list */
37 LIST_ENTRY PacketList
;
38 KEVENT PacketReadEvent
;
44 UNICODE_STRING DeviceName
;
46 /* Global list entry */
51 } NDISUIO_ADAPTER_CONTEXT
, *PNDISUIO_ADAPTER_CONTEXT
;
53 typedef struct _NDISUIO_OPEN_ENTRY
56 PFILE_OBJECT FileObject
;
58 /* Tracks how this adapter was opened (write-only or read-write) */
63 } NDISUIO_OPEN_ENTRY
, *PNDISUIO_OPEN_ENTRY
;
65 typedef struct _NDISUIO_PACKET_ENTRY
67 /* Length of data at the end of the struct */
70 /* Entry on the packet list */
75 } NDISUIO_PACKET_ENTRY
, *PNDISUIO_PACKET_ENTRY
;
77 /* NDIS version info */
78 #define NDIS_MAJOR_VERSION 5
79 #define NDIS_MINOR_VERSION 0
84 NduDispatchCreate(PDEVICE_OBJECT DeviceObject
,
89 NduDispatchClose(PDEVICE_OBJECT DeviceObject
,
95 NduDispatchDeviceControl(PDEVICE_OBJECT DeviceObject
,
100 AllocateAndChainBuffer(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
107 CreatePacketFromPoolBuffer(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
112 CleanupAndFreePacket(PNDIS_PACKET Packet
,
115 PNDISUIO_ADAPTER_CONTEXT
116 FindAdapterContextByName(PNDIS_STRING DeviceName
);
119 ReferenceAdapterContext(PNDISUIO_ADAPTER_CONTEXT AdapterContext
);
122 DereferenceAdapterContextWithOpenEntry(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
123 PNDISUIO_OPEN_ENTRY OpenEntry
);
128 NduOpenAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
130 NDIS_STATUS OpenStatus
);
134 NduCloseAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
139 NduNetPnPEvent(NDIS_HANDLE ProtocolBindingContext
,
140 PNET_PNP_EVENT NetPnPEvent
);
144 NduSendComplete(NDIS_HANDLE ProtocolBindingContext
,
150 NduTransferDataComplete(NDIS_HANDLE ProtocolBindingContext
,
153 UINT BytesTransferred
);
157 NduResetComplete(NDIS_HANDLE ProtocolBindingContext
,
162 NduRequestComplete(NDIS_HANDLE ProtocolBindingContext
,
163 PNDIS_REQUEST NdisRequest
,
168 NduReceive(NDIS_HANDLE ProtocolBindingContext
,
169 NDIS_HANDLE MacReceiveContext
,
171 UINT HeaderBufferSize
,
172 PVOID LookAheadBuffer
,
173 UINT LookaheadBufferSize
,
178 NduReceiveComplete(NDIS_HANDLE ProtocolBindingContext
);
182 NduStatus(NDIS_HANDLE ProtocolBindingContext
,
183 NDIS_STATUS GeneralStatus
,
185 UINT StatusBufferSize
);
189 NduStatusComplete(NDIS_HANDLE ProtocolBindingContext
);
193 NduBindAdapter(PNDIS_STATUS Status
,
194 NDIS_HANDLE BindContext
,
195 PNDIS_STRING DeviceName
,
196 PVOID SystemSpecific1
,
197 PVOID SystemSpecific2
);
201 NduUnbindAdapter(PNDIS_STATUS Status
,
202 NDIS_HANDLE ProtocolBindingContext
,
203 NDIS_HANDLE UnbindContext
);
208 NduDispatchRead(PDEVICE_OBJECT DeviceObject
,
213 NduDispatchWrite(PDEVICE_OBJECT DeviceObject
,
216 #endif /* __NDISUIO_H */