Понимание формата пути объекта WMI - PullRequest
9 голосов
/ 28 сентября 2011

Я хочу написать класс с такой же функциональностью, как класс .NET ManagementPath. На MSDN это набор статей, который обрабатывает формат путей к объектам. Тем не менее, я не понимаю этого пока со всеми частными случаями

  • Сравнения строк, которые имеют дело с путями объекта, всегда нечувствительны к регистру. ==> это также относится к значениям ключей при запросе экземпляров объекта?

  • Шестнадцатеричные константы для целых чисел. ==> где они могут возникнуть? только в значениях ключей?

  • Логические константы для классов с ключами, которые принимают логические значения. ==> Какие константы? правда / ложь? 0/1?

  • Предполагаемый локальный сервер с частичным путем к пространству имен. Таким образом, указание корневого пространства и пространства имен по умолчанию подразумевает корневое пространство и пространство имен по умолчанию на локальном сервере. ==> означает, что only означает, что если я не укажу сервер, то тогда "." используется в качестве сервера?

  • Нет пробелов ни внутри элемента, ни между элементами. ==> почему тогда оригинальная реализация .NET допускает пробелы в именах серверов?

  • Встроенные кавычки в путях к объектам разрешены, но должны разделять кавычки с помощью escape-символов, как в приложении C или C ++. ==> ???

  • Только десятичные значения распознаются как числовые части клавиш. ==> ???

  • Все на этой странице: http://msdn.microsoft.com/en-us/library/aa389223(v=VS.85).aspx ==>?

Ну, основные пути, которые я считаю правильными, выглядят как

\\Server\Namespace
        \Namespace
\\Server\Namespace:Class
        \Namespace:Class
                   Class
\\Server\Namespace:Class.KeyName=KeyValue
        \Namespace:Class.KeyName=KeyValue
                   Class.KeyName=KeyValue
\\Server\Namespace:Class=KeyValue
        \Namespace:Class=KeyValue
                   Class=KeyValue
\\Server\Namespace:Class.FirstKey=FirstValue,SecondKey=SecondValue
        \Namespace:Class.FirstKey=FirstValue,SecondKey=SecondValue
                   Class.FirstKey=FirstValue,SecondKey=SecondValue
\\Server\Namespace:Class=@
        \Namespace:Class=@
                   Class=@
as well as all combinations were the \\ is replaced by a // and/or the 
\ between server and namespace is replaced by /

Я что-нибудь здесь забыл?

Это то, что можно извлечь из MSDN. Однако как могут выглядеть отдельные токены? Вот что я думаю это может быть:

KeyValue = "string"      <-- string
           1             <-- numeric
           0x1           <-- hex
           ??????????    <-- about the "decimal value" thing and 
                             "embedded quitation mark" thing. 
                             Also, what about whitespaces? 
                             do they have to be abreviated by %20?

KeyName / Class / Server
         = string without : or / or \ inside and maybe only [a-z0-9_] ? 

Namespace 
         = string without : or / inside and maybe only [a-z0-9_\]
        (.NET implementation also buggy here. accepts forward slashes regardless of 
          "You cannot use forward slashes within namespace names." on MSDN)
            Also, are they allowed to start with \ and end with a : ?

Было бы очень полезно, если бы для каждого токена было дано регулярное выражение того, как оно выглядит.

1 Ответ

2 голосов
/ 13 октября 2011

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

Если вы хотите проверить соответствие строки регулярному выражению или нет, вы можете использовать tester .

удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...