다음을 통해 공유


디바이스에 파일 보내기

필요한 경우 파일이 트랜스코딩되고 형식을 포함한 모든 메타데이터가 설정된 후 애플리케이션에서 파일을 디바이스로 보낼 수 있습니다. 이렇게 하려면 먼저 디바이스의 대상 위치에 대한 IWMDMStorageControl 인터페이스(또는 이후 버전)를 가져와야 합니다. 삽입 플래그는 새 스토리지가 대상의 형제 또는 자식인지 여부를 지정합니다. 대상을 얻은 후에는 IWMDMStorageControl::Insert, IWMDMStorageControl2::Insert2 또는 IWMDMStorageControl3::Insert3 을 호출하여 파일을 전송할 수 있습니다. 애플리케이션은 IWMDMOperation을 구현하여 파일 데이터 자체 읽기를 처리하거나 애플리케이션 구현 IWMDMOperation에 대한 포인터를 제공하지 않음으로써 Insert 메서드가 파일을 자동으로 읽고 전송하도록 허용할 수 있습니다.

다음 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.

디바이스에 파일 쓰기