Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK-ist ein Legacyfeature. Es wurde von Source Reader und Sink Writerersetzt. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code Source Reader und Sink Writer- anstelle Windows Media Format 11 SDK-verwendet werden soll. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]
Im folgenden Codebeispiel wird veranschaulicht, wie ein DRM Writer-Objekt für den DRM-Import initialisiert wird:
HRESULT InitializeImport( IWMDRMWriter3 *pDRMWriter )
{
// Set this value to the desired number of bytes in an encrypted
// session key.
const int MODULUS_SIZE = 32;
HRESULT hr = S_OK;
WMDRM_IMPORT_INIT_STRUCT ImportInit;
BYTE *pbEncryptedSessionKey = NULL;
DWORD cbEncryptedSessionKey = 0;
WMDRM_IMPORT_SESSION_KEY *pSessionKey = NULL;
DWORD cbSessionKey = 0;
WMDRM_IMPORT_CONTENT_KEY *pContentKey = NULL;
DWORD cbContentKey = 0;
// Allocate memory for the encrypted session key.
pbEncryptedSessionKey = new BYTE[ MODULUS_SIZE ];
if( NULL == pbEncryptedSessionKey )
{
hr = E_OUTOFMEMORY;
goto EXIT;
}
cbEncryptedSessionKey = MODULUS_SIZE;
hr = CreateSessionKey( &pSessionKey, &cbSessionKey );
if( FAILED( hr ) ) goto EXIT;
if( cbSessionKey > MODULUS_SIZE )
if( FAILED( hr ) ) goto EXIT;
hr = CreateContentKey( &pContentKey, &cbContentKey );
if( FAILED( hr ) ) goto EXIT;
// TODO: Encrypt the content key with the session Key.
// TODO: Encrypt the session key with the machine certificate public key.
ImportInit.dwVersion = 0;
ImportInit.pbEncryptedSessionKeyMessage = pbEncryptedSessionKey;
ImportInit.cbEncryptedSessionKeyMessage = cbEncryptedSessionKey;
ImportInit.pbEncryptedKeyMessage = (BYTE*)pContentKey;
ImportInit.cbEncryptedKeyMessage = cbContentKey;
hr = pDRMWriter->SetProtectStreamSamples( &ImportInit );
if( FAILED( hr ) ) goto EXIT;
EXIT:
SAFE_ARRAY_DELETE( pContentKey );
SAFE_ARRAY_DELETE( pSessionKey );
return( hr );
}
Verwandte Themen