Архитектура WDF
WDF предоставляет интерфейсы на основе объектов для драйверов. Интерфейсы объектов, определяемые платформой, состоят из следующих компонентов:
Методы объектов
Методы — это функции, которые драйвер может вызывать для выполнения операции с объектом, а также для получения или задания свойства объекта. Методы называются WdfObjectAction, где Object описывает объект, а Действие указывает, что делает функция. Например, WdfDeviceCreate создает объект устройства.
Функции обратного вызова событий объектов
Функции обратного вызова событий — это функции, которые предоставляет драйвер. Каждая функция обратного вызова события связана с определенным событием, которое может произойти в объекте . Платформа вызывает функцию обратного вызова события при возникновении связанного события. По соглашению заполнители для функций обратного вызова событий называются EvtObjectEvent, хотя вы можете назвать эти обратные вызовы любым способом, выбранным в драйвере. Например, драйвер регистрирует обратный вызов события EvtDeviceD0Entry , чтобы получать уведомления о переходе устройства в рабочее состояние.
Свойства объекта
Свойства — это значения, которые хранятся в объекте и которые драйвер может получить (т. е. получить) и задать (т. е. изменить). Во многих случаях свойства сопоставляют непосредственно с полями соответствующих объектов WDM. Свойства, которые не могут завершиться ошибкой, называются WdfObjectGetValue и WdfObjectSetValue, а свойства, которые могут завершиться ошибкой, — WdfObjectRetrieveValue и WdfObjectAssignValue. Object описывает объект , а Значение определяет данные, которые задается или возвращает функция. Например, WdfDeviceGetDriver возвращает дескриптор объекту драйвера, связанному с объектом устройства.
Дескрипторы объектов
Драйвер на основе платформы никогда не обращается напрямую к объектам платформы. Вместо этого драйвер получает дескрипторы объекта, которые он может передавать в методы объекта.
Платформа определяет несколько типов объектов, которые используют драйверы на основе платформы:
Объект драйвера платформы представляет каждый драйвер.
Объект устройства платформы представляет каждое устройство, которое поддерживает драйвер.
Объекты очередей платформы представляют очереди ввода-вывода, получающие запросы на ввод-вывод устройства.
Объекты запросов платформы представляют запросы ввода-вывода, получаемые каждой очередью ввода-вывода.
Список всех объектов, определяемых платформой, см. в разделе Сводка по объектам платформы.