1 /*
2  * PROJECT:     ReactOS API Tests
3  * LICENSE:     LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4  * PURPOSE:     Test for AFD_INFO_RECEIVE_WINDOW_SIZE/AFD_INFO_SEND_WINDOW_SIZE
5  * COPYRIGHT:   Copyright 2019 Pierre Schweitzer (pierre@reactos.org)
6  */
7 
8 #include "precomp.h"
9 
10 static
11 void
12 TestTcp(void)
13 {
14     NTSTATUS Status;
15     HANDLE SocketHandle;
16     struct sockaddr_in addr;
17     ULONG OrigReceiveSize, OrigSendSize, ReceiveSize, SendSize;
18 
19     Status = AfdCreateSocket(&SocketHandle, AF_INET, SOCK_STREAM, IPPROTO_TCP);
20     ok(Status == STATUS_SUCCESS, "AfdCreateSocket failed with %lx\n", Status);
21 
22     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &OrigReceiveSize, NULL);
23     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
24     ok(OrigReceiveSize == 0x1000 || OrigReceiveSize == 0x2000, "Invalid size: %lu\n", OrigReceiveSize);
25     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &OrigSendSize, NULL);
26     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
27     ok(OrigSendSize == 0x1000 || OrigSendSize == 0x2000, "Invalid size: %lu\n", OrigSendSize);
28 
29     ReceiveSize = 0;
30     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
31     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
32     SendSize = 0;
33     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
34     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
35 
36     ReceiveSize = (ULONG)-1L;
37     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
38     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
39     SendSize = (ULONG)-1L;
40     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
41     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
42 
43     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
44     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
45     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
46     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
47     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
48     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
49 
50     ReceiveSize = OrigReceiveSize;
51     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
52     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
53     SendSize = OrigSendSize;
54     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
55     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
56 
57     memset(&addr, 0, sizeof(addr));
58     addr.sin_family = AF_INET;
59     addr.sin_addr.s_addr = inet_addr("0.0.0.0");
60     addr.sin_port = htons(0);
61 
62     Status = AfdBind(SocketHandle, (const struct sockaddr *)&addr, sizeof(addr));
63     ok(Status == STATUS_SUCCESS, "AfdBind failed with %lx\n", Status);
64 
65     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
66     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
67     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
68     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
69     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
70     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
71 
72     ReceiveSize = 0;
73     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
74     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
75     SendSize = 0;
76     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
77     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
78 
79     ReceiveSize = (ULONG)-1L;
80     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
81     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
82     SendSize = (ULONG)-1L;
83     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
84     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
85 
86     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
87     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
88     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
89     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
90     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
91     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
92 
93     ReceiveSize = OrigReceiveSize;
94     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
95     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
96     SendSize = OrigSendSize;
97     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
98     ok(Status == STATUS_INVALID_PARAMETER, "AfdSetInformation failed with %lx\n", Status);
99 
100     memset(&addr, 0, sizeof(addr));
101     addr.sin_family = AF_INET;
102     addr.sin_addr.s_addr = inet_addr("8.8.8.8");
103     addr.sin_port = htons(53);
104 
105     Status = AfdConnect(SocketHandle, (const struct sockaddr *)&addr, sizeof(addr));
106     ok(Status == STATUS_SUCCESS, "AfdConnect failed with %lx\n", Status);
107 
108     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
109     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
110     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
111     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
112     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
113     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
114 
115     ReceiveSize = 0;
116     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
117     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
118     SendSize = 0;
119     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
120     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
121 
122     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
123     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
124     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
125     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
126     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
127     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
128 
129     ReceiveSize = (ULONG)-1L;
130     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
131     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
132     SendSize = (ULONG)-1L;
133     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
134     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
135 
136     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
137     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
138     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
139     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
140     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
141     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
142 
143     ReceiveSize = OrigReceiveSize + 1;
144     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
145     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
146     SendSize = OrigSendSize + 1;
147     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
148     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
149 
150     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
151     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
152     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
153     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
154     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
155     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
156 
157     ReceiveSize = OrigReceiveSize - 1;
158     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
159     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
160     SendSize = OrigSendSize - 1;
161     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
162     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
163 
164     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
165     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
166     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
167     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
168     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
169     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
170 
171     NtClose(SocketHandle);
172 }
173 
174 static
175 void
176 TestUdp(void)
177 {
178     NTSTATUS Status;
179     HANDLE SocketHandle;
180     struct sockaddr_in addr;
181     ULONG OrigReceiveSize, OrigSendSize, ReceiveSize, SendSize;
182 
183     Status = AfdCreateSocket(&SocketHandle, AF_INET, SOCK_DGRAM, IPPROTO_UDP);
184     ok(Status == STATUS_SUCCESS, "AfdCreateSocket failed with %lx\n", Status);
185 
186     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &OrigReceiveSize, NULL);
187     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
188     ok(OrigReceiveSize == 0x1000 || OrigReceiveSize == 0x2000, "Invalid size: %lu\n", OrigReceiveSize);
189     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &OrigSendSize, NULL);
190     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
191     ok(OrigSendSize == 0x1000 || OrigSendSize == 0x2000, "Invalid size: %lu\n", OrigSendSize);
192 
193     ReceiveSize = 0;
194     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
195     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
196     SendSize = 0;
197     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
198     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
199 
200     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
201     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
202     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
203     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
204     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
205     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
206 
207     ReceiveSize = (ULONG)-1L;
208     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
209     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
210     SendSize = (ULONG)-1L;
211     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
212     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
213 
214     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
215     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
216     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
217     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
218     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
219     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
220 
221     ReceiveSize = OrigReceiveSize;
222     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
223     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
224     SendSize = OrigSendSize;
225     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
226     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
227 
228     memset(&addr, 0, sizeof(addr));
229     addr.sin_family = AF_INET;
230     addr.sin_addr.s_addr = inet_addr("0.0.0.0");
231     addr.sin_port = htons(0);
232 
233     Status = AfdBind(SocketHandle, (const struct sockaddr *)&addr, sizeof(addr));
234     ok(Status == STATUS_SUCCESS, "AfdBind failed with %lx\n", Status);
235 
236     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
237     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
238     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
239     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
240     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
241     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
242 
243     ReceiveSize = 0;
244     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
245     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
246     SendSize = 0;
247     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
248     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
249 
250     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
251     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
252     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
253     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
254     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
255     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
256 
257     ReceiveSize = (ULONG)-1L;
258     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
259     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
260     SendSize = (ULONG)-1L;
261     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
262     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
263 
264     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
265     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
266     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
267     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
268     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
269     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
270 
271     ReceiveSize = OrigReceiveSize + 1;
272     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
273     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
274     SendSize = OrigSendSize + 1;
275     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
276     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
277 
278     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
279     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
280     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
281     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
282     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
283     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
284 
285     ReceiveSize = OrigReceiveSize - 1;
286     Status = AfdSetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
287     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
288     SendSize = OrigSendSize - 1;
289     Status = AfdSetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
290     ok(Status == STATUS_SUCCESS, "AfdSetInformation failed with %lx\n", Status);
291 
292     Status = AfdGetInformation(SocketHandle, AFD_INFO_RECEIVE_WINDOW_SIZE, NULL, &ReceiveSize, NULL);
293     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
294     ok(ReceiveSize == OrigReceiveSize, "Invalid size: %lu %lu\n", ReceiveSize, OrigReceiveSize);
295     Status = AfdGetInformation(SocketHandle, AFD_INFO_SEND_WINDOW_SIZE, NULL, &SendSize, NULL);
296     ok(Status == STATUS_SUCCESS, "AfdGetInformation failed with %lx\n", Status);
297     ok(SendSize == OrigSendSize, "Invalid size: %lu %lu\n", SendSize, OrigSendSize);
298 
299     NtClose(SocketHandle);
300 }
301 
302 START_TEST(windowsize)
303 {
304     TestTcp();
305     TestUdp();
306 }
307