私は、共有フォルダーで発生した変更を検出し (を使用して)、その変更されたファイル/フォルダー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);
fStatus
NERR_success
(0) を返します。ただし、時間の 40 ~ 50%dEntriesRead
は 0 です。これは NetFileEnum の既知の問題ですか? 誰が共有リソースにアクセスしているかを知るためのより一貫した方法はありますか?