⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tuneprop.cpp

📁 传说中的 视频抓取驱动源码 啊啊啊啊啊啊啊啊啊啊啊啊啊
💻 CPP
📖 第 1 页 / 共 2 页
字号:

    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 + -