Enumeração STGC (wtypes.h)

As constantes de enumeração STGC especificam as condições para executar a operação de confirmação nos 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
Você pode especificar essa condição com STGC_CONSOLIDATE ou alguma combinação dos outros três sinalizadores nesta lista de elementos. Use esse valor para aumentar a legibilidade do código.
STGC_OVERWRITE
Valor: 1
A operação de confirmação pode substituir os dados existentes para reduzir os requisitos gerais de espaço. Esse valor não é recomendado para uso típico porque não é tão robusto quanto o valor padrão. Nesse caso, é possível que a operação de confirmação falhe depois que os dados antigos forem substituídos, mas antes que os novos dados sejam completamente confirmados. Em seguida, nem a versão antiga nem a nova versão do objeto de armazenamento estarão intactas.





Você pode usar esse valor nos seguintes casos:


  • O usuário está disposto a correr o risco de perder os dados.

  • A sequência de salvamento com pouca memória será usada para salvar com segurança o objeto de armazenamento em um arquivo menor.

  • Um commit anterior retornou STG_E_MEDIUMFULL, mas substituir os dados existentes forneceria espaço suficiente para confirmar alterações no objeto de armazenamento.


Lembre-se de que a operação de confirmação verifica se há espaço adequado antes que ocorra qualquer substituição. Portanto, mesmo com esse valor especificado, se a operação de confirmação falhar devido aos requisitos de espaço, os dados antigos serão seguros. No entanto, é possível que a perda de dados ocorra com o valor de STGC_OVERWRITE especificado se a operação de confirmação falhar por qualquer motivo diferente da falta de espaço em disco.
STGC_ONLYIFCURRENT
Valor: 2
Impede que vários usuários de um objeto de armazenamento substituam as alterações uns dos outros. A operação de confirmação ocorrerá somente se não houver alterações no objeto de armazenamento salvo porque o usuário o abriu mais recentemente. Portanto, a versão salva do objeto de armazenamento é a mesma versão que o usuário está editando. Se outros usuários alterarem o objeto de armazenamento, a operação de confirmação falhará e retornará o valor STG_E_NOTCURRENT. Para substituir esse comportamento, chame o método IStorage::Commit ou IStream::Commit novamente usando o valor STGC_DEFAULT .
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
Valor: 4
Confirma as alterações em um cache de disco write-behind, mas não salva o cache no disco. Em um cache de disco write-behind, a operação que grava no disco realmente grava em um cache de disco, aumentando o desempenho. O cache é eventualmente gravado no disco, mas geralmente não até que a operação de gravação já tenha retornado. O aumento de desempenho ocorre às custas de um risco aumentado de perda de dados se ocorrer um problema antes que o cache seja salvo e os dados no cache sejam perdidos.




Se você não especificar esse valor, a confirmação de alterações em objetos de armazenamento no nível raiz será robusta mesmo se um cache de disco for usado. O processo de confirmação em duas fases garante que os dados sejam armazenados no disco e não apenas no cache de disco.
STGC_CONSOLIDATE
Valor: 8
Windows 2000 e Windows XP: indica que um armazenamento deve ser consolidado depois de confirmado, resultando em um arquivo menor no disco. Esse sinalizador é válido somente no objeto de armazenamento mais externo que foi aberto no modo transacionado. Não é válido para fluxos. O sinalizador STGC_CONSOLIDATE pode ser combinado com qualquer outro sinalizador STGC.

Comentários

Você pode especificar STGC_DEFAULT ou alguma combinação de STGC_OVERWRITE, STGC_ONLYIFCURRENT e STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE para operações de confirmação normais. Você pode especificar STGC_CONSOLIDATE com qualquer outro sinalizador STGC.

Normalmente, use STGC_ONLYIFCURRENT para proteger o objeto de armazenamento em casos em que mais de um usuário pode editar o objeto simultaneamente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho wtypes.h

Confira também

IPropertyStorage

IStorage

Istream