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() and remove them with waitio(). if (!(CheckIO(GameIO))) { AbortIO(GameIO); /* Ask device to abort request, if pending */ } WaitIO((GameIO); /* Wait for abort, then clean up */ CloseDevice(GameIO);