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.
[in] lNumberOfDisks
Número de elementos na matriz apontada pelo parâmetro pInputDiskArray .
[in] ulStripeSize
Tamanho da faixa, em bytes, do novo volume.
[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 |
---|---|
|
O volume foi criado com êxito. |
|
Nenhuma notificação de chegada do volume foi recebida. Talvez seja necessário chamar IVdsService::Refresh. |
|
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). |
|
O alinhamento especificado é zero. |
|
O alinhamento especificado não é uma potência de dois. |
|
Os discos especificados não pertencem ao mesmo pacote. |
|
O serviço LDM falhou em um método . |
|
O tamanho da extensão passada é muito pequeno. |
|
O número de discos especificados não é válido para esta operação. |
|
A contagem de membros para o volume deve ser maior que zero. |
|
Os índices de membro devem estar aumentando monotonicamente e começar com zero. |
|
O disco passado é um dispositivo CD-ROM ou DVD. |
|
Essa operação não é permitida neste pacote de discos. |
|
A contagem de plex para o volume deve ser maior que zero. |
|
Os índices plex devem estar aumentando monotonicamente e começar com zero. |
|
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. |
|
O disco especificado está ausente. |
|
Não há mídia em uma unidade removível passada pela matriz de disco. |
|
Não há espaço suficiente em um dos discos. |
|
Não há suporte para o tipo de volume. |
|
Pelo menos um dos discos passados não foi encontrado. |
|
Um único disco não pode contribuir com vários membros ou vários plexes do mesmo volume. |
|
O pacote de destino está inacessível. |
|
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. |
|
O cache do provedor dinâmico está corrompido. |
|
Não são permitidos mais de 32 discos por volume. |
|
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 |