diff -r edd621764147 -r 1b207dd38b72 contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp --- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Tue May 11 16:30:05 2010 +0300 +++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Tue May 25 13:01:39 2010 +0300 @@ -22,6 +22,7 @@ #include #include #include +#include #include "cpglobals.h" #include "chswiusbhandler.h" @@ -75,6 +76,7 @@ User::LeaveIfError( iApaLsSession.Connect() ); User::LeaveIfError( iFs.Connect() ); + iMassMemoryAvailable = InternalMassMemoryAvailable(); iUsbHandler = CCHSwiUsbHandler::NewL( this, iFs ); iUsbObserver = CCHSwiUsbObserver::NewL( iUsbHandler, iFs ); @@ -280,7 +282,45 @@ // TBool CCHSwiPlugin::IsMassStorageMode() { - return iMassStorageMode; + if (iMassMemoryAvailable) + { + return iMassStorageMode; + } + else + { + return EFalse; + } } +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +TBool CCHSwiPlugin::InternalMassMemoryAvailable( ) + { + TBool result(EFalse); + // List all drives in the system + TDriveList driveList; + TInt error = iFs.DriveList( driveList ); + + if ( KErrNone == error ) + { + for ( TInt driveNumber = EDriveY; + driveNumber >= EDriveA; + driveNumber-- ) + { + TUint status( 0 ); + TInt error = DriveInfo::GetDriveStatus( iFs, driveNumber, status ); + if( (KErrNone == error) && ( status & DriveInfo::EDriveExternallyMountable ) + && ( status & DriveInfo::EDriveInternal ) ) + { + // Internal Memory + result = ETrue; + break; + } + } + } + return result; + } + // End of File