다음을 통해 공유


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<개체>형식이며 드라이버에서 노출하는 이벤트 콜백 인터페이스는 개체<작업><>형식이며, 여기서 <개체> 큐, 요청 등을 나타내고 <작업> 인터페이스가 수행하는 작업을 나타냅니다. 콜백 인터페이스의 메서드는 "On"으로 시작합니다.

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

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

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