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) |