> 백엔드 개발 > C++ > C# Windows 서비스는 USB 드라이브 삽입 및 제거를 어떻게 감지할 수 있습니까?

C# Windows 서비스는 USB 드라이브 삽입 및 제거를 어떻게 감지할 수 있습니까?

Susan Sarandon
풀어 주다: 2025-01-14 07:46:42
원래의
488명이 탐색했습니다.

How Can a C# Windows Service Detect USB Drive Insertion and Removal?

USB 드라이브 감지를 위한 반응형 C# Windows 서비스 구축

많은 분산 애플리케이션은 USB 드라이브 삽입 및 제거에 반응해야 합니다. 이 문서에서는 이를 안정적으로 달성하는 C# Windows 서비스를 만드는 방법을 보여줍니다. WMI(Windows Management Instrumentation) API를 활용하여 서비스에 적합하지 않은 WndProc와 같은 방법에 비해 뛰어난 안정성과 호환성을 제공합니다.

다음 코드 조각은 기본적인 WMI 기반 구현을 제공합니다.

<code class="language-csharp">using System.Management;

// Create a ManagementEventWatcher to monitor for volume change events.
ManagementEventWatcher watcher = new ManagementEventWatcher();

// Define a WQL query to filter for volume insertion events (EventType = 2).
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");

// Attach an event handler to process detected events.
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);

// Assign the query to the watcher.
watcher.Query = query;

// Start monitoring.
watcher.Start();

// Wait for the next event.  Consider using a more robust loop for continuous monitoring.
watcher.WaitForNextEvent();</code>
로그인 후 복사

이 코드는 Win32_VolumeChangeEvent이 2(미디어 삽입을 나타냄)인 EventType 이벤트를 수신하는 감시자를 설정합니다.

이벤트 처리 및 대응

watcher_EventArrived 이벤트 핸들러(표시되지 않음)에는 드라이브 삽입에 응답하는 논리가 포함됩니다. 여기에는 분산 애플리케이션을 시작하거나 기타 필요한 작업을 수행하는 것이 포함될 수 있습니다.

견고함과 오류 처리

예기치 않은 오류가 발생하는 경우에도 서비스의 지속적인 운영을 보장하려면 포괄적인 오류 처리 및 예외 관리를 구현하는 것이 중요합니다. 이는 watcher_EventArrived 메소드

에 통합되어야 합니다.

기능 확장

이 기본 예는 다양한 시나리오에 맞게 사용자 정의할 수 있습니다. 이벤트 처리를 수정하고, 다양한 미디어 유형에 대한 여러 감시자를 생성하고, 드라이브 제거를 위한 이벤트 처리를 추가할 수 있습니다(EventType = 3).

WMI는 Windows 서비스가 USB 드라이브 이벤트에 동적으로 반응할 수 있도록 지원하여 응답성과 적응성이 뛰어난 분산 애플리케이션을 제공합니다.

위 내용은 C# Windows 서비스는 USB 드라이브 삽입 및 제거를 어떻게 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿