Я использовал SHGetDesktopFolder(), чтобы получить PIDL, а затем пошел по его содержимому с помощью IShellFolder.Чтение/запись файла в расширении пространства имен оболочки с использованием API-интерфейсов оболочки
У меня теперь есть определенный PIDL, ссылающийся на местоположение файловой системы, и я могу использовать BindToStorage и IStorage для файлов .OpenStream() и .Write().
Это все хорошо и хорошо, если интересные вещи живут в файловой системе, но более интересные вещи живут в «Расширения пространства имен оболочки».
В частности, у меня есть устройство Pocket PC 2002 (конкретно, Symbol PDT8146), подключенное к моей машине с Windows 7 с помощью Windows Mobile Device Center. Это приложение создает папку пространства имен оболочки, которую я могу использовать в проводнике для чтения/записи файлов.
То, что я не могу сделать, это записать файлы в него с помощью командной строки или API win32.
Следуя стратегии, описанной выше, я могу получить экземпляр PIDL и IShellFolder, ссылающийся на устройство, и я могу перечислить его файлы. Однако IShellFolder.BindToStorage() терпит неудачу с «Нет такого интерфейса поддерживается», когда я пытаюсь получить доступ к IStorage.
Есть ли другой интерфейс оболочки, который я должен исследовать для чтения/записи файлов на этом упрямом устройстве?
Я еще не смог проверить это, но даже если бы он работал для существующего файла ввода/вывода, как бы я начал писать новый файл на устройство? –
Я тоже не уверен в этом, мне никогда не нужен доступ на запись. – ssbssa