Compartir a través de


Función WaitCommEvent (winbase.h)

Espera a que se produzca un evento para un dispositivo de comunicaciones especificado. El conjunto de eventos supervisados por esta función se encuentra en la máscara de eventos asociada al identificador del dispositivo.

Sintaxis

BOOL WaitCommEvent(
  [in]  HANDLE       hFile,
  [out] LPDWORD      lpEvtMask,
  [in]  LPOVERLAPPED lpOverlapped
);

Parámetros

[in] hFile

Identificador del dispositivo de comunicaciones. La función CreateFile devuelve este identificador.

[out] lpEvtMask

Puntero a una variable que recibe una máscara que indica el tipo de evento que se produjo. Si se produce un error, el valor es cero; de lo contrario, es uno de los siguientes valores.

Valor Significado
EV_BREAK
0x0040
Se ha detectado una interrupción en la entrada.
EV_CTS
0x0008
El estado de la señal CTS (despejado a envío).
EV_DSR
0x0010
El estado de la señal DSR (listo para conjuntos de datos) ha cambiado.
EV_ERR
0x0080
Error de estado de línea. Los errores de estado de línea son CE_FRAME, CE_OVERRUN y CE_RXPARITY.
EV_RING
0x0100
Se ha detectado un indicador de llamada.
EV_RLSD
0x0020
El estado de la señal RLSD (receive-line-signal-detect).
EV_RXCHAR
0x0001
Se ha recibido y colocado un carácter en el búfer de entrada.
EV_RXFLAG
0x0002
Se recibió el carácter de evento y se colocó en el búfer de entrada. El carácter de evento se especifica en la estructura DCB del dispositivo, que se aplica a un puerto serie mediante la función SetCommState .
EV_TXEMPTY
0x0004
Se envió el último carácter del búfer de salida.

[in] lpOverlapped

Puntero a una estructura OVERLAPPED. Esta estructura es necesaria si hFile se abrió con FILE_FLAG_OVERLAPPED.

Si hFile se abrió con FILE_FLAG_OVERLAPPED, el parámetro lpOverlapped no debe ser NULL. Debe apuntar a una estructura SUPERPUESTA válida. Si hFile se abrió con FILE_FLAG_OVERLAPPED y lpOverlapped es NULL, la función puede notificar incorrectamente que la operación se ha completado.

Si hFile se abrió con FILE_FLAG_OVERLAPPED y lpOverlapped no es NULL, WaitCommEvent se realiza como una operación superpuesta. En este caso, la estructura SUPERPUESTA debe contener un identificador para un objeto de evento de restablecimiento manual (creado mediante la función CreateEvent ).

Si hFile no se abrió con FILE_FLAG_OVERLAPPED, WaitCommEvent no devuelve hasta que se produce uno de los eventos especificados o se produce un error.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función WaitCommEvent supervisa un conjunto de eventos para un recurso de comunicaciones especificado. Para establecer y consultar la máscara de eventos actual de un recurso de comunicaciones, use las funciones SetCommMask y GetCommMask .

Si la operación superpuesta no se puede completar inmediatamente, la función devuelve FALSE y la función GetLastError devuelve ERROR_IO_PENDING, lo que indica que la operación se está ejecutando en segundo plano. Cuando esto sucede, el sistema establece el miembro hEvent de la estructura SUPERPUESTA en el estado no señalado antes de que WaitCommEvent vuelva y, a continuación, lo establece en el estado señalado cuando se produce uno de los eventos especificados o un error. El proceso de llamada puede usar una de las funciones de espera para determinar el estado del objeto de evento y, a continuación, usar la función GetOverlappedResult para determinar los resultados de la operación WaitCommEvent . GetOverlappedResult informa del éxito o error de la operación, y la variable a la que apunta el parámetro lpEvtMask se establece para indicar el evento que se produjo.

Si un proceso intenta cambiar la máscara de eventos del controlador del dispositivo mediante la función SetCommMask mientras una operación WaitCommEvent superpuesta está en curso, WaitCommEvent devuelve inmediatamente. La variable a la que apunta el parámetro lpEvtMask se establece en cero.

Ejemplos

Para obtener un ejemplo, consulte Supervisión de eventos de comunicaciones.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado winbase.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

Funciones de comunicaciones

Recursos de comunicaciones

CreateFile

DCB

GetCommMask

GetOverlappedResult

OVERLAPPED

SetCommMask

SetCommState