CDllDrvObj::~CDllDrvObj() { LOCK_MUTEX( m_objMutex ); for ( int i = 0; i<CANAL_PEAK_DRIVER_MAX_OPEN; i++ ) { if ( NULL != m_drvObjArray[ i ] ) { CPeakObj *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 CanalClose( long handle ) #endif { int rv = 0; CPeakObj *pdrvObj = theApp->getDriverObject( handle ); if ( NULL == pdrvObj ) return 0; pdrvObj->close(); theApp->removeDriverObject( handle ); rv = 1; return CANAL_ERROR_SUCCESS; }