Partilhar via


Registrando um provedor de High-Performance

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 Registrando 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 descrevendo o provedor.

    Certifique-se de adicionar uma propriedade ClientLoadableCLSID à instância __Win32Provider. Se o provedor e o cliente residirem no mesmo computador, o WMI carregará o provedor em processo para o cliente usando ClientLoadableCLSID como o identificador de classe. Quando o provedor e o cliente residem em computadores diferentes, o WMI carrega o provedor em processo para o WMI. O WMI também usa 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 etiquetar a classe com os qualificadores Dinâmico e Provedor. O qualificador Dynamic sinaliza que o WMI deve usar um provedor para recuperar as instâncias de classe. O qualificador Provedor especifica o nome do provedor que o WMI deve usar.

    Um provedor de alto desempenho também precisa declarar suporte para operações, operações de enumeração ou ambas. Certifique-se de usar as propriedades SupportsGet e SupportsEnumeration na 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[];
};

Transformando um provedor de instância em um provedor de High-Performance