Compartilhar via


Interface IStream (objidl.h)

A interface IStream permite que você leia e escreva dados em objetos de fluxo. Stream objetos contêm os dados em um objeto de armazenamento estruturado, em que os armazenamentos fornecem a estrutura. Dados simples podem ser gravados diretamente em um fluxo, mas, na maioria das vezes, os fluxos são elementos aninhados em um objeto de armazenamento. Eles são semelhantes aos arquivos padrão.

A interface IStream define métodos semelhantes às funções de arquivo FAT do MS-DOS. Por exemplo, cada objeto de fluxo tem seus próprios direitos de acesso e um ponteiro de busca. A main diferença entre um arquivo DOS e um objeto de fluxo é que, no último caso, os fluxos são abertos usando um ponteiro de interface IStream em vez de um identificador de arquivo.

Os métodos nessa interface apresentam os dados do objeto como uma sequência contígua de bytes que você pode ler ou gravar. Também há métodos para confirmar e reverter alterações em fluxos abertos no modo transacionado e métodos para restringir o acesso a um intervalo de bytes no fluxo.

Os fluxos podem permanecer abertos por longos períodos de tempo sem consumir recursos do sistema de arquivos. O método IUnknown::Release é semelhante a uma função close em um arquivo. Depois de liberado, o objeto de fluxo não é mais válido e não pode ser usado.

Os clientes de monikers assíncronos podem escolher entre um modelo de pull de dados ou push de dados para conduzir uma operação assíncrona IMoniker::BindToStorage e para receber notificações assíncronas. Consulte Monikers de URL para obter mais informações. A tabela a seguir compara o comportamento das chamadas assíncronas ISequentialStream::Read e IStream::Seekretornadas em IBindStatusCallback::OnDataAvailable nestes dois modelos de download:

Chamada de método IStream Comportamento no modelo de pull de dados Comportamento no modelo de push de dados
A leitura é chamada para ler dados parciais (ou seja, nem todos os dados disponíveis) Returns S_OK. O cliente deve continuar a ler todos os dados disponíveis antes de retornar de IBindStatusCallback::OnDataAvailable ou então a operação de associação é bloqueada. (ou seja, leia até que S_FALSE ou E_PENDING seja retornado) Returns S_OK. Mesmo que o cliente retorne de IBindStatusCallback::OnDataAvailable neste ponto, a operação de associação continuará e IBindStatusCallback::OnDataAvailable será chamado novamente repetidamente até que a associação seja concluída.
A leitura é chamada para ler todos os dados disponíveis Retorna E_PENDING se a operação de associação não tiver sido concluída e IBindStatusCallback::OnDataAvailable será chamado novamente quando mais dados estiverem disponíveis. O mesmo que o modelo de pull de dados.
A leitura é chamada para ler todos os dados disponíveis e a operação de associação acabou (fim do arquivo) Retorna S_FALSE. Haverá uma chamada subsequente para IBindStatusCallback::OnDataAvailable com o sinalizador grfBSC definido como BSCF_LASTDATANOTIFICATION. O mesmo que o modelo de pull de dados.
Seek é chamado O Seek não funciona no modelo de pull de dados O Seek não funciona no modelo de push de dados.
 

Para obter informações gerais sobre este tópico, consulte Monikers assíncronos e Data-Pull-Model versus Data Push-Model para obter informações mais específicas. Além disso, consulte Gerenciando a alocação de memória para obter detalhes sobre as regras do COM para gerenciar a memória.

Herança

A interface IStream herda da interface ISequentialStream . O IStream também tem esses tipos de membros:

Métodos

A interface IStream tem esses métodos.

 
IStream::Clone

O método Clone cria um novo objeto de fluxo com seu próprio ponteiro de busca que faz referência aos mesmos bytes do fluxo original.
IStream::Commit

O método Commit garante que todas as alterações feitas em um objeto de fluxo aberto no modo transacionado sejam refletidas no armazenamento pai.
IStream::CopyTo

Copia um número especificado de bytes do ponteiro de busca atual no fluxo para o ponteiro de busca atual em outro fluxo.
IStream::LockRegion

O método LockRegion restringe o acesso a um intervalo especificado de bytes no fluxo.
IStream::Revert

O método Revert descarta todas as alterações feitas em um fluxo transacionado desde a última chamada IStream::Commit. Em fluxos abertos no modo direto e fluxos usando a implementação de arquivo composto COM de IStream::Revert, esse método não tem efeito.
IStream::Seek

Altera o ponteiro de busca para um novo local. O novo local é relativo ao início do fluxo, ao final do fluxo ou ao ponteiro de busca atual.
IStream::SetSize

Altera o tamanho do objeto de fluxo.
IStream::Stat

O método Stat recupera a estrutura STATSTG para esse fluxo.
IStream::UnlockRegion

O método UnlockRegion remove a restrição de acesso em um intervalo de bytes anteriormente restritos com IStream::LockRegion.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

ISequentialStream

IStream – Implementação de arquivo composto