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

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

EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;

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

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

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

요구 사항

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

추가 정보

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize