Compartilhar via


Método IVdsPack::MigrateDisks (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.]

Migra um conjunto de discos de um pacote para outro.

Sintaxe

HRESULT MigrateDisks(
  [in]  VDS_OBJECT_ID *pDiskArray,
  [in]  LONG          lNumberOfDisks,
  [in]  VDS_OBJECT_ID TargetPack,
  [in]  BOOL          bForce,
  [in]  BOOL          bQueryOnly,
  [out] HRESULT       *pResults,
  [out] BOOL          *pbRebootNeeded
);

Parâmetros

[in] pDiskArray

Um ponteiro para uma matriz de GUIDs; um para cada disco.

[in] lNumberOfDisks

O número de discos a serem migrados.

[in] TargetPack

O GUID do objeto pack.

[in] bForce

Se esse parâmetro for definido como TRUE, o VDS ignorará todos os erros desse método e tentará migrar os discos incondicionalmente. Se estiver definido como FALSE, a operação não continuará. Em alguns casos, uma migração forçada pode causar perda de dados.

[in] bQueryOnly

Se esse parâmetro for definido como TRUE, a migração não ocorrerá. Se estiver definido como FALSE, a operação continuará.

[out] pResults

O endereço de uma matriz alocada pelo chamador de valores HRESULT . O número de elementos na matriz é lNumberOfDisks.

Se um disco puder ser migrado ou migrado com êxito, o elemento de matriz correspondente receberá S_OK; caso contrário, ele recebe o código de aviso ou o código de erro que foi retornado pelo provedor. Para obter a lista de códigos de resultado adicionais, consulte Valores retornados.

[out] pbRebootNeeded

Se esse parâmetro for definido como TRUE, você deverá reiniciar o computador para concluir a operação. Se estiver definido como FALSE, a operação será concluída sem reiniciar.

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 ser originados do próprio VDS ou do provedor de VDS subjacente que está sendo usado. Os possíveis valores retornados incluem o seguinte.

Código/valor de retorno Descrição
S_OK
A migração foi concluída com êxito.
S_FALSE
Pelo menos um dos discos não pode ser convertido ou pode ser convertido com aviso.
VDS_E_DISK_NOT_ONLINE
0x8004244BL
Um dos discos não está disponível.
VDS_E_IMPORT_SET_INCOMPLETE
0x80042451L
Foi feita uma tentativa de importar um subconjunto dos discos no pacote externo.
 

Os seguintes avisos e erros podem ser retornados por meio de pResults:

Código/valor de retorno Descrição
VDS_S_BOOT_PARTITION_NUMBER_CHANGE
0x00042436L
O número de partição da partição de inicialização foi alterado como resultado da operação de migração.
VDS_E_NO_FREE_SPACE
0x80042437L
O disco selecionado não tem espaço livre suficiente para concluir a operação.
VDS_E_ACTIVE_PARTITION
0x80042438L
Uma partição ativa foi detectada no disco selecionado e não é a partição ativa usada para inicializar o sistema operacional ativo.
VDS_E_PARTITION_OF_UNKNOWN_TYPE
0x80042439L
As informações de partição não podem ser lidas.
VDS_E_LEGACY_VOLUME_FORMAT
0x8004243AL
Uma partição com um tipo desconhecido foi detectada no disco selecionado.
VDS_E_NON_CONTIGUOUS_DATA_PARTITIONS
0x8004243BL
O disco GPT selecionado contém uma partição de dados não básica, que é precedida e seguida por uma ou mais partições de dados básicas.
VDS_E_MIGRATE_OPEN_VOLUME
0x8004243CL
Um volume no disco selecionado não pode ser aberto.

Comentários

O VDS implementa esse método.

Um único pacote pode ter apenas um disco básico. Dessa forma, você pode migrar apenas um disco por vez entre um pacote básico e dinâmico.

Você deve forçar essa operação ao converter um disco básico em formato de disco dinâmico e o final do disco não tem espaço suficiente para o banco de dados LDM. Defina o parâmetro bForce como true e force a operação, apesar da limitação de espaço. Da mesma forma, se uma partição OEM estiver no meio de um disco MBR com espaço livre ou volumes de dados em ambos os lados.

Depois de migrar discos dinâmicos para um pacote dinâmico, você deve usar o método IVdsPack::GetProperties para determinar se o pacote de origem ou destino agora é o pacote online.

Para obter informações sobre como usar o método MigrateDisks para adicionar discos estrangeiros a um pacote, consulte Adicionando discos estrangeiros a um pacote.

Requisitos

   
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

IVdsPack

IVdsPack::GetProperties