Синхронизация обмена ключами с потоком данных

Процесс обмена ключами может начинаться до обработки всех данных из предыдущего ключа. Примером этого может быть переход от заголовка трейлера к основному заголовку фильма, что встречается в некоторых фильмах. Существует флаг в элементе TypeSpecificFlags структуры KSSTREAM_HEADER для каждого пакета данных. Этот флаг KS_AM_UseNewCSSKey, который определён в ksmedia.h. Он указывает, что образец данных сразу после этого заголовка является первым примером данных, к которому применяется новый ключ заголовка.

Если расшифровщик может обработать новый обмен ключами при использовании старого ключа, минидрайвер DVD-декодера должен обработать обмен ключами по мере получения свойств. Если расшифровщик должен ждать, пока все данные фильма, для которых требуется предыдущий ключ, не будут обработаны, тогда расшифровщик держит SRB для свойства Set. Расшифровщик использует структуру KS_DVDCOPY_SET_COPY_STATE с параметром KS_DVDCOPYSTATE_INITIALIZE или KS_DVDCOPYSTATE_INITIALIZE_TITLE , пока он не получит флаг KS_AM_UseNewCSSKey во всех потоках, подключенных к нему. После этого минидрайвер DVD-декодера обрабатывает все пакеты, полученные к этому моменту. Это предотвращает использование неправильного ключа для данных.