Compartir a través de


Ejemplo de cifrado de ejemplo multimedia

[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

En el ejemplo incompleto siguiente se muestra cómo cifrar un ejemplo multimedia mediante el cifrado DRM. El algoritmo de cifrado RC4 se ha dejado fuera del ejemplo debido a restricciones de espacio.

QWORD GetNextSalt(QWORD qwSalt)
{
   return InterlockedIncrement64( (volatile LONGLONG*)&qwSalt );
}

HRESULT EncryptSample( INSSBuffer *pSample )
{
    HRESULT hr = S_OK;
    INSSBuffer3 *pNSSBuffer3 = NULL;
    QWORD qwSalt = 0;
    BYTE *pbData = NULL;
    DWORD cbData = 0;

    hr = pSample->QueryInterface( IID_INSSBuffer3, (void**)&pNSSBuffer3 );
    if( FAILED( hr ) ) goto EXIT;

    hr = pSample->GetBufferAndLength( &pbData, &cbData );
    if( FAILED( hr ) ) goto EXIT;

    qwSalt = GetNextSalt(qwSalt);

    // TODO: Encrypt the sample by concatenating the initialization vector
    //   and using RC4 encryption.

    hr = pNSSBuffer3->SetProperty( 
        WM_SampleExtensionGUID_SampleProtectionSalt, 
        &qwSalt, sizeof( qwSalt ) );
    if( FAILED( hr ) ) goto EXIT;

EXIT:

    SAFE_RELEASE( pNSSBuffer3 );
    return hr;
}

Ejemplos de importación de DRM