Metodo IStorage::CreateStream (objidl.h)
Il metodo CreateStream crea e apre un oggetto flusso con il nome specificato contenuto in questo oggetto di archiviazione. Tutti gli elementi all'interno di un oggetto di archiviazione, sia flussi che altri oggetti di archiviazione, vengono mantenuti nello stesso spazio dei nomi.
Sintassi
HRESULT CreateStream(
[in] const OLECHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD reserved1,
[in] DWORD reserved2,
[out] IStream **ppstm
);
Parametri
[in] pwcsName
Puntatore a una stringa Unicode con terminazione Null a caratteri wide contenente il nome del flusso appena creato. Il nome può essere usato in un secondo momento per aprire o riaprire il flusso. 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
Specifica la modalità di accesso da utilizzare quando si apre il flusso appena creato. Per altre informazioni e descrizioni 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] ppstm
In caso di ritorno, puntatore alla posizione del nuovo puntatore dell'interfaccia IStream . Questa operazione è valida solo se l'operazione ha esito positivo. Quando si verifica un errore, questo parametro è impostato su NULL.
Valore restituito
Questo metodo può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
S_OK | Il nuovo flusso è 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 il flusso. |
STG_E_FILEALREADYEXISTS | Il nome specificato per il flusso esiste già nell'oggetto di archiviazione e il parametro grfMode include il valore STGM_FAILIFTHERE. |
STG_E_INSUFFICIENTMEMORY | Il flusso non è stato creato 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; ad esempio, quando questo metodo viene chiamato senza il flag STGM_SHARE_EXCLUSIVE. |
STG_E_INVALIDNAME | Valore non valido per pwcsName. |
STG_E_INVALIDPOINTER | Il puntatore specificato per l'oggetto flusso 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 | Il flusso non è stato creato perché sono presenti troppi file aperti. |
Commenti
Se esiste già un flusso con il nome specificato nel parametro pwcsName e il parametro grfMode include il flag STGM_CREATE, il flusso esistente viene sostituito da uno appena creato. Sia la distruzione del flusso precedente che la creazione del nuovo oggetto flusso sono soggette alla modalità di transazione nell'oggetto di archiviazione padre.
L'implementazione del file composto fornito da COM del metodo IStorage::CreateStream non supporta i comportamenti seguenti:
- Il flag STGM_DELETEONRELEASE non è supportato.
- La modalità transacted (STGM_TRANSACTED) non è supportata per gli oggetti flusso.
- L'apertura dello stesso flusso più volte dalla stessa risorsa di archiviazione non è supportata. Il flag STGM_SHARE_EXCLUSIVE modalità di condivisione deve essere specificato nel parametro grfMode .
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 |