CDllDrvObj::~CDllDrvObj() { LOCK_MUTEX( m_objMutex ); for ( int i = 0; i<VSCP_LOGGER_DRIVER_MAX_OPEN; i++ ) { if ( NULL == m_drvObjArray[ i ] ) { Cudpdrv *pdrvObj = getDriverObject( i ); if ( NULL != pdrvObj ) { pdrvObj->close(); delete m_drvObjArray[ i ]; m_drvObjArray[ i ] = NULL; } } } UNLOCK_MUTEX( m_objMutex ); #ifdef WIN32 CloseHandle( m_objMutex ); #else pthread_mutex_destroy( &m_objMutex ); #endif }
extern "C" int VSCPClose( long handle ) #endif { int rv = 0; Cudpdrv *pdrvObj = theApp->getDriverObject( handle ); if ( NULL == pdrvObj ) return 0; pdrvObj->close(); theApp->removeDriverObject( handle ); rv = 1; return CANAL_ERROR_SUCCESS; }