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, do SDK do Windows Media Format 11, é um recurso herdado. Foi substituído por de Leitor de Origem e do Gravador do Coletor de. de Leitor de Origem e Gravador do Coletor foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use de Leitor de Origem e o Gravador do Coletor em vez de 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 de código a seguir ilustra como inicializar um objeto de gravador DRM para importação de DRM:
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 );
}
Tópicos relacionados
-
criar de exemplo de chave de conteúdo