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.]
CPersistStream
é a classe base para propriedades persistentes de filtros (ou seja, filtrar propriedades em grafos salvos).
A maneira mais simples de usar CPersistStream
é:
Organize o filtro para herdar essa classe.
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.
Altere o NonDelegatingQueryInterface para manipular IPersistStream.
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.
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. |