Partager via


IPersistStream::Save, méthode (objidl.h)

Enregistre un objet dans le flux spécifié.

Syntaxe

HRESULT Save(
  [in] IStream *pStm,
  [in] BOOL    fClearDirty
);

Paramètres

[in] pStm

Pointeur IStream vers le flux dans lequel l’objet doit être enregistré.

[in] fClearDirty

Indique s'il faut effacer l'indicateur de changement à la fin de l'enregistrement. Si la valeur est TRUE, l’indicateur doit être effacé. Si la valeur est FALSE, l’indicateur doit rester inchangé.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Code de retour Description
S_OK
La commande s'est correctement terminée.
STG_E_CANTSAVE
L’objet n’a pas pu s’enregistrer lui-même dans le flux. Cette erreur peut indiquer, par exemple, que l’objet contient un autre objet qui n’est pas sérialisable dans un flux ou qu’un appel ISequentialStream::Write a retourné STG_E_CANTSAVE.
STG_E_MEDIUMFULL
Impossible d’enregistrer l’objet, car il n’y a plus d’espace sur le périphérique de stockage.

Notes

IPersistStream::Save enregistre un objet dans le flux spécifié et indique si l’objet doit réinitialiser son indicateur de sale.

Le pointeur de recherche est positionné à l’emplacement dans le flux où l’objet doit commencer à écrire ses données. L’objet appelle la méthode ISequentialStream::Write pour écrire ses données.

Lors de la sortie, le pointeur de recherche doit être positionné immédiatement après les données de l’objet. La position du pointeur de recherche n’est pas définie si une erreur est retournée.

Remarques aux appelants

Au lieu d’appeler IPersistStream::Save directement, vous appelez généralement la fonction d’assistance OleSaveToStream qui effectue les opérations suivantes :
  1. Appelle GetClassID pour obtenir le CLSID de l’objet.
  2. Appelle la fonction WriteClassStm pour écrire le CLSID de l’objet dans le flux.
  3. Appelle IPersistStream::Save.
Si vous appelez ces méthodes directement, vous pouvez écrire d’autres données dans le flux après le CLSID avant d’appeler IPersistStream::Save.

L’implémentation fournie par OLE d’IPersistStream suit ce même modèle.

Remarques aux implémenteurs

La méthode IPersistStream::Save n’écrit pas le CLSID dans le flux. L’appelant est responsable de l’écriture du CLSID.

La méthode IPersistStream::Save peut lire, écrire et rechercher dans le flux ; mais il ne doit pas rechercher un emplacement dans le flux avant celui du pointeur de recherche lors de l’entrée.

Remarques sur le moniker d’URL

Enregistre un moniker d’URL dans un flux. Le format binaire du moniker d’URL est sa chaîne d’URL en Unicode (il peut s’agir d’une chaîne d’URL complète ou partielle, voir CreateURLMonikerEx pour plus d’informations). Il s’agit d’un nombre ULONG de caractères suivi de ce nombre de caractères Unicode.

Spécifications

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

Voir aussi

IPersistStream