Invio del file al dispositivo
Dopo che il file è stato transcodificato, se necessario, e tutti i metadati inclusi il formato sono stati impostati, l'applicazione può inviare il file al dispositivo. A tale scopo, è prima necessario ottenere un'interfaccia IWMDMStorageControl (o una versione successiva) per una posizione di destinazione nel dispositivo. I flag Inserisci specificano se la nuova risorsa di archiviazione deve essere di pari livello o figlio della destinazione. Dopo aver ottenuto la destinazione, è possibile chiamare IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 o IWMDMStorageControl3::Insert3 per trasferire il file. L'applicazione può gestire la lettura dei dati del file stesso implementando IWMDMOperation oppure può consentire al metodo Insert di leggere e trasferire automaticamente il file non fornendo un puntatore a un IWMDMOperation implementato dall'applicazione.
Il codice C++ seguente illustra la chiamata a Insert3 per scrivere un file in un dispositivo. Se il puntatore pOperation passato a Insert3 è NULL, il file verrà inviato in un unico passaggio; se questo puntatore è un puntatore di interfaccia valido, Windows Media Gestione dispositivi chiamerà il metodo di callback per ottenere i dati in blocchi. Per informazioni dettagliate su come implementare IWMDMOperation, vedere Gestione manuale dei trasferimenti di file.
// 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.
Argomenti correlati