Отправка файла на устройство
После перекодировки файла и настройки всех метаданных, включая формат, приложение может отправить файл на устройство. Для этого необходимо сначала получить интерфейс IWMDMStorageControl (или более поздней версии) для целевого расположения на устройстве. Флаги Вставки указывают, должно ли новое хранилище быть одноуровневой или дочерней по отношению к целевому объекту. Получив целевой объект, можно вызвать IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 или IWMDMStorageControl3::Insert3 , чтобы передать файл. Приложение может обрабатывать чтение файловых данных путем реализации IWMDMOperation или позволяет методу Insert автоматически считывать и передавать файл, не предоставляя указатель на IWMDMOperation, реализованный приложением.
Следующий код C++ демонстрирует вызов Insert3 для записи файла на устройство. Если указатель pOperation, передаваемый в Insert3, имеет значение NULL, файл будет отправлен за один шаг; Если этот указатель является допустимым указателем интерфейса, диспетчер устройств Windows Media вызовет метод обратного вызова для получения данных блоками. Дополнительные сведения о реализации IWMDMOperation см. в разделе Обработка передачи файлов вручную.
// Set the flags for the operation
UINT flags = WMDM_MODE_BLOCK | // Synchronous call.
WMDM_STORAGECONTROL_INSERTINTO | // Insert it into the destination folder.
WMDM_CONTENT_FILE | // We're inserting a file.
WMDM_FILE_CREATE_OVERWRITE; // Overwrite existing files.
if (pOperation != NULL)
flags |= WMDM_CONTENT_OPERATIONINTERFACE;
// Send the file and metadata.
hr = pStgCtl3->Insert3(
flags,
WMDM_FILE_ATTR_FOLDER, // The current storage is a folder.
const_cast<WCHAR*>(pwszFileName), // Source file.
L"My New File.wma",//NULL, // Destination file name.
pOperation, // NULL to allow the SDK to read the file;
// non-NULL to present raw data bytes to the SDK.
pProgress, // Interface to send simple progress notifications.
pMetadata, // IWMDMMetaData interface previously created and filled.
NULL,
&pNewStorage); // Out: handle to the new storage, if the method succeeds.
Связанные темы