EVT_SERCX_WAITMASK 콜백 함수(sercx.h)
EvtSerCxWaitmask 이벤트 콜백 함수는 하드웨어 이벤트 집합을 지정하는 비트 마스크 값인 대기 마스크의 이벤트를 모니터링하도록 직렬 컨트롤러를 구성합니다.
통사론
EVT_SERCX_WAITMASK EvtSercxWaitmask;
NTSTATUS EvtSercxWaitmask(
[in] WDFDEVICE Device
)
{...}
매개 변수
[in] Device
직렬 컨트롤러를 나타내는 프레임워크 디바이스 개체에 대한 WDFDEVICE 핸들입니다.
반환 값
EvtSerCxWaitmask 함수는 호출에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 적절한 오류 상태 코드를 반환합니다.
발언
직렬 컨트롤러 드라이버는 이 콜백 함수를 구현합니다. SerCx(직렬 프레임워크 확장)는 대기 마스크가 변경되면 드라이버에 알리기 위해 이 함수를 호출합니다. 이 호출 중에 EvtSerCxWaitmask 함수는 SerCxGetWaitMask 메서드를 호출하여 새 대기 마스크를 가져옵니다. 드라이버는 즉시 새 대기 마스크에서 이벤트를 모니터링하기 시작하고 이전 EvtSerCxWaitmask 호출에서 제공되었을 수 있는 이전 대기 마스크를 삭제합니다. 새 대기 마스크가 0이면 드라이버는 이전 대기 마스크를 삭제하고 대기 마스크 이벤트를 모니터링하지 않습니다.
SerCx가 클라이언트로부터 IOCTL_SERIAL_SET_WAIT_MASK 요청을 받으면 SerCx의 요청 처리기는 EvtSerCxWaitmask 함수를 호출하여 새 대기 마스크를 설정합니다. 대기 마스크로 지정할 수 있는 이벤트 유형에 대한 자세한 내용은 SERIAL_EV_XXX참조하세요.
EvtSerCxWaitmask 함수는 새 대기 마스크의 이벤트를 모니터링하도록 직렬 컨트롤러 하드웨어를 구성합니다. 일반적으로 이 함수는 이러한 이벤트에 대해 인터럽트할 수 있도록 합니다. 하드웨어를 구성한 후에는 대기 마스크의 이벤트가 발생할 때까지 기다리지 않고 함수가 즉시 반환되어야 합니다.
나중에 대기 마스크의 이벤트가 인터럽트를 발생시키는 경우 직렬 컨트롤러 드라이버의 ISR은 DPC 함수를 실행하도록 예약합니다. 이 DPC 함수는 SerCxCompleteWait 메서드를 호출하여 SerCx에 이벤트를 알립니다.
처음에는 클라이언트가 직렬 포트에 대한 연결을 열고 첫 번째 EvtSerCxWaitmask 호출하기 전에 대기 마스크는 사실상 0이며 직렬 컨트롤러 드라이버는 SERIAL_EV_XXX 이벤트를 모니터링하지 않습니다.
EvtSerCxWaitmask 콜백 함수를 등록하기 위해 컨트롤러 드라이버는 EvtDriverDeviceAdd 콜백 중에 SerCxInitialize 메서드를 호출합니다.
예제
이 콜백에 대한 함수 형식은 다음과 같이 Sercx.h에서 선언됩니다.
typedef NTSTATUS
EVT_SERCX_WAITMASK(
__in WDFDEVICE Device
);
EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;
그런 다음 다음과 같이 콜백 함수를 구현합니다.
NTSTATUS
MyEvtSerCxWaitmask(
__in WDFDEVICE Device
)
{ ... }
함수 선언에 대한 SDV 요구 사항에 대한 자세한 내용은 KMDF 드라이버함수 역할 형식을 사용하여 함수 선언을 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8부터 사용할 수 있습니다. |
대상 플랫폼 | 바탕 화면 |
헤더 | sercx.h |
IRQL |
IRQL <= DISPATCH_LEVEL 호출 |
참고 항목
SerCxGetWaitMask