Чтение / запись файла в расширении пространства имен оболочки с использованием API-интерфейсов оболочки

Я использовал SHGetDesktopFolder(), чтобы получить PIDL, а затем просмотрел его содержимое с помощью IShellFolder.

Теперь у меня есть конкретный PIDL, ссылающийся на местоположение файловой системы, и я могу использовать BindToStorage и IStorage для.OpenStream() и.Write() файла.

Это все хорошо, если интересные вещи живут в файловой системе, а более интересные - в "Расширениях пространства имен оболочки".

В частности, у меня есть устройство Pocket PC 2002 (в частности, Symbol PDT8146), которое подключено к моей машине с Windows 7 с помощью Центра устройств Windows Mobile. Это приложение создает папку пространства имен оболочки, которую я могу использовать из проводника для чтения / записи файлов в нее.

Чего я не могу сделать, так это записать в него файлы с помощью командной строки или Win32 API.

Следуя стратегии, которую я изложил выше, я могу получить экземпляр PIDL и IShellFolder, ссылающийся на устройство, и могу перечислить его файлы. Однако IShellFolder.BindToStorage() завершается ошибкой с "Нет такого интерфейса поддерживается", когда я пытаюсь получить доступ к IStorage.

Есть ли другой интерфейс оболочки, который я должен исследовать для чтения / записи файлов на этом упрямом устройстве?

1 ответ

Попробуйте IShellFolder.BindToObject:

IStream *stream;
if (FAILED(shellfolder->BindToObject (pidl, NULL, IID_IStream, &stream)))
  return E_FAIL;

Но я не уверен, что это работает и с записью файлов.

Другие вопросы по тегам