Partilhar via


Registrar um provedor de alto desempenho

Como outros provedores de instância, você registra um provedor de alto desempenho com o WMI (Instrumentação de Gerenciamento do Microsoft Windows) criando uma instância das classes __Win32Provider e __InstanceProviderRegistration . A instância __Win32Provider define a implementação física do provedor e a instância __InstanceProviderRegistration define o conjunto de recursos do provedor. Para obter mais informações, consulte Registrar um provedor.

O procedimento a seguir descreve como registrar um provedor de instância de alto desempenho.

Para registrar um provedor de instância de alto desempenho

  1. Crie uma instância da classe __Win32Provider que descreve o provedor.

    Adicione uma propriedade ClientLoadableCLSID à instância __Win32Provider. Se o provedor e o cliente residirem no mesmo computador, o WMI carrega o provedor em processo no cliente usando ClientLoadableCLSID como identificador de classe. Quando o provedor e o cliente residem em computadores diferentes, o WMI carregará o provedor em processo no próprio WMI. O WMI também usa o ClientLoadableCLSID para dar suporte a operações de atualização.

  2. Crie uma instância da classe __InstanceProviderRegistration que descreve o conjunto de recursos do provedor.

    Certifique-se de marcar a classe com os qualificadores Dynamic e Provider. O qualificador Dynamic sinaliza que o WMI deve usar um provedor para recuperar as instâncias de classe. O qualificador Provider especifica o nome do provedor que o WMI deve usar.

    Um provedor de alto desempenho também precisa declarar suporte a operações, operações de enumeração ou ambas. Use as propriedades SupportsGet e SupportsEnumeration em sua implementação.

O exemplo de código a seguir mostra como implementar as classes __Win32Provider e __InstanceProviderRegistration para um provedor de alto desempenho.

instance of __Win32Provider as $P
{
    Name="TestProv";
    CLSID="{A41602A4-C038-11d1-AEB6-00C04FB68820}";
    ClientLoadableCLSID="{423B32C9-B033-4242-EFB6-55C044242821}";
};

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsGet = TRUE;
    SupportsEnumeration = TRUE;
};

[ dynamic, 
  provider("TestProv")
]

class TestClass
{
    [key] string KeyVal;
    
    string StrVal1;

    sint32 IntVal1;
    sint32 IntVal2;

    sint32 IntArray2[];
};

Transformar um provedor de instância em um provedor de alto desempenho