From: Johannes Anderwald Date: Fri, 25 Dec 2009 12:24:42 +0000 (+0000) Subject: [PORTCLS] X-Git-Tag: backups/aicom-network-stable@46924~161 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=1015293df75c72277d5a641d0939c6e6980c110c [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 svn path=/trunk/; revision=44758 --- diff --git a/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp b/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp index 18a089dadf7..f30f9de21a9 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/irp.cpp @@ -141,6 +141,10 @@ PortClsPnp( 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); } DPRINT("unhandled function %u\n", IoStack->MinorFunction); diff --git a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp index 22682f9923f..14be43fd9e3 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp @@ -451,9 +451,14 @@ PinWaveCyclicState( // 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 @@ CPortPinWaveCyclic::DeviceIoControl( } 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 */