다음을 통해 공유


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
    );

라는 MyEvtSerCxTransmitEvtSerCxTransmit 콜백 함수를 정의하려면 먼저 다음과 같이 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.

EVT_SERCX_TRANSMIT MyEvtSerCxTransmit;

그런 다음, 다음과 같이 콜백 함수를 구현합니다.

NTSTATUS
  MyEvtSerCxTransmit(
    __in WDFDEVICE Device
    )
{ ... }

함수 선언에 대한 SDV 요구 사항에 대한 자세한 내용은 KMDF 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 시작해서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 sercx.h
IRQL IRQL <= DISPATCH_LEVEL 호출

추가 정보

EvtDriverDeviceAdd

SerCxInitialize

WdfDpcEnqueue