Я работаю над приложением C ++, которое обнаруживает изменения, происходящие в общей папке (используя ReadDirectoryChangesW
), и вызывает NetFileEnum
в этом измененном файле / папке.Таким образом, я знаю возможных кандидатов, изменяющих файл / папку.
Согласно NetFileEnum
docs:
Возвращает информацию о некоторых или всех открытых файлах всервер, в зависимости от указанных параметров.
Однако 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?Есть ли более последовательный способ узнать, кто все имеет доступ к общему ресурсу?