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지정한 주소에서
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 설정합니다.
EvtSerCx2SystemDmaTransmitInitializeTransaction
드라이버 구현 EvtSerCx2SystemDmaTransmitInitializeTransaction 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
EvtSerCx2SystemDmaTransmitCleanupTransaction
드라이버 구현 EvtSerCx2SystemDmaTransmitCleanupTransaction 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
드라이버 구현 EvtSerCx2SystemDmaTransmitConfigureDmaChannel 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
EvtSerCx2SystemDmaTransmitDrainFifo
드라이버 구현 EvtSerCx2SystemDmaTransmitDrainFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
EvtSerCx2SystemDmaTransmitCancelDrainFifo
드라이버 구현 EvtSerCx2SystemDmaTransmitCancelDrainFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
EvtSerCx2SystemDmaTransmitPurgeFifo
드라이버 구현 EvtSerCx2SystemDmaTransmitPurgeFifo 이벤트 콜백 함수에 대한 포인터입니다. 이 멤버는 선택 사항이며 드라이버가 함수를 구현하지 않음을 나타내기 위해 NULL
발언
SerCx2SystemDmaTransmitCreate 메서드는 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 구조체에 대한 포인터를 입력 매개 변수로 허용합니다. SerCx2SystemDmaTransmitCreate호출하기 전에 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG_INIT 함수를 호출하여 이 구조를 초기화합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8.1 시작 지원. |
헤더 | sercx.h |
참고 항목
EvtSerCx2SystemDmaTransmitCancelDrainFifo
EvtSerCx2SystemDmaTransmitCleanupTransaction
EvtSerCx2SystemDmaTransmitConfigureDmaChannel
EvtSerCx2SystemDmaTransmitDrainFifo
EvtSerCx2SystemDmaTransmitInitializeTransaction
EvtSerCx2SystemDmaTransmitPurgeFifo