將檔案傳送至裝置
視需要轉碼檔案,且已設定格式的所有中繼資料之後,您的應用程式可以將檔案傳送至裝置。 若要這樣做,您必須先取得 IWMDMStorageControl 介面, (或更新版本) 裝置上的目標位置。 Insert旗標會指定新儲存體應該是目標的同層級或子系。 取得目標之後,您可以呼叫 IWMDMStorageControl::Insert、 IWMDMStorageControl2::Insert2或 IWMDMStorageControl3::Insert3 來傳輸檔案。 應用程式可以藉由實作 IWMDMOperation來處理讀取檔案資料本身,也可以允許 Insert 方法自動讀取和傳輸檔案,方法是不提供應用程式實作 IWMDMOperation的指標。
下列 C++ 程式碼示範呼叫 Insert3 以將檔案寫入裝置。 如果傳遞至Insert3的pOperation指標為Null,則會在一個步驟中傳送檔案;如果此指標是有效的介面指標,Windows Media 裝置管理員會呼叫您的回呼方法,以取得區塊中的資料。 如需如何實作 IWMDMOperation的詳細資訊,請參閱 手動處理檔案傳輸。
// 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.
相關主題