Compartilhar via


Função SHCreateMemStream (shlwapi.h)

Cria um fluxo de memória usando um processo semelhante a CreateStreamOnHGlobal.

Sintaxe

IStream * SHCreateMemStream(
  [in, optional] const BYTE *pInit,
  [in]           UINT       cbInit
);

Parâmetros

[in, optional] pInit

Tipo: const BYTE*

Um ponteiro para um buffer de tamanho cbInit. O conteúdo desse buffer é usado para definir o conteúdo inicial do fluxo de memória. Se esse parâmetro for NULL, o fluxo de memória retornado não terá nenhum conteúdo inicial.

[in] cbInit

Tipo: UINT

O número de bytes no buffer apontado por pInit. Se pInit for definido como NULL, cbInit deverá ser zero.

Valor retornado

Tipo: IStream*

Em caso de êxito, retorna um ponteiro para o fluxo de memória criado. Retornará NULL se o objeto de fluxo não puder ser alocado.

Comentários

Antes do Windows Vista, essa função não era incluída no arquivo Shlwapi.h público nem era exportada pelo nome de Shlwapi.dll. Para usá-lo em sistemas anteriores, você deve chamá-lo diretamente do arquivo Shlwapi.dll como ordinal 12.

Essa função cria um fluxo de memória. Essa é uma implementação da interface IStream que armazena seu conteúdo na memória. SHCreateMemStream difere de CreateStreamOnHGlobal das seguintes maneiras.

  • Segurança de thread. O fluxo criado por SHCreateMemStream é thread-safe a partir do Windows 8. Em sistemas anteriores, o fluxo não é thread-safe. O fluxo criado por CreateStreamOnHGlobal é thread-safe.
  • Conteúdo inicial. SHCreateMemStream aceita o conteúdo inicial na forma de um buffer. CreateStreamOnHGlobal aceita o conteúdo inicial na forma de um HGLOBAL.
  • Acesso ao conteúdo. SHCreateMemStream não permite acesso direto ao conteúdo do fluxo. CreateStreamOnHGlobal permite o acesso por meio de GetHGlobalFromStream.
  • Informações de falha. Se SHCreateMemStream retornar NULL, não será possível alocar a memória necessária. Os chamadores devem assumir que a causa é E_OUTOFMEMORY.
  • Suporte para IStream::Clone. Antes do Windows 8, o fluxo criado por SHCreateMemStream não dá suporte a IStream::Clone. O fluxo criado por CreateStreamOnHGlobal faz. A partir do Windows 8, o fluxo criado por SHCreateMemStream dá suporte a IStream::Clone.
  • O fluxo retornado por SHCreateMemStream retornará S_FALSE de IStream::Read se você tentar ler além do final do buffer. O fluxo retornado por CreateStreamOnHGlobal retorna S_OK e define *pcbRead como 0 se você tentar ler após o final do buffer.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional, Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server, Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shlwapi.h
Biblioteca Shlwapi.lib
DLL Shlwapi.dll (versão 5.0 ou posterior)