Condividi tramite


Modello a oggetti VDS

[A partire da Windows 8 e Windows Server 2012, l'interfaccia COM del servizio disco virtuale viene sostituita dall'API 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: 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 chiamano 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 vengono 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 degli oggetti, definiti come

Per altre informazioni sul comportamento di ogni oggetto, selezionare uno degli 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 oggetti

Diversi metodi VDS eliminano o trasformano oggetti VDS. Un chiamante può contenere un riferimento, tramite un puntatore all'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 dell'oggetto, i chiamanti devono evitare di richiamare qualsiasi elemento tranne il metodo IUnknown::Release su queste interfacce. Il provider deve essere abbastanza solido 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 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 nell'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 dell'oggetto provider sono persistenti; i GUID dell'oggetto software e hardware non sono.

     

  • Un'applicazione chiama la funzione CoCreateInstance , passando il caricatore del servizio Clsid come argomento. Con un puntatore all'oggetto 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 trovato nella chiave del Registro di sistema e quindi chiama il metodo IVdsProviderPrivate::OnLoad in ogni provider per inizializzare i programmi.

Informazioni sui dischi rigidi virtuali

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad