저는 Windows 프로그래밍에 익숙하지 않고 파일 시스템에 대한 모든 변경 사항을 알리려고합니다 (SysInternals의 FileMon이 API를 통해 표시하는 정보와 유사 함). 각 (비 네트워크, 비 substin) 드라이브에 대한 FindFirstChangeNotification이 최선의 선택입니까? 아니면 더 적합한 C/C++ API가 있습니까?FindFirstChangeNotification은 Windows에서 파일 시스템 변경 알림에 사용할 수있는 최상의 API입니까?
17
A
답변
22
FindFirstChangeNotification
괜찮지 만, 조금 더 궁극적 인 힘을 위해 당신은 당신이 수동에에게 필요합니까 (, 심지어 설명서에 권장! 사실)
그것은 함수 포인터를 필요로하지 않는다, ReadDirectoryChangesW.
를 사용한다 원시 버퍼를 디코드 할 때는 유니 코드 파일 이름을 사용하지만 일반적으로 더 유연합니다.
반면에 FileMon의 기능을 수행하려면 FileMon이 수행하는 작업을 수행하고 IFS to create and install a file system filter을 사용해야합니다.
0
다른 방법이 있지만 대부분 사용자의 노력이 필요합니다 (또는 앱에서 성능을 얻거나 스레드를 사용하여 스레드를 차단해야 함 등). FindFirstChangeNotification은 함수 포인터 등을 다루는 데 익숙하지 않은 경우 약간 복잡하지만 OS가 당신을 위해 많은 작업을 수행하는 장점이 있습니다.
-1
FileSystemWatcher 클래스를 사용할 수 있습니다. 매우 효율적이지만 네트워크 공유 드라이브에서는 작동하지 않습니다.
0
사실 FileSystemWatcher는 공유 네트워크 드라이브에서 완벽하게 작동합니다. 지금은 다른 것들 중에서도 파일 시스템을 모니터하여 변경 사항을 모니터하는 응용 프로그램에서 사용하고 있습니다. (www.tabbles.net).
나는 결국 ReadDirectoryChangesW에 갔고, 자바 코드로 다시 전달할 수있는 형식으로 반환 된 버퍼를 변환하는 방법을 재미있게 배웠지 만, 내가 원하는 것을 확실히 수행한다. –
나는 사고로 downvoted 지금 내가 upvote 수 없습니다 – clyfe