Beispiel #1
0
//++ ------------------------------------------------------------------------------------
// 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;
}