引用 7 楼 flandy1982 的回复:
KernelIoControl会调用OEMIoControl, 你的OEMIoControl是怎么实现的?里面包含了读取外设时钟的代码吗?
我手头上的是没有实现的.
C/C++ codecase IOCTL_PROCESSOR_INFORMATION:if (!lpOutBuf) {
SetLastError(ERROR_INVALID_PARAMETER);return FALSE;
}if (sizeof(PROCESSOR_INFO)> nOutBufSize) {
SetLastError(ERROR_INSUFFICIENT_BUFFER);return FALSE;
}else {const WCHAR OEMProcCore[]= L"ARM";const WCHAR OEMProcName[]= L"ARM920";const WCHAR OEMProcVendor[]= L"SAMSUNG";
PPROCESSOR_INFO pProcInfo= (PPROCESSOR_INFO)lpOutBuf;if (lpBytesReturned)*lpBytesReturned=sizeof(PROCESSOR_INFO);
memset(pProcInfo,0,*lpBytesReturned);
pProcInfo->wVersion=1;
memcpy(pProcInfo->szProcessCore, OEMProcCore, (strlenW(OEMProcCore)+1)*sizeof(WCHAR));
memcpy(pProcInfo->szProcessorName, OEMProcName, (strlenW(OEMProcName)+1)*sizeof(WCHAR));
memcpy(pProcInfo->szVendor, OEMProcVendor, (strlenW(OEMProcVendor)+1 )*sizeof(WCHAR));
pProcInfo->dwInstructionSet=0;return TRUE;
}
不过即使没有实现也不会出现死机的现象啊,你看看是不是后面的函数有什么问题.
我的意見和ls這位牛人的意見是類似的。
不過我感覺你那個地方返回0有點問題。。。clockspeed是0.。。很奇怪了。。應該會有點值才對。
可能我對這個clockspeed的理解有錯誤