2009-07-17 5 views
0

this ReadDirectoryChangesW 구현을 사용하여 데스크톱 변경을 모니터링합니다. 내 프로그램은 데스크톱에서 파일을 만들 때 작은 프로그램을 실행할 계획입니다.ReadDirectoryChangesW 바로 가기가 생성 직후에 삭제되고 있다고 생각합니다.

이제는 오른쪽 클릭 컨텍스트 메뉴를 통해 새로운 바로 가기를 만들 때 문제가 발생합니다. ReadDirectoryChangesW는 파일이 만들어 졌음을 알리는 알림을 받지만 파일이 삭제되었다는 다른 알림을받은 직후입니다. Windows Vista 이후로이 문제가 발생했습니다.

누구든지 무엇이 잘못 될 수 있는지 알 수 있습니까? Vista 및 7의 디렉토리 변경 사항을 모니터링하기 위해 사용해야하는 또 다른 기능이 있습니까? 바로 가기 (그리고 필터와 일치하지 않는) 다시되고보고 될 수 있습니다

덕분에, 크리슈나

+0

파일 이름이 추가되고 제거 된 파일 이름은 무엇입니까? –

+0

"New Shortcut.lnk"이 추가되었다고 표시되면 해당 알림을 처리 한 후 New Shortcut.lnk가 제거되었다는 메시지가 나타납니다. –

+0

왜 이것이 문제입니까? 알림이 정확하지 않습니까? –

답변

0

이 문제를 해결할 수있었습니다. 나는 아직도 모든 이상한 ReadDirectyChangesW 이벤트를 얻고있는 이유를 알지 못한다. 그러나 나는이 질문을 떠날 것이므로 나의 최종 결과를 얻었다.

모든 도움에 감사드립니다.

0

는 필터를 정의했습니다.

탐색기는 고정 된 이름으로 항목을 만든 다음 이름을 바꾸는 경향이 있습니다. 따라서 ReadDirectoryChangesW에 여러 변경 사항이 표시됩니다.

추가 생각 :

주, 여러 알림을 포함 할 수있는 변경 통지와 버퍼는, 모든 읽기되고있다.

Process Monitor는 동시에 무엇을 표시합니까?

+0

미안하지만 나는 조금 불분명했다. 바로 가기가 생성되는 것을 볼 수 있지만, 생성되는 바로 가기에 대한 알림을받은 후에 즉시 이해할 수없는 파일이 삭제되었다는 알림이 표시됩니다. 이 구현은 GetQueuedCompletionStatus를 사용하여 발생한 IO 명령어를 얻은 다음 ReadDirectoryChangesW 호출에 적용 할 필터를 알려주는 객체에 대한 포인터를 리턴합니다. –

+0

이것을 확장했습니다. 그러나 결국에는 기존의 디버깅을 대신 할 수 없습니다. 'ReadDirectoruChnagesW'와 같은 API를 사용하기가 쉽지 않습니다. 코드 프로젝트 코드가 맞다고 생각하지 마십시오. – Richard

0

Windows에서는 .lnk 파일을 사용하여 재미있는 작업을 수행하므로 .lnk 확장명을 볼 수 없습니다. Windows 자체가 "New Shortcut.lnk"파일을 볼 수 없기 때문에 삭제 된 알림이 전송되는 이유는 "New Shortcut"때문입니다. 그러나 이것은 단지 하나의 이론 일뿐입니다.

그래서 내가해야 할 일은 그 파일을 계속 처리하고 파일이 여전히 존재하는 경우 파일 삭제 알림을 무시하는 것입니다. .lnk 파일이 여전히 존재 함을 알 수 있다고 가정하면 :)