mirror of
https://github.com/reactos/reactos.git
synced 2024-10-08 02:13:56 +00:00
[KS]
- Fix property set support handler for topology nodes - Check if the driver supports a basic support handler. In that case return the basic support handler svn path=/trunk/; revision=49237
This commit is contained in:
parent
e7c4137319
commit
cd63ffe6c2
|
@ -47,6 +47,25 @@ FindPropertyHandler(
|
||||||
IoStatus->Information = PropertySet[Index].PropertyItem[ItemIndex].MinData;
|
IoStatus->Information = PropertySet[Index].PropertyItem[ItemIndex].MinData;
|
||||||
return STATUS_MORE_ENTRIES;
|
return STATUS_MORE_ENTRIES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* store property set */
|
||||||
|
*Set = (PKSPROPERTY_SET)&PropertySet[Index];
|
||||||
|
|
||||||
|
if (Property->Flags & KSPROPERTY_TYPE_SET)
|
||||||
|
{
|
||||||
|
/* store property handler */
|
||||||
|
*PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SetPropertyHandler;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Property->Flags & KSPROPERTY_TYPE_GET)
|
||||||
|
{
|
||||||
|
/* store property handler */
|
||||||
|
*PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].GetPropertyHandler;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (Property->Flags & KSPROPERTY_TYPE_BASICSUPPORT)
|
if (Property->Flags & KSPROPERTY_TYPE_BASICSUPPORT)
|
||||||
{
|
{
|
||||||
PULONG Flags;
|
PULONG Flags;
|
||||||
|
@ -64,14 +83,21 @@ FindPropertyHandler(
|
||||||
/* clear flags */
|
/* clear flags */
|
||||||
*Flags = 0;
|
*Flags = 0;
|
||||||
|
|
||||||
|
IoStatus->Information = sizeof(ULONG);
|
||||||
|
|
||||||
|
if (PropertySet[Index].PropertyItem[ItemIndex].SupportHandler)
|
||||||
|
{
|
||||||
|
/* use support handler from driver */
|
||||||
|
*PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SupportHandler;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
if (PropertySet[Index].PropertyItem[ItemIndex].GetSupported)
|
if (PropertySet[Index].PropertyItem[ItemIndex].GetSupported)
|
||||||
*Flags |= KSPROPERTY_TYPE_GET;
|
*Flags |= KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
if (PropertySet[Index].PropertyItem[ItemIndex].SetSupported)
|
if (PropertySet[Index].PropertyItem[ItemIndex].SetSupported)
|
||||||
*Flags |= KSPROPERTY_TYPE_SET;
|
*Flags |= KSPROPERTY_TYPE_SET;
|
||||||
|
|
||||||
IoStatus->Information = sizeof(ULONG);
|
|
||||||
|
|
||||||
if (OutputBufferLength >= sizeof(KSPROPERTY_DESCRIPTION))
|
if (OutputBufferLength >= sizeof(KSPROPERTY_DESCRIPTION))
|
||||||
{
|
{
|
||||||
/* get output buffer */
|
/* get output buffer */
|
||||||
|
@ -89,14 +115,6 @@ FindPropertyHandler(
|
||||||
}
|
}
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
if (Property->Flags & KSPROPERTY_TYPE_SET)
|
|
||||||
*PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SetPropertyHandler;
|
|
||||||
|
|
||||||
if (Property->Flags & KSPROPERTY_TYPE_GET)
|
|
||||||
*PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].GetPropertyHandler;
|
|
||||||
|
|
||||||
*Set = (PKSPROPERTY_SET)&PropertySet[Index];
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,7 +189,7 @@ KspPropertyHandler(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (IsEqualGUIDAligned(&Property->Set, &GUID_NULL) && Property->Id == 0 && Property->Flags == KSPROPERTY_TYPE_SETSUPPORT)
|
else if (IsEqualGUIDAligned(&Property->Set, &GUID_NULL) && Property->Id == 0 && (Property->Flags & KSPROPERTY_TYPE_SETSUPPORT) == KSPROPERTY_TYPE_SETSUPPORT)
|
||||||
{
|
{
|
||||||
// store output size
|
// store output size
|
||||||
Irp->IoStatus.Information = sizeof(GUID) * PropertySetsCount;
|
Irp->IoStatus.Information = sizeof(GUID) * PropertySetsCount;
|
||||||
|
@ -189,7 +207,7 @@ KspPropertyHandler(
|
||||||
{
|
{
|
||||||
RtlMoveMemory(&Guid[Index], PropertySet[Index].Set, sizeof(GUID));
|
RtlMoveMemory(&Guid[Index], PropertySet[Index].Set, sizeof(GUID));
|
||||||
}
|
}
|
||||||
return STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* done */
|
/* done */
|
||||||
|
|
Loading…
Reference in a new issue