다음을 통해 공유


IOCTL_SERIAL_WAIT_ON_MASK IOCTL(ntddser.h)

IOCTL_SERIAL_WAIT_ON_MASK 요청은 IOCTL_SERIAL_SET_WAIT_MASK 요청을 사용하여 지정된 대기 이벤트가 발생할 때까지 기다리는 데 사용됩니다.

다음 이벤트 중 하나가 발생한 후 대기 마스크 요청이 완료됩니다.

  • 가장 최근의 set-wait-mask 요청에 의해 지정된 대기 이벤트가 발생합니다.
  • 마스크 대기 요청이 보류 중인 동안 IOCTL_SERIAL_SET_WAIT_MASK 요청이 수신됩니다. 드라이버는 보류 중인 대기 마스크 요청을 STATUS_SUCCESS 상태로 완료하고 출력 대기 마스크는 0으로 설정됩니다.
클라이언트는 SERIAL_EV_EVENT2통해 SERIAL_EV_RXCHAR 플래그 비트로 표시되는 대기 이벤트를 기다릴 수 있습니다. 이러한 이벤트 플래그에 대한 자세한 내용은 SERIAL_EV_XXX참조하세요.

클라이언트는 IOCTL_SERIAL_WAIT_ON_MASK 요청을 전송하여 가장 최근 IOCTL_SERIAL_SET_WAIT_MASK 요청에서 제공한 대기 마스크에 지정된 이벤트가 발생할 때까지 기다립니다. IOCTL_SERIAL_WAIT_ON_MASK 요청을 보내기 전에 현재 대기 마스크에서 하나 이상의 이벤트가 발생하는 경우 이 요청은 STATUS_SUCCESS 상태와 이벤트를 식별하는 출력 마스크 값으로 즉시 완료됩니다. IOCTL_SERIAL_WAIT_ON_MASK 요청을 보내기 전에 대기 마스크에 이벤트가 발생하지 않으면 이 요청은 보류 중인 것으로 표시되고 직렬 컨트롤러 큐에서 현재 대기 마스크에서 다음 이벤트가 발생할 때까지 대기합니다.

클라이언트의 IOCTL_SERIAL_WAIT_ON_MASK 요청이 STATUS_SUCCESS 상태와 0이 아닌 출력 마스크 값으로 완료된 후 클라이언트는 새 IOCTL_SERIAL_WAIT_ON_MASK 요청을 보내 현재 대기 마스크의 다른 이벤트를 기다릴 수 있습니다. 이전 IOCTL_SERIAL_WAIT_ON_MASK 요청이 완료된 후에 발생하는 새 이벤트만 STATUS_SUCCESS 상태 및 0이 아닌 출력 마스크 값으로 새 IOCTL_SERIAL_WAIT_ON_MASK 요청이 완료됩니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

없음.

입력 버퍼 길이

없음.

출력 버퍼

AssociatedIrp.System 버퍼는 이벤트 대기 마스크를 보유하는 ULONG 버퍼를 가리킵니다. 이벤트 대기 마스크는 발생한 대기 이벤트를 나타냅니다. 이벤트 대기 마스크는 하나 이상의 SERIAL_EV_XXX 플래그 비트의 비트 OR 또는 0으로 설정됩니다.

출력 버퍼 길이

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

상태 블록

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

상태 멤버는 직렬 디바이스 제어 요청 대한제네릭 상태 값 중 하나로 설정됩니다. STATUS_INVALID_PARAMETER 상태는 대기 이벤트가 설정되지 않거나 마스크 대기 요청이 이미 보류 중임을 나타냅니다.

요구 사항

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

참고 항목

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX