Контексты устройств GPIO
Устройство контроллера ввода-вывода общего назначения (GPIO) представлено объектом устройства платформы. Драйвер контроллера GPIO может связать контекст устройства с этим объектом устройства. Драйвер использует этот контекст устройства для постоянного хранения сведений о состоянии устройства контроллера GPIO.
Когда расширение платформы GPIO (GpioClx) вызывает функцию обратного вызова событий, реализованную драйвером, GpioClx передает контекст устройства в эту функцию в качестве параметра. Функция обратного вызова проверяет контекст устройства, чтобы определить текущее состояние устройства. Если функция изменяет это состояние, она соответствующим образом обновляет контекст устройства.
GpioClx выделяет хранилище для объекта устройства. Если драйвер контроллера GPIO содержит несколько объектов устройства, контекст устройства для каждого из этих объектов имеет одинаковый размер. Во время подпрограммы DriverEntry драйвер вызывает метод GPIO_CLX_RegisterClient для регистрации функций обратного вызова и указания необходимого размера контекста устройства. Позже, во время процедуры обратного вызова EvtDriverDeviceAdd , драйвер вызывает метод GPIO_CLX_ProcessAddDevicePostDeviceCreate для передачи нового объекта устройства в GpioClx, а GpioClx выделяет контекст устройства для этого объекта. После этого, когда GpioClx вызывает функцию обратного вызова, реализованную драйвером, этот контекст устройства передается в функцию в качестве параметра.