Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'istanza di un blocco WMI contiene i dati forniti da un particolare dispositivo fisico o componente software. Proprio come il GUID di un blocco identifica in modo univoco il blocco, il nome di un'istanza identifica in modo univoco tale istanza di un blocco. Le applicazioni client WMI usano nomi di istanza per associare le informazioni restituite in un blocco di dati al dispositivo o al componente che ha fornito i dati. WMI usa nomi di istanza per determinare a quale dispositivo deve essere inviata una richiesta. È consigliabile che i driver usino il proprio PDO quando si definiscono i nomi di istanza.
Un driver può definire nomi di istanza per un blocco in uno dei due modi seguenti:
Il driver passa un elenco di nomi di istanze statiche a WMI quando registra il blocco.
Dopo la registrazione del blocco, sia il driver che WMI specificano il nome di un'istanza in base al proprio indice in questo elenco. I nomi di istanza statici possono essere basati sull'ID istanza del dispositivo del PDO di un driver o su un nome di base definito dal driver; oppure il driver può definire un elenco di stringhe del nome dell'istanza. I nomi di istanza statici vengono mantenuti fino a quando il driver non li modifica esplicitamente registrando di nuovo il blocco.
Il driver genera nomi di istanza dinamici durante la creazione di istanze.
Il driver indica che genererà nomi di istanza dinamica per un blocco quando registra il blocco. Dopo la registrazione del blocco, sia il driver che WMI passano i nomi di istanza dinamica come stringhe nel buffer in Parameters.WMI.Buffer.
Un driver deve generare nomi di istanza dinamici solo se il numero di istanze o nomi di istanza di un blocco di dati cambia frequentemente in fase di esecuzione. Ad esempio, un driver potrebbe usare gli ID processo o gli indirizzi IP delle connessioni TCP/IP come nomi per l'istanza. Tali nomi di istanza devono essere dinamici; se fossero statici, il driver comporta un notevole sovraccarico perché avrebbe dovuto chiamare IoWMIRegistrationControl per aggiornare il numero e i nomi delle istanze ogni volta che si è verificata una modifica.
Nella maggior parte dei casi, i nomi di istanza statici sono preferibili ai nomi di istanza dinamica per i motivi seguenti:
I nomi di istanza statici migliorano le prestazioni di un driver perché il driver non deve restituire stringhe del nome dell'istanza in risposta alle richieste WMI, come deve fare invece per i nomi di istanza dinamici.
WMI può rilevare conflitti di nomi di istanza statici durante la registrazione e modificare automaticamente i nomi di istanza, se necessario, in modo che tutti i nomi di istanza siano univoci per un determinato blocco indipendentemente dal numero di driver che registrano il blocco.
WMI non è in grado di rilevare conflitti di nomi di istanza per i nomi di istanza dinamici, pertanto il driver è responsabile della generazione di nomi univoci tramite IoWMIAllocateInstanceIds.
Un driver può utilizzare le routine della libreria WMI per gestire gli IRP per un blocco che usa nomi di istanza statici, purché i nomi siano basati sul PDO del driver o su un nome di base definito dal driver.
Un driver non può usare le routine della libreria WMI per gestire gli IRP per un blocco di dati che utilizza nomi di istanza dinamici.
Un driver indica se un blocco utilizza nomi di istanza statici o dinamici e il tipo di nomi di istanza statici impostando o cancellando WMIREG_FLAG_XXX nella struttura WMIREGGUID o WMIGUIDREGINFO passa a WMI quando registra il blocco. Per altre informazioni, vedere Registrazione come provider di dati WMI.