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 |