Interface IStream (objidl.h)

L’interface IStream vous permet de lire et d’écrire des données dans des objets de flux. Les objets de flux contiennent les données d’un objet de stockage structuré, où les stockages fournissent la structure. Les données simples peuvent être écrites directement dans un flux, mais, plus fréquemment, les flux sont des éléments imbriqués dans un objet de stockage. Ils sont similaires aux fichiers standard.

L’interface IStream définit des méthodes similaires aux fonctions de fichier MS-DOS FAT. Par exemple, chaque objet de flux a ses propres droits d’accès et un pointeur de recherche. La principale différence entre un fichier DOS et un objet de flux est que dans ce dernier cas, les flux sont ouverts à l’aide d’un pointeur d’interface IStream plutôt qu’un handle de fichier.

Les méthodes de cette interface présentent les données de votre objet sous la forme d’une séquence contiguë d’octets que vous pouvez lire ou écrire. Il existe également des méthodes permettant de valider et de rétablir des modifications sur des flux ouverts en mode transaction et des méthodes pour restreindre l’accès à une plage d’octets dans le flux.

Les flux peuvent rester ouverts pendant de longues périodes sans consommer de ressources de système de fichiers. La méthode IUnknown::Release est similaire à une fonction close sur un fichier. Une fois libéré, l’objet de flux n’est plus valide et ne peut pas être utilisé.

Les clients de monikers asynchrones peuvent choisir entre un modèle data-pull ou data-push pour conduire une opération IMoniker::BindToStorage asynchrone et pour recevoir des notifications asynchrones. Pour plus d’informations, consultez monikers d’URL . Le tableau suivant compare le comportement des appels asynchrones ISequentialStream::Read et IStream::Seek retournés dans IBindStatusCallback::OnDataAvailable dans ces deux modèles de téléchargement :

Appel de méthode IStream Comportement dans le modèle d’extraction de données Comportement dans le modèle push de données
La lecture est appelée pour lire les données partielles (autrement dit, pas toutes les données disponibles) Retourne S_OK. Le client doit continuer à lire toutes les données disponibles avant de retourner à partir d’IBindStatusCallback::OnDataAvailable ou bien l’opération de liaison est bloquée. (autrement dit, lire jusqu’à ce que S_FALSE ou E_PENDING soit retourné) Retourne S_OK. Même si le client retourne à partir d’IBindStatusCallback::OnDataAvailable à ce stade, l’opération de liaison se poursuit et IBindStatusCallback::OnDataAvailable sera appelée à plusieurs reprises jusqu’à ce que la liaison se termine.
La lecture est appelée pour lire toutes les données disponibles Retourne E_PENDING si l’opération de liaison n’est pas terminée, et IBindStatusCallback::OnDataAvailable sera appelée à nouveau lorsque d’autres données sont disponibles. Identique au modèle d’extraction de données.
La lecture est appelée pour lire toutes les données disponibles et l’opération de liaison est terminée (fin de fichier) Retourne S_FALSE. Il y aura un appel ultérieur à IBindStatusCallback::OnDataAvailable avec l’indicateur grfBSC défini sur BSCF_LASTDATANOTIFICATION. Identique au modèle d’extraction de données.
Seek est appelé Seek ne fonctionne pas dans le modèle d’extraction de données Seek ne fonctionne pas dans le modèle push de données.
 

Pour obtenir des informations générales sur cette rubrique, consultez Monikers asynchrones et Data-Pull-Model et Data Push-Model pour obtenir des informations plus spécifiques. Consultez également Gestion de l’allocation de mémoire pour plus d’informations sur les règles de COM pour la gestion de la mémoire.

Héritage

L’interface IStream hérite de l’interface ISequentialStream . IStream possède également ces types de membres :

Méthodes

L’interface IStream a ces méthodes.

 
IStream::Clone

La méthode Clone crée un objet de flux avec son propre pointeur de recherche qui référence les mêmes octets que le flux d’origine.
IStream::Commit

La méthode Commit garantit que toutes les modifications apportées à un objet de flux ouvert en mode transactionné sont reflétées dans le stockage parent.
IStream::CopyTo

Copie un nombre spécifié d'octets à partir du pointeur de recherche actuel d'un flux vers le pointeur de recherche actuel d'un autre flux.
IStream::LockRegion

La méthode LockRegion restreint l’accès à une plage d’octets spécifiée dans le flux.
IStream::Revert

La méthode Revert ignore toutes les modifications apportées à un flux transactionné depuis le dernier appel IStream::Commit. Sur les flux ouverts en mode direct et en flux à l’aide de l’implémentation de fichier composé COM de IStream::Revert, cette méthode n’a aucun effet.
IStream::Seek

Modifie le pointeur de recherche vers un nouvel emplacement. Le nouvel emplacement est relatif au début du flux, à la fin du flux ou au pointeur de recherche actuel.
IStream::SetSize

Modifie la taille de l'objet de flux.
IStream::Stat

La méthode Stat récupère la structure STATSTG pour ce flux.
IStream::UnlockRegion

La méthode UnlockRegion supprime la restriction d’accès sur une plage d’octets précédemment restreinte avec IStream::LockRegion.

Configuration requise

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

ISequentialStream

IStream - Implémentation de fichier composé