Condividi tramite


Modello a oggetti VDS

[A partire da Windows 8 e Windows Server 2012, l'interfaccia Servizio disco virtuale COM viene sostituita dall'API di gestione archiviazione di Windows .]

VDS fornisce l'accesso indiretto ai dispositivi di archiviazione basati su host, ad esempio dischi e dispositivi CD-ROM, e a matrici di dischi gestiti dai controller RAID hardware. Mentre alcune entità di archiviazione modellano i dispositivi fisici, altri creano costrutti virtuali del modello: volumi, partizioni e così via. Gli oggetti descritti in questo argomento rappresentano sia le entità fisiche che virtuali di VDS.

Le applicazioni chiamano i metodi esposti da questi oggetti e VDS chiama il provider appropriato per eseguire le operazioni di archiviazione richieste. Un'applicazione non chiama mai direttamente un programma provider.

Classificazione degli oggetti

Come illustrato nella figura seguente, i programmi del provider software implementano oggetti che modellano entità basate su host; i programmi del provider hardware implementano oggetti che modellano dispositivi RAID hardware interni ed esterni; gli oggetti comuni rimanenti sono indipendenti dal provider o sono implementati da VDS. Uno spindle, che non è un oggetto VDS, è un termine per supporti di archiviazione generici che comprendono extent di disco o unità.

Diagramma che mostra una classificazione di oggetti, definiti come

Per altre informazioni sul comportamento di ogni oggetto, selezionare gli argomenti seguenti:

Creazione di oggetti

Il completamento delle operazioni di configurazione e query associate alla creazione di oggetti può richiedere molto tempo; di conseguenza, VDS richiama tutti i metodi in modo asincrono. Il provider di individuazione restituisce tutti gli eventi di completamento, errore o modifica dello stato. I provider di software registrano anche tutti gli errori e le modifiche significative dello stato.

Eliminazione di oggetti

Diversi metodi VDS eliminano o trasformano oggetti VDS. Un chiamante può contenere un riferimento, tramite un puntatore di interfaccia, a un oggetto eliminato dopo la restituzione del metodo. Quando il chiamante rilascia l'interfaccia, VDS elimina l'oggetto.

Per quanto riguarda l'eliminazione di oggetti, i chiamanti devono evitare di richiamare qualsiasi cosa tranne il metodo IUnknown::Release su queste interfacce. Il provider deve essere abbastanza affidabile da gestire con i chiamanti erranti; se un chiamante richiama un metodo su un oggetto eliminato, il provider deve restituire VDS_E_OBJECT_DELETED.

Inizializzazione del servizio

VDS fornisce un identificatore di classe (Clsid) per il caricatore del servizio e gli oggetti del servizio, ma solo il caricatore del servizio Clsid è pubblico. L'inizializzazione del servizio si verifica quando i provider, un'applicazione chiamante e il servizio eseguono le attività seguenti:

  • Ogni nuovo provider richiama il metodo IVdsAdmin::RegisterProvider durante l'installazione per la registrazione con VDS. La chiamata crea una chiave del Registro di sistema sotto l'hive SYSTEM, identificata dal GUID dell'oggetto del provider. Contenuto in questa chiave è il Clsid dell'oggetto provider, il nome, la versione e il GUID della versione del provider.

    Nota

    I GUID oggetto provider sono persistenti; i GUID dell'oggetto software e hardware non sono.

     

  • Un'applicazione chiama la funzioneCoCreateInstance, passando il caricatore del servizio Clsid come argomento. Con un puntatore all'oggetto del caricatore del servizio, l'applicazione può avviare VDS in locale o in remoto passando il nome del computer desiderato come parametro al metodo IVdsServiceLoader::LoadService.

  • Quando l'applicazione iniziale si connette al servizio, VDS chiama prima CoCreateInstance in ogni clsid presente nella chiave del Registro di sistema e quindi chiama il metodo IVdsProviderPrivate::OnLoad in ogni provider per inizializzare i programmi.

Informazioni sui VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad