다음을 통해 공유


IOCTL_SERIAL_SET_WAIT_MASK IOCTL(ntddser.h)

IOCTL_SERIAL_SET_WAIT_MASK 요청은 지정된 대기 이벤트 집합 중 하나가 발생한 후 클라이언트에 알리도록 직렬 컨트롤러 드라이버를 구성합니다.

클라이언트는 SERIAL_EV_EVENT2 통해SERIAL_EV_RXCHAR 플래그 비트로 표시되는 대기 이벤트를 기다릴 수 있습니다. 이러한 이벤트 플래그에 대한 자세한 내용은 설명 섹션을 참조하세요.

클라이언트는 하나 이상의 이벤트 플래그에 대한 비트 OR로 입력 이벤트 대기 마스크를 설정하여 대기 이벤트를 지정합니다. 클라이언트는 입력 이벤트 대기 마스크를 0으로 설정하여 모든 대기 이벤트를 지울 수 있습니다.

클라이언트는 IOCTL_SERIAL_WAIT_ON_MASK 요청을 사용하여 대기 이벤트가 발생할 때까지 기다립니다. set-wait-mask 요청이 처리될 때 대기-온-마스크 요청이 이미 보류 중인 경우 대기 대기 이벤트 요청은 STATUS_SUCCESS 상태 완료되고 출력 대기 이벤트 마스크는 0으로 설정됩니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

ASSOCIATedIrp.SystemBuffer 멤버는 클라이언트가 할당하고 이벤트 대기 마스크에 설정하는 ULONG 버퍼를 가리킵니다. 대기 마스크는 하나 이상의 SERIAL_EV_XXX 플래그 비트의 비트 OR 또는 0으로 설정됩니다.

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLength 멤버는 ULONG의 크기(바이트)로 설정됩니다.

출력 버퍼

없음

출력 버퍼 길이

없음

상태 블록

정보 멤버가 0으로 설정됩니다.

Status 멤버는 직렬 디바이스 제어 요청에 대한 일반 상태 값 중 하나로 설정됩니다. STATUS_INVALID_PARAMETER 상태 입력 대기 마스크가 잘못되었음을 나타냅니다.

설명

SERIAL_EV_XXX 상수는 직렬 포트에 대한 대기 마스크의 플래그 비트를 정의합니다.

#define SERIAL_EV_RXCHAR     0x0001
#define SERIAL_EV_RXFLAG     0x0002
#define SERIAL_EV_TXEMPTY    0x0004
#define SERIAL_EV_CTS        0x0008
#define SERIAL_EV_DSR        0x0010
#define SERIAL_EV_RLSD       0x0020
#define SERIAL_EV_BREAK      0x0040
#define SERIAL_EV_ERR        0x0080
#define SERIAL_EV_RING       0x0100
#define SERIAL_EV_PERR       0x0200
#define SERIAL_EV_RX80FULL   0x0400
#define SERIAL_EV_EVENT1     0x0800
#define SERIAL_EV_EVENT2     0x1000

SERIAL_EV_XXX 상수는 대기 마스크에 지정할 수 있는 이벤트 유형을 정의합니다. 클라이언트(애플리케이션 또는 주변 드라이버)가 직렬 포트에 대한 연결을 연 후 클라이언트는 클라이언트가 모니터링해야 하는 이벤트 유형을 나타내는 대기 마스크를 지정할 수 있습니다. 이러한 이벤트는 직렬 포트의 하드웨어 상태 변경입니다. 대기 마스크의 이벤트가 발생하면 클라이언트에 알림이 표시됩니다.

IOCTL_SERIAL_SET_WAIT_MASKIOCTL_SERIAL_GET_WAIT_MASK 컨트롤 요청은 이벤트 대기 마스크를 사용하여 클라이언트가 대기할 수 있는 이벤트 집합을 지정합니다. 대기 마스크 값은 하나 이상의 SERIAL_EV_XXX 상수 중 0이거나 비트 OR입니다. 대기 마스크 값이 0이면 클라이언트가 이벤트를 기다리고 있지 않음을 나타냅니다.

클라이언트는 현재 설정된 대기 마스크에서 이벤트를 대기하기 위해 IOCTL_SERIAL_WAIT_ON_MASK 제어 요청을 보냅니다. 직렬 컨트롤러 드라이버는 대기 마스크의 이벤트가 발생할 때 이 요청을 완료합니다.

다음 표에서는 SerCx2, SerCx 및 Serial.sys 지원되는 SERIAL_EV_XXX 플래그 비트를 보여 줍니다. 테이블의 항목은 직렬 프레임워크 확장 또는 드라이버가 해당 플래그 비트를 지원한다는 것을 나타냅니다. 아니요 항목은 플래그 비트가 지원되지 않음을 나타냅니다.

플래그 비트 SerCx2 SerCx Serial.sys
SERIAL_EV_RXCHAR Yes Yes Yes
SERIAL_EV_RXFLAG 참고를 참조하세요.
SERIAL_EV_TXEMPTY Yes Yes Yes
SERIAL_EV_CTS Yes Yes Yes
SERIAL_EV_DSR Yes Yes Yes
SERIAL_EV_RLSD 참고를 참조하세요. Yes Yes
SERIAL_EV_BREAK Yes Yes Yes
SERIAL_EV_ERR Yes Yes Yes
SERIAL_EV_RING 참고를 참조하세요. Yes Yes
SERIAL_EV_PERR 참고를 참조하세요. 아니요 No
SERIAL_EV_RX80FULL 참고를 참조하세요. 아니요
SERIAL_EV_EVENT1 참고를 참조하세요. 아니요 No
SERIAL_EV_EVENT2 참고를 참조하세요. No
 
참고 SerCx2는 직렬 컨트롤러 드라이버 및 직렬 컨트롤러 하드웨어의 기능에 따라 표시된 테이블 항목의 플래그 비트를 지원하거나 지원하지 않을 수 있습니다.
 
SerCx2, SerCx 및 Serial.sys 대한 자세한 내용은 직렬 컨트롤러 드라이버 개요를 참조하세요.

요구 사항

요구 사항
헤더 ntddser.h(Ntddser.h 포함)

추가 정보

IOCTL_SERIAL_GET_CHARS

IOCTL_SERIAL_GET_WAIT_MASK

IOCTL_SERIAL_SET_CHARS

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_CHARS

SERIAL_STATUS