gpt4 book ai didi

c# - 需要一个 C# 函数来在 .NET CF 中获取 SDCard 序列号

转载 作者:太空狗 更新时间:2023-10-30 01:27:16 25 4
gpt4 key购买 nike

我见过它是用 C++ 编写的,但我不知道。我需要一个在 .NET CF 中返回 SDCard 序列号的 C# 函数。谁能帮我用它写一个函数?

最佳答案

首先,我要说的是,如果您购买 SDF(50 美元),您将获得此功能的源代码,然后您可以将其引入您的项目并进行混淆处理。

但是,如果您的时间比金钱多,并且想自己实现,我可以为您指明正确的方向。我留给你将所有这些部分串在一起,但这里是步骤:

首先,您必须像这样打开卷:

IntPtr hFile = NativeMethods.CreateFile(
string.Format("{0}\\Vol:", driveName),
NativeMethods.GENERIC_READ, 0, 0, NativeMethods.OPEN_EXISTING, 0, 0);

这为您提供了驱动器的句柄。然后,您只需调用 IOCTL 即可获取存储 ID:

byte[] data = new byte[512];
int returned;
int result = NativeMethods.DeviceIoControl(
hFile, IOCTL_DISK_GET_STORAGEID, IntPtr.Zero, 0,
data, data.Length, out returned, IntPtr.Zero);
if (result != 0)
{
m_storageID = STORAGE_IDENTIFICATION.FromBytes(data);
}

这给你的是 STORAGE_IDENTIFICATION 的二进制表示结构体。请注意,该结构实际​​上只是对数据 header 的描述。它包含实际序列号数据的偏移量,这是一个 ASCII 字符串。提取它看起来像这样:

int snoffset = BitConverter.ToInt32(data, 12);

string sn = Encoding.ASCII.GetString(data, snoffset, data.Length - snoffset);
return sn.TrimEnd(new char[] { '\0' });

关于c# - 需要一个 C# 函数来在 .NET CF 中获取 SDCard 序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3203280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com