El problema que estás experimentando con la función `WaitCommEvent` al migrar de Windows 95 a Windows 2000 puede deberse a varios factores relacionados con las diferencias en la gestión de las API de comunicaciones entre estas versiones de Windows. Aquí hay algunas sugerencias que podrían ayudarte a resolver el problema:
1.
Verifica la configuración de la comunicación:
- Asegúrate de que la configuración del puerto serie (baud rate, paridad, bits de datos, etc.) sea correcta y compatible con Windows 2000. Puedes utilizar la estructura `DCB` (Device Control Block) para configurar estos parámetros adecuadamente.
2.
Manejo de eventos:
- En Windows 2000, es importante asegurarse de que los eventos de comunicación estén correctamente configurados. Asegúrate de que estás utilizando la función `SetCommMask` para establecer la máscara de eventos que deseas monitorear antes de llamar a `WaitCommEvent`.
3.
Uso de overlapped I/O:
- Considera utilizar operaciones de E/S superpuestas (overlapped I/O) si no lo has hecho ya. Esto puede ayudar a evitar bloqueos en la función `WaitCommEvent`. Asegúrate de que tu aplicación esté diseñada para manejar correctamente las operaciones asíncronas.
4.
Revisar el código de bloqueo:
- Asegúrate de que no haya condiciones de carrera o bloqueos en tu código que puedan estar causando que `WaitCommEvent` no se complete. Revisa el flujo de tu aplicación y asegúrate de que no haya otros hilos o procesos que interfieran con la comunicación.
5.
Depuración:
- Utiliza herramientas de depuración para rastrear el estado de tu aplicación y ver en qué punto se está bloqueando. Esto puede darte pistas sobre lo que está sucediendo.
6.
Documentación y ejemplos:
- Revisa la documentación de Microsoft sobre `WaitCommEvent` y otros relacionados con la comunicación en Windows 2000. También puedes buscar ejemplos de código que funcionen en esta plataforma para comparar con tu implementación.
Si después de seguir estos pasos sigues teniendo problemas, considera compartir fragmentos de tu código o detalles adicionales sobre cómo estás configurando y utilizando las API de comunicaciones. Esto podría ayudar a identificar el problema más específicamente.
Un cordial saludo.