Sinalizadores de registro WMI
Um driver indica se um bloco usa nomes de instância estáticos ou dinâmicos e especifica outras características do bloco definindo sinalizadores na estrutura WMIGUIDREGINFO ou WMIREGGUID que ele passa para o WMI para registrar o bloco.
Um driver indica que um bloco usa nomes de instância estáticos definindo um dos seguintes sinalizadores:
WMIREG_FLAG_INSTANCE_LIST indica que o driver fornece todos os nomes de instância em uma lista estática.
Um driver só poderá definir esse sinalizador se registrar blocos manipulando as solicitações de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX , não chamando WmiSystemControl. O driver grava as cadeias de caracteres de nome de instância no deslocamento de bytes indicado por InstanceNameList na estrutura WMIREGGUID do bloco.
WMIREG_FLAG_INSTANCE_BASENAME instrui o WMI a gerar nomes de instância estática de uma cadeia de caracteres de nome base definida pelo driver.
Um driver que manipula uma solicitação de IRP_MN_REGINFO ou IRP_MN_REGINFO_EX grava a cadeia de caracteres de nome base no deslocamento indicado por BaseNameOffset na estrutura WMIREGGUID do bloco.
Um driver que chama WmiSystemControl especifica a cadeia de caracteres de nome base no parâmetro InstanceName de sua rotina DpWmiQueryReginfo .
WMIREG_FLAG_INSTANCE_PDO instrui o WMI a gerar nomes de instância estática da ID da instância do dispositivo do PDO do driver.
Um driver que manipula uma solicitação IRP_MN_REGINFO ou IRP_MN_REGINFO_EX grava um ponteiro para o PDO no membro Pdo da estrutura WMIREGGUID do bloco. Se a solicitação for IRP_MN_REGINFO_EX, o driver deverá aumentar a contagem de referência em cada PDO passado chamando a rotina ObReferenceObject . (O sistema desreferenciará cada PDO posteriormente.)
Um driver que chama WmiSystemControl grava um ponteiro para o PDO no parâmetro Pdo de sua rotina DpWmiQueryReginfo .
Para indicar que um bloco usa nomes de instância dinâmica, o driver não deve definir nenhum dos seguintes sinalizadores: WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_PDO ou WMIREG_FLAG_INSTANCE_BASENAME.
Um driver indica que um bloco de dados é caro de coletar definindo WMIREG_FLAG_EXPENSIVE. Isso instrui o WMI a enviar uma solicitação de IRP_MN_ENABLE_COLLECTION na primeira vez que um cliente WMI abrir o bloco de dados e uma solicitação de IRP_MN_DISABLE_COLLECTION quando o último cliente WMI fechar o bloco. O driver não precisa coletar dados para esse bloco até receber uma solicitação de IRP_MN_ENABLE_COLLECTION .
Um driver indica um bloco de eventos definindo WMIREG_FLAG_EVENT_ONLY_GUID. Isso indica que o bloco pode ser habilitado ou desabilitado apenas como um evento e não pode ser consultado ou definido.
Um driver instrui o WMI a remover um bloco registrado anteriormente definindo WMIREG_FLAG_REMOVE_GUID. Esse sinalizador é válido apenas em resposta a uma solicitação para atualizar informações de registro (IRP_MN_REGINFO ou IRP_MN_REGINFO_EX com WMIUPDATE). Para obter mais informações, consulte Atualizando informações de registro do WMI.