Enumeración STGC (wtypes.h)

Las constantes de enumeración STGC especifican las condiciones para realizar la operación de confirmación en los métodos IStorage::Commit e 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
Valor: 0
Puede especificar esta condición con STGC_CONSOLIDATE o alguna combinación de las otras tres marcas de esta lista de elementos. Use este valor para aumentar la legibilidad del código.
STGC_OVERWRITE
Valor: 1
La operación de confirmación puede sobrescribir los datos existentes para reducir los requisitos generales de espacio. Este valor no se recomienda para el uso típico porque no es tan sólido como el valor predeterminado. En este caso, es posible que la operación de confirmación produzca un error después de sobrescribir los datos antiguos, pero antes de que se confirmen completamente los nuevos datos. A continuación, ni la versión anterior ni la nueva versión del objeto de almacenamiento se conservarán.





Puede usar este valor en los casos siguientes:


  • El usuario está dispuesto a arriesgarse a perder los datos.

  • La secuencia de guardado de memoria baja se usará para guardar de forma segura el objeto de almacenamiento en un archivo más pequeño.

  • Una confirmación anterior devolvió STG_E_MEDIUMFULL, pero sobrescribir los datos existentes proporcionaría espacio suficiente para confirmar los cambios en el objeto de almacenamiento.


Tenga en cuenta que la operación de confirmación comprueba que existe un espacio adecuado antes de que se produzca cualquier sobrescritura. Por lo tanto, incluso con este valor especificado, si se produce un error en la operación de confirmación debido a los requisitos de espacio, los datos antiguos son seguros. Sin embargo, es posible que se produzca una pérdida de datos con el valor de STGC_OVERWRITE especificado si se produce un error en la operación de confirmación por cualquier motivo distinto de la falta de espacio en disco.
STGC_ONLYIFCURRENT
Valor: 2
Impide que varios usuarios de un objeto de almacenamiento sobrescriban los cambios entre sí. La operación de confirmación solo se produce si no se han producido cambios en el objeto de almacenamiento guardado porque el usuario lo abrió más recientemente. Por lo tanto, la versión guardada del objeto de almacenamiento es la misma versión que el usuario ha estado editando. Si otros usuarios han cambiado el objeto de almacenamiento, se produce un error en la operación de confirmación y devuelve el valor STG_E_NOTCURRENT. Para invalidar este comportamiento, llame de nuevo al método IStorage::Commit o IStream::Commit mediante el valor STGC_DEFAULT .
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
Valor: 4
Confirma los cambios en una caché de disco de escritura subyacente, pero no guarda la memoria caché en el disco. En una caché de disco de escritura subyacente, la operación que escribe en el disco realmente escribe en una caché de disco, lo que aumenta el rendimiento. La memoria caché se escribe finalmente en el disco, pero normalmente no hasta después de que la operación de escritura ya se haya devuelto. El aumento del rendimiento se produce a costa de un mayor riesgo de perder datos si se produce un problema antes de guardar la memoria caché y se pierden los datos de la memoria caché.




Si no especifica este valor, la confirmación de cambios en los objetos de almacenamiento de nivel raíz es sólida incluso si se usa una memoria caché de disco. El proceso de confirmación en dos fases garantiza que los datos se almacenan en el disco y no solo en la memoria caché del disco.
STGC_CONSOLIDATE
Valor: 8
Windows 2000 y Windows XP: indica que un almacenamiento debe consolidarse después de confirmarse, lo que da lugar a un archivo más pequeño en el disco. Esta marca solo es válida en el objeto de almacenamiento más externo que se ha abierto en modo de transacción. No es válido para las secuencias. La marca STGC_CONSOLIDATE se puede combinar con cualquier otra marca STGC.

Comentarios

Puede especificar STGC_DEFAULT o alguna combinación de STGC_OVERWRITE, STGC_ONLYIFCURRENT y STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE para las operaciones de confirmación normales. Puede especificar STGC_CONSOLIDATE con cualquier otra marca STGC.

Normalmente, use STGC_ONLYIFCURRENT para proteger el objeto de almacenamiento en casos en los que más de un usuario pueda editar el objeto simultáneamente.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado wtypes.h

Consulte también

IPropertyStorage

IStorage

Istream