Drag&Drop vs NTFS Stream
От: DovydenkoAndrej  
Дата: 05.03.09 10:16
Оценка:
Привет,

Пишу расширение оболчки, столкнулся со следующий проблемой, при перетаскивании объекта из моего приложения в эксплорер нужно создать файл с альтернативным потоком NTFS. В альтернативном потоке храняться метаданные, необходимые для дальнейшей работы приложения.

Drag&Drop реализовал через пару CF_FILEDESCRIPTOR&CF_FILECONTENTS, таким образом я отдаю эксплореру экземпляр IStream из которого тот берёт содержимое файла. Файл создаёться полностью валидный, за исключением отсутсвия в нём альтернативного потока. Точный путь до созданного файла остаётся неизвестным, и поэтому, дописать данные после завершения операции нельзя.

Создать временный файл с потоком и отдавать его эксплореру через CF_HDROP тоже нельзя, файл скачиваеться с удалённого и весьма медленного сервера. Для CF_HDROP операция скачивания должна быть выполнена до начала сброса, чтоб отдать системе имя временноно файла(опятьже не ясно когда его можно будет удалять). С другой стороны пара CF_FILEDESCRIPTOR&CF_FILECONTENTS в этом отношении очень удобна, операция скачивания откладываеться на самый последний момент.

Посоветуйте, как мне сделать создание альтернативного потока NTFS в файле созданном через Drag&Drop?

Андрей
ntfs stream drag&drop shell shellextension istream idataobject
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.