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