interface IBackgroundCopyFile : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE GetRemoteName(
/* [out] */ LPWSTR* pVal) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLocalName(
/* [out] */ LPWSTR* pVal) = 0;
virtual HRESULT STDMETHODCALLTYPE GetProgress(
/* [out] */ BG_FILE_PROGRESS* pVal) = 0;
};
这个接口继承自 IUnknown 接口,它定义了三个纯虚函数:
1. GetRemoteName: 获取文件的远程名称(下载源的路径或上传目标的路径)。
2. GetLocalName: 获取文件的本地名称(本地存储路径)。
3. GetProgress: 获取文件传输的进度信息。BG_FILE_PROGRESS 结构体包含有关文件传输进度的信息,如已传输字节数、总字节数等。
要使用这个接口,你可以在 IBackgroundCopyCallback 接口的 JobTransferred 方法中获取 IBackgroundCopyFile 实例,并通过调用相关的方法来检索文件信息和传输进度。例如:
HRESULT STDMETHODCALLTYPE JobTransferred(
IBackgroundCopyJob* pJob)
{
IEnumBackgroundCopyFiles* pEnumFiles;
pJob->EnumFiles(&pEnumFiles);
IBackgroundCopyFile* pFile;
ULONG count;
pEnumFiles->Next(1, &pFile, &count);
if (count > 0)
{
LPWSTR pRemoteName, pLocalName;
BG_FILE_PROGRESS fileProgress;
// 获取远程名称
pFile->GetRemoteName(&pRemoteName);
// 获取本地名称
pFile->GetLocalName(&pLocalName);
// 获取传输进度
pFile->GetProgress(&fileProgress);
// 处理文件信息和传输进度
// ...
// 释放资源
CoTaskMemFree(pRemoteName);
CoTaskMemFree(pLocalName);
pFile->Release();
}
pEnumFiles->Release();
return S_OK;
}
这样,你就可以在 JobTransferred 方法中使用 IBackgroundCopyFile 接口来获取文件的信息和传输进度。
转载请注明出处:http://www.zyzy.cn/article/detail/24041/Win32 API/Bits.h/IBackgroundCopyFile