2008-08-19 4 views
17

저는 Windows 프로그래밍에 익숙하지 않고 파일 시스템에 대한 모든 변경 사항을 알리려고합니다 (SysInternals의 FileMon이 API를 통해 표시하는 정보와 유사 함). 각 (비 네트워크, 비 substin) 드라이브에 대한 FindFirstChangeNotification이 최선의 선택입니까? 아니면 더 적합한 C/C++ API가 있습니까?FindFirstChangeNotification은 Windows에서 파일 시스템 변경 알림에 사용할 수있는 최상의 API입니까?

답변

22

FindFirstChangeNotification 괜찮지 만, 조금 더 궁극적 인 힘을 위해 당신은 당신이 수동에에게 필요합니까 (, 심지어 설명서에 권장! 사실)

그것은 함수 포인터를 필요로하지 않는다, ReadDirectoryChangesW.를 사용한다 원시 버퍼를 디코드 할 때는 유니 코드 파일 이름을 사용하지만 일반적으로 더 유연합니다.

반면에 FileMon의 기능을 수행하려면 FileMon이 수행하는 작업을 수행하고 IFS to create and install a file system filter을 사용해야합니다.

+0

나는 결국 ReadDirectoryChangesW에 갔고, 자바 코드로 다시 전달할 수있는 형식으로 반환 된 버퍼를 변환하는 방법을 재미있게 배웠지 만, 내가 원하는 것을 확실히 수행한다. –

+0

나는 사고로 downvoted 지금 내가 upvote 수 없습니다 – clyfe

0

다른 방법이 있지만 대부분 사용자의 노력이 필요합니다 (또는 앱에서 성능을 얻거나 스레드를 사용하여 스레드를 차단해야 함 등). FindFirstChangeNotification은 함수 포인터 등을 다루는 데 익숙하지 않은 경우 약간 복잡하지만 OS가 당신을 위해 많은 작업을 수행하는 장점이 있습니다.

-1

FileSystemWatcher 클래스를 사용할 수 있습니다. 매우 효율적이지만 네트워크 공유 드라이브에서는 작동하지 않습니다.

0

사실 FileSystemWatcher는 공유 네트워크 드라이브에서 완벽하게 작동합니다. 지금은 다른 것들 중에서도 파일 시스템을 모니터하여 변경 사항을 모니터하는 응용 프로그램에서 사용하고 있습니다. (www.tabbles.net).