Each OpenDevice() must eventually be matched by a call to CloseDevice(). All I/O requests must be complete before CloseDevice(). If any requests are still pending, abort them with AbortIO(). if (!(CheckIO(ConsIO))) AbortIO(ConsIO); /* Ask device to abort any pending requests */ WaitIO(ConsIO); /* Wait for abort, then clean up */ CloseDevice(ConsIO); /* Close console device */