다음을 통해 공유


SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 구조체(sercx.h)

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 구조에는 SerCx2(직렬 프레임워크 확장 버전 2)의 버전 2가 새 시스템 DMA 전송 개체를 구성하는 데 사용하는 정보가 포함되어 있습니다.

통사론

typedef struct _SERCX2_SYSTEM_DMA_TRANSMIT_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_TRANSMIT_INITIALIZE_TRANSACTION EvtSerCx2SystemDmaTransmitInitializeTransaction;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CLEANUP_TRANSACTION    EvtSerCx2SystemDmaTransmitCleanupTransaction;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CONFIGURE_DMA_CHANNEL  EvtSerCx2SystemDmaTransmitConfigureDmaChannel;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_DRAIN_FIFO             EvtSerCx2SystemDmaTransmitDrainFifo;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_CANCEL_DRAIN_FIFO      EvtSerCx2SystemDmaTransmitCancelDrainFifo;
  PFN_SERCX2_SYSTEM_DMA_TRANSMIT_PURGE_FIFO             EvtSerCx2SystemDmaTransmitPurgeFifo;
} SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG, *PSERCX2_SYSTEM_DMA_TRANSMIT_CONFIG;

회원

Size

이 구조체의 크기(바이트)입니다. SerCx2SystemDmaTransmitCreate 메서드는 이 멤버를 사용하여 호출자가 사용 중인 구조의 버전을 확인합니다. 이 구조체의 크기는 이후 버전의 Sercx.h 헤더 파일에서 변경될 수 있습니다.

MaximumTransferLength

직렬 컨트롤러가 단일 시스템 DMA 전송에서 처리할 수 있는 기본 최대 크기(바이트)입니다. 쓰기(IRP_MJ_WRITE) 요청의 버퍼 크기가 이 최대 크기보다 크면 SerCx2는 여러 DMA 전송을 사용하여 요청을 처리하고 각 전송을 최대 길이로 제한합니다.

MinimumTransactionLength

시스템 DMA 전송 트랜잭션의 최소 길이(바이트)입니다. 쓰기 요청의 버퍼 길이가 이 최소 길이보다 작은 경우 SerCx2는 트랜잭션에 프로그래밍된 I/O(I/O)를 사용합니다.

DmaAlignment

DMA 맞춤 요구 사항입니다. 시스템 DMA 전송 트랜잭션에서 전송의 시작 주소를 메모리에 맞추는 방법을 지정합니다. 이 멤버를 Wdm.h 헤더 파일의 적절한 FILE_XXX_ALIGNMENT 상수로 설정합니다. 예를 들어 FILE_WORD_ALIGNMENT 시작 DMA 주소가 메모리의 2 바이트 경계에 맞춰야 하며, FILE_LONG_ALIGNMENT 주소가 4 바이트 경계에 맞춰야 임을 나타냅니다. SerCx2는 FILE_BYTE_ALIGNMENT 지원하지 않습니다. 시스템 DMA 어댑터의 최소 MTU(전송 단위)는 필요한 맞춤보다 크거나 같아야 합니다. 예를 들어 MTU가 4바이트인 경우 DmaAlignment FILE_LONG_ALIGNMENT 이상이어야 합니다.

MaximumScatterGatherFragments

시스템 DMA 전송 트랜잭션에서 DMA 전송을 위해 분산/수집 목록에 지정할 수 있는 버퍼 조각의 최대 수입니다.

DmaWidth

DeviceAddress지정한 주소에서 데이터 레지스터의 너비입니다. 가능한 값은 Width8Bits, Width16Bits, Width32BitsWidth64Bits.

DeviceAddress

DMA 컨트롤러가 전송할 데이터를 전송하는 변환된 디바이스 주소입니다. 자세한 내용은 WDF_DMA_SYSTEM_PROFILE_CONFIGDeviceAddress 멤버에 대한 설명을 참조하세요.

DmaDescriptor

전송 트랜잭션에 사용할 시스템 DMA 리소스를 설명하는 CM_PARTIAL_RESOURCE_DESCRIPTOR 구조체에 대한 포인터입니다. 직렬 컨트롤러 드라이버는 직렬 컨트롤러를 시작하는 EvtDevicePrepareHardware 콜백에서 수신하는 원시 리소스 목록에서 이 구조를 가져옵니다.

MinimumTransferUnitOverride

기본 최소 전송 단위 대신 사용할 재정의 값입니다. 분산/수집 목록의 요소에 의해 지정된 바이트 수는 최소 전송 단위의 정수 배수여야 합니다. 값이 0이면 기본 최소 전송 단위를 사용해야 합니다. 기본 최소 전송 단위에 대한 자세한 내용은 DMA_ADAPTER_INFO_V1참조하세요.

Exclusive

시스템 DMA 전송 트랜잭션을 단독으로 사용하여 쓰기(IRP_MJ_WRITE) 요청을 처리할지 여부입니다. 쓰기 요청이 시스템 DMA 전송 트랜잭션만 사용해야 함을 나타내려면 TRUE 설정합니다. 쓰기 요청이 시스템 DMA 전송 트랜잭션과 PIO 전송 트랜잭션의 조합을 사용할 수 있음을 나타내려면 FALSE 설정합니다.

시스템 DMA 전송 트랜잭션의 최소 전송 단위가 1 바이트이고, 최소 트랜잭션 길이가 1 바이트이고, 트랜잭션에 대한 쓰기 버퍼가 메모리의 바이트 경계에서 시작될 수 있는 경우에만 이 멤버를 TRUE 설정합니다.

전용 TRUE경우 MinimumTransferUnitOverride, 맞춤MinimumTransactionLength 멤버는 0이어야 합니다.

EvtSerCx2SystemDmaTransmitInitializeTransaction

드라이버 구현 EvtSerCx2SystemDmaTransmitInitializeTransaction 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다.

EvtSerCx2SystemDmaTransmitCleanupTransaction

드라이버 구현 EvtSerCx2SystemDmaTransmitCleanupTransaction 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다.

EvtSerCx2SystemDmaTransmitConfigureDmaChannel

드라이버 구현 EvtSerCx2SystemDmaTransmitConfigureDmaChannel 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다.

EvtSerCx2SystemDmaTransmitDrainFifo

드라이버 구현 EvtSerCx2SystemDmaTransmitDrainFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다. 그러나 이 함수를 구현하는 드라이버는 EvtSerCx2SystemDmaTransmitCancelDrainFifoEvtSerCx2SystemDmaTransmitPurgeFifo 함수를 구현해야 합니다.

EvtSerCx2SystemDmaTransmitCancelDrainFifo

드라이버 구현 EvtSerCx2SystemDmaTransmitCancelDrainFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다. 그러나 이 함수를 구현하는 드라이버는 EvtSerCx2SystemDmaTransmitDrainFifoEvtSerCx2SystemDmaTransmitPurgeFifo 함수를 구현해야 합니다.

EvtSerCx2SystemDmaTransmitPurgeFifo

드라이버 구현 EvtSerCx2SystemDmaTransmitPurgeFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL 설정할 수 있습니다. 그러나 이 함수를 구현하는 드라이버는 EvtSerCx2SystemDmaTransmitDrainFifo 구현하고 EvtSerCx2SystemDmaTransmitCancelDrainFifo 함수를 합니다.

발언

SerCx2SystemDmaTransmitCreate 메서드는 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 구조체에 대한 포인터를 입력 매개 변수로 허용합니다. SerCx2SystemDmaTransmitCreate호출하기 전에 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT 함수를 호출하여 이 구조를 초기화합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 8.1 시작 지원.
헤더 sercx.h

참고 항목

DMA_ADAPTER_INFO_V1

EvtSerCx2SystemDmaTransmitCancelDrainFifo

EvtSerCx2SystemDmaTransmitCleanupTransaction

EvtSerCx2SystemDmaTransmitConfigureDmaChannel

EvtSerCx2SystemDmaTransmitDrainFifo

EvtSerCx2SystemDmaTransmitInitializeTransaction

EvtSerCx2SystemDmaTransmitPurgeFifo

IRP_MJ_WRITE

SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT

SerCx2SystemDmaTransmitCreate

WdfDmaEnablerSetMaximumScatterGatherElements