2011-01-24 9 views
2

FileSystemWatcher를 사용하여 변경 사항을 모니터링하는 .NET 2.0 프레임 워크로 C#으로 작성된 Windows 서비스가 있습니다. 이러한 디렉토리 중 일부는 USB 드라이브와 같은 이동식 미디어에있을 수 있습니다. 새 드라이브가 시스템에 연결되면 WMI 쿼리를 통해 알림을 받고 새 FileSystemWatcher를 설정할 수 있습니다. 모두 잘 작동합니다.Windows 서비스에서 이동식 미디어 추출 요청 감지

어려운 점은 사용자가 Windows "하드웨어 안전하게 제거"응용 프로그램을 사용하여 드라이브를 꺼내기를 원하지만 Windows가 FileSystemWatcher를 통해 모니터링하므로 드라이브가 사용 중이라고보고하고 사용자에게 드라이브를 제거 할 수 없습니다.

내 질문에 내 Windows 서비스에서 사용자가 파일을 내보낼 때를 어떻게 알 수 있습니까? 그렇다면 파일 시스템 모니터를 제거하고 요청이 성공하도록 할 수 있습니까?

답변

2

here과 같이 RegisterDeviceNotification Windows API를 통해 장치 제거 쿼리 브로드 캐스트 이벤트 (DBT_DEVICEQUERYREMOVE)를 받으려면 등록해야합니다.

필자가 아는 한이 기능을 래핑하는 .NET Framework 클래스가 없으므로 p/Invoke를 사용하여 장시간 수행해야합니다.

+0

DBT_DEVICEQUERYREMOVE이 기사의 내용은 내가 원하는 것처럼 보입니다. 나는 그것을 곧 시도 할 것이다. 감사! –