Compartilhar via


Função MergeVirtualDisk (virtdisk.h)

Mescla um VHD (disco rígido virtual) filho em uma cadeia de diferenciação com um ou mais discos virtuais pai na cadeia.

Sintaxe

DWORD MergeVirtualDisk(
  [in]           HANDLE                         VirtualDiskHandle,
  [in]           MERGE_VIRTUAL_DISK_FLAG        Flags,
  [in]           PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                   Overlapped
);

Parâmetros

[in] VirtualDiskHandle

Um identificador para o disco virtual aberto, que deve ter sido aberto usando o sinalizador VIRTUAL_DISK_ACCESS_METAOPS . Para obter informações sobre como abrir um disco virtual, consulte a função OpenVirtualDisk .

[in] Flags

Deve ser o valor MERGE_VIRTUAL_DISK_FLAG_NONE da enumeração MERGE_VIRTUAL_DISK_FLAG .

[in] Parameters

Um ponteiro para uma estrutura de MERGE_VIRTUAL_DISK_PARAMETERS válida que contém dados de parâmetro de mesclagem.

[in, optional] Overlapped

Um ponteiro opcional para uma estrutura OVERLAPPED válida se a operação assíncrona for desejada.

Valor retornado

Status da solicitação.

Se a função for bem-sucedida, o valor retornado será ERROR_SUCCESS.

Se a função falhar, o valor retornado será um código de erro. Para obter mais informações, consulte Códigos de erro do sistema.

Comentários

Nota Todas as ocorrências do termo disco nesta seção referem-se a discos virtuais. O termo repositório de backup refere-se ao armazenamento em disco físico em que residem os arquivos ou arquivos de imagem VHD.
 
A função MergeVirtualDisk atualiza todos os blocos de dados em um ou mais discos pai com os blocos de dados do disco filho referenciados pelo parâmetro VirtualDiskHandle . Essa é essencialmente uma operação de cópia.

A mesclagem de um disco exige que os discos afetados sejam desanexados durante a operação.

O chamador deve ter READ|Acesso WRITE ao repositório de backup para os discos afetados.

O RWDepth do disco deve ser maior do que a profundidade de mesclagem especificada pelo OPEN_VIRTUAL_DISK_PARAMETERS.

A mesclagem modifica o disco pai em que está sendo mesclado, portanto, quaisquer outros discos diferentes dependentes desse pai não serão mais válidos.

O disco pai em que está sendo mesclado é alterado para representar os mesmos dados que foram mantidos no disco de diferenciação filho no qual a mesclagem é executada.

Todos os dados pré-existentes no disco pai em que estão sendo mesclados são substituídos.

Se uma operação de mesclagem for interrompida, o disco filho ainda poderá ser utilizável. A função MergeVirtualDisk pode ser executada novamente para concluir a mesclagem.

A profundidade de uma solicitação de mesclagem é o número de arquivos de imagem VHD pai na cadeia de diferenciação a ser mesclada. Por exemplo, se o membro MergeDepth tiver um valor de 1, os blocos de dados do disco de diferenciação especificado serão movidos para seu pai. Se o membro MergeDepth tiver um valor 2 e o pai do disco de diferenciação especificado também for um disco diferente (o que significa que há um terceiro disco na cadeia), os blocos de dados do primeiro e do segundo discos serão movidos para o terceiro disco (com blocos do primeiro disco tendo precedência sobre blocos do segundo durante a operação final).

Após a conclusão, os discos filho afetados não são mais considerados válidos e quaisquer operações futuras neles terão resultados sem suporte. No exemplo anterior, após a conclusão bem-sucedida da mesclagem, o terceiro disco é válido e o primeiro e o segundo não. A função MergeVirtualDisk não excluirá nenhum disco que não seja válido ou executará reconexões automáticas de relação de diferenciação. Isso deve ser feito explicitamente pelo chamador.

Se uma operação de mesclagem for executada em um nó diferente de um disco diferente, será responsabilidade do chamador corrigir as informações pai dos nós filho do disco que está sendo mesclado.

Requisitos

   
Cliente mínimo com suporte Windows 7
Servidor mínimo com suporte Windows Server 2008 R2
Plataforma de Destino Windows
Cabeçalho virtdisk.h
Biblioteca VirtDisk.lib
DLL VirtDisk.dll

Confira também

Sobre o VHD

Referência de VHD