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
;
18 extern NDIS_HANDLE GlobalPacketPoolHandle
;
19 extern NDIS_HANDLE GlobalBufferPoolHandle
;
21 typedef struct _NDISUIO_ADAPTER_CONTEXT
23 /* Asynchronous completion */
24 NDIS_STATUS AsyncStatus
;
27 /* NDIS binding information */
28 NDIS_HANDLE BindingHandle
;
30 /* Reference count information */
32 LIST_ENTRY OpenEntryList
;
34 /* Receive packet list */
35 LIST_ENTRY PacketList
;
36 KEVENT PacketReadEvent
;
39 UNICODE_STRING DeviceName
;
41 /* Global list entry */
46 } NDISUIO_ADAPTER_CONTEXT
, *PNDISUIO_ADAPTER_CONTEXT
;
48 typedef struct _NDISUIO_OPEN_ENTRY
51 PFILE_OBJECT FileObject
;
53 /* Tracks how this adapter was opened (write-only or read-write) */
58 } NDISUIO_OPEN_ENTRY
, *PNDISUIO_OPEN_ENTRY
;
60 typedef struct _NDISUIO_PACKET_ENTRY
62 /* Length of data at the end of the struct */
65 /* Entry on the packet list */
70 } NDISUIO_PACKET_ENTRY
, *PNDISUIO_PACKET_ENTRY
;
72 /* NDIS version info */
73 #define NDIS_MAJOR_VERSION 5
74 #define NDIS_MINOR_VERSION 0
79 NduDispatchCreate(PDEVICE_OBJECT DeviceObject
,
84 NduDispatchClose(PDEVICE_OBJECT DeviceObject
,
90 NduDispatchDeviceControl(PDEVICE_OBJECT DeviceObject
,
95 AllocateAndChainBuffer(PNDIS_PACKET Packet
,
101 CreatePacketFromPoolBuffer(PVOID Buffer
,
105 CleanupAndFreePacket(PNDIS_PACKET Packet
,
108 PNDISUIO_ADAPTER_CONTEXT
109 FindAdapterContextByName(PNDIS_STRING DeviceName
);
112 ReferenceAdapterContext(PNDISUIO_ADAPTER_CONTEXT AdapterContext
);
115 DereferenceAdapterContextWithOpenEntry(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
116 PNDISUIO_OPEN_ENTRY OpenEntry
);
121 NduOpenAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
123 NDIS_STATUS OpenStatus
);
127 NduCloseAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
132 NduSendComplete(NDIS_HANDLE ProtocolBindingContext
,
138 NduTransferDataComplete(NDIS_HANDLE ProtocolBindingContext
,
141 UINT BytesTransferred
);
145 NduResetComplete(NDIS_HANDLE ProtocolBindingContext
,
150 NduRequestComplete(NDIS_HANDLE ProtocolBindingContext
,
151 PNDIS_REQUEST NdisRequest
,
156 NduReceive(NDIS_HANDLE ProtocolBindingContext
,
157 NDIS_HANDLE MacReceiveContext
,
159 UINT HeaderBufferSize
,
160 PVOID LookAheadBuffer
,
161 UINT LookaheadBufferSize
,
166 NduReceiveComplete(NDIS_HANDLE ProtocolBindingContext
);
170 NduStatus(NDIS_HANDLE ProtocolBindingContext
,
171 NDIS_STATUS GeneralStatus
,
173 UINT StatusBufferSize
);
177 NduStatusComplete(NDIS_HANDLE ProtocolBindingContext
);
181 NduBindAdapter(PNDIS_STATUS Status
,
182 NDIS_HANDLE BindContext
,
183 PNDIS_STRING DeviceName
,
184 PVOID SystemSpecific1
,
185 PVOID SystemSpecific2
);
189 NduUnbindAdapter(PNDIS_STATUS Status
,
190 NDIS_HANDLE ProtocolBindingContext
,
191 NDIS_HANDLE UnbindContext
);
196 NduDispatchRead(PDEVICE_OBJECT DeviceObject
,
201 NduDispatchWrite(PDEVICE_OBJECT DeviceObject
,
203 #endif /* __NDISUIO_H */