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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование квалификатора в C++

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

    Вы можете использовать другие методы 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);
    };