Поделиться через


Регистрация поставщика High-Performance

Как и другие поставщики экземпляров, вы регистрируете высокопроизводительный поставщик с помощью инструментария управления Microsoft Windows (WMI), создавая экземпляр классов __Win32Provider и __InstanceProviderRegistration . Экземпляр __Win32Provider определяет физическую реализацию поставщика, а экземпляр __InstanceProviderRegistration определяет набор функций поставщика. Дополнительные сведения см. в разделе Регистрация поставщика.

В следующей процедуре описывается, как зарегистрировать поставщик высокопроизводительных экземпляров.

Регистрация поставщика высокопроизводительных экземпляров

  1. Создайте экземпляр класса __Win32Provider , описывающего поставщика.

    Не забудьте добавить свойство ClientLoadableCLSID в экземпляр __Win32Provider . Если поставщик и клиент находятся на одном компьютере, инструментарий WMI загружает поставщик внутри процесса в клиент, используя ClientLoadableCLSID в качестве идентификатора класса. Когда поставщик и клиент находятся на разных компьютерах, инструментарий WMI загружает поставщик внутри процесса в WMI. WMI также использует ClientLoadableCLSID для поддержки операций обновления.

  2. Создайте экземпляр класса __InstanceProviderRegistration , описывающий набор функций поставщика.

    Обязательно пометьте класс с помощью квалификаторов Dynamic и Provider . Динамический квалификатор сообщает, что инструментарий WMI должен использовать поставщик для получения экземпляров класса. Квалификатор поставщика указывает имя поставщика, который должен использовать инструментарий WMI.

    Высокопроизводительный поставщик также должен поддерживать операции, операции перечисления или и то, и другое. Убедитесь, что в реализации используются свойства SupportsGet и SupportsEnumeration .

В следующем примере кода показано, как реализовать классы __Win32Provider и __InstanceProviderRegistration для высокопроизводительного поставщика.

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[];
};

Преобразование поставщика экземпляра в поставщик High-Performance