下面是从PC到MTP设备的拷贝代码:
BOOL CStMtpDevice::CopyFileToMTPDevice(IWMDMDevice *pWmdmDeviceMTP)
{ HRESULT hrMTP;
IWMDMStorageControl2* pIWMDMStorageControl2=NULL;
IWMDMStorage* pIStorage; //*pIStorageFile
//IWMDMStorageControl* pIWMDMStorageControl=NULL;
IWMDMEnumStorage* pIEnumStorage, *pIEnumStorageFile; ULONG ulNumStorage,ulNumFetched;
pIStorage =NULL;
pIEnumStorage=NULL;
pIEnumStorageFile=NULL;
hrMTP = pWmdmDeviceMTP->EnumStorage(&pIEnumStorage);
if SUCCEEDED(hrMTP)
{
ulNumStorage = 1;
hrMTP = pIEnumStorage->Next(ulNumStorage, &pIStorage, &ulNumFetched);
if SUCCEEDED(hrMTP)
{
hrMTP = pIStorage->EnumStorage(&pIEnumStorageFile);
if SUCCEEDED(hrMTP)
{
hrMTP = pIStorage->QueryInterface(IID_IWMDMStorageControl2,
(void**)&pIWMDMStorageControl2);
if SUCCEEDED(hrMTP)
{
LPWSTR strScrFile=L"C:\\PERSIST.BIN";//L"PERSIST.BIN";//
LPWSTR strDestFile=L"PERSIST.BIN";//L"C:\\PERSIST.BIN";// hrMTP = pIWMDMStorageControl2->Insert2(
WMDM_MODE_BLOCK|WMDM_CONTENT_FILE|WMDM_CONTENT_FOLDER|WMDM_FILE_CREATE_OVERWRITE,
strScrFile,
strDestFile,
NULL, NULL, NULL,
NULL);
if (hrMTP==S_OK)
{
MessageBox(NULL,"It is successed","Insert2",MB_OK);
return TRUE;
}
}
}
}
}
return FALSE;
} 现要实现:
如何从USB的MTP设备拷贝文件到PC? 把strScrFile 和 strDestFile
调换位置之后 能弹出 MessageBox(NULL,"It is successed","Insert2",MB_OK);
但文件没拷贝到PC里
BOOL CStMtpDevice::CopyFileToMTPDevice(IWMDMDevice *pWmdmDeviceMTP)
{ HRESULT hrMTP;
IWMDMStorageControl2* pIWMDMStorageControl2=NULL;
IWMDMStorage* pIStorage; //*pIStorageFile
//IWMDMStorageControl* pIWMDMStorageControl=NULL;
IWMDMEnumStorage* pIEnumStorage, *pIEnumStorageFile; ULONG ulNumStorage,ulNumFetched;
pIStorage =NULL;
pIEnumStorage=NULL;
pIEnumStorageFile=NULL;
hrMTP = pWmdmDeviceMTP->EnumStorage(&pIEnumStorage);
if SUCCEEDED(hrMTP)
{
ulNumStorage = 1;
hrMTP = pIEnumStorage->Next(ulNumStorage, &pIStorage, &ulNumFetched);
if SUCCEEDED(hrMTP)
{
hrMTP = pIStorage->EnumStorage(&pIEnumStorageFile);
if SUCCEEDED(hrMTP)
{
hrMTP = pIStorage->QueryInterface(IID_IWMDMStorageControl2,
(void**)&pIWMDMStorageControl2);
if SUCCEEDED(hrMTP)
{
LPWSTR strScrFile=L"C:\\PERSIST.BIN";//L"PERSIST.BIN";//
LPWSTR strDestFile=L"PERSIST.BIN";//L"C:\\PERSIST.BIN";// hrMTP = pIWMDMStorageControl2->Insert2(
WMDM_MODE_BLOCK|WMDM_CONTENT_FILE|WMDM_CONTENT_FOLDER|WMDM_FILE_CREATE_OVERWRITE,
strScrFile,
strDestFile,
NULL, NULL, NULL,
NULL);
if (hrMTP==S_OK)
{
MessageBox(NULL,"It is successed","Insert2",MB_OK);
return TRUE;
}
}
}
}
}
return FALSE;
} 现要实现:
如何从USB的MTP设备拷贝文件到PC? 把strScrFile 和 strDestFile
调换位置之后 能弹出 MessageBox(NULL,"It is successed","Insert2",MB_OK);
但文件没拷贝到PC里
参数会比较费解:
LPWSTR pwszFilename 指定的是输出文件
输入文件的指定 是在pIWMDMStorageControl2,需要绑定到device上指定文件的IWMDMStorage3* 指针上面。
可以 下载源码MTPAxe看看