Compartilhar via


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

O método OpenStorage abre um objeto de armazenamento existente com o nome especificado no modo de acesso especificado.

Sintaxe

HRESULT OpenStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  IStorage      *pstgPriority,
  [in]  DWORD         grfMode,
  [in]  SNB           snbExclude,
  [in]  DWORD         reserved,
  [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 a ser aberto. 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. Ele será ignorado se pstgPriority não for NULL.

[in] pstgPriority

Deve ser NULL. Um valor não NULL retornará STG_E_INVALIDPARAMETER.

[in] grfMode

Especifica o modo de acesso a ser usado ao abrir o objeto de armazenamento. Para obter descrições dos valores possíveis, consulte Constantes STGM. Outros modos escolhidos devem pelo menos especificar STGM_SHARE_EXCLUSIVE ao chamar esse método.

[in] snbExclude

Deve ser NULL. Um valor não NULL retornará STG_E_INVALIDPARAMETER.

[in] reserved

Reservado para uso futuro; deve ser zero.

[out] ppstg

Quando bem-sucedido, ponteiro para o local de um ponteiro IStorage para o objeto de armazenamento aberto. 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 aberto com êxito.
E_PENDING Somente armazenamento assíncrono: parte ou todos os dados do armazenamento estão indisponíveis no momento.
STG_E_ACCESSDENIED Não há permissões suficientes para abrir o objeto de armazenamento.
STG_E_FILENOTFOUND O objeto de armazenamento com o nome especificado não existe.
STG_E_INSUFFICIENTMEMORY O objeto de armazenamento não foi aberto 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 .
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. No modo direto, o novo armazenamento é gravado imediatamente no disco. No modo transacionado, o novo armazenamento é gravado em um armazenamento temporário na memória e, posteriormente, gravado no disco quando ele é confirmado.

Comentários

Se o parâmetro pstgPriority for NULL, ele será ignorado. Se o parâmetro pstgPriority não for NULL, ele será um ponteiro IStorage para uma abertura anterior de um elemento do objeto de armazenamento, geralmente um que foi aberto no modo de prioridade. O objeto de armazenamento deve ser fechado e reaberto de acordo com grfMode. Quando o método IStorage::OpenStorage retorna, pstgPriority não é mais válido. Use o valor fornecido no parâmetro ppstg .

Os objetos de armazenamento podem ser abertos com STGM_DELETEONRELEASE, caso em que o objeto é destruído quando recebe sua versão final. Isso é útil para criar objetos de armazenamento temporários.

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::CreateStorage