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/…
==============================================================================
--- 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/…
==============================================================================
--- 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 */