다음을 통해 공유


SERCX2_SYSTEM_DMA_RECEIVE_CONFIG 구조체(sercx.h)

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

구문

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;

멤버

Size

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

MaximumTransferLength

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

MinimumTransactionLength

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

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_CONFIG DeviceAddress 멤버에 대한 설명을 참조 하세요.

DmaDescriptor

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

MinimumTransferUnitOverride

기본 최소 전송 단위 대신 사용할 재정의 값입니다. 분산/수집 목록의 요소에서 지정한 바이트 수는 최소 전송 단위의 정수 배수여야 합니다. 값이 0이면 기본 최소 전송 단위를 사용해야 함을 나타냅니다. 자세한 내용은 DMA_ADAPTER_INFO_V1MinimumTransferUnit 멤버에 대한 설명을 참조하세요.

Exclusive

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

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

ExclusiveTRUE이면 MinimumTransferUnitOverride, DmaAlignmentMinimumTransactionLength 멤버는 0이어야 합니다.

이 멤버의 값에 관계없이 PIO 수신 트랜잭션은 직렬 컨트롤러가 D0 디바이스 전원 상태를 종료하여 저전력 상태로 들어가기 전에 수신 FIFO에 읽지 않은 데이터를 저장하는 데 사용됩니다.

EvtSerCx2SystemDmaReceiveInitializeTransaction

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

EvtSerCx2SystemDmaReceiveCleanupTransaction

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

EvtSerCx2SystemDmaReceiveConfigureDmaChannel

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

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

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

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

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

설명

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8.1 부터 지원합니다.
머리글 sercx.h

추가 정보

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