紧凑框架 - 获取存储卡序列号

4

大家早上好,

我该如何获取移动设备存储/SD卡的序列号?我正在使用Compact Framework V2.0上的C#.Net 2.0。

谢谢。

3个回答

3

1

您需要使用一些未托管的API。具体来说,DeviceIoControl使用一个“控制代码”IOCT_DISK_GET_STORAGEID。这将返回一个STORAGE_IDENTIFICATION结构。

这里有一个棘手的问题,因为STORAGE_IDENTIFICATION使用属性(dwSerialNumOffset)来指定从结构开头开始的(内存)偏移量,这将很难转换为Interop调用。

编辑:在MSDN论坛上找到了一个VB.NET实现


那个实现线程中joOls发表的最后一篇帖子说,根据硬件情况,它可能只会返回Windows临时生成的序列号,而不是硬件序列号(请注意)。 - Tristan Warner-Smith

1

我现在没有办法给你提供语法,但我相信你可以使用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上的所有属性。由于调试的乐趣,您应该能够看到序列号是否是可用属性之一。

如果不是,您可能需要寻找一些更不受管理的东西。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接