estructura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG (sercx.h)
La estructura SERCX2_SYSTEM_DMA_RECEIVE_CONFIG contiene información que usa la versión 2 de la extensión de marco serie (SerCx2) para configurar un nuevo objeto system-DMA-receive.
Sintaxis
typedef struct _SERCX2_SYSTEM_DMA_RECEIVE_CONFIG {
ULONG Size;
size_t MaximumTransferLength;
size_t MinimumTransactionLength;
ULONG DmaAlignment;
ULONG MaximumScatterGatherFragments;
DMA_WIDTH DmaWidth;
PHYSICAL_ADDRESS DeviceAddress;
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
ULONG MinimumTransferUnitOverride;
BOOLEAN Exclusive;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaReceiveInitializeTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CLEANUP_TRANSACTION EvtSerCx2SystemDmaReceiveCleanupTransaction;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CONFIGURE_DMA_CHANNEL EvtSerCx2SystemDmaReceiveConfigureDmaChannel;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_ENABLE_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveEnableNewDataNotification;
PFN_SERCX2_SYSTEM_DMA_RECEIVE_CANCEL_NEW_DATA_NOTIFICATION EvtSerCx2SystemDmaReceiveCancelNewDataNotification;
} SERCX2_SYSTEM_DMA_RECEIVE_CONFIG, *PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG;
Miembros
Size
Tamaño, en bytes, de esta estructura. El método SerCx2SystemDmaReceiveCreate usa este miembro para determinar qué versión de la estructura usa el autor de la llamada. El tamaño de esta estructura puede cambiar en versiones futuras del archivo de encabezado Sercx.h.
MaximumTransferLength
Tamaño máximo predeterminado, en bytes, que el controlador serie puede controlar en una sola transferencia DMA del sistema. Si el tamaño del búfer en la solicitud de lectura (IRP_MJ_READ) es mayor que este tamaño máximo, SerCx2 usa varias transferencias DMA para controlar la solicitud y limita cada transferencia a la longitud máxima.
MinimumTransactionLength
Longitud mínima, en bytes, de una transacción system-DMA-receive. Si la longitud del búfer en una solicitud de lectura es inferior a esta longitud mínima, SerCx2 usa E/S programada (PIO) para la transacción.
DmaAlignment
Requisito de alineación de DMA. Especifica cómo se debe alinear la dirección inicial de una transferencia en una transacción de recepción del sistema DMA en la memoria. Establezca este miembro en la constante_ALIGNMENT XXX FILE_
MaximumScatterGatherFragments
El número máximo de fragmentos de búfer que se pueden especificar en la lista de dispersión y recopilación para una transferencia DMA en una transacción de recepción de DMA del sistema.
DmaWidth
Ancho del registro de datos en la dirección especificada por DeviceAddress. Los valores posibles son Width8Bits, Width16Bits, Width32Bitsy Width64Bits.
DeviceAddress
Dirección traducida desde la que se transfiere el controlador DMA. Para obtener más información, consulte la descripción del miembro DeviceAddress en WDF_DMA_SYSTEM_PROFILE_CONFIG.
DmaDescriptor
Puntero a la estructura CM_PARTIAL_RESOURCE_DESCRIPTOR que describe el recurso DMA del sistema que se va a usar para recibir transacciones. El controlador de controlador serie obtiene esta estructura de la lista de recursos sin procesar que recibe en el EvtDevicePrepareHardware devolución de llamada que inicia el controlador serie.
MinimumTransferUnitOverride
Valor de invalidación que se va a usar en lugar de la unidad de transferencia mínima predeterminada. El número de bytes especificados por un elemento de una lista de dispersión y recopilación debe ser un entero múltiplo de la unidad de transferencia mínima. Un valor de cero indica que se debe usar la unidad de transferencia mínima predeterminada. Para obtener más información, vea la descripción del miembro de MinimumTransferUnit en DMA_ADAPTER_INFO_V1.
Exclusive
Si se usan transacciones de recepción de system-DMA exclusivamente para controlar las solicitudes de escritura (IRP_MJ_READ). Establézcalo en TRUE para indicar que las solicitudes de lectura deben usar transacciones system-DMA-receive exclusivamente. Establézcalo en FALSE para indicar que las solicitudes de lectura pueden usar una combinación de transacciones de recepción del sistema DMA y transacciones de recepción de PIO.
Establezca este miembro en TRUE solo si la unidad de transferencia mínima para las transacciones de recepción del sistema DMA es de un byte, la longitud mínima de la transacción es de un byte y el búfer de lectura de la transacción puede iniciarse en cualquier límite de bytes en la memoria.
Si
Independientemente del valor de este miembro, las transacciones de recepción de PIO se usan para guardar los datos no leídos en el FIFO de recepción antes de que el controlador serie salga del estado de alimentación del dispositivo D0 para entrar en un estado de baja potencia.
EvtSerCx2SystemDmaReceiveInitializeTransaction
Puntero al controlador implementado función de devolución de llamada de eventos EvtSerCx2SystemDmaReceiveInitializeTransaction. Este miembro es opcional y se puede establecer en NULL para indicar que el controlador no implementa la función.
EvtSerCx2SystemDmaReceiveCleanupTransaction
Puntero al controlador implementado función de devolución de llamada de eventos EvtSerCx2SystemDmaReceiveCleanupTransaction. Este miembro es opcional y se puede establecer en NULL para indicar que el controlador no implementa la función.
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
Puntero al controlador implementado función de devolución de llamada de eventos EvtSerCx2SystemDmaReceiveConfigureDma Channel. Este miembro es opcional y se puede establecer en NULL para indicar que el controlador no implementa la función.
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
Puntero al controlador implementado función de devolución de llamada de eventos EvtSerCx2SystemDmaReceiveEnableNewDataNot ification. Este miembro es opcional y se puede establecer en NULL para indicar que el controlador no implementa la función. Sin embargo, un controlador que implementa esta función también debe implementar una función EvtSerCx2SystemDmaReceiveCancelNewDataNotification.
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
Puntero al controlador implementado función de devolución de llamada de evento EvtSerCx2SystemDmaReceiveCancelNewDataNot ification. Este miembro es opcional y se puede establecer en NULL para indicar que el controlador no implementa la función. Sin embargo, un controlador que implementa esta función también debe implementar una función EvtSerCx2SystemDmaReceiveEnableNewDataNotification.
Observaciones
El método SerCx2SystemDmaReceiveCreate acepta un puntero a una estructura de SERCX2_SYSTEM_DMA_RECEIVE_CONFIG como parámetro de entrada. Antes de llamar a SerCx2SystemDmaReceiveCreate, llame a la función SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT o SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION para inicializar esta estructura.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite a partir de Windows 8.1. |
encabezado de |
sercx.h |
Consulte también
CM_PARTIAL_RESOURCE_DESCRIPTOR
EvtSerCx2SystemDmaReceiveCancelNewDataNotification
EvtSerCx2SystemDmaReceiveCleanupTransaction
EvtSerCx2SystemDmaReceiveConfigureDmaChannel
EvtSerCx2SystemDmaReceiveEnableNewDataNotification
EvtSerCx2SystemDmaReceiveInitializeTransaction
SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT