Поделиться через


Метод IWMDMStorageControl::Insert (mswmdm.h)

Метод Insert помещает содержимое в хранилище на устройстве.

Синтаксис

HRESULT Insert(
  [in]  UINT           fuMode,
  [in]  LPWSTR         pwszFile,
  [in]  IWMDMOperation *pOperation,
  [in]  IWMDMProgress  *pProgress,
  [out] IWMDMStorage   **ppNewObject
);

Параметры

[in] fuMode

Побитовое ИЛИ из следующих значений. В следующей таблице перечислены режимы обработки, которые можно указать в параметре fuMode . Необходимо указать только один из первых двух режимов, ровно один из режимов STORAGECONTROL и ровно один из режимов CONTENT. Если указаны WMDM_MODE_BLOCK и WMDM_MODE_THREAD, используется режим блокировки.

Комбинации Режим Описание
Ровно один из следующих вариантов: WMDM_MODE_BLOCK Операция выполняется с помощью обработки в блочных режимах. Вызов не будет возвращать, пока операция не будет завершена.
WMDM_MODE_THREAD Операция выполняется с помощью обработки в потоковом режиме. Вызов возвращается немедленно, и операция выполняется в фоновом потоке.
Ровно один из следующих вариантов: WMDM_STORAGECONTROL_INSERTBEFORE Объект вставляется перед текущим объектом .
WMDM_STORAGECONTROL_INSERTAFTER Объект вставляется после текущего объекта .
WMDM_STORAGECONTROL_INSERTINTO Объект вставляется в текущий объект . Это будет работать, только если текущий объект является папкой.
Ровно один из следующих вариантов: WMDM_CONTENT_FILE Вставляемое содержимое — это файл.
WMDM_CONTENT_FOLDER Вставляемое содержимое — это папка. Это не приведет к переносу содержимого папки.
WMDM_CONTENT_OPERATIONINTERFACE Вставляемое содержимое является интерфейсом операции. Данные для содержимого должны быть записаны в интерфейс IWMDMOperation , реализованный приложением.
Ноль или более из: WMDM_FILE_CREATE_OVERWRITE Объект заменит текущий объект .
WMDM_MODE_QUERY Выполняется проверка, чтобы определить, может ли операция вставки быть успешной, но вставка не будет выполнена.
WMDM_MODE_PROGRESS Метод должен возвращать уведомления о ходе выполнения через pProgress.
Ноль или одно из следующих: WMDM_MODE_TRANSFER_PROTECTED Вставка находится в защищенном режиме передачи.
WMDM_MODE_TRANSFER_UNPROTECTED Вставка находится в незащищенном режиме передачи.

[in] pwszFile

Указатель на строку с расширенным символом, завершающуюся нулевым значением, указывающую, где найти содержимое для операции вставки. Этот параметр должен иметь значение NULL , если WMDM_CONTENT_OPERATIONINTERFACE указан в fuMode.

[in] pOperation

Необязательный указатель на интерфейс IWMDMOperation для управления передачей содержимого на устройство мультимедиа. Если этот параметр задан, fuMode должен включать флаг WMDM_CONTENT_OPERATIONINTERFACE. Этот параметр должен иметь значение NULL , если в fuMode указан WMDM_CONTENT_FILE или WMDM_CONTENT_FOLDER.

[in] pProgress

Необязательный указатель на интерфейс IWMDMProgress, используемый windows Media диспетчер устройств для передачи отчета о ходе выполнения в приложение. Если используется этот параметр, fuMode должен включать WMDM_MODE_PROGRESS.

[out] ppNewObject

Указатель на интерфейс IWMDMStorage , который будет содержать новое содержимое. Вызывающий объект должен освободить этот интерфейс по завершении работы с ним.

Возвращаемое значение

Метод возвращает HRESULT. Все методы интерфейса в Windows Media диспетчер устройств могут возвращать любой из следующих классов кодов ошибок:

  • Стандартные коды ошибок COM
  • Коды ошибок Windows, преобразованные в значения HRESULT
  • Коды ошибок диспетчер устройств Windows Media
Подробный список возможных кодов ошибок см. в разделе Коды ошибок.

Комментарии

Если устройство поддерживает IWMDMStorageControl3::Insert3, это предпочтительный метод.

Имя и расширение объекта, сохраненного на устройстве, будут совпадать с именем и расширением исходного файла (если pOperation имеет значение NULL).

Если указан флаг WMDM_MODE_THREAD, необходимо получить состояние завершения, вызвав IWMDMProgress2::End2 или IWMDMProgress3::End3. Эти методы гарантируют завершение операции, а также возвращают HRESULT со сведениями об успешном или неудачном выполнении.

Метод Insert не гарантирует, что устройство поддерживает упорядоченную вставку файлов, но он предоставляет флаги WMDM_STORAGECONTROL_INSERTBEFORE и WMDM_STORAGECONTROL_INSERTAFTER, если это так. Если файловая система не поддерживает упорядочение (например, FAT32), WMDM_STORAGECONTROL_INSERTBEFORE и WMDM_STORAGECONTROL_INSERTAFTER просто вставляет новый объект хранилища на том же уровне, что и текущий объект в иерархии файловой системы.

Если приложение использует WMDM_MODE_THREAD и передает параметр pProgress, отличный от NULL, приложение должно убедиться, что объект, которому принадлежит pProgress, не будет уничтожен до завершения операции вставки, так как диспетчер устройств Windows Media будет отправлять уведомления о ходе выполнения в этот объект. Этот объект можно уничтожить только после получения уведомления о завершении. Невыполнение этого действия приведет к нарушениям доступа.

Требования

Требование Значение
Целевая платформа Windows
Header mswmdm.h
Библиотека Mssachlp.lib

См. также раздел

Интерфейс IWMDMStorageControl

IWMDMStorageControl2::Insert2

IWMDMStorageControl3::Insert3

IWMDMStorageControl::Read

Запись файлов на устройство