Применение квалификатора
Как и многие другие методы в формате управляемых объектов (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); };