Creazione di gerarchie all'interno di WMI
namespace WMI è un oggetto di programmazione che definisce l'ambito per un insieme di classi e istanze. Le classi del provider WMI devono essere definite all'interno di uno spazio dei nomi.
Gli spazi dei nomi descrivono ambienti gestiti diversi, ad esempio l'ambiente SMS. Poiché le classi e le istanze di uno schema definiscono i componenti di un ambiente gestito, ogni nuovo schema richiede un nuovo spazio dei nomi. Ad esempio, lo spazio dei nomi root\cimv2 contiene le classi e le istanze definite nello schema Win32, nonché le classi CIM (Common Information Model) padre da cui eredita lo schema Win32. Le classi CIM sono definite dalla Task Force di gestione distribuita (DMTF).
Nota
Per assicurarsi che tutte le definizioni di classe WMI per gli oggetti gestiti vengano ripristinate nel repository WMI in caso di errore e riavvio di WMI, usare l'#pragma'istruzione di salvataggio automatico preprocessore nel file managed object format (MOF).
WMI definisce uno spazio dei nomi come istanza della classe di sistema __Namespace o qualsiasi classe derivata da __Namespace. La classe di sistema __Namespace ha una singola proprietà denominata Name, che deve essere univoca all'interno dell'ambito dello spazio dei nomi padre. La proprietà Name deve contenere anche una stringa che inizia con una lettera. Tutti gli altri caratteri nella stringa possono essere lettere, cifre o caratteri di sottolineatura. Tutti i caratteri sono insensibili alla distinzione tra maiuscole e minuscole.
Oltre a determinare il nome univoco per uno spazio dei nomi figlio, lo spazio dei nomi WMI padre può proteggere le istanze statiche delle tue classi dalle modifiche accidentali da parte di altri provider. Ad esempio, potrebbe essere conveniente annidare un nuovo spazio dei nomi sotto uno spazio dei nomi esistente per un altro provider. Tuttavia, il provider originale potrebbe provare ad aggiornare tutte le istanze di classe in modo che corrispondano a un nuovo schema. Così facendo, il fornitore originale può eliminare tutti i sotto-elementi in un namespace. Anche se può trattarsi di un'azione appropriata per lo spazio dei nomi di destinazione, può influire sulle istanze di classi non correlate in uno spazio dei nomi figlio, ad esempio le classi del proprio provider.
È pertanto consigliabile creare e registrare il proprio spazio dei nomi in modo separato dagli spazi dei nomi che non si controllano direttamente. Ciò vale soprattutto se le classi derivano solo da classi CIM generali o da altre classi dell'azienda. Il tuo spazio dei nomi può trovarsi nello spazio dei nomi radice, ad esempio:
Root/myCompany/myProduct
Al contrario, se la nuova classe deriva dalla classe di un altro provider, potrebbe essere necessario archiviare la classe in uno spazio dei nomi secondario di tale provider. Si noti che questa operazione espone la nuova classe all'eliminazione accidentale dal provider originale.
WMI offre diversi modi per creare un namespace:
- Creare uno spazio dei nomi figlio con codice MOF
- Creazione di uno spazio dei nomi di livello analogo con codice MOF
- Creazione di uno spazio dei nomi con l'API WMI
Argomenti correlati