映射网络驱动器的目录变更追踪异常问题求助
映射网络驱动器的目录变更追踪异常问题求助
各位大佬好,我最近碰到一个棘手的问题:我的应用用来追踪目录变更,本地目录下一切正常,但在处理网络映射驱动器时,刚启动追踪就收到了目录变更的事件,可实际上根本没有对这个驱动器做任何操作,完全是虚假触发。
下面是我用到的核心代码片段:
首先是调用ReadDirectoryChangesExW的部分:
BOOL bResult = ReadDirectoryChangesExW(pSettings->m_DirectoryHandle, &pSettings->m_dirChangedBuffer, sizeof(pSettings->m_dirChangedBuffer), pSettings->m_bIsRecursive, pSettings->m_dwNotifyFilter, NULL, &pSettings->m_overlapped, NULL, ReadDirectoryNotifyExtendedInformation);
然后是处理重叠操作结果的部分:
if (!GetOverlappedResult(dirHandle, &(pSettings->m_overlapped), &bytesTransferred, TRUE)) { auto res = GetLastError(); //assert(false); return {}; }
这里有个奇怪的点:不管是本地目录还是网络驱动器,bytesTransferred的值都是0,但网络驱动器会莫名触发变更事件。
另外,打开目录句柄的参数是这样的:
DWORD dwDesiredAccess = FILE_LIST_DIRECTORY; DWORD dwSharedMode = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; DWORD dwCreationDisposition = OPEN_EXISTING;
有没有大佬遇到过类似的问题?或者能指点下可能的原因和解决方向吗?
备注:内容来源于stack exchange,提问作者Ashot
相关产品推荐
相关产品推荐

