[AUDIO-BRINGUP]

- Fix the famous node property handler bug, leading to lots of audio related crashes

svn path=/branches/audio-bringup/; revision=49958
This commit is contained in:
Johannes Anderwald 2010-12-06 01:06:37 +00:00
parent d8bb0e8df8
commit b913ec3d17

View file

@ -165,7 +165,7 @@ PropertyItemDispatch(
// 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 @@ PropertyItemDispatch(
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)
{