Interface IStream (objidl.h)

L’interface IStream vous permet de lire et d’écrire des données dans des objets de streaming. Stream objets contiennent les données dans un objet de stockage structuré, où les stockages fournissent la structure. Les données simples peuvent être écrites directement dans un flux, mais, le plus souvent, 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 FAT MS-DOS. Par exemple, chaque objet de flux a ses propres droits d’accès et un pointeur de recherche. La main différence entre un fichier DOS et un objet stream est que dans ce dernier cas, les flux sont ouverts à l’aide d’un pointeur d’interface IStream plutôt que d’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 pour valider et rétablir les modifications sur les flux ouverts en mode transactionné 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 stream n’est plus valide et ne peut pas être utilisé.

Les clients de monikers asynchrones peuvent choisir entre un modèle d’extraction de données ou de transmission de données pour piloter une opération IMoniker ::BindToStorage asynchrone et pour recevoir des notifications asynchrones. Pour plus d’informations, consultez URL Monikers . Le tableau suivant compare le comportement des appels asynchrones ISequentialStream ::Read et IStream ::Seekretourné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
Read est appelé 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 de IBindStatusCallback ::OnDataAvailable , sinon l’opération de liaison est bloquée. (c’est-à-dire lire jusqu’à ce que S_FALSE ou E_PENDING soit retourné) Retourne S_OK. Même si le client retourne à partir de IBindStatusCallback ::OnDataAvailable à ce stade, l’opération de liaison continue et IBindStatusCallback ::OnDataAvailable sera appelé à nouveau à plusieurs reprises jusqu’à la fin de la liaison.
Read est appelé 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é à nouveau lorsque d’autres données seront disponibles. Identique au modèle d’extraction de données.
Read est appelé pour lire toutes les données disponibles et l’opération de liaison est terminée (fin du fichier) Retourne S_FALSE. Il y aura un appel suivant à 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 versus Data Push-Model pour obtenir des informations plus spécifiques. En outre, consultez Gestion de l’allocation de mémoire pour plus d’informations sur les règles com pour la gestion de la mémoire.

Héritage

L’interface IStream hérite de l’interface ISequentialStream. IStream a également les types de membres suivants :

Méthodes

L’interface IStream possède ces méthodes.

 
IStream ::Clone

La méthode Clone crée un objet stream 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 spécifiée d’octets dans le flux.
IStream ::Revert

La méthode Revert ignore toutes les modifications qui ont été apportées à un flux traité depuis le dernier appel IStream ::Commit. Sur les flux ouverts en mode direct et les 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

Condition requise Valeur
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 fichiers composés