WindowsPortableDevice IPortableDeviceContent::Delete вызывает зависание моего устройства. Как я могу это решить?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 WindowsPortableDevice IPortableDeviceContent::Delete вызывает зависание моего устройства. Как я могу это решить?

Сообщение Anonymous »

Я пытался создать файловый менеджер содержимого моего телефона Android, который был бы оптимизирован под мои нужды. Поскольку API FindFirstFile не мог работать на устройствах MTP, мне пришлось изучить API портативных устройств Windows.
Я встретил множество препятствий, но большинство вещей работало:
  • перечислить устройства и файлы
  • получить свойства файла
  • переименовать файл
  • создать папку
  • copyDeviceFileToPc
  • copyPcFileToDevice
Мое единственное препятствие сейчас удаляет файлы. Я прекрасно следовал образцу MSDN, но все же столкнулся с проблемами. Проблема в том, что когда я пытаюсь удалить файл, файл удаляется, но устройство зависает и перестает отвечать на запросы. В этот момент даже проводник Windows не может получить к нему доступ. Приходится отключать и заново подключать устройство. Однако проводник Windows без проблем удаляет файлы на устройстве.
Это мой код

Код: Выделить всё

typedef const wchar_t *string_t;

bool wpd::Device::deleteFile(string_t file_id)
{
PROPVARIANT file ={};
IPortableDevicePropVariantCollection *filesToDelete = newIPortableDevicePropVariantCollection(); // Calls CoCreateInstance
IPortableDeviceContent *devContentMgr;

file.vt = VT_LPWSTR;
file.pwszVal = (LPWSTR)file_id;
filesToDelete->Add(&file);

// IPortableDevice *dev initialized in constructor
dev->Content(&devContentMgr);

HRESULT hr = devContentMgr->Delete(PORTABLE_DEVICE_DELETE_NO_RECURSION,filesToDelete,NULL);

filesToDelete->Release();
devContentMgr->Release();

return SUCCEEDED(hr);
}
Обратите внимание, что я делаю это в Windows Xp.

Подробнее здесь: https://stackoverflow.com/questions/629 ... -to-hang-h
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»