UMDF DDI 프로그래밍 모델

경고

UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한됩니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다.

보관된 UMDF 1 샘플은 Windows 11 버전 22H2 - 2022년 5월 드라이버 샘플 업데이트에서 찾을 수 있습니다.

자세한 내용은 UMDF를 사용하여 시작 참조하세요.

프레임워크와 UMDF 드라이버는 UMDF DDI를 통해 통신합니다. UMDF DDI는 UMDF DDI가 COM을 기반으로 한다는 점을 제외하고 KMDF DDI와 유사합니다. 따라서 KMDF에 익숙한 드라이버 작성기는 UMDF를 이해합니다.

프레임워크 개체의 각 형식에 대해 UMDF는 개체의 인스턴스를 조작할 인터페이스를 정의합니다. 각 인터페이스는 메서드 및 속성을 지원합니다. 메서드는 개체 및 속성 집합을 대신하여 수행할 수 있는 작업을 정의하고 개체의 특성을 검색합니다. 일부 인터페이스는 프레임워크에 의해 구현되고 다른 인터페이스는 드라이버에 의해 구현됩니다. 프레임워크 개체에 의해 노출되는 인터페이스는 IWDF<개체> 형식이지만 드라이버에서 노출하는 이벤트 콜백 인터페이스는 I<개체><동작> 형식입니다. 여기서 <개체> 는 큐, 요청 등을 나타내고 <작업은> 인터페이스가 수행하는 작업을 나타냅니다. 콜백 인터페이스의 메서드는 "On"으로 시작합니다.

UMDF 드라이버는 메서드 및 속성을 통해 프레임워크의 개체와 통신합니다. 프레임워크는 특정 이벤트에 대해 드라이버에 알리기 위해 프레임워크가 호출할 수 있는 콜백 함수인 이벤트 알림을 통해 드라이버와 통신합니다. 콜백 함수를 등록하기 위해 드라이버는 다음 프레임워크 개체 메서드를 호출하고 드라이버가 지원하는 콜백 함수에 대한 모든 인터페이스와 연결된 IUnknown 인터페이스에 대한 포인터를 전달할 수 있습니다.

드라이버-프레임워크 통신의 예로 디바이스의 기본 I/O 큐 개체를 고려합니다. 드라이버는 IWDFIoQueue::GetState와 같은 메서드를 호출하여 I/O 큐에 대한 상태 정보를 검색하거나 IWDFIoQueue::RetrieveNextRequest를 호출하여 I/O 큐에서 요청을 검색할 수 있습니다. 또한 드라이버는 IWDFDevice::CreateIoQueue 메서드를 호출하여 IQueueCallbackReadIQueueCallbackWrite와 같은 콜백 인터페이스를 등록하여 I/O 큐에 대한 알림을 요청할 수도 있습니다. 이러한 인터페이스의 메서드는 애플리케이션이 읽기 및 쓰기 요청을 보낼 때 프레임워크에서 호출됩니다.

프레임워크는 드라이버 콜백 메서드에 필요한 모든 동기화를 제공합니다. 기본적으로 프레임워크는 디바이스 개체 수준에서 동기화됩니다. 즉, 프레임워크는 디바이스 개체 수준 이하에서 이벤트 콜백 메서드를 동시에 호출하지 않습니다. 드라이버는 동기화를 요청하지 않고 이 기본값을 재정의할 수 있습니다. 자세한 내용은 콜백 동기화 모드 지정을 참조하세요.