estructura SPB_CONTROLLER_CONFIG (spbcx.h)
La estructura SPB_CONTROLLER_CONFIG contiene los valores de configuración de un controlador de controlador SPB.
Sintaxis
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;
Miembros
Size
Tamaño, en bytes, de esta estructura. El método SpbDeviceInitialize usa este valor de parámetro para determinar qué versión de la estructura se usa.
ControllerDispatchType
Tipo de envío de la cola de E/S para el controlador del controlador. Establezca este miembro en WdfIoQueueDispatchSequential o WdfIoQueueDispatchParallel, pero no en WdfIoQueueDispatchManual. La función SPB_CONTROLLER_CONFIG_INIT inicializa este miembro en su valor predeterminado, WdfIoQueueDispatchSequential. Para obtener más información sobre estos tipos de distribución, vea Usos de ejemplo de colas de E/S.
Un controlador de controlador que funciona en modo subordinado debe establecer este miembro en WdfIoQueueDispatchParallel. Por ejemplo, un controlador I2C podría estar conectado como un dispositivo periférico a un bus SPI. Este dispositivo actúa como maestro en el bus I2C, pero es un subordinado en el bus SPI.
PowerManaged
Si la cola de E/S del controlador debe administrarse con energía. Establezca este miembro en WdfTrue para indicar que la cola debe administrarse con energía. Establezca este miembro en WdfFalse para indicar que la cola no debe administrarse con energía. Si este miembro se establece en WdfDefault, la cola se administrará con energía a menos que el controlador llame al método WdfFdoInitSetFilter , que identifica al autor de la llamada como un controlador de filtro de nivel superior o inferior. La función SPB_CONTROLLER_CONFIG_INIT inicializa este miembro en WdfDefault.
Cuando las solicitudes de E/S están disponibles en una cola administrada por energía, el marco entrega las solicitudes al controlador solo si el dispositivo está en su estado de trabajo (D0). Para obtener más información, consulte Administración de energía para colas de E/S.
EvtSpbTargetConnect
Puntero a la función de devolución de llamada EvtSpbTargetConnect . El controlador del controlador SPB implementa esta función. El miembro EvtSpbTargetConnect es opcional y puede ser NULL.
EvtSpbTargetDisconnect
Puntero a la función de devolución de llamada EvtSpbTargetDisconnect . El controlador del controlador SPB implementa esta función. El miembro EvtSpbTargetDisconnect es opcional y puede ser NULL.
EvtSpbControllerLock
Puntero a la función de devolución de llamada EvtSpbControllerLock . El controlador del controlador SPB implementa esta función. El miembro EvtSpbControllerLock es opcional y puede ser NULL. Para obtener más información sobre la función EvtSpbControllerLock , consulte Control de secuencias de Client-Implemented.
EvtSpbControllerUnlock
Puntero a la función de devolución de llamada EvtSpbControllerUnlock . El controlador del controlador SPB implementa esta función. Este miembro es opcional y puede ser NULL. Para obtener más información sobre la función EvtSpbControllerUnlock , vea Control de secuencias de Client-Implemented.
EvtSpbIoRead
Puntero a la función de devolución de llamada EvtSpbControllerIoRead . El controlador del controlador SPB implementa esta función. Este miembro no es opcional y no debe ser NULL.
EvtSpbIoWrite
Puntero a la función de devolución de llamada EvtSpbControllerIoWrite . El controlador del controlador SPB implementa esta función. Este miembro no es opcional y no debe ser NULL.
EvtSpbIoSequence
Puntero a la función de devolución de llamada EvtSpbControllerIoSequence . El controlador del controlador SPB implementa esta función. Este miembro no es opcional y no debe ser NULL.
Comentarios
El método SpbDeviceInitialize usa la información de esta estructura para completar la inicialización del controlador SPB. Antes de pasar esta estructura a SpbDeviceInitialize, llame a la función SPB_CONTROLLER_CONFIG_INIT para inicializar los miembros de esta estructura en sus valores predeterminados y, según sea necesario, sobrescriba estos valores predeterminados con información específica del controlador SPB.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Se admite a partir de Windows 8. |
Encabezado | spbcx.h |
Consulte también
- 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