WMI-Registrierungsflags

Ein Treiber gibt an, ob ein Block statische oder dynamische instance Namen verwendet und andere Merkmale des Blocks angibt, indem er Flags in der WMIGUIDREGINFO- oder WMIREGGUID-Struktur festlegt, die er zum Registrieren des Blocks an WMI übergibt.

Ein Treiber gibt an, dass ein Block statische instance Namen verwendet, indem eines der folgenden Flags festgelegt wird:

  • WMIREG_FLAG_INSTANCE_LIST gibt an, dass der Treiber alle instance Namen in einer statischen Liste bereitstellt.

    Ein Treiber kann dieses Flag nur festlegen, wenn er Blöcke registriert, indem er die IRP_MN_REGINFO oder IRP_MN_REGINFO_EX Anforderungen verarbeitet, nicht durch Aufrufen von WmiSystemControl. Der Treiber schreibt die instance Namenszeichenfolgen an den Byteoffset, der durch InstanceNameList in der WMIREGGUID-Struktur des Blocks angegeben wird.

  • WMIREG_FLAG_INSTANCE_BASENAME weist WMI an, statische instance Namen aus einer vom Treiber definierten Basisnamenzeichenfolge zu generieren.

    Ein Treiber, der eine IRP_MN_REGINFO - oder IRP_MN_REGINFO_EX-Anforderung verarbeitet, schreibt die Basisnamenzeichenfolge an den Offset, der durch BaseNameOffset in der WMIREGGUID-Struktur des Blocks angegeben ist.

    Ein Treiber, der WmiSystemControl aufruft, gibt die Basisnamenzeichenfolge im InstanceName-Parameter seiner DpWmiQueryReginfo-Routine an.

  • WMIREG_FLAG_INSTANCE_PDO weist WMI an, statische instance Namen aus dem Gerät instance ID des PDO des Treibers zu generieren.

    Ein Treiber, der eine IRP_MN_REGINFO - oder IRP_MN_REGINFO_EX-Anforderung verarbeitet, schreibt einen Zeiger auf das PDO-Element derWMIREGGUID-Struktur des Blocks. Wenn die Anforderung IRP_MN_REGINFO_EX ist, muss der Treiber die Verweisanzahl für jede übergebene PDO erhöhen, indem die ObReferenceObject-Routine aufgerufen wird . (Das System wird später jede PDO dereferenzieren.)

    Ein Treiber, der WmiSystemControl aufruft, schreibt einen Zeiger auf die PDO im Pdo-Parameter seiner DpWmiQueryReginfo-Routine .

Um anzugeben, dass ein Block dynamische instance Namen verwendet, darf der Treiber keine der folgenden Flags festlegen: WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_PDO oder WMIREG_FLAG_INSTANCE_BASENAME.

Ein Treiber gibt an, dass die Erfassung eines Datenblocks teuer ist, indem WMIREG_FLAG_EXPENSIVE festgelegt wird. Dadurch wird WMI angewiesen, eine IRP_MN_ENABLE_COLLECTION Anforderung zu senden, wenn ein WMI-Client den Datenblock zum ersten Mal öffnet, und eine IRP_MN_DISABLE_COLLECTION-Anforderung , wenn der letzte WMI-Client den Block schließt. Der Treiber muss keine Daten für einen solchen Block sammeln, bis er eine IRP_MN_ENABLE_COLLECTION-Anforderung empfängt.

Ein Treiber gibt einen Ereignisblock an, indem er WMIREG_FLAG_EVENT_ONLY_GUID festlegt. Dies gibt an, dass der Block nur als Ereignis aktiviert oder deaktiviert werden kann und nicht abgefragt oder festgelegt werden kann.

Ein Treiber weist WMI an, einen zuvor registrierten Block zu entfernen, indem WMIREG_FLAG_REMOVE_GUID festgelegt wird. Dieses Flag ist nur als Reaktion auf eine Anforderung zum Aktualisieren von Registrierungsinformationen gültig (IRP_MN_REGINFO oder IRP_MN_REGINFO_EX mit WMIUPDATE). Weitere Informationen finden Sie unter Aktualisieren von WMI-Registrierungsinformationen.