Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе приведены общие рекомендации по разработке драйвера клиента уведомлений оборудования, используюющего расширение класса KMDF, предоставленное корпорацией Майкрософт.
Создайте файл для реализации драйвера клиента, который ссылается на Mshwnclxstub.lib и включает заголовки hwn.h и hwnclx.h.
Определите экземпляры необходимых функций обратного вызова для расширения класса KMDF и класса аппаратных уведомлений. В частности, необходимо реализовать и зарегистрировать эти функции обратного вызова, как показано в следующем примере кода.
DRIVER_INITIALIZE DriverEntry; EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd; HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice; HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice; HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation; HWN_CLIENT_START_DEVICE HwnClientStartDevice; HWN_CLIENT_STOP_DEVICE HwnClientStopDevice; HWN_CLIENT_SET_STATE HwnClientSetState; HWN_CLIENT_GET_STATE HwnClientGetState;Реализуйте подпрограмму DriverEntry , которая является точкой входа драйвера клиента и отвечает за инициализацию. Для драйвера клиента уведомления оборудования эта функция должна обрабатывать следующее:
Вызов WDF_DRIVER_CONFIG_INIT для инициализации структуры WDF_DRIVER_CONFIG драйвера.
Вызов WdfDriverCreate для создания объекта драйвера платформы для клиентского драйвера.
Определение содержимого HWN_CLIENT_REGISTRATION_PACKET, включая указатели функций обратного вызова для использования в расширении класса. Дополнительные сведения о необходимых функциях обратного вызова см. в справочнике по аппаратным уведомлениям.
Вызов HwNRegisterClient для регистрации драйвера клиента в расширении класса.
Реализуйте функцию EVT_WDF_DRIVER_DEVICE_ADD , которая отвечает за выполнение операций инициализации устройства, когда диспетчер PnP сообщает о существовании устройства. Для драйвера клиента уведомления оборудования эта функция должна обрабатывать следующее:
Вызов HwNProcessAddDevicePreDeviceCreate, который предоставляет необходимые KMDF обратные вызовы для подготовки, выпуска, входа и выхода, чтобы перевести устройство в разные состояния.
Вызов WdfDeviceCreate для создания объекта устройства платформы.
Вызов функции HwNProcessAddDevicePostDeviceCreate, чтобы создать очереди ввода-вывода.
Реализуйте определенную функцию HWN_CLIENT_INITIALIZE_DEVICE , которая вызывается расширением класса для подготовки аппаратного контроллера уведомлений для использования.
Реализуйте определенную функцию HWN_CLIENT_UNINITIALIZE_DEVICE , которая вызывается расширением класса для неинициализации аппаратного контроллера уведомлений.
Реализуйте определенную функцию HWN_CLIENT_QUERY_DEVICE_INFORMATION , которая вызывается расширением класса. Эта функция отвечает за получение атрибутов компонента аппаратных уведомлений.
Реализуйте определенную функцию HWN_CLIENT_START_DEVICE , которая вызывается расширением класса. Эта функция отвечает за запуск контроллера уведомлений оборудования и выделение ресурсов ACPI для драйвера клиента.
Реализуйте определенную функцию HWN_CLIENT_STOP_DEVICE , которая вызывается расширением класса. Эта функция отвечает за остановку контроллера уведомлений оборудования и освобождение ресурсов ACPI, используемых драйвером клиента.
Реализуйте определение HWN_CLIENT_SET_STATE, вызываемое расширением класса. Эта функция отвечает за настройку состояний компонента уведомления оборудования.
Реализуйте заданный HWN_CLIENT_GET_STATE, который вызывается расширением класса. Эта функция отвечает за получение текущих значений компонентов аппаратного уведомления. Если входной буфер имеет значение NULL, то есть пользователь не указал определенное состояние уведомления оборудования, эта функция должна возвращать сведения о состоянии для всех компонентов уведомления оборудования.