NetFileEnum несовместим, иногда не возвращает данных - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю над приложением 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?Есть ли более последовательный способ узнать, кто все имеет доступ к общему ресурсу?

...