Partager via


Fonction COPPOpenVideoSession

L’exemple de fonction COPPOpenVideoSession initialise l’objet d’appareil COPP DirectX VA utilisé pour la session vidéo en cours.

Syntaxe

HRESULT COPPOpenVideoSession(
  _In_ COPP_DeviceData pThis,
  _In_ ULONG           DevID
);

Paramètres

pThis [in]

  • Pointeur vers l’objet d’appareil COPP DirectX VA.

DevID [in]

  • Fournit l’identificateur du périphérique graphique auquel l’appareil COPP est attaché.

Valeur retournée

Retourne zéro (S_OK ou DD_OK) en cas de réussite ; sinon, retourne un code d’erreur.

Remarques

Un appareil COPP doit être initialisé via un appel à COPPOpenVideoSession avant d’appeler toute autre fonction membre de la classe d’appareil COPP. COPPOpenVideoSession doit initialiser (défini sur 0) les niveaux de protection locale de la session vidéo pour chaque type de protection pris en charge et incrémenter le compteur de niveau de protection global correspondant. Pour plus d’informations, consultez Gestion des niveaux de protection.

COPPOpenVideoSession doit retourner DDERR_UNSUPPORTEDMODE si l’appareil identifié par le paramètre DevID pilote plusieurs cartes graphiques qui utilisent un mode autre que DualView. Pour plus d’informations, consultez Copp et support Multiple-Monitor.

L’exemple de fonction COPPOpenVideoSession est mappé directement au membre CreateMoComp de la structure DD_MOTIONCOMPCALLBACKS. Le membre CreateMoComp pointe vers la fonction de rappel DdMoCompCreate fournie par le pilote d’affichage qui fait référence à la structure DD_CREATEMOCOMPDATA. Le membre lpGuid de DD_CREATEMOCOMPDATA pointe vers le GUID d’appareil COPP DirectX VA.

Exemple de code

Le code suivant fournit un exemple de la façon dont vous pouvez implémenter votre fonction COPPOpenVideoSession :

HRESULT
COPPOpenVideoSession(
    COPP_DeviceData* pThis,
    DWORD DevID
    )
{
    DWORD i;
    pThis->m_DevID = DevID;
    pThis->m_CmdSeqNumber = (DWORD)-1;
    pThis->m_StatusSeqNumber = (DWORD)-1;
    pThis->m_COPPDevState = COPP_OPENED;
    memset(&pThis->m_AesHelper, 0, sizeof(pThis->m_AesHelper));
    //
    // make sure the session protection levels are reset
    //
    memset(&pThis->m_LocalLevel, 0, sizeof(pThis->m_LocalLevel));
    //
    // initialize the session local protection levels and
    // increment the corresponding global protection level counter
    //
    // enumerate all the protection types supported by this connector
    DWORD j;
    for (j = COPP_ProtectionType_HDCP, i = COPP_ProtectionTypeIndex_HDCP;
         j & COPP_ProtectionType_Mask; j <<= 1, i++) {
        // for each type supported, make sure the initial level
        // is set correctly
        if (g_ConnectorInfo[pThis->m_DevID].ProtectionTypeMask & j) {
            pThis->m_LocalLevel[i] = 0;
            g_COPPLevels[pThis->m_DevID].Levels[i][0]++;
        }
        else {
            pThis->m_LocalLevel[i] = COPP_NoProtectionLevelAvailable;
        }
    }
    return NO_ERROR;
}

Configuration requise

Plateforme cible Version
Desktop (Expérience utilisateur) Cette fonction s’applique uniquement à Windows Server 2003 avec SP1 et versions ultérieures, et à Windows XP avec SP2 et versions ultérieures.