我在使用windows format 9.5 sdk做一支程式进行文件传输的时候,碰到一个问题如下:
当将某个文件夹内的文件传进mtp设备的时候,没办法指定其路径,IWMDMStorageControl2这个函数应该可以有这个功能,但是它有非常多的参数可供选择,我搭配了许多,但始终无法将文件传至mtp设备上指定的文件夹内.
主要是这个函数的参数太多,怎么试都不行.若有谁有这方面的例子或参考资料可否指点一下,多谢了!
在windows media format 9.5 sdk中连IWMDMStorageControl2这个都找不到,真是见鬼了.pIWMDMStorageControl2->Insert2(WMDM_MODE_BLOCK |/*WMDM_STORAGECAP_FILESINFOLDERS |*/WMDM_CONTENT_FOLDER | /*WMDM_CONTENT_FILE |*/WMDM_FILE_CREATE_OVERWRITE,
A2W(string), 
A2W(string1),
NULL, NULL, NULL, 
&pIStorage);
代码如下:
BOOL TransferFile()
{
HRESULT hr;
ULONG ulNum = 1;
ULONG ulNumFetched;
IWMDMEnumStorage* pIEnumStorage, *pIEnumStorageFile;
IWMDMStorage* pIStorage , *pIStorageFile;
ULONG ulNumStorage;
IWMDMStorageControl2* pIWMDMStorageControl2;
///////////////file path ///////////////////////////////////////////////////
CString m_FirmwareFilePath; ////////////////////////////////////////////////////////////////////////// for(int i=2;i<=firmFileNum;i++)
{   
CString  string;
CString  string1;
firmFileName = firmFileNameList.GetAt(i);
string = filePathList[i];
string = "d:\\music\\btcode.txt";
string1 = "hello.txt"; hr = pIDevice->EnumStorage(&pIEnumStorage);
if SUCCEEDED(hr)
{
ulNumStorage = 1;
hr = pIEnumStorage->Next(ulNumStorage, &pIStorage, &ulNumFetched);
if SUCCEEDED(hr) 
{
hr = pIStorage->EnumStorage(&pIEnumStorageFile);
if (SUCCEEDED(hr))
{

hr = pIStorage->QueryInterface(IID_IWMDMStorageControl2, 
(void**)&pIWMDMStorageControl2);           
if SUCCEEDED(hr)
{
USES_CONVERSION;

hr = pIWMDMStorageControl2->Insert2(
WMDM_MODE_BLOCK |/*WMDM_STORAGECAP_FILESINFOLDERS |*/WMDM_CONTENT_FOLDER | /*WMDM_CONTENT_FILE |*/WMDM_FILE_CREATE_OVERWRITE,
A2W(string), 
A2W(string1),
NULL, NULL, NULL, 
&pIStorage);
 }
} }
}
if(FAILED(hr))
{
AfxMessageBox("copy file failed");
return FALSE;
}
}// AfxMessageBox(strCopyFilePath);
return TRUE; 
}