Прежде чем перейти к сути, я дам вам обзор того, что я хочу сделать. Потому что я не знаю, является ли использование атрибутов файловой системы Windows правильным вариантом для этого.
У меня есть два компонента в системе. Одним из них является ShellExtension , который помещает OverlayIcon при выполнении какого-либо условия, а другим компонентом является драйвер файловой системы , который предоставляет информацию для Windows (и, следовательно, для ShellExtension)
Файловая система, используя имя файла, отправляет сетевой запрос к удаленному серверу и , в зависимости от результата этого запроса, должен появиться значок наложения или нет.
Простое решение - повторить запрос со стороны OverlayIcon, но это нежелательно. На стороне файловой системы у меня есть результат запроса, но мне нужно отправить его на оверлей.
Первым решением, которое мне пришло в голову, было использование атрибутов Windows FileSystem. Я имею в виду, что в драйвере файловой системы я добавлю явно неиспользуемый атрибут (например, 0x1000000 , который, как представляется, не используется в соответствии с MSDN), и восстановлю эту информацию в OverlayIcon, учитывая, что проводник отправляет в расширение оболочки атрибут файла в качестве параметра « IsMemberOf ». То есть использует атрибуты файлов Windows для кодификации информации со стороны файловой системы на сторону ShellExtension.
Это решение не работает, кажется, что в некоторой части потока этот атрибут удален. Это имеет смысл, потому что этот атрибут оказывается недействительным. Если я заменю значение атрибута на такое, как HIDDEN, оно будет отлично работать.
Очевидное решение (но у него есть над чем поработать) - это использовать некоторый механизм IPC.
Но так как я нахожусь по обе стороны игры, было бы лучше, если бы я мог использовать информацию о файловой системе Windows.
Что вы предлагаете?
Спасибо!