Я предоставляю файлы с разными атрибутами в проектируемой файловой системе.Я делаю это в обратном вызове перечисления, а также для заполнителей:
// GetDirectoryEnumerationCallback()
PRJ_FILE_BASIC_INFO fileBasicInfo = { 0 };
auto file = &holder->files[holder->index];
fileBasicInfo.IsDirectory = file->IsDirectory;
fileBasicInfo.FileSize = file->IsDirectory ? 0 : file->FileSize;
fileBasicInfo.ChangeTime = file->ChangeTime;
fileBasicInfo.CreationTime = file->CreationTime;
fileBasicInfo.FileAttributes = file->FileAttributes;
fileBasicInfo.LastAccessTime = file->LastAccessTime;
fileBasicInfo.LastWriteTime = file->LastWriteTime;
holder->index++;
wprintf(L"Enumerator (0x%08x)\n", fileBasicInfo.FileAttributes);
//FILE_ATTRIBUTE_ARCHIVE
if (holder->searchExpression.empty() || PrjFileNameMatch(file->Name, holder->searchExpression.c_str())) {
hr = PrjFillDirEntryBuffer(file->Name,
&fileBasicInfo,
dirEntryBufferHandle);
break;
}
и
PRJ_PLACEHOLDER_INFO placeholderInfo = {};
placeholderInfo.FileBasicInfo.IsDirectory = file.IsDirectory;
placeholderInfo.FileBasicInfo.FileSize = file.IsDirectory ? 0 : file.FileSize;
placeholderInfo.FileBasicInfo.ChangeTime = file.ChangeTime;
placeholderInfo.FileBasicInfo.CreationTime = file.CreationTime;
placeholderInfo.FileBasicInfo.FileAttributes = file.FileAttributes;
placeholderInfo.FileBasicInfo.LastAccessTime = file.LastAccessTime;
placeholderInfo.FileBasicInfo.LastWriteTime = file.LastWriteTime;
wprintf(L"SendAttribute (0x%08x)\n", placeholderInfo.FileBasicInfo.FileAttributes);
for (size_t i = 0; i < sizeof(file.Hash); i++)
placeholderInfo.VersionInfo.ContentID[i] = wctob(file.Hash[i]);
hr = PrjWritePlaceholderInfo(this->context,
path.c_str(),
&placeholderInfo,
sizeof(placeholderInfo));
Я использую следующие атрибуты 0x00001000
(FILE_ATTRIBUTE_OFFLINE
) и 0x00000080
(FILE_ATTRIBUTE_NORMAL
).Однако, когда я использую Get-ItemProperty
или attrib.exe
, возвращается 0x00000020
(FILE_ATTRIBUTE_ARCHIVE
) или если я еще не открыл файл 0x400020
(FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS
).
Из документацииэто выглядит довольно просто.Но я не понимаю, как это работает.