Metodo ISequentialStream::Write (objidl.h)

Il metodo Write scrive un numero specificato di byte nell'oggetto di flusso a partire dal puntatore di ricerca corrente.

Sintassi

HRESULT Write(
  [in]  const void *pv,
  [in]  ULONG      cb,
  [out] ULONG      *pcbWritten
);

Parametri

[in] pv

Puntatore al buffer che contiene i dati da scrivere nel flusso. Un puntatore valido deve essere fornito per questo parametro anche quando cb è zero.

[in] cb

Numero di byte di dati da provare a scrivere nel flusso. Il valore può essere zero.

[out] pcbWritten

Puntatore a una variabile ULONG in cui questo metodo scrive il numero effettivo di byte scritti nell'oggetto stream. Il chiamante può impostare questo puntatore su NULL, nel qual caso questo metodo non fornisce il numero effettivo di byte scritti.

Valore restituito

Questo metodo può restituire uno di questi valori.

Codice restituito Descrizione
S_OK I dati sono stati scritti correttamente nell'oggetto stream.
E_PENDING Solo archiviazione asincrona: parte o tutti i dati da scrivere non sono attualmente disponibili.
STG_E_MEDIUMFULL L'operazione di scrittura non è riuscita perché non c'è spazio lasciato nel dispositivo di archiviazione.
STG_E_ACCESSDENIED Il chiamante non dispone delle autorizzazioni necessarie per la scrittura in questo oggetto di flusso.
STG_E_CANTSAVE I dati non possono essere scritti per motivi diversi dall'accesso non corretto o da spazio insufficiente.
STG_E_INVALIDPOINTER Uno dei valori del puntatore non è valido. Il parametro pv deve contenere un puntatore valido anche se cb è zero.
STG_E_REVERTED L'oggetto è stato invalidato da un'operazione di ripristino sopra di essa nell'albero delle transazioni.
STG_E_WRITEFAULT L'operazione di scrittura non è riuscita a causa di un errore del disco. Questo valore viene restituito anche quando questo metodo tenta di scrivere in un flusso aperto in modalità semplice (usando il flag di STGM_SIMPLE).

Commenti

ISequentialStream::Write scrive i dati specificati in un oggetto stream. Il puntatore di ricerca viene modificato per il numero di byte effettivamente scritti. Il numero di byte effettivamente scritti viene restituito nel parametro pcbScritto . Se il conteggio dei byte è zero byte, l'operazione di scrittura non ha alcun effetto.

Se il puntatore di ricerca è attualmente passato alla fine del flusso e il conteggio dei byte è diverso da zero, questo metodo aumenta le dimensioni del flusso al puntatore di ricerca e scrive i byte specificati a partire dal puntatore di ricerca. I byte di riempimento scritti nel flusso non vengono inizializzati in alcun valore specifico. Si tratta dello stesso comportamento end-of-file nel file system FAT MS-DOS.

Con un conteggio di byte zero e un puntatore di ricerca oltre la fine del flusso, questo metodo non crea i byte di riempimento per aumentare il flusso al puntatore di ricerca. In questo caso, è necessario chiamare il metodo IStream::SetSize per aumentare le dimensioni del flusso e scrivere i byte di riempimento.

Il parametro pcbScritto può avere un valore anche se si verifica un errore.

Nell'implementazione fornita da COM gli oggetti di flusso non sono sparse. Eventuali byte di riempimento vengono infine allocati sul disco e assegnati al flusso.

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

ISequentialStream::Read

IStorage::OpenStream

IStream

IStream - Implementazione di file composti

STGMOVE