EVT_SERCX_TRANSMIT 콜백 함수(sercx.h)
EvtSerCxTransmit 이벤트 콜백 함수는 쓰기(전송) 작업을 수행하도록 UART(직렬 컨트롤러 디바이스)를 준비합니다.
구문
EVT_SERCX_TRANSMIT EvtSercxTransmit;
NTSTATUS EvtSercxTransmit(
[in] WDFDEVICE Device,
[in] size_t Length
)
{...}
매개 변수
[in] Device
직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다.
[in] Length
전송할 바이트 수입니다. 컨트롤러 드라이버는 이 값을 힌트로 사용하여 PIO 또는 DMA를 사용하여 데이터 전송을 수행할지 여부를 결정할 수 있습니다.
반환 값
EvtSerCxTransmit 함수는 호출이 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 상태 코드를 반환합니다.
설명
SerCx(직렬 프레임워크 확장)는 이 함수를 호출하여 데이터를 전송하도록 직렬 컨트롤러 하드웨어를 구성합니다. 필요한 경우 EvtSerCxTransmit 함수는 인터럽트를 사용하도록 설정할 수 있습니다.
EvtSerCxTransmit 함수가 출력 데이터를 전송 FIFO 버퍼에 반드시 쓰는 것은 아닙니다. 직렬 컨트롤러 하드웨어 또는 전송 유형에 따라 이 함수는 데이터를 쓰기 위해 DMA 작업을 설정하거나 전송/수신 DPC 함수를 예약하여 데이터를 쓸 수 있습니다. 직렬 컨트롤러 드라이버는 이 DPC 함수를 구현하여 데이터를 직렬 컨트롤러로 전송하고 컨트롤러에서 데이터를 수신합니다. DPC 중에 DPC 함수는 데이터를 전송할 수 있는지 여부를 결정하고, 그렇다면 PIO를 사용하여 데이터를 직렬 컨트롤러의 전송 FIFO로 전송합니다.
직렬 컨트롤러의 전송 FIFO가 가득 차거나 거의 가득 차 있지만 FIFO의 낮은 워터 마크 인터럽트가 활성화된 경우 EvtSerCxTransmit 함수는 단순히 반환할 수 있습니다. 나중에 컨트롤러 드라이버의 ISR은 전송/수신 DPC 함수를 실행하도록 예약할 수 있으며, 이 함수는 더 많은 출력 데이터를 전송 FIFO로 전송할 수 있습니다.
EvtSerCxTransmit 콜백 함수를 등록하기 위해 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 중에 SerCxInitialize 메서드를 호출합니다.
예제
이 콜백에 대한 함수 형식은 다음과 같이 Sercx.h에서 선언됩니다.
typedef NTSTATUS
EVT_SERCX_TRANSMIT(
__in WDFDEVICE Device
);
라는 MyEvtSerCxTransmit
EvtSerCxTransmit 콜백 함수를 정의하려면 먼저 다음과 같이 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.
EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;
그런 다음, 다음과 같이 콜백 함수를 구현합니다.
NTSTATUS
MyEvtSerCxTransmit(
__in WDFDEVICE Device
)
{ ... }
함수 선언에 대한 SDV 요구 사항에 대한 자세한 내용은 KMDF 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 시작해서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | sercx.h |
IRQL | IRQL <= DISPATCH_LEVEL 호출 |