Определение пути к карте памяти телефона

Писал программу для «Gigabyte GSmart S1205», посмотрел что карта памяти в устройстве выглядит как «Storage Card» и начал использовать это имя в своем коде. Все работало отлично. Решил поставить программу на свой Witu Omnia i900. В нем вообще нет карты памяти, там диск на 16ГБ и называется он «Память телефона». Моя программ продолжала работать, но она создавала папку «Storage Card» в памяти устройства! Привожу код который поможет Вам точно определить название Вашего съемного диска в устройстве.

//########## ########## ########## ########## ########## ########## ########## ########## ##########
            public static readonly IntPtr INVALID_HANDLE_VALUE = (IntPtr)(-1);
            [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
            public struct WIN32_FIND_DATA
            {
                public int dwFileAttributes;
                public FILETIME ftCreationTime;
                public FILETIME ftLastAccessTime;
                public FILETIME ftLastWriteTime;
                public int nFileSizeHigh;
                public int nFileSizeLow;
                public int dwOID;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
                public string cFileName;
                [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
                public string cAlternateFileName;
            }
            [StructLayout(LayoutKind.Sequential)]
            public struct FILETIME
            {
                public int dwLowDateTime;
                public int dwHighDateTime;
            };
            [DllImport("note_prj", EntryPoint = "FindFirstFlashCard")]
            public extern static IntPtr FindFirstFlashCard(ref WIN32_FIND_DATA findData);
            [DllImport("note_prj", EntryPoint = "FindNextFlashCard")]
            [return: MarshalAs(UnmanagedType.Bool)]
            public extern static bool FindNextFlashCard(IntPtr hFlashCard, ref WIN32_FIND_DATA findData);
            [DllImport("coredll")]
            public static extern bool FindClose(IntPtr hFindFile); 
//########## ########## ########## ########## ########## ########## ########## ########## ##########


public static string GetRemovableStorageDirectory()
            {
                string removableStorageDirectory = null;
                WIN32_FIND_DATA findData = new WIN32_FIND_DATA();
                IntPtr handle = IntPtr.Zero;
                handle = FindFirstFlashCard(ref findData);
                if (handle != INVALID_HANDLE_VALUE)
                {
                    do
                    {
                        if (!string.IsNullOrEmpty(findData.cFileName))
                        {
                            removableStorageDirectory = findData.cFileName;
                            break;
                        }
                    }
                    while (FindNextFlashCard(handle, ref findData));
                    FindClose(handle);
                }
                return removableStorageDirectory;
            }


В том месте где Вам надо узнать точное наименование Вашего съемного устройства пишем примерно следующее:

removableDirectory = GetRemovableStorageDirectory();
if (removableDirectory != null)
{
string path = "\\" + removableDirectory + "\\";
}