- Mask out disabled events properly

svn path=/trunk/; revision=57184
This commit is contained in:
Cameron Gutman 2012-08-27 21:53:09 +00:00
parent 3587ef7aff
commit bc74b19760

View file

@ -1,4 +1,4 @@
/* $Id$
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: drivers/net/afd/afd/select.c
@ -304,9 +304,6 @@ AfdEventSelect( PDEVICE_OBJECT DeviceObject, PIRP Irp,
{
AFD_DbgPrint(MID_TRACE,("Setting event %x\n", FCB->EventSelect));
/* Disable the events that triggered the select until the reenabling function is called */
FCB->EventSelectDisabled |= (FCB->PollState & (FCB->EventSelectTriggers & ~FCB->EventSelectDisabled));
/* Set the application's event */
KeSetEvent( FCB->EventSelect, IO_NETWORK_INCREMENT, FALSE );
}
@ -353,12 +350,15 @@ AfdEnumEvents( PDEVICE_OBJECT DeviceObject, PIRP Irp,
KeClearEvent(UserEvent);
ObDereferenceObject(UserEvent);
/* Copy the poll state */
EnumReq->PollEvents = FCB->PollState;
/* Copy the poll state, masking out disabled events */
EnumReq->PollEvents = (FCB->PollState & ~FCB->EventSelectDisabled);
RtlCopyMemory( EnumReq->EventStatus,
FCB->PollStatus,
sizeof(EnumReq->EventStatus) );
/* Disable the events that triggered the select until the reenabling function is called */
FCB->EventSelectDisabled |= (FCB->PollState & FCB->EventSelectTriggers);
return UnlockAndMaybeComplete( FCB, STATUS_SUCCESS, Irp, 0 );
}
@ -431,9 +431,6 @@ VOID PollReeval( PAFD_DEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject ) {
{
AFD_DbgPrint(MID_TRACE,("Setting event %x\n", FCB->EventSelect));
/* Disable the events that triggered the select until the reenabling function is called */
FCB->EventSelectDisabled |= (FCB->PollState & (FCB->EventSelectTriggers & ~FCB->EventSelectDisabled));
/* Set the application's event */
KeSetEvent( FCB->EventSelect, IO_NETWORK_INCREMENT, FALSE );
}