我正在使用ReadDirectoryChangesW
来识别文件夹更改。
当我重命名文件夹FILE_ACTION_RENAMED_OLD_NAME
动作被解雇时,我能够获得该文件夹的旧名称。但我希望得到该文件夹的旧名称和新名称。
是否可以直接使用ReadDirectoryChangesW
?
我的C ++代码是
ReadDirectoryChangesW ( hDir, (LPVOID)&strFileNotifyInfo,
sizeof(strFileNotifyInfo),
TRUE,
FILE_NOTIFY_CHANGE_DIR_NAME,
&dwBytesReturned,
NULL,
NULL)
答案 0 :(得分:7)
您可以使用_FILE_NOTIFY_INFORMATION。通过使用FILE_NOTIFY_INFORMATION::NextEntryOffset
成员变量,您也可以获得FILE_ACTION_RENAMED_NEW_VALUE
。
这是一个小代码片段。在你的回调中,
PFILE_NOTIFY_INFORMATION info = NULL;
size_t offset = 0;
do
{
info = reinterpret_cast<PFILE_NOTIFY_INFORMATION>(&buffer[offset]);
offset += info->NextEntryOffset;
if(info->Action == FILE_ACTION_ADDED)
{
}
else if(info->Action == FILE_ACTION_REMOVED)
{
}
else if(info->Action == FILE_ACTION_MODIFIED)
{
}
else if(info->Action == FILE_ACTION_RENAMED_OLD_NAME)
{
//extract old name by using 'info'
}
else if(info->Action == FILE_ACTION_RENAMED_NEW_NAME)
{
//extract new name by using 'info'
}
} while (info->NextEntryOffset != 0);
我希望这对你有所帮助。