串口有关问题,一直未有好的解决办法

串口问题,一直未有好的解决方法!
我作串口通讯程序,组件TCCom,有这样一个问题,我用串口组件打开一个串口设备,正常通讯都没有问题。
这时用户拔掉串口设备,这时我的串口组件无法操作串口了,也无法关掉,一操作就会报“系统错误”
这时程序就死了!

我目前的解决方法是在操作前都会检测一下串口设备是否接在电脑上。因为我们的串口设备都在注册表中有
注册。暂时可以解决这个问题。

新问题来了,如果用户拔下了设备,又插上了设备。那么我的程序又能检测到设备,但是因为comport串口中断了,所以
操作时还是会报错,程序会挂掉。

我现在的解决方法是,如果串口报异常,程序给用户一些提示信息后 就自动结束掉,如果我还检测到有串口设备,就重新运行一个实例。

程序如何才能在串口设备不存在的情况,正常关闭,程序不持掉?

------解决方案--------------------
拔除设备时,程序处理消息WM_DeviceChange:
判断DBT_DEVICEREMOVECOMPLETE则弹出对话框——说明设备移除程序需要关闭。
或者判断DBT_DEVICEARRIVAL重新执行设备初始化工作。