status_t usb_audio_device_removed(void *cookie) { DriverSmartLock driverLock; // released on exit Device *device = (Device *)cookie; for (int32 i = 0; i < MAX_DEVICES; i++) { if (gDevices[i] == device) { if (device->IsOpen()) { // the device will be deleted upon being freed device->Removed(); } else { gDevices[i] = NULL; delete device; TRACE("Device at %ld deleted.\n", i); } break; } } return B_OK; }