Compartilhar via


Método IVdsVolume::SetFlags (vds.h)

[Começando com Windows 8 e Windows Server 2012, a interface COM do Serviço de Disco Virtual é substituída pela API de Gerenciamento de Armazenamento do Windows.]

Define os sinalizadores de volume.

Sintaxe

HRESULT SetFlags(
  [in] ULONG ulFlags,
  [in] BOOL  bRevertOnClose
);

Parâmetros

[in] ulFlags

Os sinalizadores enumerados por VDS_VOLUME_FLAG. Os chamadores podem definir os seguintes sinalizadores:

  • VDS_VF_LBN_REMAP_ENABLED
  • VDS_VF_HIDDEN
  • VDS_VF_READONLY
  • VDS_VF_NO_DEFAULT_DRIVE_LETTER
  • VDS_VF_INSTALLABLE
  • VDS_VF_SHADOW_COPY

[in] bRevertOnClose

Se TRUE, os sinalizadores serão temporariamente definidos. O VDS redefine cada sinalizador para o estado anterior quando o chamador libera a última referência ao objeto de volume, chama IVdsVolume::ClearFlags ou desmonta o volume, exceto quando o sinalizador é definido em todo o disco (consulte a tabela na seção Comentários para obter detalhes). Quando o sinalizador é definido em todo o disco, o método IVdsVolume::ClearFlags deve ser chamado para redefinir os sinalizadores.

Retornar valor

Esse método pode retornar valores HRESULT padrão, como E_INVALIDARG ou E_OUTOFMEMORY, e valores retornados específicos do VDS. Ele também pode retornar códigos de erro do sistema convertidos usando a macro HRESULT_FROM_WIN32 . Os erros podem se originar do próprio VDS ou do provedor de VDS subjacente que está sendo usado. Os possíveis valores retornados incluem o seguinte.

Valor/código retornado Descrição
S_OK
Os sinalizadores estão definidos.
VDS_E_LBN_REMAP_ENABLED_FLAG
0x80042456L
O provedor não dá suporte ao sinalizador de volume VDS_VF_LBN REMAP_ENABLED .
VDS_E_NO_DRIVELETTER_FLAG
0x80042457L
O provedor não dá suporte ao sinalizador de volume DRIVELETTER VDS_VF_NO .
VDS_E_REVERT_ON_CLOSE
0x80042458L
bRevertOnClose só deverá ser definido como true se o sinalizador de volume VDS_VF_HIDDEN ou VDS_VF_READONLY estiver definido.
VDS_E_REVERT_ON_CLOSE_SET
0x80042459L
Alguns sinalizadores de volume já estão definidos como true. Primeiro, você deve limpar esses sinalizadores e, em seguida, chamar esse método e definir o parâmetro bRevertOnClose como true novamente. O valor retornado VDS_E_INVALID_OPERATION também pode indicar essa condição.

Comentários

Os sinalizadores VDS_VF_READONLY, VDS_VF_HIDDEN e VDS_VF_NO_DEFAULT_DRIVE_LETTER têm escopo diferente dependendo do tipo de disco (básico ou dinâmico) e do estilo de partição (MBR ou GPT). O escopo é baseado em disco ou em volume, conforme descrito pelas seguintes condições:

  • Se o disco for básico e MBR, definir um desses sinalizadores em um volume afetará o volume atual e todos os volumes futuros com o atributo especificado criado no disco.
  • Se o disco for básico e GPT, dinâmico e MBR, ou dinâmico e GPT, definir um dos sinalizadores em um volume se aplicará somente a esse volume específico.
A tabela a seguir identifica o escopo de cada sinalizador de volume em discos básicos MBR, discos básicos gpt e discos dinâmicos MBR ou GPT.
Sinalizador Discos básicos do MBR Discos básicos de GPT Discos dinâmicos MBR ou GPT
VDS_VF_LBN_REMAP_ENABLED Não pode ser definido. Não pode ser definido. Defina no volume, se houver suporte do gerenciador de volumes de terceiros.
VDS_VF_HIDDEN Definido em todo o disco. Definido em volumes (somente partições de dados). Definir em volumes.
VDS_VF_READONLY Definido em todo o disco. Definido em volumes (somente partições de dados). Definir em volumes.
VDS_VF_NO_DEFAULT_DRIVE_LETTER Definido em todo o disco. Definido em partições. Consulte VDS_VOLUME_FLAG.
VDS_VF_SHADOW_COPY Definido em todo o disco. Definido em volumes (somente partições de dados). Definir em volumes.
VDS_VF_INSTALLABLE Não pode ser definido. Não pode ser definido. Definir em volumes.
 

Se bRevertOnClose for TRUE e o disco for um disco básico MBR e o volume for excluído, os sinalizadores ainda serão definidos em todo o disco e os sinalizadores serão aplicados a todos os novos volumes criados no disco. IVdsAdvancedDisk::Clean deve ser usado para limpar os sinalizadores.

Para criar um volume de inicialização em um disco dinâmico, você deve definir o sinalizador VDS_VF_INSTALLABLE para o volume e, em seguida, formatar o volume chamando o método IVdsVolumeMF::Format .

Esse método falhará se o volume contiver um ou mais dos seguintes sinalizadores:

  • VDS_VF_SYSTEM
  • VDS_VF_BOOT
  • VDS_VF_PAGEFILE
  • VDS_VF_HIBERNATION
  • VDS_VF_CRASHDUMP

Especificar VDS_VF_HIDDEN ou VDS_VF_READONLY forçará uma desmontagem e remontagem do volume, a menos que bRevertOnClose seja TRUE.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho vds.h
Biblioteca Uuid.lib

Confira também

IVdsAdvancedDisk::Clean

IVdsVolume

IVdsVolume::ClearFlags

VDS_VOLUME_FLAG