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 NduSendComplete(NDIS_HANDLE ProtocolBindingContext
,
145 NduTransferDataComplete(NDIS_HANDLE ProtocolBindingContext
,
148 UINT BytesTransferred
);
152 NduResetComplete(NDIS_HANDLE ProtocolBindingContext
,
157 NduRequestComplete(NDIS_HANDLE ProtocolBindingContext
,
158 PNDIS_REQUEST NdisRequest
,
163 NduReceive(NDIS_HANDLE ProtocolBindingContext
,
164 NDIS_HANDLE MacReceiveContext
,
166 UINT HeaderBufferSize
,
167 PVOID LookAheadBuffer
,
168 UINT LookaheadBufferSize
,
173 NduReceiveComplete(NDIS_HANDLE ProtocolBindingContext
);
177 NduStatus(NDIS_HANDLE ProtocolBindingContext
,
178 NDIS_STATUS GeneralStatus
,
180 UINT StatusBufferSize
);
184 NduStatusComplete(NDIS_HANDLE ProtocolBindingContext
);
188 NduBindAdapter(PNDIS_STATUS Status
,
189 NDIS_HANDLE BindContext
,
190 PNDIS_STRING DeviceName
,
191 PVOID SystemSpecific1
,
192 PVOID SystemSpecific2
);
196 NduUnbindAdapter(PNDIS_STATUS Status
,
197 NDIS_HANDLE ProtocolBindingContext
,
198 NDIS_HANDLE UnbindContext
);
203 NduDispatchRead(PDEVICE_OBJECT DeviceObject
,
208 NduDispatchWrite(PDEVICE_OBJECT DeviceObject
,
210 #endif /* __NDISUIO_H */