C# 开发智能设备 怎么获取本机(PDA) 的mac地址

mishixiaosenlin 2011-04-26 11:24:29
用VS2008 C#开发的智能设备怎么 获取智能设备的mac地址,或者什么唯一标识都行,就是获取一个PDA的唯一标识,各位大虾 帮帮忙,还有就是PDA的系统是win ce 之前用的System.Management; 不好使,就不要说了,是能设备根本就掉不出来这个方法.
...全文
347 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mishixiaosenlin 2011-05-09
  • 打赏
  • 举报
回复
有米有人能给一个明确的方法?
mishixiaosenlin 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 going1981 的回复:]

C# code

public static class DeviceInfo
{
[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
……
[/Quote]

coredll.dll里好像没有GetDeviceUniqueID这个接口,调用不了啊~
mishixiaosenlin 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoyuzi 的回复:]

你可以用windows api来取得设备id

C# code

[DllImport("coredll.dll", EntryPoint = "KernelIoControl", SetLastError = true)]
private extern static bool KernelIoControl(Int32 IoControlCode, Int……
[/Quote]

这个是调用的设备的ID是吧,是唯一标识不能改变的是不是?
一只熊猫 2011-05-04
  • 打赏
  • 举报
回复

public static class DeviceInfo
{
[DllImport("coredll.dll")]
private extern static int GetDeviceUniqueID([In, Out] byte[] appdata,
int cbApplictionData,
int dwDeviceIDVersion,
[In, Out] byte[] deviceIDOuput,
out uint pcbDeviceIDOutput);
/// <summary>
/// 获取设备ID
/// </summary>
/// <returns></returns>
public static string GetDeviceId()
{
byte[] buffer = GetDeviceID("MyAppString");
StringBuilder sb = new StringBuilder();
for (int x = 0; x < buffer.Length; x++)
{
sb.Append(string.Format("{0:x2}", buffer[x]));
}
return sb.ToString().ToUpper();
}


private static byte[] GetDeviceID(string AppString)
{
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;
GetDeviceUniqueID(AppData, appDataSize, 1, DeviceOutput, out SizeOut);
return DeviceOutput;
}
}


我有个项目用的是段,也是在csdn.net上找的。。。。。
xiaoyuzi 2011-05-04
  • 打赏
  • 举报
回复
你可以用windows api来取得设备id


[DllImport("coredll.dll", EntryPoint = "KernelIoControl", SetLastError = true)]
private extern static bool KernelIoControl(Int32 IoControlCode, IntPtr InputBuffer, Int32 InputBufferSize, byte[] OutputBuffer, Int32 OutputBufferSize, ref Int32 BytesReturned);

private static Int32 FILE_DEVICE_HAL = 0x00000101;
private static Int32 IOCTL_HAL_GET_DEVICEID =
((FILE_DEVICE_HAL) << 16) | ((0x0) << 14)
| ((21) << 2) | (0x0);


public string GetPDASerialNumber()
{
byte[] outputBuffer = new byte[256];
Int32 outputBufferSize = outputBuffer.Length;
Int32 bytesReturned = 0;

bool retVal = KernelIoControl(IOCTL_HAL_GET_DEVICEID, IntPtr.Zero, 0, outputBuffer, outputBufferSize, ref bytesReturned);

// If the request failed, exit the method now
if (retVal == false)
{
return String.Empty;
}

Int32 presetIdOffset = BitConverter.ToInt32(outputBuffer, 4);
Int32 platformIdOffset = BitConverter.ToInt32(outputBuffer, 0xc);
Int32 platformIdSize = BitConverter.ToInt32(outputBuffer, 0x10);

StringBuilder sb = new StringBuilder();
sb.Append(String.Format(CultureInfo.InvariantCulture, "{0:X8}-{1:X4}-{2:X4}-{3:X4}-",
BitConverter.ToInt32(outputBuffer, presetIdOffset),
BitConverter.ToInt16(outputBuffer, presetIdOffset + 4),
BitConverter.ToInt16(outputBuffer, presetIdOffset + 6),
BitConverter.ToInt16(outputBuffer, presetIdOffset + 8)));

for (int i = platformIdOffset; i < platformIdOffset + platformIdSize; i++)
{
sb.Append(String.Format(CultureInfo.InvariantCulture, "{0:X2}", outputBuffer[i]));
}

// return the device id string
return sb.ToString();
}

mishixiaosenlin 2011-05-04
  • 打赏
  • 举报
回复
几天没有关注这个帖子了,自己顶一顶
mishixiaosenlin 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 going1981 的回复:]

手头没得测试环境,你自己试试行不行吧。

先添加引用 OpenNetCF.Net

C# code
string netinfo = "";
foreach (INetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
{
……
[/Quote]


现在调出的都是网络的东西,我想调用一个pda中唯一标识,那个属性能实现?
一只熊猫 2011-04-26
  • 打赏
  • 举报
回复
手头没得测试环境,你自己试试行不行吧。

先添加引用 OpenNetCF.Net

            string netinfo = "";
foreach (INetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
{
netinfo += item.Name + "\r\n";
netinfo += item.CurrentIpAddress + "\r\n";
netinfo += item.GetPhysicalAddress() + "\r\n";
}
MessageBox.Show(netinfo);

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧