0

私は、共有フォルダーで発生した変更を検出し (を使用して)、その変更されたファイル/フォルダーReadDirectoryChangesWを呼び出すC++ アプリケーションに取り組んでいます。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);

fStatusNERR_success(0) を返します。ただし、時間の 40 ~ 50%dEntriesReadは 0 です。これは NetFileEnum の既知の問題ですか? 誰が共有リソースにアクセスしているかを知るためのより一貫した方法はありますか?

4

0 に答える 0