Применение квалификатора

Как и многие другие методы в формате управляемых объектов (MOF), применение квалификатора к коду является относительно простым процессом.

Единственными реальными проблемами являются следующие ограничения в соглашениях об именовании, которые применяет WMI:

  • Квалификатор может описать класс, экземпляр, свойство, метод или параметр метода.

  • Имена квалификатора не могут иметь начальные или конечные знаки подчеркивания.

  • Имя квалификатора не может начинаться с цифры.

  • Имя квалификатора не может содержать специальные символы, такие как & * @ ! ~ \ /.

  • Все имена квалификатора являются нечувствительными к регистру.

  • Нельзя переопределить стандартные квалификаторы WMI или любые квалификаторы, описанные в спецификации DMTF CIM.

  • Типы квалификатора не объявляются явно.

    Если тип квалификатора не объявлен, WMI предполагает тип как логический с значением TRUE. В противном случае квалификаторы типов WMI основаны на объявленных значениях квалификатора.

  • При создании собственных квалификаторов необходимо префиксировать имя схемы в имя квалификатора.

    Цель этого правила заключается в том, чтобы избежать путаницы с новыми квалификаторами.

  • Можно создать однородные массивы квалификаторов.

    В следующем примере кода показано, как массивы квалификатора указываются с фигурными скобками, окружающими значения.

    [StringArray{"hello", "there"}, SingleElementArray{3}]
    
  • WMI не поддерживает типы автоматизации, не перечисленные в справочнике, например VT_NULL. Дополнительные сведения см. в разделе "Типы данных MOF".

Следующая процедура помогает использовать C++ для добавления квалификатора в свойство.

Применение квалификатора с помощью C++

  • Примените квалификатор с вызовом метода IWbemQualifierSet::P ut .

    Вы можете использовать другие методы IWbemQualifierSet для извлечения или удаления существующих квалификаторов.

Следующая процедура помогает применить квалификатор в MOF-файлах.

Описание ключевое слово или идентификатора с квалификатором с помощью MOF

  • Поместите квалификатор в скобки перед ключевое слово или идентификатором, описанным квалификатором.

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

    [qualifiers...]
    class StdDisk
    {
      [qualifiers...]  uint32 dwNumCylinders;
      [qualifiers...]  uint32 dwNumHeads;
      [qualifiers...]  sint32 Method1();
      sint32 Method2([qualifiers...] Parameter1);
    };
    

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

    [Abstract]
    class MyClass
    {
        [Amendment, InstanceOf]  uint32 dwNumber;
        sint32 MyMethod ([in] sint32 Param);
    };