Condividi tramite


Interfaccia IStream (objidl.h)

L'interfaccia IStream consente di leggere e scrivere dati in oggetti di flusso. Stream oggetti contengono i dati in un oggetto di archiviazione strutturato, in cui le risorse di archiviazione forniscono la struttura. I dati semplici possono essere scritti direttamente in un flusso, ma, più di frequente, i flussi sono elementi annidati all'interno di un oggetto di archiviazione. Sono simili ai file standard.

L'interfaccia IStream definisce metodi simili alle funzioni di file FAT MS-DOS. Ad esempio, ogni oggetto flusso ha i propri diritti di accesso e un puntatore seek. La differenza principale tra un file DOS e un oggetto flusso è che in quest'ultimo caso i flussi vengono aperti usando un puntatore all'interfaccia IStream anziché un handle di file.

I metodi in questa interfaccia presentano i dati dell'oggetto come sequenza contigua di byte che è possibile leggere o scrivere. Sono inoltre disponibili metodi per il commit e il ripristino delle modifiche nei flussi aperti in modalità transazionata e metodi per limitare l'accesso a un intervallo di byte nel flusso.

I flussi possono rimanere aperti per lunghi periodi di tempo senza richiedere risorse del file system. Il metodo IUnknown::Release è simile a una funzione close in un file. Dopo il rilascio, l'oggetto flusso non è più valido e non può essere usato.

I client di moniker asincroni possono scegliere tra un modello di pull dei dati o di push dati per guidare un'operazione IMoniker::BindToStorage asincrona e per la ricezione di notifiche asincrone. Per altre informazioni, vedere URL Monikers . La tabella seguente confronta il comportamento delle chiamate ISequentialStream::Read e IStream::Seek restituite in IBindStatusCallback::OnDataAvailable in questi due modelli di download:

Chiamata al metodo IStream Comportamento nel modello di pull dei dati Comportamento nel modello di push dei dati
Read viene chiamato per leggere i dati parziali( ovvero non tutti i dati disponibili) Restituisce S_OK. Il client deve continuare a leggere tutti i dati disponibili prima di restituire da IBindStatusCallback::OnDataAvailable . In caso contrario, l'operazione di associazione è bloccata. (ovvero, leggere fino a quando non viene restituito S_FALSE o E_PENDING) Restituisce S_OK. Anche se il client restituisce da IBindStatusCallback::OnDataAvailable a questo punto l'operazione di associazione continua e IBindStatusCallback::OnDataAvailable verrà chiamato ripetutamente fino al termine dell'associazione.
Read viene chiamato per leggere tutti i dati disponibili Restituisce E_PENDING se l'operazione di associazione non è stata completata e IBindStatusCallback::OnDataAvailable verrà chiamato di nuovo quando sono disponibili altri dati. Uguale al modello di pull dei dati.
Read viene chiamato per leggere tutti i dati disponibili e l'operazione di associazione è finita (fine del file) Restituisce S_FALSE. Verrà eseguita una chiamata successiva a IBindStatusCallback::OnDataAvailable con il flag grfBSC impostato su BSCF_LASTDATANOTIFICATION. Uguale al modello di pull dei dati.
Viene chiamato Seek La ricerca non funziona nel modello di pull dei dati La ricerca non funziona nel modello di push dei dati.
 

Per informazioni generali su questo argomento, vedere Monikers asincroni e Modello di pull dei dati rispetto al modello di push dei dati per informazioni più specifiche. Vedere anche Gestione dell'allocazione di memoria per informazioni dettagliate sulle regole COM per la gestione della memoria.

Ereditarietà

L'interfaccia IStream eredita dall'interfaccia ISequentialStream . IStream include anche questi tipi di membri:

Metodi

L'interfaccia IStream include questi metodi.

 
IStream::Clone

Il metodo Clone crea un nuovo oggetto flusso con il proprio puntatore seek che fa riferimento agli stessi byte del flusso originale.
IStream::Commit

Il metodo Commit garantisce che tutte le modifiche apportate a un oggetto flusso aperte in modalità transazionali vengano riflesse nella risorsa di archiviazione padre.
IStream::CopyTo

Copia un numero specificato di byte dal puntatore di posizionamento corrente nel flusso al puntatore di posizionamento corrente in un altro flusso.
IStream::LockRegion

Il metodo LockRegion limita l'accesso a un intervallo di byte specificato nel flusso.
IStream::Revert

Il metodo Revert elimina tutte le modifiche apportate a un flusso transazionato dall'ultima chiamata IStream::Commit. Nei flussi aperti in modalità diretta e flussi usando l'implementazione del file composto COM di IStream::Revert, questo metodo non ha alcun effetto.
IStream::Seek

Modifica il puntatore di ricerca in una nuova posizione. La nuova posizione è relativa all'inizio del flusso, alla fine del flusso o al puntatore di ricerca corrente.
IStream::SetSize

Modifica la dimensione dell'oggetto flusso.
IStream::Stat

Il metodo Stat recupera la struttura STATSTG per questo flusso.
IStream::UnlockRegion

Il metodo UnlockRegion rimuove la restrizione di accesso per un intervallo di byte precedentemente limitato con IStream::LockRegion.

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

Vedi anche

ISequentialStream

IStream - Implementazione di file composti