获取占位符信息

时间:2020-03-05 07:17:46

标签: c++ winapi

HANDLE hfile = ??
int size = sizeof(CF_PLACEHOLDER_STANDARD_INFO) + fileIdentity_MaxLength;
CF_PLACEHOLDER_STANDARD_INFO* standard_info = (CF_PLACEHOLDER_STANDARD_INFO*)new BYTE[size];
DWORD returnlength(0);
HRESULT result = CfGetPlaceholderInfo(
     hfile, 
     CF_PLACEHOLDER_INFO_STANDARD, 
     standard_info, 
     size, 
     &returnlength);

该文件是SyncRoot上的占位符(例如onedrive的“按需文件”)
我尝试获取占位符信息,但是需要文件句柄。然后,我尝试CreateFile,但需要下载文件。那我怎么不用下载就可以处理文件呢?还是从文件中获取PlaceholderInfo的简单解决方案?
谢谢。

2 个答案:

答案 0 :(得分:1)

尝试像这样使用createfile:

CreateFile( filepath, 0, FILE_WRITE_DATA | FILE_READ_DATA, nullptr,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                nullptr )

答案 1 :(得分:0)

CfGetPlaceholderInfo()(和other CfApi functions)期望CfOpenFileWithOplock()中的HANDLE。有关更多详细信息,请参见MSDN上的Cloud Filter API