Condividi tramite


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.

Scrittura di file nel dispositivo