Author: janderwald Date: Fri Dec 25 13:24:42 2009 New Revision: 44758
URL: http://svn.reactos.org/svn/reactos?rev=44758&view=rev Log: [PORTCLS] - Return status code of operation - Cancel all irps when pin state is set to stop. Fixes ReactOS portcls regression under WindowsXP - Handle IRP_MN_READ_CONFIG
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/p... ============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp [iso-8859-1] Fri Dec 25 13:24:42 2009 @@ -139,6 +139,10 @@ return PcCompleteIrp(DeviceObject, Irp, Status); case IRP_MN_QUERY_RESOURCE_REQUIREMENTS: DPRINT("IRP_MN_QUERY_RESOURCE_REQUIREMENTS\n"); + Status = PcForwardIrpSynchronous(DeviceObject, Irp); + return PcCompleteIrp(DeviceObject, Irp, Status); + case IRP_MN_READ_CONFIG: + DPRINT("IRP_MN_READ_CONFIG\n"); Status = PcForwardIrpSynchronous(DeviceObject, Irp); return PcCompleteIrp(DeviceObject, Irp, Status); }
Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/p... ============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] Fri Dec 25 13:24:42 2009 @@ -451,9 +451,14 @@ // complete with successful state Pin->m_IrpQueue->CancelBuffers(); } + else if (Pin->m_State == KSSTATE_STOP) + { + Pin->m_IrpQueue->CancelBuffers(); + } // store result Irp->IoStatus.Information = sizeof(KSSTATE); } + return Status; } else if (Request->Flags & KSPROPERTY_TYPE_GET) { @@ -848,7 +853,6 @@ } else if (IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_RESET_STATE) { - /// FIXME Status = KsAcquireResetValue(Irp, &ResetValue); DPRINT("Status %x Value %u\n", Status, ResetValue); /* check for success */