Compartilhar via


Método IVdsPack2::CreateVolume2 (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.]

Cria um volume em um pacote de disco com um parâmetro de alinhamento opcional.

Sintaxe

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

Parâmetros

[in] type

Valor da enumeração VDS_VOLUME_TYPE que indica o tipo de volume a ser criado.

[in] pInputDiskArray

Matriz de estruturas VDS_INPUT_DISK que indicam os discos nos quais criar o volume.

Nota O tamanho dessa matriz deve ser de 32 objetos ou menos, pois o Windows impõe um limite em que não mais de 32 discos podem ser usados com um único volume.
 

[in] lNumberOfDisks

Número de elementos na matriz apontada pelo parâmetro pInputDiskArray .

[in] ulStripeSize

Tamanho da faixa, em bytes, do novo volume.

Nota O tamanho da faixa deverá ser 65536 se o tipo for VDS_VT_STRIPE ou VDS_VT_PARITY; caso contrário, o tamanho da faixa DEVE ser 0.
 

[in] ulAlign

Número de bytes para alinhamento de volume. Esse parâmetro é opcional e pode ser zero. Se zero for especificado, o servidor determinará o valor de alinhamento dependendo do tamanho do disco no qual o volume é criado.

Windows 7, Windows Server 2008 R2, Windows Vista e Windows Server 2008: Em um disco básico, o método CreateVolume2 ignora esse parâmetro e a chave do Registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment . Esse é um problema conhecido e está sendo resolvido. Como alternativa, use o método IVdsAdvancedDisk::CreatePartition ou IVdsCreatePartitionEx::CreatePartitionEx para criar partições no disco básico para que elas sejam alinhadas corretamente. Partições dinâmicas e volumes são alinhados usando os valores na seguinte chave do Registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

O alinhamento padrão será de 1 MB se o disco for 4 GB ou maior ou 64 KB se o disco for menor que 4 GB.

[out] ppAsync

Ponteiro para uma interface IVdsAsync que, após a conclusão bem-sucedida, recebe a interface IVdsAsync para monitorar e controlar essa operação. Os chamadores devem liberar a interface recebida quando terminarem de usá-la. Se o método IVdsAsync::Wait for chamado na interface e um valor HRESULT bem-sucedido for retornado, as interfaces retornadas na estrutura VDS_ASYNC_OUTPUT deverão ser liberadas chamando o método IUnknown::Release em cada ponteiro de interface. No entanto, se Wait retornar um valor HRESULT de falha ou se o parâmetro pHrResult de Wait receber um valor HRESULT de falha, os ponteiros de interface na estrutura VDS_ASYNC_OUTPUT serão NULL e não precisarão ser liberados. Você pode testar valores HRESULT com êxito ou falha usando as macros SUCCEEDED e FAILED definidas em Winerror.h.

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.

Valor/código retornado Descrição
S_OK
O volume foi criado com êxito.
VDS_S_NO_NOTIFICATION
0x00042517L
Nenhuma notificação de chegada do volume foi recebida. Talvez seja necessário chamar IVdsService::Refresh.
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
O volume foi criado com êxito, mas o VDS não conseguiu atualizar as opções de inicialização no repositório BCD (Dados de Configuração de Inicialização).
VDS_E_ALIGN_IS_ZERO
0x80042590L
O alinhamento especificado é zero.
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
O alinhamento especificado não é uma potência de dois.
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
Os discos especificados não pertencem ao mesmo pacote.
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
O serviço LDM falhou em um método .
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
O tamanho da extensão passada é muito pequeno.
VDS_E_INVALID_DISK_COUNT
0x80042526L
O número de discos especificados não é válido para esta operação.
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
A contagem de membros para o volume deve ser maior que zero.
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
Os índices de membro devem estar aumentando monotonicamente e começar com zero.
VDS_E_INVALID_OPERATION
0x80042415L
O disco passado é um dispositivo CD-ROM ou DVD.
VDS_E_INVALID_PACK
0x8004251AL
Essa operação não é permitida neste pacote de discos.
VDS_E_INVALID_PLEX_COUNT
0x80042521L
A contagem de plex para o volume deve ser maior que zero.
VDS_E_INVALID_PLEX_ORDER
0x80042523L
Os índices plex devem estar aumentando monotonicamente e começar com zero.
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
O tamanho da faixa em bytes deve ser uma potência de 2 para tipos de volume distribuídos e RAID-5 e deve ser zero para todos os outros tipos de volume.
VDS_E_MISSING_DISK
0x80042454L
O disco especificado está ausente.
VDS_E_NO_MEDIA
0x80042412L
Não há mídia em uma unidade removível passada pela matriz de disco.
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
Não há espaço suficiente em um dos discos.
VDS_E_NOT_SUPPORTED
0x80042400L
Não há suporte para o tipo de volume.
VDS_E_OBJECT_NOT_FOUND
0x80042405L
Pelo menos um dos discos passados não foi encontrado.
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
Um único disco não pode contribuir com vários membros ou vários plexes do mesmo volume.
VDS_E_PACK_OFFLINE
0x80042444L
O pacote de destino está inacessível.
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
O número máximo de partições (partições primárias ou partições primárias com uma partição estendida) já existe quando o chamador tenta criar uma partição primária adicional ou partição estendida.
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
O cache do provedor dinâmico está corrompido.
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
Não são permitidos mais de 32 discos por volume.
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
O tamanho do volume é muito pequeno.

Requisitos

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

Confira também

IVdsPack2

IVdsPack::CreateVolume