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) |