【发布时间】:2010-10-07 20:24:41
【问题描述】:
早上好,
如何获取移动设备上存储/SD 卡的序列号?我在 Compact Framework V2.0 上使用 C#.Net 2.0。
谢谢。
【问题讨论】:
标签: encryption compact-framework .net-2.0 c#-2.0
早上好,
如何获取移动设备上存储/SD 卡的序列号?我在 Compact Framework V2.0 上使用 C#.Net 2.0。
谢谢。
【问题讨论】:
标签: encryption compact-framework .net-2.0 c#-2.0
Smart Device Framework provides a mechanism 获取 SD 卡序列号和制造商 ID。
【讨论】:
我不在一台可以为您获取语法的机器上,但我相信您可以使用 System.IO 命名空间来获取基于 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 上的所有属性。感谢调试的乐趣,您应该能够查看序列号是否是可用属性之一。
如果没有,您可能需要寻找一些更不受管理的东西。
希望这会有所帮助。
【讨论】:
您需要使用一些非托管 API。具体来说,DeviceIoControl 使用IOCT_DISK_GET_STORAGEID 的“控制代码”。反过来,这将返回一个 STORAGE_IDENTIFICATION 结构。
这里有点棘手,因为 STORAGE_IDENTIFICATION 使用属性 (dwSerialNumOffset) 来指定从结构开始的(内存)偏移量,这很难转化为互操作调用。
编辑:在 MSDN 论坛上找到 VB.NET implementation
【讨论】: