Condividi tramite


Metodo IStorage::CreateStorage (objidl.h)

Il metodo CreateStorage crea e apre un nuovo oggetto di archiviazione annidato all'interno di questo oggetto di archiviazione con il nome specificato nella modalità di accesso specificata.

Sintassi

HRESULT CreateStorage(
  [in]  const OLECHAR *pwcsName,
  [in]  DWORD         grfMode,
  [in]  DWORD         reserved1,
  [in]  DWORD         reserved2,
  [out] IStorage      **ppstg
);

Parametri

[in] pwcsName

Puntatore a una stringa Unicode con terminazione Null a caratteri wide contenente il nome dell'oggetto di archiviazione appena creato. Il nome può essere usato in un secondo momento per riaprire l'oggetto di archiviazione. Il nome non deve superare i 31 caratteri di lunghezza, senza includere il carattere di terminazione stringa. 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.

[in] grfMode

Valore che specifica la modalità di accesso da utilizzare quando si apre l'oggetto di archiviazione appena creato. Per altre informazioni e una descrizione dei valori possibili, vedere Costanti STGM.

[in] reserved1

Riservato per utilizzi futuri; deve essere zero.

[in] reserved2

Riservato per utilizzi futuri; deve essere zero.

[out] ppstg

Puntatore, in caso di esito positivo, alla posizione del puntatore IStorage all'oggetto di archiviazione appena creato. 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 creato correttamente.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati necessari non sono attualmente disponibili.
STG_E_ACCESSDENIED Autorizzazioni non sufficienti per creare un oggetto di archiviazione.
STG_E_FILEALREADYEXISTS Il nome specificato per l'oggetto di archiviazione esiste già nell'oggetto di archiviazione e il parametro grfMode include il flag STGM_FAILIFTHERE.
STG_E_INSUFFICIENTMEMORY L'oggetto di archiviazione non è stato creato a causa di una mancanza di memoria.
STG_E_INVALIDFLAG Il valore specificato per il parametro grfMode< non è un valore costante STGM valido. il valore specificato per il parametro grfMode non è 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. Verrà aggiunto il nuovo oggetto di archiviazione.

Commenti

Se esiste già una risorsa di archiviazione con il nome specificato nel parametro pwcsName all'interno dell'oggetto di archiviazione padre e il parametro grfMode include il flag STGM_CREATE, la risorsa di archiviazione esistente viene sostituita da quella nuova. Se il parametro grfMode include il flag STGM_CONVERT, l'elemento esistente viene convertito in un oggetto flusso denominato CONTENTS e il nuovo oggetto di archiviazione viene creato contenente l'oggetto flusso CONTENTS. La distruzione dell'elemento precedente e la creazione del nuovo oggetto di archiviazione sono entrambe soggette alla modalità di transazione nell'oggetto di archiviazione padre. Tenere presente che non è possibile usare STGM_CONVERT se si usa anche STGM_CREATE.

L'implementazione del file composto fornito da COM del metodo IStorage::CreateStorage non supporta il comportamento seguente:

  • Flag STGM_PRIORITY per le risorse di archiviazione nonroot.
  • Apertura dello stesso oggetto di archiviazione più volte dalla stessa risorsa di archiviazione padre. È necessario specificare il flag STGM_SHARE_EXCLUSIVE.
  • Flag STGM_DELETEONRELEASE. Se questo flag viene specificato, la funzione restituisce STG_E_INVALIDFLAG.
Se esiste già un oggetto di archiviazione con lo stesso nome e grfMode è impostato su STGM_FAILIFTHERE, questo metodo ha esito negativo con il valore restituito STG_E_FILEALREADYEXISTS.

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