Talk:How to check if device has memory card or not
Under drive lette E may be internal non removable card. Like - mass media internal storage. Your code is not correct.
Jp4symbian - Memory card or mass memory?
Has anyone figured out how to differentiate memory card from mass memory. Both have similar TDriveInfo type of EMediaHardDisk.Also PathInfo::MemoryCardRootPath() returns the Mass memory drive rather than the Memory card drive.
16:00, 13 October 2011 (EEST)
Hamishwillee - @Jp4symbian - perhaps KDriveAttRemovable
Its quite possible the author is not watching this article which they created in 2007. I suggest you raise the request on the forums - but I would appreciate it if you added the answer to the article if you find one.
I suspect the mass memory is just a MMC card soldered in, which is why it returns as a memory card for PathInfo. I'd search on KDriveAttRemovable in the library.
03:52, 14 October 2011 (EEST)
I just posted in case someone reaches this page while searching & might know the solution.My test on Nokia C7 says that KDriveAttRemovable is set for both Mass Memory & Memory Card.
09:37, 14 October 2011 (EEST)
Hamishwillee - That sux.
Thanks for letting me know. That is bad. Can we reasonably assume that the drive will be the later of any drives that report themselves as MMC? Otherwise I again suggest you try the discussion boards. If you don't get an answer in a few days send me a link (private messaging) and I'll see if I can find a file system person from my mis-spent Symbian Ltd days to give us an answer.
08:33, 17 October 2011 (EEST)
On S60 devices I'm using a "top-down" approach: First, I'm scanning for EDriveF, then for EDriveE. As type, I've set EMediaHardDisk for both, memory card and mass memory. If there's a mass storage available, the memory card will probably have drive letter F and subsequently the memory card will have drive letter E. If there's no mass storage, drive letter F will be not in use and therefore the memory card will have drive letter E. I can confirm that KDriveAttRemovable is set for both memories.
19:28, 3 November 2011 (EET)
Hamishwillee - @patrick - copy in your code?
Would it be possible for you to copy your code into the article in its own section? That would save other developers having to re-invent the wheel.
05:31, 4 November 2011 (EET)
I've done something like that...
for (TInt driveNumber=EDriveF; driveNumber>=EDriveE; driveNumber--)
if(driveInfo.iType == EMediaHardDisk)
// if there is a mass storage (EDriveE), the memory card (EDriveF) will be detected during the first loop
// if there is no mass storage, the memory card will be detected during the second loop as it will be on EDriveE
13:19, 6 November 2011 (EET)
Hamishwillee - @Patrickfrei - thanks
Thanks Patrick, its a start for people, which is a good thing. When/if a bullet proof set of code is created it should be merged into the above article. regardsH
07:38, 9 November 2011 (EET)