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