Condividi tramite


Metodo IStorage::OpenStorage (objidl.h)

Il metodo OpenStorage apre un oggetto di archiviazione esistente con il nome specificato nella modalità di accesso specificata.

Sintassi

HRESULT OpenStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  IStorage      *pstgPriority,
  [in]  DWORD         grfMode,
  [in]  SNB           snbExclude,
  [in]  DWORD         reserved,
  [out] IStorage      **ppstg
);

Parametri

[in] pwcsName

Puntatore a una stringa Unicode a terminazione null e caratteri "wide" che contiene il nome dell'oggetto di archiviazione da aprire. I caratteri da 000 a 01f, che fungono da primo carattere del nome del flusso/archivio, sono riservati all'OLE. Si tratta di una limitazione del file composto, non della restrizione di un archivio strutturato. Viene ignorato se pstgPriority è diverso da NULL.

[in] pstgPriority

Deve essere NULL. Un valore non NULL restituirà STG_E_INVALIDPARAMETER.

[in] grfMode

Specifica la modalità di accesso da utilizzare per aprire l'oggetto di archiviazione. Per le descrizioni dei valori possibili, vedere Costanti STGM. Altre modalità scelte devono specificare almeno STGM_SHARE_EXCLUSIVE quando si chiama questo metodo.

[in] snbExclude

Deve essere NULL. Un valore non NULL restituirà STG_E_INVALIDPARAMETER.

[in] reserved

Riservato per utilizzi futuri; deve essere zero.

[out] ppstg

Al termine, puntatore alla posizione di un puntatore IStorage all'oggetto di archiviazione aperto. Questo parametro è impostato su NULL se si verifica un errore.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK L'oggetto di archiviazione è stato aperto correttamente.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati dell'archiviazione non sono attualmente disponibili.
STG_E_ACCESSDENIED Autorizzazioni non sufficienti per aprire l'oggetto di archiviazione.
STG_E_FILENOTFOUND L'oggetto di archiviazione con il nome specificato non esiste.
STG_E_INSUFFICIENTMEMORY L'oggetto di archiviazione non è stato aperto a causa di una mancanza di memoria.
STG_E_INVALIDFLAG Il valore specificato per il parametro grfMode non è un valore di costanti STGM valido.
STG_E_INVALIDFUNCTION La combinazione specificata di flag nel parametro grfMode non è supportata.
STG_E_INVALIDNAME Valore non valido per pwcsName.
STG_E_INVALIDPOINTER Il puntatore specificato per l'oggetto di archiviazione non è valido.
STG_E_INVALIDPARAMETER Uno dei parametri non è valido.
STG_E_REVERTED L'oggetto di archiviazione è stato invalidato da un'operazione di ripristino sopra di essa nell'albero delle transazioni.
STG_E_TOOMANYOPENFILES L'oggetto di archiviazione non è stato creato perché sono presenti troppi file aperti.
STG_S_CONVERTED Il flusso esistente con il nome specificato è stato sostituito con un nuovo oggetto di archiviazione contenente un singolo flusso denominato CONTENTS. In modalità diretta, la nuova risorsa di archiviazione viene immediatamente scritta su disco. In modalità transazionata, la nuova risorsa di archiviazione viene scritta in una risorsa di archiviazione temporanea in memoria e successivamente scritta su disco quando viene eseguito il commit.

Commenti

Se il parametro pstgPriority è NULL, viene ignorato. Se il parametro pstgPriority non è NULL, si tratta di un puntatore IStorage a un'apertura precedente di un elemento dell'oggetto di archiviazione, in genere uno aperto in modalità priorità. L'oggetto di archiviazione deve essere chiuso e riaperto in base a grfMode. Quando il metodo IStorage::OpenStorage restituisce, pstgPriority non è più valido. Usare il valore specificato nel parametro ppstg .

Gli oggetti di archiviazione possono essere aperti con STGM_DELETEONRELEASE, nel qual caso l'oggetto viene eliminato definitivamente quando riceve la versione finale. Ciò è utile per la creazione di oggetti di archiviazione temporanea.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [app desktop | App UWP]
Server minimo supportato Windows 2000 Server [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione objidl.h
Libreria Uuid.lib
DLL Ole32.dll

Vedi anche

IStorage - Implementazione di file composti

IStorage::CreateStorage