Partager via


IPropertyStorage ::Commit, méthode (propidlbase.h)

La méthode IPropertyStorage ::Commit enregistre les modifications apportées à un objet de stockage de propriété dans l’objet de stockage parent.

Syntaxe

HRESULT Commit(
  [in] DWORD grfCommitFlags
);

Paramètres

[in] grfCommitFlags

Indicateurs qui spécifient les conditions dans lesquelles la validation doit être effectuée. Pour plus d’informations sur des indicateurs spécifiques et leurs significations, consultez la section Remarques.

Valeur retournée

Cette méthode prend en charge la valeur de retour standard E_UNEXPECTED, ainsi que les éléments suivants :

Remarques

Comme IStorage ::Commit, la méthode IPropertyStorage ::Commit garantit que toutes les modifications apportées à un objet de stockage de propriété sont reflétées dans le stockage parent.

En mode direct dans l’implémentation de fichier composé, un appel à cette méthode entraîne le vidage de toutes les modifications apportées actuellement aux mémoires tampons de mémoire dans le flux de propriétés sous-jacent. Dans l’implémentation de fichier composé pour les jeux de propriétés non simples, IStorage ::Commit est également appelé sur l’objet de sous-stockage sous-jacent avec le paramètre grfCommitFlags passé.

En mode transactionné, cette méthode entraîne la répercutée permanente des modifications dans l’image persistante de l’objet de stockage. Les modifications validées doivent avoir été apportées à ce jeu de propriétés depuis son ouverture ou depuis la dernière validation de cette ouverture du jeu de propriétés. La méthode commit publie les modifications apportées au niveau d’un objet au niveau suivant. Bien sûr, cela reste soumis à toute transaction de niveau externe qui peut être présente sur l’objet dans lequel ce jeu de propriétés est contenu. L’autorisation d’écriture doit être spécifiée lorsque le jeu de propriétés est ouvert (via IPropertySetStorage) sur l’ouverture du jeu de propriétés pour que l’opération de validation réussisse.

Si l’opération de validation échoue pour une raison quelconque, l’état de l’objet de stockage de propriété reste tel qu’il était avant la validation.

Cet appel n’a aucun effet sur les propriétés de stockage ou de flux existantes ouvertes à partir de ce stockage de propriétés, mais il les valide.

Les valeurs valides pour le paramètre grfCommitFlags sont répertoriées dans le tableau suivant.

Valeur Signification
STGC_DEFAULT Commits selon la sémantique de transaction habituelle. Le dernier auteur a gagné. Cet indicateur ne peut pas être spécifié avec d’autres valeurs d’indicateur.
STGC_ONLYIFCURRENT Valide les modifications uniquement si le contenu persistant actuel du jeu de propriétés est celui sur lequel les modifications sur le point d’être validées sont basées. Autrement dit, ne valide pas les modifications si le contenu du jeu de propriétés a été modifié par un commit à partir d’une autre ouverture du jeu de propriétés. Le STG_E_NOTCURRENT d’erreur est retourné si la validation échoue pour cette raison.
STGC_OVERWRITE Utile uniquement lors de la validation d’une transaction qui n’a plus de niveau d’imbrication externe de transactions, bien qu’acceptable dans tous les cas.
Note Indique que l’appelant est prêt à risquer une altération des données au détriment d’une diminution de l’utilisation du disque sur le volume de destination. Cet indicateur est potentiellement utile dans les scénarios d’espace disque faible, même s’il doit être utilisé avec précaution.
 
 
NoteL’utilisation de IPropertyStorage ::Commit pour écrire des propriétés dans des fichiers image sur Windows XP ne fonctionne pas. Les formats de fichiers image concernés sont les suivants :
  • .bmp
  • .dib
  • .emf
  • .gif
  • .ico
  • .jfif
  • .jpe
  • .jpeg
  • .jpg
  • .png
  • .Rle
  • .tiff
  • .wmf
En raison d’un bogue dans le gestionnaire de propriétés de fichier image sur Windows XP, l’appel de IPropertyStorage ::Commit ignore en fait toutes les modifications apportées au lieu de les conserver.

Une solution de contournement consiste à

omettez l’appel à IPropertyStorage ::Commit. L’appel de IUnknown ::Release sur le gestionnaire de propriétés de fichier image XP sans appeler IPropertyStorage ::Commit commence par valider implicitement les modifications apportées au fichier. Notez qu’en général, l’appel d’IUnknown ::Release sans appeler au préalable IPropertyStorage ::Commit ignorera toutes les modifications apportées ; cette solution de contournement est spécifique au gestionnaire de propriétés de fichier image sur Windows XP. Notez également que sur les versions ultérieures de Windows, ce composant fonctionne correctement (autrement dit, l’appel de IPropertyStorage ::Commit conserve les modifications et l’appel de IUnknown ::Release sans appeler IPropertyStorage ::Commit les ignore).

 

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 propidlbase.h (inclure Objbase.h, Propidlbase.h)
Bibliothèque Uuid.lib
DLL Ole32.dll

Voir aussi

IPropertyStorage

IPropertyStorage ::ReadMultiple

IStorage ::Commit