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
);
라는 MyEvtSerCxWaitmask
EvtSerCxWaitmask 콜백 함수를 정의하려면 먼저 다음과 같이 SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 필요한 함수 선언을 제공해야 합니다.
EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;
그런 다음, 다음과 같이 콜백 함수를 구현합니다.
NTSTATUS
MyEvtSerCxWaitmask(
__in WDFDEVICE Device
)
{ ... }
함수 선언에 대한 SDV 요구 사항에 대한 자세한 내용은 KMDF 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8 시작해서 사용할 수 있습니다. |
대상 플랫폼 | 데스크톱 |
머리글 | sercx.h |
IRQL | IRQL <= DISPATCH_LEVEL 호출 |