Share via


Modelo de objeto VDS

[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.]

O VDS fornece acesso indireto a dispositivos de armazenamento baseados em host, como discos e dispositivos CD-ROM, e a matrizes de disco gerenciadas por controladores RAID de hardware. Enquanto algumas entidades de armazenamento modelam dispositivos físicos, outras modelam construções virtuais: volumes, partições e assim por diante. Os objetos descritos neste tópico representam as entidades físicas e virtuais do VDS.

Os aplicativos chamam os métodos expostos por esses objetos e o VDS chama o provedor apropriado para executar as operações de armazenamento solicitadas. Um aplicativo nunca chama um programa de provedor diretamente.

Classificação de objetos

Como mostra a ilustração a seguir, os programas de provedor de software implementam objetos que modelam entidades baseadas em host; os programas do provedor de hardware implementam objetos que modelam dispositivos RAID de hardware internos e externos; os objetos comuns restantes são independentes do provedor ou são implementados pelo VDS. Um eixo, que não é um objeto VDS, é um termo para mídia de armazenamento genérica que compreende extensões de disco ou unidade.

Diagrama que mostra uma classificação de objetos, definida como 'Objetos comuns', 'Objetos de provedor de software' e 'Objetos de provedor de hardware'.

Para saber mais sobre o comportamento de cada objeto, selecione nos seguintes tópicos:

Criação de objetos

As operações de configuração e consulta associadas à criação de objeto podem levar um tempo considerável para serem concluídas; assim, o VDS invoca todos os métodos de forma assíncrona. O provedor de descoberta retorna todos os eventos de conclusão, erro ou alteração de estado. Os provedores de software também registram todos os erros e alterações significativas de estado.

Exclusão de objeto

Vários métodos VDS excluem ou transformam objetos VDS. Um chamador pode manter uma referência, por meio de um ponteiro de interface, para um objeto excluído após o retorno do método. Quando o chamador libera a interface, o VDS exclui o objeto.

Em relação à exclusão de objeto, os chamadores devem se abster de invocar qualquer coisa, exceto o método IUnknown::Release nessas interfaces. O provedor deve ser robusto o suficiente para lidar com chamadores errantes; se um chamador invocar um método em um objeto excluído, o provedor deverá retornar VDS_E_OBJECT_DELETED.

Inicialização de serviço

O VDS fornece um Clsid (identificador de classe) para o carregador de serviço e os objetos de serviço, mas apenas o carregador de serviço Clsid é público. A inicialização do serviço ocorre quando os provedores, um aplicativo de chamada e o serviço executam as seguintes tarefas:

  • Cada novo provedor invoca o método IVdsAdmin::RegisterProvider durante a instalação para se registrar no VDS. A chamada cria uma chave do Registro no hive SYSTEM, identificado pelo GUID do objeto do provedor. Contido sob essa chave está o Clsid do objeto do provedor, o nome, a versão e o GUID de versão do provedor.

    Observação

    GUIDs de objeto do provedor são persistentes; GUIDs de objeto de software e hardware não são.

     

  • Um aplicativo chama a função CoCreateInstance , passando o clsid do carregador de serviço como um argumento. Com um ponteiro para o objeto carregador de serviço, o aplicativo pode iniciar o VDS local ou remotamente passando o nome do computador desejado como um parâmetro para o método IVdsServiceLoader::LoadService .

  • Quando o aplicativo inicial é anexado ao serviço, o VDS primeiro chama CoCreateInstance em cada Clsid encontrado na chave do Registro e, em seguida, chama o método IVdsProviderPrivate::OnLoad em cada provedor para inicializar os programas.

Sobre VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad