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으로 설정됩니다.
주 코드
입력 버퍼
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_MASK 및 IOCTL_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 |
요구 사항
요구 사항 | 값 |
---|---|
헤더 | ntddser.h(Ntddser.h 포함) |