KernelIoControl找设备号的问题

lihualiu81 2008-09-10 12:48:11
KernelIoControl找设备号的问题
  
if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR,&g_Irq,sizeof(UINT32),&g_SysIntr,sizeof(UINT32),NULL))
{
RETAILMSG(1,TEXT("ERROR:Failed to request sysintr value for Timer1 inturrupt!/r/n"));
return;
}

我想通过这种方式找mobile设备号,但各参数是什么意思,参数值又是从哪里来的,怎么获取????请给我一个实例代码...
...全文
36 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lihualiu81 2008-09-10
  • 打赏
  • 举报
回复
还请你帮一下,我是用c++,用不了CString,请帮我改一下.
lihualiu81 2008-09-10
  • 打赏
  • 举报
回复
十分感谢,我来试试...
北方大冬瓜 2008-09-10
  • 打赏
  • 举报
回复
#include <WINIOCTL.H>

extern "C" __declspec(dllimport)
BOOL KernelIoControl(
DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize,
LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned
);

#define IOCTL_HAL_GET_DEVICEID CTL_CODE(FILE_DEVICE_HAL, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)

CString GetSerialNumberFromKernelIoControl()
{
DWORD dwOutBytes;
const int nBuffSize = 4096;
byte arrOutBuff[nBuffSize];

BOOL bRes = ::KernelIoControl(IOCTL_HAL_GET_DEVICEID,
0, 0, arrOutBuff, nBuffSize, &dwOutBytes);

if (bRes) {
CString strDeviceInfo;
for (unsigned int i = 0; i<dwOutBytes; i++) {
CString strNextChar;
strNextChar.Format(TEXT("%02X"), arrOutBuff[i]);
strDeviceInfo += strNextChar;
}
CString strDeviceId =
strDeviceInfo.Mid(40,2) +
strDeviceInfo.Mid(45,9) +
strDeviceInfo.Mid(70,6);

return strDeviceId;
} else {
return _T("");
}
}

790

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 其他移动相关
社区管理员
  • 移动开发其他问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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