Struttura WMIREGGUIDW (wmistr.h)
La struttura WMIREGGUID contiene informazioni di registrazione nuove o aggiornate per un blocco di dati o un blocco di eventi.
Sintassi
typedef struct {
GUID Guid;
ULONG Flags;
ULONG InstanceCount;
union {
ULONG InstanceNameList;
ULONG BaseNameOffset;
ULONG_PTR Pdo;
ULONG_PTR InstanceInfo;
} DUMMYUNIONNAME;
} WMIREGGUIDW, *PWMIREGGUIDW;
Members
Guid
Specifica il GUID che rappresenta il blocco da registrare o aggiornare.
Flags
Indica le caratteristiche del blocco da registrare o aggiornare.
Se un blocco viene registrato con nomi di istanza statici, un driver imposta uno dei flag seguenti:
WMIREG_FLAG_INSTANCE_LIST
Indica che il driver fornisce nomi di istanza statici per questo blocco in un elenco statico che segue la struttura WMIREGINFO nel buffer in IrpStack-Parameters.WMI.Buffer>. Se questo flag è impostato, InstanceNameList è l'offset in byte dall'inizio della struttura WMIREGINFO che contiene questo WMIREGGUID a una serie contigua di stringhe Unicode con conteggio InstanceCount .
WMIREG_FLAG_INSTANCE_BASENAME
Richiede a WMI di generare nomi di istanze statiche da un nome di base fornito dal driver seguendo la struttura WMIREGINFO nel buffer in IrpStack-Parameters.WMI.Buffer>. WMI genera nomi di istanza aggiungendo un contatore al nome di base. Se questo flag è impostato, BaseNameOffset è l'offset in byte dall'inizio della struttura WMIREGINFO che contiene questo WMIREGGUID a una singola stringa Unicode con conteggiata che funge da nome di base.
WMIREG_FLAG_INSTANCE_PDO
Richiede a WMI di generare nomi di istanza statici dall'ID istanza del dispositivo per il PDO. Se questo flag è impostato, InstanceInfo punta al PDO passato alla routine AddDevice del driver. WMI genera nomi di istanza dal percorso dell'istanza del dispositivo del PDO. L'uso del percorso dell'istanza del dispositivo come base per i nomi di istanze statiche è efficiente perché tali nomi sono sicuramente univoci. WMI fornisce automaticamente un nome "descrittivo" per l'istanza come elemento in un blocco di dati su cui è possibile eseguire query dai consumer di dati.
Se un blocco viene registrato con nomi di istanze dinamiche, WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_BASENAME e WMIREG_FLAG_INSTANCE_PDO devono essere chiari.
Un driver può anche impostare uno o più dei flag seguenti:
WMIREG_FLAG_EVENT_ONLY_GUID
Il blocco può essere abilitato o disabilitato solo come evento e non può essere sottoposto a query o impostato. Se questo flag è deselezionato, è anche possibile eseguire query o impostare il blocco.
WMIREG_FLAG_EXPENSIVE
Richiede a WMI di inviare un IRP_MN_ENABLE_COLLECTION richiedere la prima volta che un consumer di dati apre il blocco di dati e una richiesta di IRP_MN_DISABLE_COLLECTION quando l'ultimo consumer di dati chiude il blocco di dati. Questa operazione è consigliata se la raccolta di tali dati influisce sulle prestazioni, perché un driver non deve raccogliere i dati finché un consumer di dati non lo richiede in modo esplicito aprendo il blocco.
WMIREG_FLAG_REMOVE_GUID
Richiede a WMI di rimuovere il supporto per questo blocco. Questo flag è valido solo in risposta a una richiesta di aggiornamento delle informazioni di registrazione (IRP_MN_REGINFO o IRP_MN_REGINFO_EX con Parameters.WMI.DataPath impostato su WMIUPDATE).
WMIREG_FLAG_TRACED_GUID
Il blocco può essere scritto solo in un file di log e può essere accessibile solo tramite routine in modalità utente dichiarate in evntrace.h. Solo i provider di dati in modalità kernel NT impostano questo flag.
WMIREG_FLAG_TRACE_CONTROL_GUID
Il GUID funge da GUID del controllo per abilitare o disabilitare i GUID di traccia associati nel file MOF. Questo flag è valido solo se è impostato anche WMIREG_FLAG_TRACED_GUID. Solo i provider di dati in modalità kernel NT impostano questo flag.
InstanceCount
Specifica il numero di nomi di istanza statici da definire per questo blocco. Se il blocco viene registrato con nomi di istanze dinamiche, WMI ignora InstanceCount.
DUMMYUNIONNAME
DUMMYUNIONNAME.InstanceNameList
Indica l'offset in byte dall'inizio della struttura WMIREGINFO che contiene questo WMIREGGUID a una serie contigua di stringhe Unicode con conteggio InstanceCount . Questo membro è valido solo se WMIREG_FLAG_INSTANCE_LIST è impostato in Flag. Se il blocco viene registrato con nomi di istanza dinamici, WMI ignora InstanceNameList.
DUMMYUNIONNAME.BaseNameOffset
Indica l'offset in byte dall'inizio della struttura WMIREGINFO che contiene questo WMIREGGUID a una singola stringa Unicode con conteggio che funge da base per WMI per generare nomi di istanza statici. Questo membro è valido solo se WMIREG_FLAG_INSTANCE_BASENAME è impostato in Flag. Se il blocco viene registrato con nomi di istanze dinamiche, WMI ignora BaseNameOffset.
DUMMYUNIONNAME.Pdo
Puntatore all'oggetto dispositivo fisico (PDO) passato alla routine AddDevice del driver. WMI usa il percorso dell'istanza del dispositivo di questo PDO come base da cui generare nomi di istanza statici. Questo membro è valido solo se WMIREG_FLAG_INSTANCE_PDO è impostato in Flag. Se il blocco viene registrato con nomi di istanze dinamiche, WMI ignora Pdo.
DUMMYUNIONNAME.InstanceInfo
Riservato per l'uso da parte di WMI.
Commenti
Un driver compila una o più strutture WMIREGGUID in risposta a una richiesta di IRP_MN_REGINFO o IRP_MN_REGINFO_EX di registrare o aggiornare i blocchi. Il driver passa una matrice di tali strutture nel membro WmiRegGuid di una struttura WMIREGINFO, che il driver scrive nel buffer in IrpStack-Parameters.WMI.Buffer>.
Un driver può registrare o aggiornare un blocco con nomi di istanza statici o dinamici. I nomi delle istanze statiche offrono prestazioni ottimali; Tuttavia, i nomi delle istanze dinamiche sono preferiti per i blocchi di dati se il numero di istanze o i nomi di istanza cambiano frequentemente. Per altre informazioni sui nomi di istanza, vedere Definizione dei nomi di istanza WMI.
Requisiti
Requisito | Valore |
---|---|
Intestazione | wmistr.h (include Wmistr.h) |