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