[WS2_32_APITEST]

- Add a test for NtReadFile on a socket

svn path=/trunk/; revision=57234
This commit is contained in:
Cameron Gutman 2012-09-04 03:02:40 +00:00
parent 136c0d4296
commit 358a84e09b

View file

@ -7,6 +7,7 @@
#include <stdio.h>
#include <wine/test.h>
#include <winternl.h>
#include <windows.h>
#include "ws2_32.h"
@ -25,6 +26,10 @@ int Test_recv()
int iResult;
SOCKET sck;
WSADATA wdata;
NTSTATUS status;
IO_STATUS_BLOCK readIosb;
HANDLE readEvent;
LARGE_INTEGER readOffset;
/* Start up Winsock */
iResult = WSAStartup(MAKEWORD(2, 2), &wdata);
@ -73,6 +78,41 @@ int Test_recv()
SCKTEST(recv(sck, szBuf1, RECV_BUF, 0));
ok(memcmp(szBuf1, szBuf2, RECV_BUF), "equal\n");
/* Create an event for NtReadFile */
readOffset.QuadPart = 0LL;
memcpy(szBuf1, szBuf2, RECV_BUF);
status = NtCreateEvent(&readEvent,
EVENT_ALL_ACCESS,
NULL,
NotificationEvent,
FALSE);
if (status != 0)
{
ok(0, "Failed to create event\n");
return 0;
}
/* Try reading the socket using the NT file API */
status = NtReadFile((HANDLE)sck,
readEvent,
NULL,
NULL,
&readIosb,
szBuf1,
RECV_BUF,
&readOffset,
NULL);
if (status == STATUS_PENDING)
{
WaitForSingleObject(readEvent, INFINITE);
status = readIosb.Status;
}
ok(status == 0, "Read failed with status 0x%x\n", (unsigned int)status);
ok(memcmp(szBuf2, szBuf1, RECV_BUF), "equal\n");
ok(readIosb.Information == RECV_BUF, "Short read\n");
NtClose(readEvent);
closesocket(sck);
WSACleanup();
return 1;