2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Ancillary Function Driver
4 * FILE: include/afd/shared.h
5 * PURPOSE: Shared definitions for AFD.SYS and MSAFD.DLL
10 #define AfdSocket "AfdSocket"
11 #define AFD_SOCKET_LENGTH (sizeof(AfdSocket) - 1)
13 typedef struct _AFD_SOCKET_INFORMATION {
19 DWORD NotificationEvents;
20 UNICODE_STRING TdiDeviceName;
22 } __attribute__((packed)) AFD_SOCKET_INFORMATION, *PAFD_SOCKET_INFORMATION;
25 /* AFD IOCTL code definitions */
27 #define FSCTL_AFD_BASE FILE_DEVICE_NAMED_PIPE // ???
29 #define AFD_CTL_CODE(Function, Method, Access) \
30 CTL_CODE(FSCTL_AFD_BASE, Function, Method, Access)
32 #define IOCTL_AFD_BIND \
33 AFD_CTL_CODE(0, METHOD_BUFFERED, FILE_ANY_ACCESS)
35 #define IOCTL_AFD_LISTEN \
36 AFD_CTL_CODE(1, METHOD_BUFFERED, FILE_ANY_ACCESS)
38 #define IOCTL_AFD_SENDTO \
39 AFD_CTL_CODE(2, METHOD_BUFFERED, FILE_ANY_ACCESS)
41 #define IOCTL_AFD_RECVFROM \
42 AFD_CTL_CODE(3, METHOD_BUFFERED, FILE_ANY_ACCESS)
44 #define IOCTL_AFD_SELECT \
45 AFD_CTL_CODE(4, METHOD_BUFFERED, FILE_ANY_ACCESS)
47 #define IOCTL_AFD_EVENTSELECT \
48 AFD_CTL_CODE(5, METHOD_BUFFERED, FILE_ANY_ACCESS)
50 #define IOCTL_AFD_ENUMNETWORKEVENTS \
51 AFD_CTL_CODE(6, METHOD_BUFFERED, FILE_ANY_ACCESS)
53 #define IOCTL_AFD_RECV \
54 AFD_CTL_CODE(7, METHOD_BUFFERED, FILE_ANY_ACCESS)
56 #define IOCTL_AFD_SEND \
57 AFD_CTL_CODE(8, METHOD_BUFFERED, FILE_ANY_ACCESS)
59 #define IOCTL_AFD_ACCEPT \
60 AFD_CTL_CODE(9, METHOD_BUFFERED, FILE_ANY_ACCESS)
62 #define IOCTL_AFD_CONNECT \
63 AFD_CTL_CODE(10, METHOD_BUFFERED, FILE_ANY_ACCESS)
66 typedef struct _FILE_REQUEST_BIND {
68 } __attribute__((packed)) FILE_REQUEST_BIND, *PFILE_REQUEST_BIND;
70 typedef struct _FILE_REPLY_BIND {
72 HANDLE TdiAddressObjectHandle;
73 HANDLE TdiConnectionObjectHandle;
74 } __attribute__((packed)) FILE_REPLY_BIND, *PFILE_REPLY_BIND;
76 typedef struct _FILE_REQUEST_LISTEN {
78 } __attribute__((packed)) FILE_REQUEST_LISTEN, *PFILE_REQUEST_LISTEN;
80 typedef struct _FILE_REPLY_LISTEN {
82 } __attribute__((packed)) FILE_REPLY_LISTEN, *PFILE_REPLY_LISTEN;
85 typedef struct _FILE_REQUEST_SENDTO {
91 } __attribute__((packed)) FILE_REQUEST_SENDTO, *PFILE_REQUEST_SENDTO;
93 typedef struct _FILE_REPLY_SENDTO {
95 DWORD NumberOfBytesSent;
96 } __attribute__((packed)) FILE_REPLY_SENDTO, *PFILE_REPLY_SENDTO;
99 typedef struct _FILE_REQUEST_RECVFROM {
105 } __attribute__((packed)) FILE_REQUEST_RECVFROM, *PFILE_REQUEST_RECVFROM;
107 typedef struct _FILE_REPLY_RECVFROM {
109 DWORD NumberOfBytesRecvd;
110 } __attribute__((packed)) FILE_REPLY_RECVFROM, *PFILE_REPLY_RECVFROM;
113 typedef struct _FILE_REQUEST_SELECT {
116 LPFD_SET ExceptFDSet;
118 } __attribute__((packed)) FILE_REQUEST_SELECT, *PFILE_REQUEST_SELECT;
120 typedef struct _FILE_REPLY_SELECT {
123 } __attribute__((packed)) FILE_REPLY_SELECT, *PFILE_REPLY_SELECT;
126 typedef struct _FILE_REQUEST_EVENTSELECT {
127 WSAEVENT hEventObject;
129 } __attribute__((packed)) FILE_REQUEST_EVENTSELECT, *PFILE_REQUEST_EVENTSELECT;
131 typedef struct _FILE_REPLY_EVENTSELECT {
133 } __attribute__((packed)) FILE_REPLY_EVENTSELECT, *PFILE_REPLY_EVENTSELECT;
136 typedef struct _FILE_REQUEST_ENUMNETWORKEVENTS {
137 WSAEVENT hEventObject;
138 } __attribute__((packed)) FILE_REQUEST_ENUMNETWORKEVENTS, *PFILE_REQUEST_ENUMNETWORKEVENTS;
140 typedef struct _FILE_REPLY_ENUMNETWORKEVENTS {
142 WSANETWORKEVENTS NetworkEvents;
143 } __attribute__((packed)) FILE_REPLY_ENUMNETWORKEVENTS, *PFILE_REPLY_ENUMNETWORKEVENTS;
146 typedef struct _FILE_REQUEST_RECV {
150 } __attribute__((packed)) FILE_REQUEST_RECV, *PFILE_REQUEST_RECV;
152 typedef struct _FILE_REPLY_RECV {
154 DWORD NumberOfBytesRecvd;
155 } __attribute__((packed)) FILE_REPLY_RECV, *PFILE_REPLY_RECV;
158 typedef struct _FILE_REQUEST_SEND {
162 } __attribute__((packed)) FILE_REQUEST_SEND, *PFILE_REQUEST_SEND;
164 typedef struct _FILE_REPLY_SEND {
166 DWORD NumberOfBytesSent;
167 } __attribute__((packed)) FILE_REPLY_SEND, *PFILE_REPLY_SEND;
170 typedef struct _FILE_REQUEST_ACCEPT {
173 LPCONDITIONPROC lpfnCondition;
174 DWORD dwCallbackData;
175 } __attribute__((packed)) FILE_REQUEST_ACCEPT, *PFILE_REQUEST_ACCEPT;
177 typedef struct _FILE_REPLY_ACCEPT {
181 } __attribute__((packed)) FILE_REPLY_ACCEPT, *PFILE_REPLY_ACCEPT;
184 typedef struct _FILE_REQUEST_CONNECT {
187 LPWSABUF lpCallerData;
188 LPWSABUF lpCalleeData;
191 } __attribute__((packed)) FILE_REQUEST_CONNECT, *PFILE_REQUEST_CONNECT;
193 typedef struct _FILE_REPLY_CONNECT {
195 } __attribute__((packed)) FILE_REPLY_CONNECT, *PFILE_REPLY_CONNECT;
197 #endif /*__AFD_SHARED_H */