windows-nt/Source/XPSP1/NT/drivers/wdm/bda/samples/mauitune/filtprop.cpp
2020-09-26 16:20:57 +08:00

526 lines
11 KiB
C++

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
FiltProp.cpp
Abstract:
Private Filter Property Sets
--*/
#include "PhilTune.h"
/*
** SetVsbResetProperty ()
**
.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbResetProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->VsbReset(pProperty->Value);
errExit:
return Status;
}
/*
** GetVsbCapabilitiesProperty ()
**
** Example of a get property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
GetVsbCapabilitiesProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
OUT PKSPROPERTY_VSB_CAP_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Return the property
//
Status = (pFilter->GetDevice())->GetVsbCapabilities(pProperty);
errExit:
return Status;
}
/*
** SetVsbCapabilitiesProperty ()
**
** Example of a set property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbCapabilitiesProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_CAP_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->SetVsbCapabilities(pProperty);
errExit:
return Status;
}
/*
** GetVsbRegisterProperty ()
**
** Example of a get property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
GetVsbRegisterProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
OUT PKSPROPERTY_VSB_REG_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Return the property
//
Status = (pFilter->GetDevice())->AccessRegisterList(pProperty, READ_REGISTERS);
errExit:
return Status;
}
/*
** SetVsbRegisterProperty ()
**
** Example of a set property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbRegisterProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_REG_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->AccessRegisterList(pProperty, WRITE_REGISTERS);
errExit:
return Status;
}
/*
** GetVsbCoefficientProperty ()
**
** Example of a get property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
GetVsbCoefficientProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
OUT PKSPROPERTY_VSB_COEFF_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Return the property
//
Status = (pFilter->GetDevice())->AccessVsbCoeffList(pProperty, READ_REGISTERS);
errExit:
return Status;
}
/*
** SetVsbCoefficientProperty ()
**
** Example of a set property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbCoefficientProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_COEFF_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->AccessVsbCoeffList(pProperty, WRITE_REGISTERS);
errExit:
return Status;
}
/*
** GetVsbDiagControlProperty ()
**
** Example of a get property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
GetVsbDiagControlProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
OUT PKSPROPERTY_VSB_DIAG_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Return the property
//
Status = (pFilter->GetDevice())->GetVsbDiagMode(&pProperty->OperationMode,
&pProperty->Type);
errExit:
return Status;
}
/*
** SetVsbDiagControlProperty ()
**
** Example of a set property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbDiagControlProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_DIAG_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->SetVsbDiagMode(pProperty->OperationMode,
(VSBDIAGTYPE) (pProperty->Type));
errExit:
return Status;
}
/*
** SetVsbQualityControlProperty ()
**
** Example of a set property handler for a filter global property set.
** Use this as a template for adding support for filter global
** properties.
**
** Arguments:
**
**
** Returns:
**
** Side Effects: none
*/
NTSTATUS
CFilter::
SetVsbQualityControlProperty(
IN PIRP pIrp,
IN PKSPROPERTY pKSProperty,
IN PKSPROPERTY_VSB_CTRL_S pProperty
)
{
NTSTATUS Status = STATUS_SUCCESS;
CFilter * pFilter;
ASSERT( pIrp);
ASSERT( pKSProperty);
ASSERT( pProperty);
// Obtain a "this" pointer for the method.
//
// Because this function is called directly from the property dispatch
// table, we must get our own pointer to the underlying object.
//
pFilter = FilterFromIRP( pIrp);
ASSERT( pFilter);
if (!pFilter)
{
Status = STATUS_INVALID_PARAMETER;
goto errExit;
}
// Set the property.
//
Status = (pFilter->GetDevice())->VsbQuality(pProperty->Value);
errExit:
return Status;
}