Senden der Datei an das Gerät

Nachdem die Datei bei Bedarf transcodiert wurde und alle Metadaten einschließlich des Formats festgelegt wurden, kann Ihre Anwendung die Datei an das Gerät senden. Dazu müssen Sie zunächst eine IWMDMStorageControl-Schnittstelle (oder eine höhere Version) für einen Zielspeicherort auf dem Gerät abrufen. Die Flags Einfügen geben an, ob der neue Speicher ein gleichgeordnetes oder untergeordnetes Element des Ziels sein soll. Sobald Sie das Ziel erhalten haben, können Sie IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 oder IWMDMStorageControl3::Insert3 aufrufen, um die Datei zu übertragen. Die Anwendung kann das Lesen der Dateidaten selbst verarbeiten, indem sie IWMDMOperation implementiert, oder die Insert-Methode kann die Datei automatisch lesen und übertragen, indem kein Zeiger auf eine von der Anwendung implementierte IWMDMOperation bereitgestellt wird.

Der folgende C++-Code veranschaulicht das Aufrufen von Insert3 , um eine Datei auf ein Gerät zu schreiben. Wenn der an Insert3 übergebene pOperation-ZeigerNULL ist, wird die Datei in einem Schritt gesendet. Wenn dieser Zeiger ein gültiger Schnittstellenzeiger ist, ruft Windows Media Geräte-Manager Ihre Rückrufmethode auf, um Daten in Blöcken abzurufen. Ausführliche Informationen zum Implementieren von IWMDMOperation finden Sie unter Manuelles Behandeln von Dateiübertragungen.

// 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.

Schreiben von Dateien auf das Gerät