다음을 통해 공유


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 요청이 전송되기 전에 대기 마스크에 이벤트가 발생하지 않으면 이 요청은 보류 중으로 표시되고 직렬 컨트롤러 큐에서 현재 대기 마스크에서 이벤트가 다음에 발생할 때까지 대기합니다.

상태 STATUS_SUCCESS 및 0이 아닌 출력 마스크 값으로 클라이언트의 IOCTL_SERIAL_WAIT_ON_MASK 요청이 완료되면 클라이언트는 새 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의 크기(바이트)로 설정됩니다.

상태 블록

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

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

요구 사항

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

추가 정보

IOCTL_SERIAL_SET_WAIT_MASK

SERIAL_EV_XXX