📄 tuneprop.cpp
字号:
switch( uiPropertyId)
{
case KSPROPERTY_TUNER_MODE:
ASSERT( pSpd->PropertyOutputSize >= sizeof( KSPROPERTY_TUNER_MODE_S));
{
ULONG ulModeToSet = (( PKSPROPERTY_TUNER_MODE_S)pSpd->PropertyInfo)->Mode;
if( ulModeToSet & m_ulSupportedModes)
{
if( ulModeToSet != m_ulTunerMode)
if( SetTunerMode( ulModeToSet))
m_ulTunerMode = ulModeToSet;
}
else
return( FALSE);
}
break;
case KSPROPERTY_TUNER_STANDARD:
ASSERT( pSpd->PropertyOutputSize >= sizeof( KSPROPERTY_TUNER_STANDARD_S));
{
ULONG ulStandardToSet = (( PKSPROPERTY_TUNER_STANDARD_S)pSpd->PropertyInfo)->Standard;
if( ulStandardToSet & m_wdmTunerCaps.ulStandardsSupported)
{
if( ulStandardToSet != m_ulVideoStandard)
if( SetTunerVideoStandard( ulStandardToSet))
m_ulVideoStandard = ulStandardToSet;
}
else
return( FALSE);
}
break;
case KSPROPERTY_TUNER_FREQUENCY:
ASSERT( pSpd->PropertyOutputSize >= sizeof( KSPROPERTY_TUNER_FREQUENCY_S));
{
ULONG ulFrequencyToSet = (( PKSPROPERTY_TUNER_FREQUENCY_S)pSpd->PropertyInfo)->Frequency;
BOOL bResult = FALSE;
ENSURE
{
if(( ulFrequencyToSet < m_wdmTunerCaps.ulMinFrequency) ||
( ulFrequencyToSet > m_wdmTunerCaps.ulMaxFrequency))
FAIL;
if( ulFrequencyToSet != m_ulTuningFrequency)
{
if( !SetTunerFrequency( ulFrequencyToSet))
FAIL;
// update driver
m_ulTuningFrequency = ulFrequencyToSet;
}
bResult = TRUE;
} END_ENSURE;
if( !bResult)
{
OutputDebugError(( "CATIWDMTuner:SetFrequency() fails Frequency = %ld\n", ulFrequencyToSet));
return( FALSE);
}
OutputDebugInfo(( "CATIWDMTuner:SetFrequency() new TuningFrequency = %ld\n", ulFrequencyToSet));
}
break;
case KSPROPERTY_TUNER_INPUT:
ASSERT( pSpd->PropertyOutputSize >= sizeof( KSPROPERTY_TUNER_INPUT_S));
{
ULONG nInputToSet = (( PKSPROPERTY_TUNER_INPUT_S)pSpd->PropertyInfo)->InputIndex;
if( nInputToSet < m_wdmTunerCaps.ulNumberOfInputs)
{
if( nInputToSet != m_ulTunerInput)
if( SetTunerInput( nInputToSet))
m_ulTunerInput = nInputToSet;
else
return( FALSE);
}
else
return( FALSE);
}
break;
default:
TRAP;
return( FALSE);
}
return( TRUE);
}
/*^^*
* SetWDMTunerKSTopology()
* Purpose : Sets the KSTopology structure
* Called during CWDMTuner class construction time.
*
* Inputs : none
*
* Outputs : none
* Author : IKLEBANOV
*^^*/
void CATIWDMTuner::SetWDMTunerKSTopology( void)
{
GUID wdmTunerTopologyCategory[] =
{
STATIC_KSCATEGORY_TVTUNER
};
::RtlCopyMemory( &m_wdmTunerTopologyCategory, wdmTunerTopologyCategory, sizeof( wdmTunerTopologyCategory));
m_wdmTunerTopology.CategoriesCount = 1;
m_wdmTunerTopology.Categories = &m_wdmTunerTopologyCategory;
m_wdmTunerTopology.TopologyNodesCount = 0;
m_wdmTunerTopology.TopologyNodes = NULL;
m_wdmTunerTopology.TopologyConnectionsCount = 0;
m_wdmTunerTopology.TopologyConnections = NULL;
}
/*^^*
* SetWDMTunerKSProperties()
* Purpose : Sets the KSProperty structures array
* Called during CWDMTuner class construction time.
*
* Inputs : none
*
* Outputs : none
* Author : IKLEBANOV
*^^*/
void CATIWDMTuner::SetWDMTunerKSProperties( void)
{
DEFINE_KSPROPERTY_TABLE( wdmTunerProperties)
{
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_CAPS, // 1
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_CAPS_S), // MinProperty
sizeof(KSPROPERTY_TUNER_CAPS_S), // MinData
FALSE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
0 // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_MODE_CAPS, // 2
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_MODE_CAPS_S), // MinProperty
sizeof(KSPROPERTY_TUNER_MODE_CAPS_S), // MinData
FALSE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
0 // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_MODE, // 3
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_MODE_S), // MinProperty
sizeof(KSPROPERTY_TUNER_MODE_S), // MinData
TRUE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
0 // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_STANDARD, // 4
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_STANDARD_S), // MinProperty
sizeof(KSPROPERTY_TUNER_STANDARD_S), // MinData
TRUE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
sizeof(KSPROPERTY_TUNER_STANDARD_S) // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_FREQUENCY, // 5
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_FREQUENCY_S), // MinProperty
sizeof(KSPROPERTY_TUNER_FREQUENCY_S), // MinData
TRUE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
sizeof(KSPROPERTY_TUNER_FREQUENCY_S) // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_INPUT, // 6
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_INPUT_S), // MinProperty
sizeof(KSPROPERTY_TUNER_INPUT_S), // MinData
TRUE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
sizeof(KSPROPERTY_TUNER_INPUT_S) // SerializedSize
),
DEFINE_KSPROPERTY_ITEM
(
KSPROPERTY_TUNER_STATUS, // 6
TRUE, // GetSupported or Handler
sizeof(KSPROPERTY_TUNER_STATUS_S), // MinProperty
sizeof(KSPROPERTY_TUNER_STATUS_S), // MinData
FALSE, // SetSupported or Handler
NULL, // Values
0, // RelationsCount
NULL, // Relations
NULL, // SupportHandler
sizeof(KSPROPERTY_TUNER_STATUS_S) // SerializedSize
)
};
DEFINE_KSPROPERTY_SET_TABLE( wdmTunerPropertySet)
{
DEFINE_KSPROPERTY_SET
(
&PROPSETID_TUNER, // Set
KSPROPERTIES_TUNER_LAST, // PropertiesCount
m_wdmTunerProperties, // PropertyItems
0, // FastIoCount
NULL // FastIoTable
)
};
::RtlCopyMemory( m_wdmTunerProperties, wdmTunerProperties, sizeof( wdmTunerProperties));
::RtlCopyMemory( &m_wdmTunerPropertySet, wdmTunerPropertySet, sizeof( wdmTunerPropertySet));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -