Condividi tramite


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 .
Se il flusso esiste già 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::OpenStream

IStream