Partilhar via


Modelo de objeto VDS

[A partir do Windows 8 e do Windows Server 2012, o Virtual Disk Service interface COM é substituído 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 do provedor de software implementam objetos que modelam entidades baseadas em host; programas de provedores 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, definidos como 'Objetos comuns', 'Objetos do provedor de software' e 'Objetos do provedor de hardware'.

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

Criação de objetos

As operações de configuração e consulta associadas à criação de objetos podem levar um tempo considerável para serem concluídas; como tal, 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 fornecedores de software também registam 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, a um objeto excluído depois que o método retorna. Quando o chamador libera a interface, o VDS exclui o objeto.

Com relação à exclusão de objetos, os chamadores devem abster-se 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 do serviço

O VDS fornece um identificador de classe (Clsid) para o carregador de serviço e os objetos de serviço, mas apenas o Clsid do carregador de serviço é 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étodoIVdsAdmin::RegisterProviderdurante a instalação para se registrar no VDS. A chamada cria uma chave do Registro na seção SYSTEM, identificada pelo GUID do objeto do provedor. Contidos sob essa chave está o Clsid do objeto do provedor, o nome, a versão e o GUID da versão do provedor.

    Observação

    Os 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 carregador de serviços Clsid como um argumento. Com um ponteiro para o objeto do carregador de serviços, o aplicativo pode iniciar o VDS local ou remotamente, passando o nome do computador desejado como parâmetro para o métodoIVdsServiceLoader::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 IVdsProviderPrivate::OnLoad método em cada provedor para inicializar os programas.

Sobre o VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad