//++ ------------------------------------------------------------------------------------ // Details: Register a driver with *this Driver Manager. Call SetUseThisDriverToDoWork() // inform the manager which driver is the one to the work. The manager calls // the driver's init function which must be successful in order to complete the // registration. // Type: Method. // Args: vrDriver - (R) The driver to register. // vrDriverID - (R) The driver's ID to lookup by. // Return: MIstatus::success - Functional succeeded. // MIstatus::failure - Functional failed. // Throws: None. //-- bool CMIDriverMgr::RegisterDriver( const IDriver & vrDriver, const CMIUtilString & vrDriverID ) { if( HaveDriverAlready( vrDriver ) ) return MIstatus::success; IDriver * pDriver = const_cast< IDriver * >( &vrDriver ); if( !pDriver->SetId( vrDriverID ) ) return MIstatus::failure; if( !pDriver->DoInitialize() ) { SetErrorDescriptionn( MIRSRC( IDS_DRIVERMGR_DRIVER_ERR_INIT ), pDriver->GetName().c_str(), vrDriverID.c_str(), pDriver->GetError().c_str() ); return MIstatus::failure; } MapPairDriverIdToDriver_t pr( vrDriverID, pDriver ); m_mapDriverIdToDriver.insert( pr ); return MIstatus::success; }