Registrar um provedor de eventos
Para criar um provedor de eventos do WMI, você deve registrar a instância __Win32Provider que representa seu provedor usando uma instância de __EventProviderRegistration. Como um objeto do COM, seu provedor deve se registrar no sistema operacional e no WMI. O procedimento a seguir pressupõe que você já implementou o processo de registro, conforme descrito em Registrar um provedor.
O procedimento a seguir descreve como registrar um provedor de eventos.
Para registrar um provedor de eventos
Crie uma instância da classe __Win32Provider que descreve o provedor.
Crie uma instância da classe __EventProviderRegistration que descreve o conjunto de recursos do provedor.
A classe __EventProviderRegistration herda muitas propriedades da classe pai __ObjectProviderRegistration. As propriedades locais da classe __EventProviderRegistration são o caminho do objeto para o provedor e uma lista de consultas que descreve os eventos aos quais o provedor dá suporte. Para obter mais informações, confira Consultar o WMI.
Carregue a implementação das classes __Win32Provider e __EventProviderRegistration no repositório do WMI.
O WMI usa sua definição de classe para registrar e acessar seu provedor de eventos. Para obter mais informações, consulte Registrar um provedor.
O exemplo de código a seguir descreve uma implementação de uma classe __Win32Provider e uma classe __EventProviderRegistration.
instance of __Win32Provider as $P
{
ClientLoadableCLSID = NULL;
CLSID = "{AA7828C5-95F9-11d2-BB0D-00C042424242}";
DefaultMachineName = NULL;
ImpersonationLevel = 0;
InitializationReentrancy = 0;
InitializeAsAdminFirst = FALSE;
Name = "FaxEventProvider";
PerLocaleInitialization = FALSE;
PerUserInitialization = FALSE;
Pure = TRUE;
UnloadTimeout = NULL;
};
instance of __EventProviderRegistration
{
Provider = $P;
EventQueryList = {
"SELECT * FROM FaxEvent",
"SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA \"Win32_LogicalDisk\""};
};
A primeira consulta indica que o provedor gera todas as notificações de evento para a classe de evento extrínseca FaxEvent. Como ele usa o operador ISA, a segunda consulta implica que o provedor gera notificações para todos os eventos de criação de instância para a classe Win32_LogicalDisk e todas as suas subclasses.
Quando um provedor se registra para fornecer um evento intrínseco, o evento deve ser aplicado a todas as instâncias de uma classe. Em outras palavras, não é possível escrever uma consulta para fornecer eventos de criação de instância apenas para algumas das unidades de disco que pertencem à classe Win32_LogicalDisk.