Получить информацию о заполнителе - PullRequest
0 голосов
/ 05 марта 2020
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);

Этот файл является заполнителем в Syn cRoot (например, "файл по требованию" onedrive)
Я пытаюсь получить информацию о заполнителе, но этот требуемый дескриптор файла. Тогда я пытаюсь CreateFile, но это нужно скачать файл. Тогда как я могу получить дескриптор файла без загрузки? или простое решение для получения PlaceholderInfo из файла?
Спасибо.

Ответы [ 3 ]

0 голосов
/ 05 марта 2020

Редактировать: после теста с CloudMirror , CreateFile и CfOpenFileWithOplock (все флаги) всегда срабатывает CF_CALLBACK_TYPE_FETCH_DATA (после CfConnectSyncRoot).

Тогда решение только открыть до CfConnectSyn cRoot
или проверить и отменить FETCH_DATA (после CfConnectSyn cRoot)

0 голосов
/ 03 апреля 2020

Попробуйте использовать createfile так:

CreateFile( filepath, 0, FILE_WRITE_DATA | FILE_READ_DATA, nullptr,
                                OPEN_EXISTING,
                                FILE_ATTRIBUTE_NORMAL,
                                nullptr )
0 голосов
/ 05 марта 2020

CfGetPlaceholderInfo() другие функции CfApi ) ожидают HANDLE от CfOpenFileWithOplock(). Подробнее см. API облачного фильтра в MSDN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...