Partilhar via


Sincronizando o intercâmbio de chaves com o fluxo de dados

O processo de troca de chaves pode começar antes que todos os dados da chave anterior sejam processados. Um exemplo disso seria na transição do título do trailer definido para o título do programa principal definido em alguns filmes. Há um sinalizador no membro TypeSpecificFlags da estrutura KSSTREAM_HEADER para cada pacote de dados. Este sinalizador é KS_AM_UseNewCSSKey, que é definido em ksmedia.h. Ele indica que o exemplo de dados imediatamente após esse cabeçalho é o primeiro exemplo de dados ao qual a nova chave de título se aplica.

Se o desencriptador puder processar uma nova troca de chaves enquanto ainda usa a chave antiga, o minidriver do descodificador de DVD deve processar a troca de chaves à medida que recebe as propriedades. Se o desencriptador tiver de esperar até que todos os dados do filme que requerem a chave anterior tenham sido processados, então o desencriptador mantém o SRB para a propriedade Set. O desencriptador usa a estrutura KS_DVDCOPY_SET_COPY_STATE com o parâmetro KS_DVDCOPYSTATE_INITIALIZE ou KS_DVDCOPYSTATE_INITIALIZE_TITLE até ter recebido o sinalizador KS_AM_UseNewCSSKey em todos os fluxos que estão ligados a ele. Depois disso, o minidriver de decodificação de DVD processa todos os pacotes recebidos até esse ponto. Isso evita o uso da chave incorreta nos dados.