我在使用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;
}
当将某个文件夹内的文件传进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;
}
建议到专题开发问这个。
谢谢!专题开发栏位在哪儿啊?从没去过.
多谢,找到了.
呆会儿结贴时一并给分.