- Check that AFD succeeded the create request

- Use NtCreateFile instead of ZwCreateFile

svn path=/trunk/; revision=42959
This commit is contained in:
Cameron Gutman 2009-08-27 22:25:59 +00:00
parent 0ea9c96b9c
commit 291b697b95

View file

@ -235,19 +235,29 @@ WSPSocket(int AddressFamily,
ourselves after every call to NtDeviceIoControlFile. This is
because the kernel doesn't support overlapping synchronous I/O
requests (made from multiple threads) at this time (Sep 2005) */
ZwCreateFile(&Sock,
GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
&Object,
&IOSB,
NULL,
0,
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN_IF,
0,
EABuffer,
SizeOfEA);
Status = NtCreateFile(&Sock,
GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
&Object,
&IOSB,
NULL,
0,
FILE_SHARE_READ | FILE_SHARE_WRITE,
FILE_OPEN_IF,
0,
EABuffer,
SizeOfEA);
HeapFree(GlobalHeap, 0, EABuffer);
if (Status != STATUS_SUCCESS)
{
AFD_DbgPrint(MIN_TRACE, ("Failed to open socket\n"));
HeapFree(GlobalHeap, 0, Socket);
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
}
/* Save Handle */
Socket->Handle = (SOCKET)Sock;