EVT_SERCX2_SELECT_NEXT_TRANSMIT_TRANSACTION_TYPE 콜백 함수(sercx.h)
EvtSerCx2SelectNextTransmitTransactionType 이벤트 콜백 함수는 SerCx2(직렬 프레임워크 확장) 버전 2에서 호출되어 다음 쓰기 작업에 사용할 데이터 전송 메커니즘을 결정합니다.
구문
EVT_SERCX2_SELECT_NEXT_TRANSMIT_TRANSACTION_TYPE EvtSercx2SelectNextTransmitTransactionType;
SERCX2_TRANSACTION_TYPE EvtSercx2SelectNextTransmitTransactionType(
[in] WDFDEVICE Device,
[in] PMDL Mdl,
[in] ULONG Offset,
[in] ULONG RemainingLength,
[out] SERCX2CUSTOMTRANSMIT *CustomTransmit,
[out] PULONG NextTransactionLength
)
{...}
매개 변수
[in] Device
직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다. 직렬 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 함수에서 이 개체를 만들었습니다. 자세한 내용은 SerCx2InitializeDevice를 참조하세요.
[in] Mdl
다음 전송 트랜잭션에 대한 쓰기 버퍼에 의해 확장되는 메모리 페이지를 설명하는 MDL 에 대한 포인터입니다. DMA 전송에 대한 분산/수집 목록은 Offset 및 Length 매개 변수로 지정된 이 메모리의 영역을 사용합니다.
[in] Offset
다음 데이터 전송의 시작 오프셋입니다. 이 매개 변수는 MDL에서 설명하는 버퍼 영역의 시작 부분부터의 바이트 오프셋입니다. MDL에서 버퍼 공간의 총 N바이트를 지정하는 경우 오프셋 의 가능한 값은 0에서 N-1까지의 범위에 있습니다.
[in] RemainingLength
현재 쓰기(IRP_MJ_WRITE) 요청에서 전송될 데이터의 총 바이트 수입니다. MDL이 버퍼 공간의 총 N바이트 수를 지정하는 경우 가능한 Length 값은 1에서 N-오프셋까지의 범위에 있습니다.
[out] CustomTransmit
함수가 SERCX2CUSTOMTRANSMIT 핸들을 사용자 지정 전송 개체에 쓰는 위치에 대한 포인터입니다. 함수가 SerCx2TransactionTypeCustom을 반환하는 경우 함수는 SerCx2CustomTransmitCreate 메서드에 대한 이전 호출에서 만든 직렬 컨트롤러 드라이버가 만든 개체 핸들을 제공해야 합니다. 반환 값이 SerCx2TransactionTypeCustom이 아닌 경우 이 출력 값은 SerCx2에서 무시됩니다.
[out] NextTransactionLength
함수가 다음 전송 트랜잭션에서 전송할 바이트 수를 쓰는 위치에 대한 포인터입니다. 반환 값이 SerCx2TransactionTypeDefault이면 이 출력 값은 SerCx2에서 무시됩니다.
반환 값
EvtSerCx2SelectNextTransmitTransactionType 함수는 드라이버에서 선택한 트랜잭션 유형(PIO(프로그래밍된 I/O), 시스템 DMA 또는 사용자 지정 데이터 전송)을 사용할지 여부를 나타내거나 SerCx2가 다음 전송 트랜잭션에 사용할 트랜잭션 유형을 선택할 수 있도록 하기 위해 SERCX2_TRANSACTION_TYPE 열거형 상수를 반환합니다.
설명
직렬 컨트롤러 드라이버는 옵션으로 이 함수를 구현할 수 있습니다. 구현된 경우 드라이버는 직렬 컨트롤러에 대한 프레임워크 디바이스 개체의 초기화를 완료하는 SerCx2InitializeDevice 메서드 호출에서 이 함수를 등록합니다.
직렬 컨트롤러 드라이버가 EvtSerCx2SelectNextTransmitTransactionType 함수를 구현하지 않는 경우 SerCx2는 항상 다음 전송 트랜잭션에 사용할 데이터 전송 메커니즘(PIO, 시스템 DMA 또는 사용자 지정) 형식을 결정합니다. SerCx2는 직렬 컨트롤러 드라이버에서 제공하는 I/O 구성 정보에 대한 결정을 기반으로 합니다. 시스템 DMA 전송 트랜잭션을 지원하는 드라이버는 이 정보를 포함하는 SERCX2_SYSTEM_DMA_TRANSMIT_CONFIG 구조를 제공합니다. 사용자 지정 전송 트랜잭션을 지원하는 드라이버는 이 정보를 포함하는 SERCX2_CUSTOM_TRANSMIT_CONFIG 구조를 제공합니다.
직렬 컨트롤러 드라이버가 EvtSerCx2SelectNextTransmitTransactionType 함수를 구현하는 경우 SerCx2는 이 함수를 호출하여 다음 전송 트랜잭션에 사용할 데이터 전송 메커니즘(PIO, 시스템 DMA 또는 사용자 지정) 유형을 결정합니다. 직렬 컨트롤러에 SERCX2_XXX_TRANSMIT_CONFIG 구조의 I/O 구성 정보로 적절히 설명할 수 없는 특수 하드웨어 기능이 있는 경우 이 함수를 구현할 수 있습니다.
예
EvtSerCx2CustomTransmitSelectNextTransactionType 콜백 함수를 정의하려면 먼저 정의하려는 콜백 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows 드라이버에 대한 콜백 함수 형식 집합을 제공합니다. 콜백 함수 형식을 사용하여 함수를 선언하면 드라이버, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 Code Analysis 오류를 찾을 수 있으며 Windows 운영 체제에 대한 드라이버를 작성하기 위한 요구 사항입니다.
예를 들어 이름이 지정된 MyCustomTransmitSelectNextTransactionTypeEvtSerCx2CustomTransmitSelectNextTransactionType 콜백 함수를 정의하려면 이 코드 예제와 같이 EVT_SERCX2_CUSTOM_TRANSMIT_SELECT_NEXT_TRANSACTION_TYPE 함수 형식을 사용합니다.
EVT_SERCX2_CUSTOM_TRANSMIT_SELECT_NEXT_TRANSACTION_TYPE MyCustomTransmitTransactionStart;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
_Use_decl_annotations_
SERCX2_TRANSACTION_TYPE
EvtSerCx2SelectNextTransmitTransactionType(
WDFDEVICE Device,
PMDL Mdl,
ULONG Offset,
ULONG RemainingLength,
SERCX2CUSTOMTRANSMIT *CustomTransmit,
PULONG NextTransactionLength
)
{...}
EVT_SERCX2_CUSTOM_TRANSMIT_SELECT_NEXT_TRANSACTION_TYPE 함수 형식은 Sercx.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 EVT_SERCX2_CUSTOM_TRANSMIT_SELECT_NEXT_TRANSACTION_TYPE 함수 형식에 적용되는 주석이 사용되는지 확인합니다. 함수 선언 요구 사항에 대한 자세한 내용은 KMDF 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요. Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가하세요.
요구 사항
| 지원되는 최소 클라이언트 | Windows 8.1 시작해서 사용할 수 있습니다. |
| 대상 플랫폼 | 데스크톱 |
| 헤더 | sercx.h |
| IRQL | IRQL <= DISPATCH_LEVEL 호출합니다. |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기