HKMGetError 获得错误代码
功能
获得错误代码。如果要获得错误代码在设备对象有关函数执行后立刻执行该函数,执行其它设备对象有关函数会覆盖之前的值。
参数
- 参数1: 设备对象:无类型指针。使用HKMOpen可以创建它。
返回值
无符号32位整型数。低16位是错误代码,高16位是错误编号。错误代码中,0是成功,低于57344是系统错误代码,与系统API"GetLastError"获得的值相同,具体值的解释可以在微软网站查看,高于或等于57344的错误代码如下:
| 值 | 说明 | 值 | 说明 |
|---|---|---|---|
| 0000(0) | 成功 | E020(57376) | 打开设备失败 |
| E001(57345) | 失败 | E021(57377) | 通信失败 |
| E002(57346) | 无效的参数 | E022(57378) | 无访问权限 |
| E003(57347) | 无效的指针 | E023(57379) | 超时 |
| E004(57348) | 无效的对象 | E024(57380) | 运行应用失败 |
| E005(57349) | 无效的初始化值 | E025(57381) | 超出限制 |
| E006(57350) | 无效的数据 | E026(57382) | 获取DPI信息失败 |
| E007(57351) | 数据太大 | E027(57383) | 获取数据失败 |
| E008(57352) | 字符串太长 | E028(57384) | 设备失败 |
| E009(57353) | 数据区域太小 | E029(57385) | 设备超时 |
| E00A(57354) | 不支持 | ||
| E00B(57355) | 对象已存在 | ||
| E00C(57356) | 系统错误 |
C#例子
uint dwDevId;
IntPtr lpDev;
dwDevId = SkmCore.HKMSearchDevice(0x1234, 0xABCD, 0);
if (dwDevId == 0xFFFFFFFF)
{
Console.WriteLine("未找到键鼠模拟器");
return;
}
lpDev = SkmCore.HKMOpen(dwDevId, 0);
if (lpDev == IntPtr.Zero)
{
Console.WriteLine("打开键鼠模拟器失败");
return;
}
uint errorCode = SkmCore.HKMGetError(lpDev) & 0xFFFF;
Console.WriteLine($"错误代码:{errorCode:X4}");
SkmCore.HKMClose(lpDev);
C语言例子
DWORD dwDevId;
LPVOID lpDev;
dwDevId=HKMSearchDevice(0x1234,0xABCD,0);
if(dwDevId==0xFFFFFFFF)
{
printf("未找到键鼠模拟器\n");
return 0;
}
lpDev=HKMOpen(dwDevId,0);
if(lpDev==NULL)
{
printf("打开键鼠模拟器失败\n");
return 0;
}
printf("错误代码:%04X\n",HKMGetError(lpDev) & 0xFFFF);
HKMClose(lpDev);