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
;
41 UNICODE_STRING DeviceName
;
43 /* Global list entry */
48 } NDISUIO_ADAPTER_CONTEXT
, *PNDISUIO_ADAPTER_CONTEXT
;
50 typedef struct _NDISUIO_OPEN_ENTRY
53 PFILE_OBJECT FileObject
;
55 /* Tracks how this adapter was opened (write-only or read-write) */
60 } NDISUIO_OPEN_ENTRY
, *PNDISUIO_OPEN_ENTRY
;
62 typedef struct _NDISUIO_PACKET_ENTRY
64 /* Length of data at the end of the struct */
67 /* Entry on the packet list */
72 } NDISUIO_PACKET_ENTRY
, *PNDISUIO_PACKET_ENTRY
;
74 /* NDIS version info */
75 #define NDIS_MAJOR_VERSION 5
76 #define NDIS_MINOR_VERSION 0
81 NduDispatchCreate(PDEVICE_OBJECT DeviceObject
,
86 NduDispatchClose(PDEVICE_OBJECT DeviceObject
,
92 NduDispatchDeviceControl(PDEVICE_OBJECT DeviceObject
,
97 AllocateAndChainBuffer(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
104 CreatePacketFromPoolBuffer(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
109 CleanupAndFreePacket(PNDIS_PACKET Packet
,
112 PNDISUIO_ADAPTER_CONTEXT
113 FindAdapterContextByName(PNDIS_STRING DeviceName
);
116 ReferenceAdapterContext(PNDISUIO_ADAPTER_CONTEXT AdapterContext
);
119 DereferenceAdapterContextWithOpenEntry(PNDISUIO_ADAPTER_CONTEXT AdapterContext
,
120 PNDISUIO_OPEN_ENTRY OpenEntry
);
125 NduOpenAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
127 NDIS_STATUS OpenStatus
);
131 NduCloseAdapterComplete(NDIS_HANDLE ProtocolBindingContext
,
136 NduSendComplete(NDIS_HANDLE ProtocolBindingContext
,
142 NduTransferDataComplete(NDIS_HANDLE ProtocolBindingContext
,
145 UINT BytesTransferred
);
149 NduResetComplete(NDIS_HANDLE ProtocolBindingContext
,
154 NduRequestComplete(NDIS_HANDLE ProtocolBindingContext
,
155 PNDIS_REQUEST NdisRequest
,
160 NduReceive(NDIS_HANDLE ProtocolBindingContext
,
161 NDIS_HANDLE MacReceiveContext
,
163 UINT HeaderBufferSize
,
164 PVOID LookAheadBuffer
,
165 UINT LookaheadBufferSize
,
170 NduReceiveComplete(NDIS_HANDLE ProtocolBindingContext
);
174 NduStatus(NDIS_HANDLE ProtocolBindingContext
,
175 NDIS_STATUS GeneralStatus
,
177 UINT StatusBufferSize
);
181 NduStatusComplete(NDIS_HANDLE ProtocolBindingContext
);
185 NduBindAdapter(PNDIS_STATUS Status
,
186 NDIS_HANDLE BindContext
,
187 PNDIS_STRING DeviceName
,
188 PVOID SystemSpecific1
,
189 PVOID SystemSpecific2
);
193 NduUnbindAdapter(PNDIS_STATUS Status
,
194 NDIS_HANDLE ProtocolBindingContext
,
195 NDIS_HANDLE UnbindContext
);
200 NduDispatchRead(PDEVICE_OBJECT DeviceObject
,
205 NduDispatchWrite(PDEVICE_OBJECT DeviceObject
,
207 #endif /* __NDISUIO_H */