Envío del archivo al dispositivo
Después de transcodificar el archivo si es necesario, y todos los metadatos incluidos el formato se han establecido, la aplicación puede enviar el archivo al dispositivo. Para ello, primero debe obtener una interfaz IWMDMStorageControl (o una versión posterior) para una ubicación de destino en el dispositivo. Las marcas Insert especifican si el nuevo almacenamiento debe ser un elemento relacionado o secundario del destino. Una vez que haya obtenido el destino, puede llamar a IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 o IWMDMStorageControl3::Insert3 para transferir el archivo. La aplicación puede controlar la lectura de los datos de archivo en sí mediante la implementación de IWMDMOperation, o bien puede permitir que el método Insert lea y transfiera el archivo automáticamente no proporcionando un puntero a una IWMDMOperation implementada por la aplicación.
El siguiente código de C++ muestra cómo llamar a Insert3 para escribir un archivo en un dispositivo. Si el puntero pOperation pasado a Insert3 es NULL, el archivo se enviará en un paso; Si este puntero es un puntero de interfaz válido, Windows Media Administrador de dispositivos llamará al método de devolución de llamada para obtener datos en bloques. Para obtener más información sobre cómo implementar IWMDMOperation, consulte Control manual de transferencias de archivos.
// 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.
Temas relacionados