我正在使用一个C ++应用程序,该应用程序检测共享文件夹上发生的更改(使用ReadDirectoryChangesW
),并在该修改后的文件/文件夹上调用NetFileEnum
。这样,我知道可能的候选人修改文件/文件夹。
根据NetFileEnum
文档:
根据指定的参数返回有关服务器上某些或所有打开文件的信息。
但是,NetFileEnum不一致,它并不总是告诉我谁当前正在访问资源。似乎只有50%到60%的时间有效。
更具体地说,假设我修改了\\172.20.30.40\myshare\file.txt
(本地路径:C:\myshare\file.txt
)。
然后使用以下参数调用NetFileEnum
:
fStatus = NetFileEnum(L"\\\\172.20.30.40",
(LPWSTR)szLocalPathStr.c_str(), // C:\\myshare\\file.txt
pszUserName, // NULL
dLevel, // 3
(LPBYTE*)&pFile,
dPrefMaxLen,
&dEntriesRead,
&dTotalEntries,
NULL);
fStatus
返回NERR_success
(0)。但是,在40-50%的时间内,dEntriesRead
为0。这是NetFileEnum的已知问题吗?有没有一种更一致的方式来知道谁都在访问共享资源?