структура SPB_CONTROLLER_CONFIG (spbcx.h)
Структура SPB_CONTROLLER_CONFIG содержит параметры конфигурации для драйвера контроллера SPB.
Синтаксис
typedef struct _SPB_CONTROLLER_CONFIG {
ULONG Size;
WDF_IO_QUEUE_DISPATCH_TYPE ControllerDispatchType;
WDF_TRI_STATE PowerManaged;
PFN_SPB_TARGET_CONNECT EvtSpbTargetConnect;
PFN_SPB_TARGET_DISCONNECT EvtSpbTargetDisconnect;
PFN_SPB_CONTROLLER_LOCK EvtSpbControllerLock;
PFN_SPB_CONTROLLER_UNLOCK EvtSpbControllerUnlock;
PFN_SPB_CONTROLLER_READ EvtSpbIoRead;
PFN_SPB_CONTROLLER_WRITE EvtSpbIoWrite;
PFN_SPB_CONTROLLER_SEQUENCE EvtSpbIoSequence;
} SPB_CONTROLLER_CONFIG, *PSPB_CONTROLLER_CONFIG;
Члены
Size
Размер данной структуры (в байтах). Метод SpbDeviceInitialize использует это значение параметра, чтобы определить, какая версия структуры используется.
ControllerDispatchType
Тип диспетчеризации очереди ввода-вывода для драйвера контроллера. Присвойте этому элементу значение WdfIoQueueDispatchSequential или WdfIoQueueDispatchParallel, но не WdfIoQueueDispatchManual. Функция SPB_CONTROLLER_CONFIG_INIT инициализирует этот элемент значением по умолчанию WdfIoQueueDispatchSequential. Дополнительные сведения об этих типах диспетчеризации см. в разделе Примеры использования очередей ввода-вывода.
Драйвер контроллера, работающий в подчиненном режиме, должен задать для этого элемента значение WdfIoQueueDispatchParallel. Например, контроллер I2C может быть подключен в качестве периферийного устройства к шине SPI. Это устройство действует как master на шине I2C, но является подчиненным на шине SPI.
PowerManaged
Указывает, должна ли очередь ввода-вывода для драйвера контроллера управлять питанием. Задайте для этого элемента значение WdfTrue , чтобы указать, что очередь должна управляться питанием. Задайте для этого элемента значение WdfFalse , чтобы указать, что очередь не должна управляться питанием. Если для этого элемента задано значение WdfDefault, очередь будет управляться питанием, если драйвер не вызовет метод WdfFdoInitSetFilter , который идентифицирует вызывающий объект как драйвер фильтра верхнего или нижнего уровня. Функция SPB_CONTROLLER_CONFIG_INIT инициализирует этот элемент wdfDefault.
Если запросы ввода-вывода доступны в очереди, управляемой питанием, платформа доставляет запросы драйверу только в том случае, если устройство находится в рабочем (D0) состоянии. Дополнительные сведения см. в разделе Управление питанием для очередей ввода-вывода.
EvtSpbTargetConnect
Указатель на функцию обратного вызова EvtSpbTargetConnect . Эта функция реализуется драйвером контроллера SPB. Член EvtSpbTargetConnect является необязательным и может иметь значение NULL.
EvtSpbTargetDisconnect
Указатель на функцию обратного вызова EvtSpbTargetDisconnect . Эта функция реализуется драйвером контроллера SPB. Член EvtSpbTargetDisconnect является необязательным и может иметь значение NULL.
EvtSpbControllerLock
Указатель на функцию обратного вызова EvtSpbControllerLock . Эта функция реализуется драйвером контроллера SPB. Член EvtSpbControllerLock является необязательным и может иметь значение NULL. Дополнительные сведения о функции EvtSpbControllerLock см. в разделе Обработка последовательностей Client-Implemented.
EvtSpbControllerUnlock
Указатель на функцию обратного вызова EvtSpbControllerUnlock . Эта функция реализуется драйвером контроллера SPB. Этот элемент является необязательным и может иметь значение NULL. Дополнительные сведения о функции EvtSpbControllerUnlock см. в разделе Обработка последовательностей Client-Implemented.
EvtSpbIoRead
Указатель на функцию обратного вызова EvtSpbControllerIoRead . Эта функция реализуется драйвером контроллера SPB. Этот элемент не является необязательным и не должен иметь значение NULL.
EvtSpbIoWrite
Указатель на функцию обратного вызова EvtSpbControllerIoWrite . Эта функция реализуется драйвером контроллера SPB. Этот элемент не является необязательным и не должен иметь значение NULL.
EvtSpbIoSequence
Указатель на функцию обратного вызова EvtSpbControllerIoSequence . Эта функция реализуется драйвером контроллера SPB. Этот элемент не является необязательным и не должен иметь значение NULL.
Комментарии
Метод SpbDeviceInitialize использует сведения из этой структуры для завершения инициализации контроллера SPB. Перед передачей этой структуры в SpbDeviceInitialize вызовите функцию SPB_CONTROLLER_CONFIG_INIT для инициализации элементов этой структуры значениями по умолчанию и при необходимости перезапишите эти значения по умолчанию сведениями, характерными для драйвера контроллера SPB.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается начиная с Windows 8. |
Верхняя часть | spbcx.h |
См. также раздел
- EvtSpbControllerIoRead
- EvtSpbControllerIoSequence
- EvtSpbControllerIoWrite
- EvtSpbControllerLock
- EvtSpbControllerUnlock
- EvtSpbTargetConnect
- EvtSpbTargetDisconnect
- IOCTL_SPB_EXECUTE_SEQUENCE
- IOCTL_SPB_LOCK_CONTROLLER
- IOCTL_SPB_UNLOCK_CONTROLLER
- IRP_MN_READ
- IRP_MN_WRITE
- SPB_CONTROLLER_CONFIG_INIT
- SpbDeviceInitialize
- SpbRequestGetParameters
- WdfFdoInitSetFilter