Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[O recurso associado a esta página, Windows Media Format 11 SDK, é um recurso herdado. Ele foi substituído por Leitor de Origem e Gravador de Coletor. O Leitor de Origem e o Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o Leitor de Origem e o Gravador do Coletor em vez do SDK do Windows Media Format 11, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O exemplo incompleto a seguir demonstra como criptografar um exemplo de mídia usando a criptografia DRM. O algoritmo de criptografia RC4 foi deixado de fora do exemplo devido a restrições de espaço.
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;
}
Tópicos relacionados