sla8a писал(а):
так лучшеИ так что имеем.
Во первых, символическая ссылка может быть:
- MOUNT_POINT
- SYMLINK
Если глубоко не копать то это одни и те же данные о пути. Вопрос в том нужно ли эта информация в событии.
Во вторых, если ссылка SYMLINK, то в данных есть флаг который говорит о том что содержащийся в ссылки путь:
- (значение 0) полный путь
- (значение 1) путь относительно каталога, содержащего символическую ссылку
У меня ни на одном компьютере нет символической ссылки SYMLINK с значением 1 (см. test_screenshot строки 2,4 колонка FL) . В теории то понятно как она выглядит, но вот хотелось бы протестировать. И опять таки вопрос надо ли выдавать эти данные.
В третьих, символическая ссылка содержит две строки:
-одна строка (от SubstituteNameOffset и длинной SubstituteNameLength ) путь с дополнительными символами \??\ (да возможно и не только с этими символами)
-вторая строка (от PrintNameOffset и длинной PrintNameLength) путь без лишнего
Вот это меня по первому времени и запутало так как они могут идти и не по порядку (см. test_screenshot выделенную строку). Как по мне то достаточно будет PrintName.
На данный момент тестовая схема выдает только PrintName Arg(path). Нужно ли выдавать другие данные? К примеру Arg(Path,SubPath,TypeLink,SubFlag), где Path - PrintName, SubPath - SubstituteName, TypeLink - тип символическая ссылки (скорее всего число) и SubFlag - 0 - полный путь SubstituteName или 1 - относительный.

Архив в первом посте перезалил.