- 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 ourselves after every call to NtDeviceIoControlFile. This is
because the kernel doesn't support overlapping synchronous I/O because the kernel doesn't support overlapping synchronous I/O
requests (made from multiple threads) at this time (Sep 2005) */ requests (made from multiple threads) at this time (Sep 2005) */
ZwCreateFile(&Sock, Status = NtCreateFile(&Sock,
GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE, GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,
&Object, &Object,
&IOSB, &IOSB,
NULL, NULL,
0, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN_IF, FILE_SHARE_READ | FILE_SHARE_WRITE,
0, FILE_OPEN_IF,
EABuffer, 0,
SizeOfEA); EABuffer,
SizeOfEA);
HeapFree(GlobalHeap, 0, EABuffer); 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 */ /* Save Handle */
Socket->Handle = (SOCKET)Sock; Socket->Handle = (SOCKET)Sock;