Compartir a través de


Función SerCx2SystemDmaTransmitCreate (sercx.h)

El método SerCx2SystemDmaTransmitCreate crea un objeto SerCx2 system-DMA-transmit, que la versión 2 de la extensión de marco serie (SerCx2) usa para realizar transacciones system-DMA-transmit.

Sintaxis

NTSTATUS SerCx2SystemDmaTransmitCreate(
  [in]           WDFDEVICE                          Device,
  [in]           PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG SystemDmaTransmitConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES             Attributes,
  [out]          SERCX2SYSTEMDMATRANSMIT            *SystemDmaTransmit
);

Parámetros

[in] Device

Un identificador WDFDEVICE para el objeto de dispositivo de marco que representa el controlador serie. El controlador de controlador serie creó este objeto en su función de devolución de llamada EvtDriverDeviceAdd. Para obtener más información, vea SerCx2InitializeDevice.

[in] SystemDmaTransmitConfig

Puntero a una estructura SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG. Antes de llamar a este método, el autor de la llamada debe llamar a la función SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT para inicializar la estructura. Esta estructura contiene punteros a un conjunto de rutinas de devolución de llamada de eventos implementadas por el controlador del controlador serie. SerCx2 llama a estas funciones para realizar transacciones system-DMA-transmit.

[in, optional] Attributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES que describe los atributos que se van a asignar al nuevo objeto system-DMA-transmit. Antes de llamar a este método, el autor de la llamada debe llamar a la función WDF_OBJECT_ATTRIBUTES_INIT para inicializar la estructura. Este parámetro es opcional y se puede especificar como WDF_NO_OBJECT_ATTRIBUTES si el controlador del controlador serie no necesita asignar atributos al objeto . Para obtener más información, vea Comentarios.

[out] SystemDmaTransmit

Puntero a una ubicación a la que este método escribe un identificador de SERCX2SYSTEMDMATRANSMIT en el objeto system-DMA-transmit recién creado. SerCx2 y el controlador del controlador serie usan este identificador en llamadas posteriores para hacer referencia a este objeto.

Valor devuelto

Este método devuelve STATUS_SUCCESS si la llamada se realiza correctamente. Entre los posibles valores devueltos de error se incluyen los siguientes códigos de estado.

Código devuelto Descripción
STATUS_INVALID_DEVICE_REQUEST
Ya existe un objeto system-DMA-transmit a partir de una llamada a serCx2SystemDmaTransmitCreate anterior; o existe un objeto de transmisión personalizada desde una llamada anterior al método SerCx2CustomTransmitCreate; o existe un objeto de recepción personalizada de una llamada anterior al método SerCx2CustomReceiveCreate; o no se ha llamado a serCx2PioTransmitCreate para crear un objeto PIO-transmit.
STATUS_INFO_LENGTH_MISMATCH
El valor de Tamaño de configno es igual tamaño de(SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG).
STATUS_INVALID_PARAMETER
Un valor de parámetro no es válido.
STATUS_INSUFFICIENT_RESOURCES
Hay recursos insuficientes disponibles para crear el objeto system-DMA-transmit.

Observaciones

El controlador de controlador serie puede este método para crear un objeto system-DMA-transmit. SerCx2 usa este objeto para realizar transacciones de transmisión del sistema DMA, que son transacciones que usan el controlador DMA del sistema para escribir datos en el controlador serie que se van a transmitir.

Normalmente, un controlador de controlador en serie llama a serCx2SystemDmaTransmitCreate desde su función de devolución de llamada EvtDevicePrepareHardware. Esta función recibe una lista de recursos de hardware, que puede incluir canales DMA del sistema.

El controlador de controlador serie debe llamar correctamente a los métodos SerCx2InitializeDevice y SerCx2PioTransmitCreate antes de llamar a SerCx2SystemDmaTransmitCreate.

Antes de llamar a SerCx2SystemDmaTransmitCreate, el controlador de controlador serie debe llamar a la función SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT para inicializar la estructura de SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG apuntada por SystemDmaTransmitConfig. Esta función establece los siguientes miembros de la estructura en cero:

  • MaximumScatterGatherFragments
  • minimumTransferUnitOverride
  • DmaAlignment de
  • minimumTransactionLength
  • exclusivo
Si es necesario, el controlador de controlador serie puede establecer cualquiera de estos miembros en valores distintos de cero después de que se devuelva la función de inicialización. Sin embargo, para mayor comodidad, SerCx2SystemDmaTransmitCreate usa los siguientes valores predeterminados si estos miembros son cero:
  • Si MaximumScatterGatherFragments es cero, SerCx2 establece el número máximo de elementos de una lista de dispersión/recopilación en ((ULONG)-1).
  • Si minimumTransferUnitOverride es cero, SerCx2 establece la unidad de transferencia mínima en su valor predeterminado, que se especifica en la estructura de DMA_ADAPTER para el controlador DMA del sistema. Para obtener más información sobre esta estructura, vea WdfDmaEnablerWdmGetDmaAdapter.
  • Si DmaAlignment es cero, SerCx2 establece el valor de alineación en la unidad de transferencia mínima. Si minimumTransferUnitOverride es cero, se usa la unidad de transferencia mínima predeterminada.
  • Si minimumTransactionLength es cero, SerCx2 establece la longitud mínima de la transacción en un byte.
  • Si exclusivo es cero (FALSE), el modo exclusivo está deshabilitado.
Si el controlador de llamada establece Exclusive en TRUE, los miembros MinimumTransferUnitOverride, DmaAlignmenty MinimumTransactionLength miembros deben ser cero. Para obtener más información, vea SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG.

Si la combinación especificada de funciones de devolución de llamada implementadas no es válida, SerCx2SystemDmaTransmitCreate produce un error y devuelve STATUS_INVALID_PARAMETER. El controlador debe implementar las tres o ninguna de las funciones EvtSerCx2SystemDmaTransmitDrainFifo, EvtSerCx2SystemDmaTransmitCancelCancelDrainFifoy EvtSerCx2SystemDmaTransmitPurgeFifo.

Como opción, un controlador de controlador serie puede usar el parámetro Attributes para crear un contexto para el objeto system-DMA-transmit y proporcionar punteros a EvtCleanupCallback y EvtDestroyCallback funciones a las que se llama para preparar el objeto para su eliminación. Para obtener más información, vea WDF_OBJECT_ATTRIBUTES.

Si el parámetro Attributes apunta a una estructura WDF_OBJECT_ATTRIBUTES, el autor de la llamada no debe sobrescribir los valores que escribe la función de inicialización WDF_OBJECT_ATTRIBUTES_INIT en el ParentObject, ExecutionLevely SynchronizationScope miembros de esta estructura.

Para obtener más información sobre cómo crear objetos system-DMA-transmit, vea SERCX2SYSTEMDMATRANSMIT. Para obtener más información sobre las transacciones system-DMA-transmit, consulte SerCx2 System-DMA-Transmit Transactions.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.1.
de la plataforma de destino de Universal
encabezado de sercx.h
irQL PASSIVE_LEVEL

Consulte también

DMA_ADAPTER

EvtCleanupCallback

EvtDestroyCallback

EvtDevicePrepareHardware

EvtDriverDeviceAdd

EvtSerCx2SystemDmaTransmitCancelDrainFifo

evtSerCx2SystemDmaTransmitCleanupTransaction

EvtSerCx2SystemDmaTransmitDrainFifo

EvtSerCx2SystemDmaTransmitInitializeTransaction

EvtSerCx2SystemDmaTransmitPurgeFifo

SERCX2SYSTEMDMATRANSMIT

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT

serCx2InitializeDevice

SerCx2PioTransmitCreate

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDmaEnablerWdmGetDmaAdapter