[MSAFD] Minor changes. Code style fixes. tabs->spaces. CORE-12104

svn path=/trunk/; revision=73176
This commit is contained in:
Peter Hater 2016-11-09 11:49:55 +00:00
parent 2c118e1890
commit 781673fa3d

View file

@ -4,10 +4,10 @@
* FILE: dll/win32/msafd/misc/event.c * FILE: dll/win32/msafd/misc/event.c
* PURPOSE: Event handling * PURPOSE: Event handling
* PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net) * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
* Alex Ionescu (alex@relsoft.net) * Alex Ionescu (alex@relsoft.net)
* REVISIONS: * REVISIONS:
* CSH 15/06-2001 Created * CSH 15/06/2001 - Created
* Alex 16/07/2004 - Complete Rewrite * Alex 16/07/2004 - Complete Rewrite
*/ */
#include <msafd.h> #include <msafd.h>
@ -18,55 +18,57 @@ WINE_DEFAULT_DEBUG_CHANNEL(msafd);
int int
WSPAPI WSPAPI
WSPEventSelect( WSPEventSelect(
SOCKET Handle, IN SOCKET Handle,
WSAEVENT hEventObject, IN WSAEVENT hEventObject,
long lNetworkEvents, IN long lNetworkEvents,
LPINT lpErrno) OUT LPINT lpErrno)
{ {
IO_STATUS_BLOCK IOSB; IO_STATUS_BLOCK IOSB;
AFD_EVENT_SELECT_INFO EventSelectInfo; AFD_EVENT_SELECT_INFO EventSelectInfo;
PSOCKET_INFORMATION Socket = NULL; PSOCKET_INFORMATION Socket = NULL;
NTSTATUS Status; NTSTATUS Status;
BOOLEAN BlockMode; BOOLEAN BlockMode;
HANDLE SockEvent; HANDLE SockEvent;
/* Get the Socket Structure associate to this Socket*/ TRACE("WSPEventSelect (%lx) %lx %lx\n", Handle, hEventObject, lNetworkEvents);
Socket = GetSocketStructure(Handle);
if (!Socket)
{
if (lpErrno) *lpErrno = WSAENOTSOCK;
return SOCKET_ERROR;
}
Status = NtCreateEvent( &SockEvent, EVENT_ALL_ACCESS, /* Get the Socket Structure associate to this Socket*/
NULL, 1, FALSE ); Socket = GetSocketStructure(Handle);
if (!Socket)
{
if (lpErrno) *lpErrno = WSAENOTSOCK;
return SOCKET_ERROR;
}
if( !NT_SUCCESS(Status) ) return SOCKET_ERROR; Status = NtCreateEvent(&SockEvent, EVENT_ALL_ACCESS,
NULL, 1, FALSE);
/* Set Socket to Non-Blocking */ if (!NT_SUCCESS(Status)) return SOCKET_ERROR;
BlockMode = TRUE;
SetSocketInformation(Socket, AFD_INFO_BLOCKING_MODE, &BlockMode, NULL, NULL, NULL, NULL);
Socket->SharedData->NonBlocking = TRUE;
/* Deactivate Async Select if there is one */ /* Set Socket to Non-Blocking */
if (Socket->EventObject) { BlockMode = TRUE;
Socket->SharedData->hWnd = NULL; SetSocketInformation(Socket, AFD_INFO_BLOCKING_MODE, &BlockMode, NULL, NULL, NULL, NULL);
Socket->SharedData->wMsg = 0; Socket->SharedData->NonBlocking = TRUE;
Socket->SharedData->AsyncEvents = 0;
Socket->SharedData->SequenceNumber++; // This will kill Async Select after the next completion
}
/* Set Structure Info */ /* Deactivate Async Select if there is one */
EventSelectInfo.EventObject = hEventObject; if (Socket->EventObject) {
EventSelectInfo.Events = 0; Socket->SharedData->hWnd = NULL;
Socket->SharedData->wMsg = 0;
Socket->SharedData->AsyncEvents = 0;
Socket->SharedData->SequenceNumber++; // This will kill Async Select after the next completion
}
/* Set Events to wait for */ /* Set Structure Info */
if (lNetworkEvents & FD_READ) { EventSelectInfo.EventObject = hEventObject;
EventSelectInfo.Events |= AFD_EVENT_RECEIVE; EventSelectInfo.Events = 0;
/* Set Events to wait for */
if (lNetworkEvents & FD_READ) {
EventSelectInfo.Events |= AFD_EVENT_RECEIVE;
} }
if (lNetworkEvents & FD_WRITE) { if (lNetworkEvents & FD_WRITE) {
EventSelectInfo.Events |= AFD_EVENT_SEND; EventSelectInfo.Events |= AFD_EVENT_SEND;
} }
if (lNetworkEvents & FD_OOB) { if (lNetworkEvents & FD_OOB) {
@ -74,7 +76,7 @@ WSPEventSelect(
} }
if (lNetworkEvents & FD_ACCEPT) { if (lNetworkEvents & FD_ACCEPT) {
EventSelectInfo.Events |= AFD_EVENT_ACCEPT; EventSelectInfo.Events |= AFD_EVENT_ACCEPT;
} }
if (lNetworkEvents & FD_CONNECT) { if (lNetworkEvents & FD_CONNECT) {
@ -82,30 +84,28 @@ WSPEventSelect(
} }
if (lNetworkEvents & FD_CLOSE) { if (lNetworkEvents & FD_CLOSE) {
EventSelectInfo.Events |= AFD_EVENT_DISCONNECT | AFD_EVENT_ABORT | AFD_EVENT_CLOSE; EventSelectInfo.Events |= AFD_EVENT_DISCONNECT | AFD_EVENT_ABORT | AFD_EVENT_CLOSE;
} }
if (lNetworkEvents & FD_QOS) { if (lNetworkEvents & FD_QOS) {
EventSelectInfo.Events |= AFD_EVENT_QOS; EventSelectInfo.Events |= AFD_EVENT_QOS;
} }
if (lNetworkEvents & FD_GROUP_QOS) { if (lNetworkEvents & FD_GROUP_QOS) {
EventSelectInfo.Events |= AFD_EVENT_GROUP_QOS; EventSelectInfo.Events |= AFD_EVENT_GROUP_QOS;
} }
/* Send IOCTL */ /* Send IOCTL */
Status = NtDeviceIoControlFile((HANDLE)Handle, Status = NtDeviceIoControlFile((HANDLE)Handle,
SockEvent, SockEvent,
NULL, NULL,
NULL, NULL,
&IOSB, &IOSB,
IOCTL_AFD_EVENT_SELECT, IOCTL_AFD_EVENT_SELECT,
&EventSelectInfo, &EventSelectInfo,
sizeof(EventSelectInfo), sizeof(EventSelectInfo),
NULL, NULL,
0); 0);
TRACE("AFD: %x\n", Status);
/* Wait for return */ /* Wait for return */
if (Status == STATUS_PENDING) { if (Status == STATUS_PENDING) {
@ -113,9 +113,7 @@ WSPEventSelect(
Status = IOSB.Status; Status = IOSB.Status;
} }
TRACE("Waited\n"); NtClose (SockEvent);
NtClose( SockEvent );
if (Status != STATUS_SUCCESS) if (Status != STATUS_SUCCESS)
{ {
@ -123,8 +121,6 @@ WSPEventSelect(
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
} }
TRACE("Closed event\n");
/* Set Socket Data*/ /* Set Socket Data*/
Socket->EventObject = hEventObject; Socket->EventObject = hEventObject;
Socket->NetworkEvents = lNetworkEvents; Socket->NetworkEvents = lNetworkEvents;
@ -138,51 +134,53 @@ WSPEventSelect(
INT INT
WSPAPI WSPAPI
WSPEnumNetworkEvents( WSPEnumNetworkEvents(
IN SOCKET Handle, IN SOCKET Handle,
IN WSAEVENT hEventObject, IN WSAEVENT hEventObject,
OUT LPWSANETWORKEVENTS lpNetworkEvents, OUT LPWSANETWORKEVENTS lpNetworkEvents,
OUT LPINT lpErrno) OUT LPINT lpErrno)
{ {
AFD_ENUM_NETWORK_EVENTS_INFO EnumReq; AFD_ENUM_NETWORK_EVENTS_INFO EnumReq;
IO_STATUS_BLOCK IOSB; IO_STATUS_BLOCK IOSB;
PSOCKET_INFORMATION Socket = NULL; PSOCKET_INFORMATION Socket = NULL;
NTSTATUS Status; NTSTATUS Status;
HANDLE SockEvent; HANDLE SockEvent;
TRACE("Called (lpNetworkEvents %x)\n", lpNetworkEvents); TRACE("Called (lpNetworkEvents %x)\n", lpNetworkEvents);
Status = NtCreateEvent( &SockEvent, EVENT_ALL_ACCESS, /* Get the Socket Structure associate to this Socket*/
NULL, 1, FALSE ); Socket = GetSocketStructure(Handle);
if (!Socket)
{
if (lpErrno) *lpErrno = WSAENOTSOCK;
return SOCKET_ERROR;
}
if (!lpNetworkEvents)
{
if (lpErrno) *lpErrno = WSAEFAULT;
return SOCKET_ERROR;
}
Status = NtCreateEvent(&SockEvent, EVENT_ALL_ACCESS,
NULL, 1, FALSE);
if( !NT_SUCCESS(Status) ) { if( !NT_SUCCESS(Status) ) {
ERR("Could not make an event %x\n", Status); ERR("Could not make an event %x\n", Status);
return SOCKET_ERROR; return SOCKET_ERROR;
} }
/* Get the Socket Structure associate to this Socket*/
Socket = GetSocketStructure(Handle);
if (!Socket)
{
NtClose(SockEvent);
if (lpErrno) *lpErrno = WSAENOTSOCK;
return SOCKET_ERROR;
}
EnumReq.Event = hEventObject; EnumReq.Event = hEventObject;
/* Send IOCTL */ /* Send IOCTL */
Status = NtDeviceIoControlFile((HANDLE)Handle, Status = NtDeviceIoControlFile((HANDLE)Handle,
SockEvent, SockEvent,
NULL, NULL,
NULL, NULL,
&IOSB, &IOSB,
IOCTL_AFD_ENUM_NETWORK_EVENTS, IOCTL_AFD_ENUM_NETWORK_EVENTS,
&EnumReq, &EnumReq,
sizeof(EnumReq), sizeof(EnumReq),
NULL, NULL,
0); 0);
TRACE("AFD: %x\n", Status);
/* Wait for return */ /* Wait for return */
if (Status == STATUS_PENDING) { if (Status == STATUS_PENDING) {
@ -190,9 +188,7 @@ WSPEnumNetworkEvents(
Status = IOSB.Status; Status = IOSB.Status;
} }
TRACE("Waited\n"); NtClose (SockEvent);
NtClose( SockEvent );
if (Status != STATUS_SUCCESS) if (Status != STATUS_SUCCESS)
{ {
@ -200,9 +196,6 @@ WSPEnumNetworkEvents(
return MsafdReturnWithErrno(Status, lpErrno, 0, NULL); return MsafdReturnWithErrno(Status, lpErrno, 0, NULL);
} }
TRACE("Closed event\n");
TRACE("About to touch struct at %x (%d)\n", lpNetworkEvents, sizeof(*lpNetworkEvents));
lpNetworkEvents->lNetworkEvents = 0; lpNetworkEvents->lNetworkEvents = 0;
/* Set Events to wait for */ /* Set Events to wait for */
@ -233,14 +226,14 @@ WSPEnumNetworkEvents(
} }
if (EnumReq.PollEvents & if (EnumReq.PollEvents &
(AFD_EVENT_DISCONNECT | AFD_EVENT_ABORT | AFD_EVENT_CLOSE)) { (AFD_EVENT_DISCONNECT | AFD_EVENT_ABORT | AFD_EVENT_CLOSE)) {
lpNetworkEvents->lNetworkEvents |= FD_CLOSE; lpNetworkEvents->lNetworkEvents |= FD_CLOSE;
lpNetworkEvents->iErrorCode[FD_CLOSE_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_CLOSE_BIT]); lpNetworkEvents->iErrorCode[FD_CLOSE_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_CLOSE_BIT]);
} }
if (EnumReq.PollEvents & AFD_EVENT_QOS) { if (EnumReq.PollEvents & AFD_EVENT_QOS) {
lpNetworkEvents->lNetworkEvents |= FD_QOS; lpNetworkEvents->lNetworkEvents |= FD_QOS;
lpNetworkEvents->iErrorCode[FD_QOS_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_QOS_BIT]); lpNetworkEvents->iErrorCode[FD_QOS_BIT] = TranslateNtStatusError(EnumReq.EventStatus[FD_QOS_BIT]);
} }
if (EnumReq.PollEvents & AFD_EVENT_GROUP_QOS) { if (EnumReq.PollEvents & AFD_EVENT_GROUP_QOS) {