Método IStorage::CreateStream (objidl.h)

O método CreateStream cria e abre um objeto de fluxo com o nome especificado contido neste objeto de armazenamento. Todos os elementos dentro de objetos de armazenamento, fluxos e outros objetos de armazenamento, são mantidos no mesmo espaço de nome.

Sintaxe

HRESULT CreateStream(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStream       **ppstm
);

Parâmetros

[in] pwcsName

Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo largo que contém o nome do fluxo recém-criado. O nome pode ser usado posteriormente para abrir ou reabrir o fluxo. O nome não deve exceder 31 caracteres de comprimento, sem incluir o terminador de cadeia de caracteres. Os caracteres de 000 a 01f, que servem como o primeiro caractere do nome de fluxo/armazenamento, são reservados para uso pelo OLE. Essa é uma restrição de arquivo composta, não uma restrição de armazenamento estruturada.

[in] grfMode

Especifica o modo de acesso a ser usado ao abrir o fluxo recém-criado. Para obter mais informações e descrições dos valores possíveis, consulte Constantes STGM.

[in] reserved1

Reservado para uso futuro; deve ser zero.

[in] reserved2

Reservado para uso futuro; deve ser zero.

[out] ppstm

No retorno, ponteiro para o local do novo ponteiro da interface IStream . Isso só será válido se a operação for bem-sucedida. Quando ocorre um erro, esse parâmetro é definido como NULL.

Retornar valor

Esse método pode retornar um desses valores.

Código de retorno Descrição
S_OK O novo fluxo foi criado com êxito.
E_PENDING Somente armazenamento assíncrono: parte ou todos os dados necessários estão indisponíveis no momento.
STG_E_ACCESSDENIED Não há permissões suficientes para criar fluxo.
STG_E_FILEALREADYEXISTS O nome especificado para o fluxo já existe no objeto de armazenamento e o parâmetro grfMode inclui o valor STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY O fluxo não foi criado devido à falta de memória.
STG_E_INVALIDFLAG O valor especificado para o parâmetro grfMode não é um valor válido de constantes STGM .
STG_E_INVALIDFUNCTION Não há suporte para a combinação especificada de sinalizadores no parâmetro grfMode ; por exemplo, quando esse método é chamado sem o sinalizador STGM_SHARE_EXCLUSIVE.
STG_E_INVALIDNAME Valor inválido para pwcsName.
STG_E_INVALIDPOINTER O ponteiro especificado para o objeto de fluxo era inválido.
STG_E_INVALIDPARAMETER Um dos parâmetros era inválido.
STG_E_REVERTED O objeto de armazenamento foi invalidado por uma operação de reverter acima dele na árvore de transações.
STG_E_TOOMANYOPENFILES O fluxo não foi criado porque há muitos arquivos abertos.

Comentários

Se um fluxo com o nome especificado no parâmetro pwcsName já existir e o parâmetro grfMode incluir o sinalizador STGM_CREATE, o fluxo existente será substituído por um recém-criado. Tanto a destruição do fluxo antigo quanto a criação do novo objeto de fluxo estão sujeitos ao modo de transação no objeto de armazenamento pai.

A implementação do arquivo composto fornecido por COM do método IStorage::CreateStream não dá suporte aos seguintes comportamentos:

  • Não há suporte para o sinalizador STGM_DELETEONRELEASE.
  • Não há suporte para o modo transacionado (STGM_TRANSACTED) para objetos de fluxo.
  • Não há suporte para abrir o mesmo fluxo mais de uma vez do mesmo armazenamento. O sinalizador STGM_SHARE_EXCLUSIVE modo de compartilhamento deve ser especificado no parâmetro grfMode .
Se o fluxo já existir e grfMode estiver definido como STGM_FAILIFTHERE, esse método falhará com o valor retornado STG_E_FILEALREADYEXISTS.

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
Biblioteca Uuid.lib
DLL Ole32.dll

Confira também

IStorage – Implementação de arquivo composto

IStorage::OpenStream

Istream