Partager via


Modèle objet VDS

[À compter de Windows 8 et Windows Server 2012, l’interface COM service de disque virtuel est remplacée par l’API de gestion du stockage Windows .]

VDS fournit un accès indirect aux appareils de stockage basés sur l’hôte, tels que les disques et les appareils CD-ROM, ainsi qu’aux tableaux de disques gérés par les contrôleurs RAID matériels. Bien que certaines entités de stockage modélisent des appareils physiques, d’autres modèles de constructions virtuelles : volumes, partitions, etc. Les objets décrits dans cette rubrique représentent les entités physiques et virtuelles de VDS.

Les applications appellent les méthodes exposées par ces objets et VDS appellent le fournisseur approprié pour effectuer les opérations de stockage demandées. Une application n’appelle jamais directement un programme fournisseur.

Classification des objets

Comme l’illustre l’illustration suivante, les programmes de fournisseurs de logiciels implémentent des objets qui modélisent des entités basées sur l’hôte ; les programmes de fournisseur de matériel implémentent des objets qui modélisent des périphériques RAID matériels internes et externes ; les objets communs restants sont indépendants du fournisseur ou sont implémentés par VDS. Un spindle, qui n’est pas un objet VDS, est un terme pour les supports de stockage génériques qui comprennent des étendues de disque ou de lecteur.

Diagramme montrant une classification d’objets, définie comme « Objets communs », « Objets de fournisseur de logiciels » et « Objets de fournisseur de matériel ».

Pour en savoir plus sur le comportement de chaque objet, sélectionnez les rubriques suivantes :

Création d’objets

La configuration et les opérations de requête associées à la création d’objets peuvent prendre beaucoup de temps ; par conséquent, VDS appelle toutes les méthodes de manière asynchrone. Le fournisseur de découverte retourne tous les événements d’achèvement, d’erreur ou de modification d’état. Les fournisseurs de logiciels enregistrent également toutes les erreurs et les changements d’état significatifs.

Suppression d’objets

Plusieurs méthodes VDS suppriment ou transforment des objets VDS. Un appelant peut contenir une référence, par le biais d’un pointeur d’interface, vers un objet supprimé une fois la méthode retournée. Lorsque l’appelant libère l’interface, VDS supprime l’objet.

En ce qui concerne la suppression d’objet, les appelants doivent s’abstenir d’appeler quoi que ce soit à l’exception de la méthode IUnknown ::Release sur ces interfaces. Le fournisseur doit être suffisamment robuste pour traiter les appelants errants ; si un appelant appelle une méthode sur un objet supprimé, le fournisseur doit retourner VDS_E_OBJECT_DELETED.

Initialisation du service

VDS fournit un identificateur de classe (Clsid) pour le chargeur de service et les objets de service, mais seul le clsid du chargeur de service est public. L’initialisation du service se produit lorsque les fournisseurs, une application appelante et le service effectuent les tâches suivantes :

  • Chaque nouveau fournisseur appelle la méthode IVdsAdmin ::RegisterProvider lors de l’installation pour s’inscrire auprès de VDS. L’appel crée une clé de Registre sous la ruche SYSTEM, identifiée par le GUID d’objet du fournisseur. Contenu sous cette clé est le Clsid de l’objet fournisseur, le nom, la version et le GUID de version du fournisseur.

    Note

    Les GUID d’objet fournisseur sont persistants ; les GUID d’objets logiciels et matériels ne sont pas.

     

  • Une application appelle la fonction CoCreateInstance, en passant le Clsid du chargeur de service en tant qu’argument. Avec un pointeur vers l’objet chargeur de service, l’application peut démarrer VDS localement ou à distance en passant le nom d’ordinateur souhaité en tant que paramètre à la méthode IVdsServiceLoader ::LoadService.

  • Lorsque l’application initiale se joint au service, VDS appelle d’abord CoCreateInstance sur chaque Clsid trouvé sous la clé de Registre, puis appelle la méthode IVdsProviderPrivate ::OnLoad sur chaque fournisseur pour initialiser les programmes.

À propos des VDS

IVdsAdmin ::RegisterProvider

IVdsServiceLoader ::LoadService

IVdsProviderPrivate ::OnLoad