Énumération STGC (wtypes.h)

Les constantes d’énumération STGC spécifient les conditions d’exécution de l’opération de validation dans les méthodes IStorage ::Commit et IStream ::Commit .

Syntax

typedef enum tagSTGC {
  STGC_DEFAULT = 0,
  STGC_OVERWRITE = 1,
  STGC_ONLYIFCURRENT = 2,
  STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
  STGC_CONSOLIDATE = 8
} STGC;

Constantes

 
STGC_DEFAULT
Valeur : 0
Vous pouvez spécifier cette condition avec STGC_CONSOLIDATE ou une combinaison des trois autres indicateurs dans cette liste d’éléments. Utilisez cette valeur pour augmenter la lisibilité du code.
STGC_OVERWRITE
Valeur : 1
L’opération de validation peut remplacer les données existantes pour réduire les besoins en espace global. Cette valeur n’est pas recommandée pour une utilisation classique, car elle n’est pas aussi robuste que la valeur par défaut. Dans ce cas, il est possible que l’opération de validation échoue après le remplacement des anciennes données, mais avant la validation complète des nouvelles données. Ensuite, ni l’ancienne version ni la nouvelle version de l’objet de stockage ne seront intactes.





Vous pouvez utiliser cette valeur dans les cas suivants :


  • L’utilisateur est prêt à risquer de perdre les données.

  • La séquence d’enregistrement à faible mémoire sera utilisée pour enregistrer en toute sécurité l’objet de stockage dans un fichier plus petit.

  • Une validation précédente a retourné STG_E_MEDIUMFULL, mais le remplacement des données existantes fournirait suffisamment d’espace pour valider les modifications apportées à l’objet de stockage.


N’oubliez pas que l’opération de validation vérifie qu’il existe un espace suffisant avant qu’un remplacement ne se produise. Ainsi, même avec cette valeur spécifiée, si l’opération de validation échoue en raison d’un espace requis, les anciennes données sont sécurisées. Toutefois, il est possible que la perte de données se produise avec la valeur STGC_OVERWRITE spécifiée si l’opération de validation échoue pour une raison autre que le manque d’espace disque.
STGC_ONLYIFCURRENT
Valeur : 2
Empêche plusieurs utilisateurs d’un objet de stockage de remplacer les modifications des autres. L’opération de validation se produit uniquement s’il n’y a eu aucune modification de l’objet de stockage enregistré, car l’utilisateur l’a ouvert récemment. Ainsi, la version enregistrée de l’objet de stockage est la même que celle que l’utilisateur a été modifiée. Si d’autres utilisateurs ont modifié l’objet de stockage, l’opération de validation échoue et retourne la valeur STG_E_NOTCURRENT. Pour remplacer ce comportement, appelez à nouveau la méthode IStorage ::Commit ou IStream ::Commit à l’aide de la valeur STGC_DEFAULT .
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
Valeur : 4
Valide les modifications apportées à un cache de disque en écriture-behind, mais n’enregistre pas le cache sur le disque. Dans un cache de disque en écriture-behind, l’opération qui écrit sur le disque écrit en fait dans un cache de disque, ce qui augmente les performances. Le cache est finalement écrit sur le disque, mais généralement pas avant que l’opération d’écriture ait déjà été retournée. L’augmentation des performances se fait au détriment d’un risque accru de perte de données si un problème se produit avant l’enregistrement du cache et la perte des données dans le cache.




Si vous ne spécifiez pas cette valeur, la validation des modifications apportées aux objets de stockage de niveau racine est robuste, même si un cache de disque est utilisé. Le processus de validation en deux phases garantit que les données sont stockées sur le disque et pas seulement dans le cache du disque.
STGC_CONSOLIDATE
Valeur : 8
Windows 2000 et Windows XP : indique qu’un stockage doit être consolidé après sa validation, ce qui entraîne un fichier plus petit sur le disque. Cet indicateur est valide uniquement sur l’objet de stockage le plus externe qui a été ouvert en mode transactionné. Il n’est pas valide pour les flux. L’indicateur STGC_CONSOLIDATE peut être combiné avec n’importe quel autre indicateur STGC.

Remarques

Vous pouvez spécifier STGC_DEFAULT ou une combinaison de STGC_OVERWRITE, STGC_ONLYIFCURRENT et STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE pour les opérations de validation normales. Vous pouvez spécifier STGC_CONSOLIDATE avec d’autres indicateurs STGC.

En règle générale, utilisez STGC_ONLYIFCURRENT pour protéger l’objet de stockage dans les cas où plusieurs utilisateurs peuvent modifier l’objet simultanément.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
En-tête wtypes.h

Voir aussi

IPropertyStorage

IStorage

IStream