大家早上好,
我该如何获取移动设备存储/SD卡的序列号?我正在使用Compact Framework V2.0上的C#.Net 2.0。
谢谢。
大家早上好,
我该如何获取移动设备存储/SD卡的序列号?我正在使用Compact Framework V2.0上的C#.Net 2.0。
谢谢。
您需要使用一些未托管的API。具体来说,DeviceIoControl使用一个“控制代码”IOCT_DISK_GET_STORAGEID。这将返回一个STORAGE_IDENTIFICATION结构。
这里有一个棘手的问题,因为STORAGE_IDENTIFICATION使用属性(dwSerialNumOffset)来指定从结构开头开始的(内存)偏移量,这将很难转换为Interop调用。
编辑:在MSDN论坛上找到了一个VB.NET实现。
我现在没有办法给你提供语法,但我相信你可以使用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上的所有属性。由于调试的乐趣,您应该能够看到序列号是否是可用属性之一。
如果不是,您可能需要寻找一些更不受管理的东西。
希望这能帮到您。