gpt4 book ai didi

c# - 在 Windows Mobile 6 上实现 GetDeviceUniqueID 时遇到问题

转载 作者:太空狗 更新时间:2023-10-29 23:14:33 24 4
gpt4 key购买 nike

我使用的代码与以下 Stack Overflow 问题非常相似: Can't find an Entry Point 'GetDeviceUniqueID' in a PInvoke DLL 'coredll.dll'

(为了后代的缘故,我的代码粘贴在这里):

[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
int cbApplictionData,
int dwDeviceIDVersion,
[In, Out] byte[] deviceIDOuput,
out uint pcbDeviceIDOutput);



public static string GetDeviceID()
{
string appString = "MyApp";
byte[] appData = new byte[appString.Length];
for (int count = 0; count < appString.Length; count++)
{
appData[count] = (byte)appString[count];
}

int appDataSize = appData.Length;
byte[] DeviceOutput = new byte[20];
uint SizeOut = 20;
int i_rc = GetDeviceUniqueID(appData, appDataSize, 1, DeviceOutput, out SizeOut);

string idString = "";
for (int i = 0; i < DeviceOutput.Length; i++)
{
if (i == 4 || i == 6 || i == 8 || i == 10)
idString = String.Format("{0}-{1}", idString, DeviceOutput[i].ToString("x2"));
else
idString = String.Format("{0}{1}", idString, DeviceOutput[i].ToString("x2"));
}
return idString;


}

我在模拟器上编译程序部署到我的物理设备上没有问题。但是,此代码始终返回值:"00000000-0000-0000-0000-000000000000000000000"

(自省(introspection)后,i_rc 的值为 2147024809)。

出了什么问题?为什么该函数似乎返回默认/安全值?

最佳答案

事实证明,app_data 变量的长度至少应为 8 个字符

(由 - web.archive.org 规定)

令人抓狂,因为这组相当关键的要求似乎没有在任何地方记录。

奖励 - 我将在此处列出其他要求,以防我们因时间流逝而失去上述网站:

HRESULT GetDeviceUniqueID(LPBYTE pbApplicationData, DWORD cbApplictionData,
DWORD dwDeviceIDVersion, LPBYTE pbDeviceIDOutput,
DWORD *pcbDeviceIDOutput);
  • pbApplicationData - 长度必须为 8 个字符,否则 API 将失败
  • dwDeviceIDVersion - 应该是 1
  • pbDeviceIDOutput - 一个输出参数,将填充设备特定的唯一 ID
  • pcbDeviceIDOutput - pbDeviceIDOutput
  • 的长度

关于c# - 在 Windows Mobile 6 上实现 GetDeviceUniqueID 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25270411/

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