Author: janderwald
Date: Mon Dec 6 01:06:37 2010
New Revision: 49958
URL:
http://svn.reactos.org/svn/reactos?rev=49958&view=rev
Log:
[AUDIO-BRINGUP]
- Fix the famous node property handler bug, leading to lots of audio related crashes
Modified:
branches/audio-bringup/drivers/wdm/audio/backpln/portcls/undoc.cpp
Modified: branches/audio-bringup/drivers/wdm/audio/backpln/portcls/undoc.cpp
URL:
http://svn.reactos.org/svn/reactos/branches/audio-bringup/drivers/wdm/audio…
==============================================================================
--- branches/audio-bringup/drivers/wdm/audio/backpln/portcls/undoc.cpp [iso-8859-1]
(original)
+++ branches/audio-bringup/drivers/wdm/audio/backpln/portcls/undoc.cpp [iso-8859-1] Mon
Dec 6 01:06:37 2010
@@ -165,7 +165,7 @@
// get instance / value size
InstanceSize = IoStack->Parameters.DeviceIoControl.InputBufferLength;
- Instance = Data;
+ Instance = Request;
ValueSize = IoStack->Parameters.DeviceIoControl.OutputBufferLength;
// initialize property request
@@ -273,18 +273,15 @@
if (PropertyRequest->PropertyItem &&
PropertyRequest->PropertyItem->Handler)
{
// now call the handler
- UNICODE_STRING GuidBuffer;
- RtlStringFromGUID(Property->Set, &GuidBuffer);
- DPRINT1("Calling Node %lu MajorTarget %p MinorTarget %p PropertySet %S
PropertyId %lu PropertyFlags %lx InstanceSize %lu ValueSize %lu Handler %p PropertyRequest
%p PropertyItemFlags %lx PropertyItemId %lu\n",
- PropertyRequest->Node, PropertyRequest->MajorTarget,
PropertyRequest->MinorTarget, GuidBuffer.Buffer, Property->Id, Property->Flags,
PropertyRequest->InstanceSize, PropertyRequest->ValueSize,
- PropertyRequest->PropertyItem->Handler, PropertyRequest,
PropertyRequest->PropertyItem->Flags, PropertyRequest->PropertyItem->Id);
-#if 1
+ //UNICODE_STRING GuidBuffer;
+ //RtlStringFromGUID(Property->Set, &GuidBuffer);
+ //DPRINT("Calling Node %lu MajorTarget %p MinorTarget %p PropertySet %S
PropertyId %lu PropertyFlags %lx InstanceSize %lu ValueSize %lu Handler %p PropertyRequest
%p PropertyItemFlags %lx PropertyItemId %lu\n",
+ // PropertyRequest->Node, PropertyRequest->MajorTarget,
PropertyRequest->MinorTarget, GuidBuffer.Buffer, Property->Id, Property->Flags,
PropertyRequest->InstanceSize, PropertyRequest->ValueSize,
+ // PropertyRequest->PropertyItem->Handler, PropertyRequest,
PropertyRequest->PropertyItem->Flags, PropertyRequest->PropertyItem->Id);
+
Status = PropertyRequest->PropertyItem->Handler(PropertyRequest);
- DPRINT1("Status %lx ValueSize %lu Information %lu\n", Status,
PropertyRequest->ValueSize, Irp->IoStatus.Information);
-#else
- Status = STATUS_NOT_FOUND;
-#endif
- Irp->IoStatus.Information = PropertyRequest->ValueSize;
+ //DPRINT("Status %lx ValueSize %lu Information %lu\n", Status,
PropertyRequest->ValueSize, Irp->IoStatus.Information);
+ Irp->IoStatus.Information = PropertyRequest->ValueSize;
if (Status != STATUS_PENDING)
{