А как вообще должен работать COM-порт? Каким образом он должен узнавать когда отправлять данные, а когда принимать? Я имею ввиду виртуальный COM-порт, т.е. который не работает с железом. Как реализовать обработку IOCTL_SERIAL_WAIT_ON_MASK? Наверное это связано с масками и соответственно с обработкой WAIT_ON_MASK в DispatchDeviceControl.