Compartir a través de


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_adecuada en el archivo de encabezado Wdm.h. Por ejemplo, FILE_WORD_ALIGNMENT indica que la dirección DMA inicial debe alinearse con el límite de dos bytes en la memoria, FILE_LONG_ALIGNMENT indica que la dirección debe alinearse con un límite de cuatro bytes, etc. SerCx2 no admite FILE_BYTE_ALIGNMENT. La unidad de transferencia mínima (MTU) del adaptador DMA del sistema debe ser mayor o igual que la alineación necesaria. Por ejemplo, si el MTU es de cuatro bytes, DmaAlignment debe ser al menos FILE_LONG_ALIGNMENT.

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 Exclusivo es TRUE, los miembrosminimumTransferUnitOverride , DmaAlignment y miembros minimumTransactionLength deben ser cero.

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

EvtDevicePrepareHardware

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

IRP_MJ_READ

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2SystemDmaReceiveCreate

WdfDmaEnablerSetMaximumScatterGatherElements