Método IStorage::CreateStorage (objidl.h)
O método CreateStorage cria e abre um novo objeto de armazenamento aninhado dentro desse objeto de armazenamento com o nome especificado no modo de acesso especificado.
Sintaxe
HRESULT CreateStorage(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStorage **ppstg
);
Parâmetros
[in] pwcsName
Um ponteiro para uma cadeia de caracteres Unicode terminada em nulo largo que contém o nome do objeto de armazenamento recém-criado. O nome pode ser usado posteriormente para reabrir o objeto de armazenamento. O nome não deve exceder 31 caracteres de comprimento, não incluindo o terminador de cadeia de caracteres. Os caracteres de 000 a 01f, que servem como o primeiro caractere do nome do fluxo/armazenamento, são reservados para uso pelo OLE. Essa é uma restrição de arquivo composto, não uma restrição de armazenamento estruturado.
[in] grfMode
Um valor que especifica o modo de acesso a ser usado ao abrir o objeto de armazenamento recém-criado. Para obter mais informações e uma descrição 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] ppstg
Um ponteiro, quando bem-sucedido, para o local do ponteiro IStorage para o objeto de armazenamento recém-criado. Esse parâmetro será definido como NULL se ocorrer um erro.
Retornar valor
Esse método pode retornar um desses valores.
Código de retorno | Descrição | |
---|---|---|
S_OK | O objeto de armazenamento foi criado com êxito. | |
E_PENDING | Somente armazenamento assíncrono: parte ou todos os dados necessários não estão disponíveis no momento. | |
STG_E_ACCESSDENIED | Não há permissões suficientes para criar um objeto de armazenamento. | |
STG_E_FILEALREADYEXISTS | O nome especificado para o objeto de armazenamento já existe no objeto de armazenamento e o parâmetro grfMode inclui o sinalizador STGM_FAILIFTHERE. | |
STG_E_INSUFFICIENTMEMORY | O objeto de armazenamento não foi criado devido à falta de memória. | |
STG_E_INVALIDFLAG | O valor especificado para o parâmetro grfMode< não é um valor de constante STGM válido. | o valor especificado para o parâmetro grfMode não é válido |
STG_E_INVALIDFUNCTION | Não há suporte para a combinação especificada de sinalizadores no parâmetro grfMode . | |
STG_E_INVALIDNAME | Não é um valor válido para pwcsName. | |
STG_E_INVALIDPOINTER | O ponteiro especificado para o objeto de armazenamento não era válido. | |
STG_E_INVALIDPARAMETER | Um dos parâmetros não era vá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 objeto de armazenamento não foi criado porque há muitos arquivos abertos. | |
STG_S_CONVERTED | O fluxo existente com o nome especificado foi substituído por um novo objeto de armazenamento que contém um único fluxo chamado CONTENTS. O novo objeto de armazenamento será adicionado. |
Comentários
Se um armazenamento com o nome especificado no parâmetro pwcsName já existir dentro do objeto de armazenamento pai e o parâmetro grfMode incluir o sinalizador STGM_CREATE, o armazenamento existente será substituído pelo novo. Se o parâmetro grfMode incluir o sinalizador STGM_CONVERT, o elemento existente será convertido em um objeto de fluxo chamado CONTENTS e o novo objeto de armazenamento será criado contendo o objeto de fluxo CONTENTS. A destruição do elemento antigo e a criação do novo objeto de armazenamento estão sujeitos ao modo de transação no objeto de armazenamento pai. Lembre-se de que você não pode usar STGM_CONVERT se também estiver usando STGM_CREATE.
A implementação de arquivo composto fornecida por COM do método IStorage::CreateStorage não dá suporte ao seguinte comportamento:
- O sinalizador STGM_PRIORITY para armazenamentos não deroot.
- Abrindo o mesmo objeto de armazenamento mais de uma vez do mesmo armazenamento pai. O sinalizador STGM_SHARE_EXCLUSIVE deve ser especificado.
- O sinalizador STGM_DELETEONRELEASE. Se esse sinalizador for especificado, a função retornará STG_E_INVALIDFLAG.
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 |