Thu*_*tne 1 c++ winapi visual-c++
我ReadDirectoryChangesW用来识别文件夹更改.当我重命名一个文件夹FILE_ACTION_RENAMED_OLD_NAME动作被解雇时,我能够获得该文件夹的旧名称.但我希望得到该文件夹的旧名称和新名称.可以直接使用 ReadDirectoryChangesW吗?
我的C++代码是
ReadDirectoryChangesW ( hDir, (LPVOID)&strFileNotifyInfo,
sizeof(strFileNotifyInfo),
TRUE,
FILE_NOTIFY_CHANGE_DIR_NAME,
&dwBytesReturned,
NULL,
NULL)
Run Code Online (Sandbox Code Playgroud)
您可以使用_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);
Run Code Online (Sandbox Code Playgroud)
我希望这会对你有所帮助.