10#define AFD_MAX_EVENTS 10
11#define AFD_PACKET_COMMAND_LENGTH 15
12#define AfdCommand "AfdOpenPacketXX"
159#define AFD_ENDPOINT_CONNECTIONLESS 0x1
160#define AFD_ENDPOINT_MESSAGE_ORIENTED 0x10
161#define AFD_ENDPOINT_RAW 0x100
162#define AFD_ENDPOINT_MULTIPOINT 0x1000
163#define AFD_ENDPOINT_C_ROOT 0x10000
164#define AFD_ENDPOINT_D_ROOT 0x100000
167#define AFD_ADDRESS_HANDLE 0x1L
168#define AFD_CONNECTION_HANDLE 0x2L
171#define AFD_EVENT_RECEIVE_BIT 0
172#define AFD_EVENT_OOB_RECEIVE_BIT 1
173#define AFD_EVENT_SEND_BIT 2
174#define AFD_EVENT_DISCONNECT_BIT 3
175#define AFD_EVENT_ABORT_BIT 4
176#define AFD_EVENT_CLOSE_BIT 5
177#define AFD_EVENT_CONNECT_BIT 6
178#define AFD_EVENT_ACCEPT_BIT 7
179#define AFD_EVENT_CONNECT_FAIL_BIT 8
180#define AFD_EVENT_QOS_BIT 9
181#define AFD_EVENT_GROUP_QOS_BIT 10
182#define AFD_EVENT_ROUTING_INTERFACE_CHANGE_BIT 11
183#define AFD_EVENT_ADDRESS_LIST_CHANGE_BIT 12
184#define AFD_MAX_EVENT 13
185#define AFD_ALL_EVENTS ((1 << AFD_MAX_EVENT) - 1)
188#define AFD_INFO_INLINING_MODE 0x01L
189#define AFD_INFO_BLOCKING_MODE 0x02L
190#define AFD_INFO_SENDS_IN_PROGRESS 0x04L
191#define AFD_INFO_RECEIVE_WINDOW_SIZE 0x06L
192#define AFD_INFO_SEND_WINDOW_SIZE 0x07L
193#define AFD_INFO_GROUP_ID_TYPE 0x10L
194#define AFD_INFO_RECEIVE_CONTENT_SIZE 0x11L
197#define AFD_SHARE_UNIQUE 0x0L
198#define AFD_SHARE_REUSE 0x1L
199#define AFD_SHARE_WILDCARD 0x2L
200#define AFD_SHARE_EXCLUSIVE 0x3L
203#define AFD_DISCONNECT_SEND 0x01L
204#define AFD_DISCONNECT_RECV 0x02L
205#define AFD_DISCONNECT_ABORT 0x04L
206#define AFD_DISCONNECT_DATAGRAM 0x08L
209#define AFD_EVENT_RECEIVE (1 << AFD_EVENT_RECEIVE_BIT)
210#define AFD_EVENT_OOB_RECEIVE (1 << AFD_EVENT_OOB_RECEIVE_BIT)
211#define AFD_EVENT_SEND (1 << AFD_EVENT_SEND_BIT)
212#define AFD_EVENT_DISCONNECT (1 << AFD_EVENT_DISCONNECT_BIT)
213#define AFD_EVENT_ABORT (1 << AFD_EVENT_ABORT_BIT)
214#define AFD_EVENT_CLOSE (1 << AFD_EVENT_CLOSE_BIT)
215#define AFD_EVENT_CONNECT (1 << AFD_EVENT_CONNECT_BIT)
216#define AFD_EVENT_ACCEPT (1 << AFD_EVENT_ACCEPT_BIT)
217#define AFD_EVENT_CONNECT_FAIL (1 << AFD_EVENT_CONNECT_FAIL_BIT)
218#define AFD_EVENT_QOS (1 << AFD_EVENT_QOS_BIT)
219#define AFD_EVENT_GROUP_QOS (1 << AFD_EVENT_GROUP_QOS_BIT)
220#define AFD_EVENT_ROUTING_INTERFACE_CHANGE (1 << AFD_EVENT_ROUTING_INTERFACE_CHANGE_BIT)
221#define AFD_EVENT_ADDRESS_LIST_CHANGE (1 << AFD_EVENT_ADDRESS_LIST_CHANGE_BIT)
224#define AFD_SKIP_FIO 0x1L
225#define AFD_OVERLAPPED 0x2L
226#define AFD_IMMEDIATE 0x4L
229#define FSCTL_AFD_BASE FILE_DEVICE_NETWORK
230#define _AFD_CONTROL_CODE(Operation,Method) \
231 ((FSCTL_AFD_BASE)<<12 | (Operation<<2) | Method)
236#define AFD_START_LISTEN 2
237#define AFD_WAIT_FOR_LISTEN 3
240#define AFD_RECV_DATAGRAM 6
242#define AFD_SEND_DATAGRAM 8
244#define AFD_DISCONNECT 10
245#define AFD_GET_SOCK_NAME 11
246#define AFD_GET_PEER_NAME 12
247#define AFD_GET_TDI_HANDLES 13
248#define AFD_SET_INFO 14
249#define AFD_GET_CONTEXT_SIZE 15
250#define AFD_GET_CONTEXT 16
251#define AFD_SET_CONTEXT 17
252#define AFD_SET_CONNECT_DATA 18
253#define AFD_SET_CONNECT_OPTIONS 19
254#define AFD_SET_DISCONNECT_DATA 20
255#define AFD_SET_DISCONNECT_OPTIONS 21
256#define AFD_GET_CONNECT_DATA 22
257#define AFD_GET_CONNECT_OPTIONS 23
258#define AFD_GET_DISCONNECT_DATA 24
259#define AFD_GET_DISCONNECT_OPTIONS 25
260#define AFD_SET_CONNECT_DATA_SIZE 26
261#define AFD_SET_CONNECT_OPTIONS_SIZE 27
262#define AFD_SET_DISCONNECT_DATA_SIZE 28
263#define AFD_SET_DISCONNECT_OPTIONS_SIZE 29
264#define AFD_GET_INFO 30
265#define AFD_EVENT_SELECT 33
266#define AFD_ENUM_NETWORK_EVENTS 34
267#define AFD_DEFER_ACCEPT 35
268#define AFD_GET_PENDING_CONNECT_DATA 41
269#define AFD_VALIDATE_GROUP 42
270#define AFD_SUPER_CONNECT 49
274#define IOCTL_AFD_BIND \
275 _AFD_CONTROL_CODE(AFD_BIND, METHOD_NEITHER)
276#define IOCTL_AFD_CONNECT \
277 _AFD_CONTROL_CODE(AFD_CONNECT, METHOD_NEITHER)
278#define IOCTL_AFD_START_LISTEN \
279 _AFD_CONTROL_CODE(AFD_START_LISTEN, METHOD_NEITHER)
280#define IOCTL_AFD_WAIT_FOR_LISTEN \
281 _AFD_CONTROL_CODE(AFD_WAIT_FOR_LISTEN, METHOD_BUFFERED )
282#define IOCTL_AFD_ACCEPT \
283 _AFD_CONTROL_CODE(AFD_ACCEPT, METHOD_BUFFERED )
284#define IOCTL_AFD_RECV \
285 _AFD_CONTROL_CODE(AFD_RECV, METHOD_NEITHER)
286#define IOCTL_AFD_RECV_DATAGRAM \
287 _AFD_CONTROL_CODE(AFD_RECV_DATAGRAM, METHOD_NEITHER)
288#define IOCTL_AFD_SEND \
289 _AFD_CONTROL_CODE(AFD_SEND, METHOD_NEITHER)
290#define IOCTL_AFD_SEND_DATAGRAM \
291 _AFD_CONTROL_CODE(AFD_SEND_DATAGRAM, METHOD_NEITHER)
292#define IOCTL_AFD_SELECT \
293 _AFD_CONTROL_CODE(AFD_SELECT, METHOD_BUFFERED )
294#define IOCTL_AFD_DISCONNECT \
295 _AFD_CONTROL_CODE(AFD_DISCONNECT, METHOD_NEITHER)
296#define IOCTL_AFD_GET_SOCK_NAME \
297 _AFD_CONTROL_CODE(AFD_GET_SOCK_NAME, METHOD_NEITHER)
298#define IOCTL_AFD_GET_PEER_NAME \
299 _AFD_CONTROL_CODE(AFD_GET_PEER_NAME, METHOD_NEITHER)
300#define IOCTL_AFD_GET_TDI_HANDLES \
301 _AFD_CONTROL_CODE(AFD_GET_TDI_HANDLES, METHOD_NEITHER)
302#define IOCTL_AFD_SET_INFO \
303 _AFD_CONTROL_CODE(AFD_SET_INFO, METHOD_NEITHER)
304#define IOCTL_AFD_GET_CONTEXT_SIZE \
305 _AFD_CONTROL_CODE(AFD_GET_CONTEXT_SIZE, METHOD_NEITHER)
306#define IOCTL_AFD_GET_CONTEXT \
307 _AFD_CONTROL_CODE(AFD_GET_CONTEXT, METHOD_NEITHER)
308#define IOCTL_AFD_SET_CONTEXT \
309 _AFD_CONTROL_CODE(AFD_SET_CONTEXT, METHOD_NEITHER)
310#define IOCTL_AFD_SET_CONNECT_DATA \
311 _AFD_CONTROL_CODE(AFD_SET_CONNECT_DATA, METHOD_NEITHER)
312#define IOCTL_AFD_SET_CONNECT_OPTIONS \
313 _AFD_CONTROL_CODE(AFD_SET_CONNECT_OPTIONS, METHOD_NEITHER)
314#define IOCTL_AFD_SET_DISCONNECT_DATA \
315 _AFD_CONTROL_CODE(AFD_SET_DISCONNECT_DATA, METHOD_NEITHER)
316#define IOCTL_AFD_SET_DISCONNECT_OPTIONS \
317 _AFD_CONTROL_CODE(AFD_SET_DISCONNECT_OPTIONS, METHOD_NEITHER)
318#define IOCTL_AFD_GET_CONNECT_DATA \
319 _AFD_CONTROL_CODE(AFD_GET_CONNECT_DATA, METHOD_NEITHER)
320#define IOCTL_AFD_GET_CONNECT_OPTIONS \
321 _AFD_CONTROL_CODE(AFD_GET_CONNECT_OPTIONS, METHOD_NEITHER)
322#define IOCTL_AFD_GET_DISCONNECT_DATA \
323 _AFD_CONTROL_CODE(AFD_GET_DISCONNECT_DATA, METHOD_NEITHER)
324#define IOCTL_AFD_GET_DISCONNECT_OPTIONS \
325 _AFD_CONTROL_CODE(AFD_GET_DISCONNECT_OPTIONS, METHOD_NEITHER)
326#define IOCTL_AFD_SET_CONNECT_DATA_SIZE \
327 _AFD_CONTROL_CODE(AFD_SET_CONNECT_DATA_SIZE, METHOD_NEITHER)
328#define IOCTL_AFD_SET_CONNECT_OPTIONS_SIZE \
329 _AFD_CONTROL_CODE(AFD_SET_CONNECT_OPTIONS_SIZE, METHOD_NEITHER)
330#define IOCTL_AFD_SET_DISCONNECT_DATA_SIZE \
331 _AFD_CONTROL_CODE(AFD_SET_DISCONNECT_DATA_SIZE, METHOD_NEITHER)
332#define IOCTL_AFD_SET_DISCONNECT_OPTIONS_SIZE \
333 _AFD_CONTROL_CODE(AFD_SET_DISCONNECT_OPTIONS_SIZE, METHOD_NEITHER)
334#define IOCTL_AFD_GET_INFO \
335 _AFD_CONTROL_CODE(AFD_GET_INFO, METHOD_NEITHER)
336#define IOCTL_AFD_EVENT_SELECT \
337 _AFD_CONTROL_CODE(AFD_EVENT_SELECT, METHOD_NEITHER)
338#define IOCTL_AFD_DEFER_ACCEPT \
339 _AFD_CONTROL_CODE(AFD_DEFER_ACCEPT, METHOD_NEITHER)
340#define IOCTL_AFD_GET_PENDING_CONNECT_DATA \
341 _AFD_CONTROL_CODE(AFD_GET_PENDING_CONNECT_DATA, METHOD_NEITHER)
342#define IOCTL_AFD_ENUM_NETWORK_EVENTS \
343 _AFD_CONTROL_CODE(AFD_ENUM_NETWORK_EVENTS, METHOD_NEITHER)
344#define IOCTL_AFD_VALIDATE_GROUP \
345 _AFD_CONTROL_CODE(AFD_VALIDATE_GROUP, METHOD_NEITHER)
346#define IOCTL_AFD_SUPER_CONNECT \
347 _AFD_CONTROL_CODE(AFD_SUPER_CONNECT, METHOD_NEITHER)
enum _SOCKET_STATE SOCKET_STATE
struct _FILE_REPLY_SEND FILE_REPLY_SEND
struct _FILE_REPLY_BIND * PFILE_REPLY_BIND
struct _AFD_BIND_DATA * PAFD_BIND_DATA
struct _AFD_PENDING_ACCEPT_DATA AFD_PENDING_ACCEPT_DATA
struct _AFD_RECV_INFO * PAFD_RECV_INFO
struct _AFD_RECV_INFO_UDP * PAFD_RECV_INFO_UDP
struct _AFD_SEND_INFO_UDP AFD_SEND_INFO_UDP
struct _FILE_REQUEST_BIND FILE_REQUEST_BIND
struct _AFD_POLL_INFO * PAFD_POLL_INFO
struct _AFD_ACCEPT_DATA AFD_ACCEPT_DATA
struct _AFD_ENUM_NETWORK_EVENTS_INFO * PAFD_ENUM_NETWORK_EVENTS_INFO
struct _AFD_CREATE_PACKET * PAFD_CREATE_PACKET
struct _SOCK_SHARED_INFO * PSOCK_SHARED_INFO
struct _AFD_BIND_DATA AFD_BIND_DATA
struct _AFD_DISCONNECT_INFO AFD_DISCONNECT_INFO
struct _FILE_REQUEST_LISTEN FILE_REQUEST_LISTEN
struct _AFD_CONNECT_INFO * PAFD_CONNECT_INFO
struct _FILE_REPLY_LISTEN * PFILE_REPLY_LISTEN
struct _AFD_INFO AFD_INFO
struct _AFD_SUPER_CONNECT_INFO AFD_SUPER_CONNECT_INFO
struct _AFD_RECEIVED_ACCEPT_DATA AFD_RECEIVED_ACCEPT_DATA
enum _SOCKET_STATE SOCKET_STATE
struct _FILE_REQUEST_CONNECT FILE_REQUEST_CONNECT
struct _AFD_SOCKET_INFORMATION AFD_SOCKET_INFORMATION
struct _AFD_SEND_INFO_UDP * PAFD_SEND_INFO_UDP
struct _FILE_REPLY_SEND * PFILE_REPLY_SEND
struct _FILE_REPLY_LISTEN FILE_REPLY_LISTEN
struct _AFD_POLL_INFO AFD_POLL_INFO
struct _FILE_REQUEST_CONNECT * PFILE_REQUEST_CONNECT
struct _FILE_REQUEST_RECVFROM FILE_REQUEST_RECVFROM
struct _AFD_TDI_HANDLE_DATA * PAFD_TDI_HANDLE_DATA
struct _FILE_REPLY_RECV FILE_REPLY_RECV
struct _FILE_REQUEST_SEND * PFILE_REQUEST_SEND
struct _AFD_RECEIVED_ACCEPT_DATA * PAFD_RECEIVED_ACCEPT_DATA
struct _AFD_DEFER_ACCEPT_DATA AFD_DEFER_ACCEPT_DATA
struct _AFD_PENDING_ACCEPT_DATA * PAFD_PENDING_ACCEPT_DATA
struct _AFD_VALIDATE_GROUP_DATA AFD_VALIDATE_GROUP_DATA
struct _FILE_REQUEST_SEND FILE_REQUEST_SEND
struct _AFD_HANDLE_ AFD_HANDLE
enum _SOCKET_STATE * PSOCKET_STATE
struct _AFD_DEFER_ACCEPT_DATA * PAFD_DEFER_ACCEPT_DATA
struct _FILE_REQUEST_ACCEPT * PFILE_REQUEST_ACCEPT
struct _AFD_SEND_INFO * PAFD_SEND_INFO
struct _FILE_REPLY_ACCEPT FILE_REPLY_ACCEPT
struct _AFD_LISTEN_DATA AFD_LISTEN_DATA
struct _AFD_TDI_HANDLE_DATA AFD_TDI_HANDLE_DATA
struct _FILE_REPLY_RECVFROM FILE_REPLY_RECVFROM
struct _AFD_WSABUF AFD_WSABUF
struct _AFD_EVENT_SELECT_INFO AFD_EVENT_SELECT_INFO
struct _AFD_VALIDATE_GROUP_DATA * PAFD_VALIDATE_GROUP_DATA
struct _AFD_SUPER_CONNECT_INFO * PAFD_SUPER_CONNECT_INFO
struct _AFD_SEND_INFO AFD_SEND_INFO
struct _AFD_SOCKET_INFORMATION * PAFD_SOCKET_INFORMATION
struct _FILE_REQUEST_ACCEPT FILE_REQUEST_ACCEPT
struct _FILE_REQUEST_RECV * PFILE_REQUEST_RECV
struct _FILE_REPLY_SENDTO FILE_REPLY_SENDTO
struct _FILE_REPLY_CONNECT * PFILE_REPLY_CONNECT
struct _AFD_RECV_INFO_UDP AFD_RECV_INFO_UDP
struct _AFD_LISTEN_DATA * PAFD_LISTEN_DATA
struct _FILE_REPLY_RECVFROM * PFILE_REPLY_RECVFROM
struct _FILE_REPLY_BIND FILE_REPLY_BIND
struct _AFD_CONNECT_INFO AFD_CONNECT_INFO
struct _AFD_CREATE_PACKET AFD_CREATE_PACKET
struct _AFD_HANDLE_ * PAFD_HANDLE
struct _AFD_ACCEPT_DATA * PAFD_ACCEPT_DATA
struct _FILE_REPLY_CONNECT FILE_REPLY_CONNECT
struct _FILE_REPLY_RECV * PFILE_REPLY_RECV
struct _FILE_REPLY_SENDTO * PFILE_REPLY_SENDTO
struct _FILE_REQUEST_SENDTO FILE_REQUEST_SENDTO
struct _AFD_INFO * PAFD_INFO
struct _AFD_DISCONNECT_INFO * PAFD_DISCONNECT_INFO
struct _AFD_WSABUF * PAFD_WSABUF
struct _AFD_RECV_INFO AFD_RECV_INFO
struct _AFD_EVENT_SELECT_INFO * PAFD_EVENT_SELECT_INFO
struct _SOCK_SHARED_INFO SOCK_SHARED_INFO
struct _FILE_REQUEST_RECVFROM * PFILE_REQUEST_RECVFROM
struct _AFD_ENUM_NETWORK_EVENTS_INFO AFD_ENUM_NETWORK_EVENTS_INFO
struct _FILE_REPLY_ACCEPT * PFILE_REPLY_ACCEPT
struct _FILE_REQUEST_RECV FILE_REQUEST_RECV
struct _FILE_REQUEST_LISTEN * PFILE_REQUEST_LISTEN
struct _FILE_REQUEST_BIND * PFILE_REQUEST_BIND
struct _FILE_REQUEST_SENDTO * PFILE_REQUEST_SENDTO
TRANSPORT_ADDRESS Address
TRANSPORT_ADDRESS RemoteAddress
DWORD SizeOfTransportName
NTSTATUS EventStatus[AFD_MAX_EVENTS]
union _AFD_INFO::@3574 Information
LARGE_INTEGER LargeInteger
BOOLEAN UseDelayedAcceptance
TRANSPORT_ADDRESS Address
TDI_CONNECTION_INFORMATION TdiConnection
TDI_REQUEST_SEND_DATAGRAM TdiRequest
TRANSPORT_ADDRESS RemoteAddress
HANDLE TdiConnectionHandle
TRANSPORT_ADDRESS Address
HANDLE TdiConnectionObjectHandle
HANDLE TdiAddressObjectHandle
LPCONDITIONPROC lpfnCondition
BOOLEAN ExclusiveAddressUse
BOOLEAN UseDelayedAcceptance
int(CALLBACK * LPCONDITIONPROC)(IN LPWSABUF lpCallerId, IN LPWSABUF lpCallerData, IN OUT LPQOS lpSQOS, IN OUT LPQOS lpGQOS, IN LPWSABUF lpCalleeId, IN LPWSABUF lpCalleeData, OUT GROUP FAR *g, IN DWORD_PTR dwCallbackData)