Classe CPersistStream

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, 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.]

Hierarquia da classe cpersiststream

CPersistStream é a classe base para propriedades persistentes de filtros (ou seja, filtrar propriedades em grafos salvos).

A maneira mais simples de usar CPersistStream é:

  1. Organize o filtro para herdar essa classe.

  2. Implemente WriteToStream e ReadFromStream em sua classe. Elas substituirão as funções aqui, que não fazem nada além de atuar como espaços reservados.

  3. Altere o NonDelegatingQueryInterface para manipular IPersistStream.

  4. Implemente SizeMax para retornar um limite superior no número de bytes de dados salvos.

    Se você salvar dados Unicode™, lembre-se de que um WCHAR é de 2 bytes.

  5. Quando os dados forem alterados, chame SetDirty.

Números de versão

Em algum momento, você pode decidir alterar ou estender o formato dos seus dados. Em seguida, você desejará ter um número de versão em todos os fluxos salvos antigos para que possa dizer, ao lê-los, se eles representam o formulário antigo ou novo. Para ajudá-lo, essa classe grava e lê um número de versão. Quando ele grava, ele chama GetSoftwareVersion para consultar a versão do software que está sendo usado no momento. (Na verdade, esse é um número de versão do layout de dados no arquivo.) Ele grava isso como a primeira coisa nos dados. Se você quiser alterar a versão, implemente (substitua) GetSoftwareVersion. Ele lê o número de versão do arquivo em mPS_dwFileVersion antes de chamar ReadFromStream, portanto, no ReadFromStream, você pode marcar mPS_dwFileVersion para ver se está lendo um arquivo de versão antigo. Normalmente, você deve aceitar arquivos cuja versão não é mais recente do que a versão de software que os está lendo.

CPersistStream implementa IPersistStream. Para obter mais informações de implementação, consulte a Referência de COM no SDK da Plataforma Microsoft.

Membros de Dados Protegidos Descrição
mPS_dwFileVersion Número de versão do arquivo.
mPS_fDirty Os dados desse fluxo devem ser salvos.
Funções de membro Descrição
Cpersiststream Constrói um objeto CPersistStream .
Setdirty Indica que o objeto deve ser salvo no fluxo.
Funções membro substituíveis Descrição
Getclassid Recupera o identificador de classe desse fluxo.
GetSoftwareVersion Recupera o número de versão para este formato de arquivo.
ReadFromStream Lê os dados do filtro do fluxo.
SizeMax Recupera o número de bytes necessários para os dados (sem incluir o número de versão).
Writetostream Grava os dados do filtro no fluxo.
Métodos IPersistStream Descrição
Getsizemax Recupera o número de bytes necessários para os dados (incluindo o número de versão).
IsDirty Verifica se o objeto deve ser salvo.
Carga Carrega os dados do fluxo na memória.
Salvar Salva os dados da memória no fluxo.