Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez Source Reader i Sink Writer. Reader źródła i Writer ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
Poniższy niekompletny przykład przedstawia sposób szyfrowania przykładu multimediów przy użyciu szyfrowania DRM. Algorytm szyfrowania RC4 został pominięty w przykładzie ze względu na ograniczenia przestrzeni.
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;
}
Tematy pokrewne