SHParseDisplayName абсолютный pidl выходной билд - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь выяснить, как функция «SHParseDisplayName» создает абсолютный pidl для вывода.

Мне абсолютно необходимо контролировать его вывод.

Чтобы понять, что я имею в виду, я делаю два примера:

Выполнение SHParseDisplayName("C:\\Users\\Username\\Onedrive", IntPtr.Zero, out pidl, 0, out psfgaoOut) абсолютной выходной переменной "pidl" состоит из эти pidls (полученные путем выполнения в последовательности SHGetNameFromIDList(pidl, SIGDN.PARENTRELATIVEPARSING, out name) и ILRemoveLastID(pidl), пока я не достигну root):

  1. :: {018D5C66-4533-4307-9B53-224DE2ED1FE6}
  2. Рабочий стол

Выполнение того же для "C: \ Users \ Имя пользователя \ Pictures", результат:

  1. :: {24AD3AD4-A569-4530- 98E1-AB02F9417AA8}
  2. :: {20D04FE0-3AEA-1069-A2D8-08002B30309D}
  3. Рабочий стол

Сначала я подумал, что составлен абсолютный пидл на основе значения «pszParsingName» KNOWNFOLDER_DEFINITION относительной известной папки, поэтому я создал новую известную папку с помощью IKnownFolderManager :: RegisterFolder и установил конкретный путь к папке пространства имен оболочки в « pszParsingName »значение KNOWNFOLDER_DEFINITION.

Unfortuna только абсолютный выход pidl не был ожидаемым. (И я добавил новый известный путь к папке также в разделе реестра «Папки пользователя»)

Поэтому я прошу вашей помощи выяснить, как я могу управлять построением абсолютного вывода pidl «SHParseDisplayName» функция.

Большое спасибо за любую помощь

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