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.
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 |