userlibandfileserver/fileserver/sfat32/sl_drv.cpp
branchRCL_3
changeset 42 a179b74831c9
parent 36 bbf8bed59bcb
child 43 c1f20ce4abcf
equal deleted inserted replaced
41:0ffb4e86fcc9 42:a179b74831c9
   117     @return KErrNotReady - non-critical error
   117     @return KErrNotReady - non-critical error
   118     @return KErrCorrupt - an illegal write is detected
   118     @return KErrCorrupt - an illegal write is detected
   119     @return KErrBadPower - failure due to low power
   119     @return KErrBadPower - failure due to low power
   120 
   120 
   121 */
   121 */
   122 TInt TDriveInterface::ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const
   122 TInt TDriveInterface::ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const
   123 {
   123 {
   124     //__PRINT2(_L("#=+++ Read_nc2: pos:%LU, len:%u"), aPos, aLength);
   124     //__PRINT2(_L("#=+++ Read_nc2: pos:%LU, len:%u"), aPos, aLength);
   125 
   125 
   126     TInt nRes = KErrNone;
   126     TInt nRes = KErrNone;
   127     TInt cntRetry = KMaxRecoverableRetries;
   127     TInt cntRetry = KMaxRecoverableRetries;
   128 
   128 
   129     for(;;)
   129     for(;;)
   130     {
   130     {
   131         nRes = iProxyDrive.Read(aPos, aLength, aTrg, aMessage, anOffset);
   131         nRes = iProxyDrive.Read(aPos, aLength, aTrg, aMessage, anOffset, aFlag);
   132         if (nRes==KErrNone)
   132         if (nRes==KErrNone)
   133             break;
   133             break;
   134 
   134 
   135         __PRINT4(_L("TDriveInterface::ReadNonCritical() Failure! drv:%d aPosl=%d len=%d anOffset=%d"), iMount->DriveNumber(), aPos,aLength, anOffset);
   135         __PRINT4(_L("TDriveInterface::ReadNonCritical() Failure! drv:%d aPosl=%d len=%d anOffset=%d"), iMount->DriveNumber(), aPos,aLength, anOffset);
   136         
   136         
   200     @return KErrNotReady - non-critical error
   200     @return KErrNotReady - non-critical error
   201     @return KErrBadPower - write not attempted due to low batteries
   201     @return KErrBadPower - write not attempted due to low batteries
   202     @return KErrCorrupt - an illegal write is detected
   202     @return KErrCorrupt - an illegal write is detected
   203     @return KErrAccessDenied - write to protected media
   203     @return KErrAccessDenied - write to protected media
   204 */
   204 */
   205 TInt TDriveInterface::WriteNonCritical(TInt64 aPos, TInt aLength, const TAny* aSrc, const RMessagePtr2 &aMessage, TInt anOffset)
   205 TInt TDriveInterface::WriteNonCritical(TInt64 aPos, TInt aLength, const TAny* aSrc, const RMessagePtr2 &aMessage, TInt anOffset, TUint aFlag)
   206 {
   206 {
   207     //__PRINT2(_L("#=+++ Write_NC: pos:%LU, len:%u"), aPos, aLength);
   207     //__PRINT2(_L("#=+++ Write_NC: pos:%LU, len:%u"), aPos, aLength);
   208 
   208 
   209     
   209     
   210     TInt nRes = KErrNone;
   210     TInt nRes = KErrNone;
   211     TInt cntRetry = KMaxRecoverableRetries;
   211     TInt cntRetry = KMaxRecoverableRetries;
   212 
   212 
   213     for(;;)
   213     for(;;)
   214     {
   214     {
   215         iMount->OpenMountForWrite(); //-- make a callback to CFatMountCB to perform some actions on 1st write.
   215         iMount->OpenMountForWrite(); //-- make a callback to CFatMountCB to perform some actions on 1st write.
   216         nRes = iProxyDrive.Write(aPos, aLength, aSrc, aMessage, anOffset);
   216         nRes = iProxyDrive.Write(aPos, aLength, aSrc, aMessage, anOffset, aFlag);
   217         if (nRes==KErrNone)
   217         if (nRes==KErrNone)
   218             break;
   218             break;
   219 
   219 
   220         __PRINT4(_L("TDriveInterface::WriteNonCritical() failure! drv:%d, Pos=%LU len=%d anOffset=%d"), iMount->DriveNumber(), aPos, aLength, anOffset);
   220         __PRINT4(_L("TDriveInterface::WriteNonCritical() failure! drv:%d, Pos=%LU len=%d anOffset=%d"), iMount->DriveNumber(), aPos, aLength, anOffset);
   221         
   221         
   542     return ETrue;
   542     return ETrue;
   543 }
   543 }
   544 
   544 
   545 //-- see original TDriveInterface methods
   545 //-- see original TDriveInterface methods
   546 
   546 
   547 TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const
   547 TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const
   548 {
   548 {
   549     EnterCriticalSection();
   549     EnterCriticalSection();
   550     TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg, aMessage.Handle(), anOffset);
   550     TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg, aMessage.Handle(), anOffset, aFlag);
   551     LeaveCriticalSection();
   551     LeaveCriticalSection();
   552     return nRes;
   552     return nRes;
   553 }
   553 }
   554        
   554 
   555 TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,TDes8& aTrg) const
   555 TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,TDes8& aTrg) const
   556 {
   556 {
   557     EnterCriticalSection();
   557     EnterCriticalSection();
   558     TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg);
   558     TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg);
   559     LeaveCriticalSection();
   559     LeaveCriticalSection();
   560     return nRes;
   560     return nRes;
   561 }
   561 }
   562 
   562 
   563 TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset)
   563 TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag)
   564 {
   564 {
   565     EnterCriticalSection();
   565     EnterCriticalSection();
   566     TInt nRes = iLocalDrive->Write(aPos, aLength, aSrc, aMessage.Handle(), anOffset);
   566     TInt nRes = iLocalDrive->Write(aPos, aLength, aSrc, aMessage.Handle(), anOffset, aFlag);
   567     LeaveCriticalSection();
   567     LeaveCriticalSection();
   568     return nRes;
   568     return nRes;
   569 }
   569 }
   570 
   570 
   571 TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos, const TDesC8& aSrc)
   571 TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos, const TDesC8& aSrc)