Partager via


Envoi du fichier à l’appareil

Une fois que le fichier a été transcodé si nécessaire et que toutes les métadonnées, y compris le format, ont été définies, votre application peut envoyer le fichier à l’appareil. Pour ce faire, vous devez d’abord obtenir une interface IWMDMStorageControl (ou une version ultérieure) pour un emplacement cible sur l’appareil. Les indicateurs d’insertion spécifient si le nouveau stockage doit être un frère ou un enfant de la cible. Une fois que vous avez obtenu la cible, vous pouvez appeler IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 ou IWMDMStorageControl3::Insert3 pour transférer le fichier. L’application peut gérer la lecture des données de fichier elle-même en implémentant IWMDMOperation, ou elle peut autoriser la méthode Insert à lire et transférer automatiquement le fichier en ne fournissant pas de pointeur vers un IWMDMOperation implémenté par l’application.

Le code C++ suivant illustre l’appel de Insert3 pour écrire un fichier sur un appareil. Si le pointeur pOperation passé à Insert3 a la valeur NULL, le fichier est envoyé en une seule étape ; si ce pointeur est un pointeur d’interface valide, Windows Media Gestionnaire de périphériques appelle votre méthode de rappel pour obtenir des données dans des blocs. Pour plus d’informations sur l’implémentation d’IWMDMOperation, consultez Gestion manuelle des transferts de fichiers.

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

Écriture de fichiers sur l’appareil