Compact Framework - Получить серийный номер карты памяти - PullRequest
4 голосов
/ 16 февраля 2009

Утро всем,

Как мне узнать серийный номер карты памяти / SD на моем мобильном устройстве? Я использую C # .Net 2.0 на Compact Framework V2.0.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 31 марта 2009

Среда Smart Device Framework предоставляет механизм для получения серийных номеров SD-карт и идентификаторов производителей.

1 голос
/ 16 февраля 2009

Вам необходимо использовать некоторые неуправляемые API. В частности, DeviceIoControl с использованием «контрольного кода» IOCT_DISK_GET_STORAGEID . Это, в свою очередь, вернет структуру STORAGE_IDENTIFICATION .

Здесь это немного сложнее, так как STORAGE_IDENTIFICATION использует свойство (dwSerialNumOffset), чтобы указать смещение (память) от начала структуры, которое было бы трудно преобразовать в вызовы взаимодействия.

Редактировать: Найдена реализация VB.NET на форумах MSDN

1 голос
/ 16 февраля 2009

Я не на машине, на которой я могу получить синтаксис для вас, но я считаю, что вы можете использовать пространство имен System.IO для получения атрибутов на основе ввода-вывода.

Сначала получите DirectoryInfo на карту памяти. (Я не на 100% здесь код, вам может потребоваться проверить, я обновлю его, если я смогу добраться до моей машины)

public DirectoryInfo GetStorageCard() {
    DirectoryInfo deviceRoot = new DirectoryInfo("/");
    foreach (DirectoryInfo dir in deviceRoot.GetDirectories()) 
       if (dir.Attributes == FileAttributes.Directory & dir.Attributes = FileAttributes.Temporary)
return dir;
}

Затем проверьте все свойства в DirectoryInfo, которые возвращает код. Благодаря радостям отладки вы сможете увидеть, является ли серийный номер одним из доступных свойств.

Если нет, вам, возможно, придется поискать что-то более неуправляемое.

Надеюсь, это поможет.

...