- 博客(31)
- 资源 (2)
- 收藏
- 关注
原创 将qemu的dmesg打印通过串口重定向到host机器
1. 在qemu的启动参数中添加-serialpty选项,如下-enable-kvm -smp 2 -vga std \-serial pty \ pty会创建一个伪终端,所有对串口的设置(如波特率等)对pty无效。此时如果启动qemu,host会有如下打印char device redirected to /dev/pts/28 (label serial0)最
2017-08-24 13:26:41
3880
原创 Android 4.x下基于wm8994的mic检测
本文基于Android 4.4和4.2,检测所用codec为wm8994。 Android和Kernel下的mic检测是建立在headset检测的基础上的,具体过程如下: 1) kernel通过Jack检测脚中断检测到有耳机插入 2) 读取codec寄存器判断headset是否带mic 3)
2014-04-15 10:52:14
6885
原创 Android开发使用adb时出现adb server is out of date的解决方法
最近在Android开发使用adb push时出现了一个奇怪的问题,不管执行adb push之类命令还是adb start-server,都会出现如下的错误提示信息: adb server is out of date. killing... ADB server didn't ACK * failed to start daemon * 究其原因就是And
2013-04-03 16:00:14
32066
原创 Linux内核代码中的__setup的用途
在Linux内核代码中经常会看到__setup,如下所示: __setup("nfsroot=", nfs_root_setup); 这是一个宏,它的定义在include/linux/init.h #define __setup(str, fn) __setup_param(str, fn, fn, 0) 我们这里暂不管__setup_param的
2011-12-05 14:47:24
2946
原创 LFS6.8搭建过程中遇到的一些问题和解决方法
大概三周前被安排做LFS6.8的搭建,今天终于成功启动。顺着LFS book一路走来,也遇到了一些问题,留此记录。
2011-08-03 14:40:52
3345
原创 编译LDD第三版中scullc代码时遇到的问题及解决方法
<br /> 最近在学习Linux driver,按照LDD第三版书附赠的一些源代码在自己的机器上编译,由于自己的Linux系统是2.6.35的内核,而LDD书中附的代码是基于2.6.10版的,因此难免会出现一些问题,下面就是我在编译scullc代码中出现的问题和解决方法。<br /> <br /> 编译中即有error也有warning,我这里先处理error<br /> <br />1. *** CFLAGS was changed in "/.../scullc/scullcte
2011-06-01 20:09:00
4970
原创 MFC中WinHelp函数在64位系统上重载失败的原因
<br /> MFC中,键盘上的F1加速键会直接和基类的WinHelp函数关联,从而按下F1打开和应用同名的HLP文件。如果我们的帮助文件格式是其它格式,如chm,或者文件的名字不一样,则需要重载WinHelp函数,在函数内部修改m_pszHelpFilePath变量。<br /> <br /> 如果在Visual Studio中采用wizard重载WinHelp函数,它的格式如下:<br /> <br />virtual void WinHelp(DWORD dwData, UINT
2011-05-25 15:59:00
2149
原创 编译内核时遇到“dpkg-gencontrol: error: package not in control info”的解决办法
<br /> 在Ubuntu 10.10下编译Linux 2.6.35内核时,编译过程中止,并提示:<br /> <br /> dpkg-gencontrol: error: package not in control info<br /> <br /> 国内论坛上没有搜到相关的任何信息,在国外的论坛上搜到了一些解决办法。这个问题是make-kpkg(属于kernel package)的一个bug,大致原因如下:<br /> make-kpkg会在编译过程中会给l
2011-04-15 22:02:00
4064
1
原创 Linux下tar.xz结尾的文件的解压方法
<br /> <br /> 今天尝试编译内核,下载到了一份tar.xz结尾的压缩文件,网上解决方法比较少,不过还是找到了,如下:<br /> <br />$xz -d ***.tar.xz<br />$tar -xvf ***.tar<br /> 可以看到这个压缩包也是两层压缩,外面是xz压缩方式,里层是tar压缩方式。<br />
2011-04-15 14:45:00
442029
6
原创 如何使Android应用程序获得root权限
<br /><br /> 写这篇文章前,首先要感谢Simon_fu,他的两篇关于root权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充。Simon_fu的文章可以参考如下两个网页:<br />Android程序的安全系统<br />Android应用程序获得root权限<br /> <br /> 一般来说,Android下的应用程序可以“直接”得到的最大的权限为system,但是如果我们需要在程序中执行某些需要root权限的命令,如ifconfig
2011-04-11 16:28:00
57511
4
原创 如何将Android应用程序编译至image/rom中
<br /> 有时我们希望将自己的Android应用程序编译至image/rom中,这样程序将被安装至/system/app目录下,并且不能被卸载。下面我以自己的程序TestJniApp为例子,仿照源代码中自带的SimpleJNI,演示一下怎样将自己的应用程序编译至rom中。<br /> 1. 搭建编译环境<br />编译环境: Ubuntu 10.10<br />Android版本:Android 2.2<br /><br />编译过程中可能需要在Ubuntu上安装必要的一些软件,
2011-04-11 15:07:00
10799
3
原创 Android应用程序如何访问/sys和/proc等目录下的系统文件
<br /><br />Android下应用程序不能直接获得root权限,因此如果需要修改/sys或/proc等目录下的文件时,有以下两种方法可以选择:<br /> 通过service或虚拟设备的方法将使得应用程序临时获得root权限对/sys或/proc目录下的文件修改访问权限,使得它们能够被程序访问<br /> <br />对于方法1,可以参看我后续会写到的一篇文章《如何使Android应用程序获得root权限》,也可以在网上搜索别的相关文章。<br /> <br />这里讲讲方法2。<br /
2011-04-11 14:45:00
23038
1
原创 vmware上安装的ubuntu不能上网的解决方法
<br /> 这个办法可能不能适用于所有情况,我这里是在vmware上安装的ubuntu 10.10,网络连接采用的NAT方式,之前上网一直OK。<br /> <br /> 昨天升级了内核重启后突然不能上网,搜了一些资料,每次重启后输入sudo dhclient重新获取ip即可上网,但这样的话每次重启系统后都需要手动输入sudo dhclient才行,于是又找了相应的设置办法,可以配置网络为dhcp动态获取ip,具体方法如下:<br /> <br /> 将 /etc/network/int
2011-02-16 14:33:00
3016
原创 Ubuntu 10.10安装vmware tools时遇到的问题及解决办法
<br /> 以下问题的解决办法大多从网络上搜索得到,自己只是整理照搬过来而已。<br /> <br /> 在ubuntu 10.10上安装vmware tools,我这里主要遇到的问题都出现在以下这步中,<br /> <br /> What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]<br /> <br />
2011-02-16 13:46:00
2945
原创 Android ndk-x86 编译so文件时提示版本不支持的解决方案
<br /> 最近在做Android -x86平台下的应用程序移植时,需要用到ndk-x86来将jni编写的C程序编译为so文件,从http://www.android-x86.org/documents/ndk-how-to下载到了ndk-x86,按照该页的说明,将工程拷贝至apps目录下,然后运行: <br />build/host-setup.shmake TARGET_PRODUCT=eeepc APP=helloNDK <br /> HelloNDK为我的工程名,运行后总
2010-12-30 14:58:00
4923
原创 WinSock TCP keepalive的机理及使用
<br /> <br /><br />TCP是面向连接的,在实际应用中通常都需要检测对端是否还处于连接中。如果已断开连接,主要分为以下几种情况:<br /> <br />1. 连接的对端正常关闭,即使用closesocket关闭连接。<br />2. 连接的对端非正常关闭,包括对端异常关闭,网络断开等情况。<br /> <br /> 对于第一种情况,很好判断,但是对于第二种情况,可能会要麻烦一些。在网上找到了一些文章,大致有以下两种解决方法:<br />
2010-11-24 13:44:00
16934
2
原创 DebugView 在Vista及Win7下打印kernel mode调试信息的方法
<br /><br /><br /> 这两天在开发中,想用DebugView查看Win7下service的相关TRACE信息,却总是不成功,baidu到了一些信息,只有user mode下的APP信息打印的方法,没有kernel mode下的,最后在sysinternals的论坛中找到了答案。<br /> <br /> 步骤如下:<br /><br /><br /> 1. 首先,在注册表中设置:<br /> HKLM/SYSTEM/CurrentCon
2010-11-17 13:39:00
9873
原创 Windows静态链接库使用小结
<br /> <br /> 对于实用多了DLL动态链接库的同学来说,可能乍一看到静态链接库,会不由自主的想到导出函数,导入函数之类的概念。最近我在看一个离职同事的代码时就陷入了对静态库中全局函数导出的疑问,明明在代码中没有看到有地方对该全局变量有导出,但是在使用该LIB的AP中仍然能看到对该变量extern后的使用。<br /> <br /> 究其原因,静态链接库不存在导出的概念,在链接过程中,静态链接库LIB中的指令都全部被直接包含在最终生成的 EXE 文件中了,因此如果用的是静态
2010-11-09 15:10:00
1881
原创 log off时应用程序不退出的2种解决办法
<br /> 最近公司开发一个加密的项目,客户要求在log off以后加密过程不能停止,即数据转换过程必须还要继续。之前的程序是用MFC写的,为了最小化工作量,我做了一些调研,大致找到有两种办法。<br /> <br />1. 将数据转换过程写为service<br /> <br /> <br />这是最通用的方法,方法是将数据转换的线程转移到service中。当需要进行数据转换时,由AP通知service对需要加解密的目标进行数据转换。<br />这个方法实现起来改动幅度相对较大
2010-11-01 16:57:00
3151
原创 windows接收登陆消息
<br />windows接收系统登陆消息有几种方式:<br /> <br />1. 通过WM_WTSESSION_CHANGE消息,需要注意的是该消息仅支持XP以上的系统,并且在使用前要调用WTSRegisterSessionNotification函数来注册该消息。<br /> <br />2. 通过WinLogon Notification Package<br /> <br />3. 通过GINA,Win7和Vista下为CP<br /> <br />由于我的程序中只是接收消息即可,因此只使用到了第
2010-10-14 20:04:00
1449
原创 _beginthread传递参数时容易犯的错误
<br /> 下面的程序你能看出来哪里有问题吗?<br /> <br />void MyFun(){ WCHAR wszFileName[MAX_PATH] = L"C://test.txt"; _beginthread(ThreadFun, 0, wszFileName);}void ThreadFun(void *pArguments){ //do something //... WCHAR wszFileName[MAX_PATH] = L""
2010-09-14 19:52:00
8209
原创 对话框中WaitForSingleObject等待线程退出导致程序阻塞的原因及解决
<br /><br /><br /> 今天在调试程序中发现了程序中出现的一个问题,具体如下:<br /><br /><br /> 在对话框中新建一个线程worker thread,当用户点击cancel时,通知该线程函数退出,同时用WaitForSingleObject等待该线程结束。但是每当用户点击Cancel后,程序会卡在OnCancel函数中的WaitForSingleObject处,必须要强制结束才能退出。<br /><br /><br /> 在网上查了一下,大致原因如
2010-09-09 20:28:00
18351
2
原创 TRACE打印中文时输出_CrtDbgReport: String too long or IO ErrorThe program的解决办法
<br /> 今天在用TRACE语句输出文件名的时候,发现输出结果是_CrtDbgReport: String too long or IO ErrorThe program,再仔细看看,string长度并不长,但是包含有中文,再到网上搜一下,果然TRACE在处理中文输出时会出现问题。<br /> <br /> 解决办法如下:<br /> <br /> <br /> 包含头文件locale.h,<br /> 并在程序开始调用setlocale(LC_ALL, "chs"
2010-09-01 12:56:00
4464
转载 OnQueryEndSession 与 OnEndSession
Windows在注销、重起、关机之前会向每个当前正在运行的应用程序发送WM_QUERYENDSESSION消息,如果该应用程序方便关闭的话,则在此消息的消息响应函数OnQueryEndSession()中返回非0值(TRUE),否则返回0值(FALSE)。 如果当前系统正在运行的应用程序全部返回非0值,则Windows的注销、重起、关机过程继续下
2010-01-04 19:38:00
2784
原创 在DLL中接收系统消息的办法
程序中需要在DLL中接收系统消息,在网上搜了搜,总结出两种方法: 1. 建立一个隐藏窗口 在程序开始的时候创建一个隐藏窗口,注意这个窗口必须是无模式窗口,这样才能隐藏起来不干扰正常操作。在窗口中添加消息响应函数即可。 2. 全局钩子函数 这个办法暂时没有
2009-12-24 16:59:00
2258
3
原创 DLL中导出全局变量的方法及导入时需要注意的问题
今天做程序需要导出DLL中的一个全局指针,可是导出后只要一使用就会发生access violation,后来在网上找了找文章,原来是之前导入方法存在问题,下面把整个DLL导出导入全局函数的方法整理一下,作为记录。整个文章大部分参考http://www.pconline.com.cn/pcedu/empolder/gj/vc/0509/699672_7.html,这篇文章写的很不错,有兴
2009-12-22 14:37:00
10520
原创 关闭对话框,OnClose和OnCancel
我们知道,在对话框中,屏蔽ESC键自动退出可以选择重载OnCancel为哑函数的方法: void CXXXXDlg::OnCancel() { // TODO: Add your specialized code here and/or call the base class //CDialog::OnCance
2009-12-17 18:40:00
22105
5
原创 DLL调试中断点失效的问题
用VS2008编写了一个DLL工程,打算加上application进行调试,结果点下F5,DLL工程中的所有断点都被禁掉了,显示如下: The breakpoint will not currently be hit. No symbols have been loaded for this document. 在网上搜了一下有没有找到合适的结果,自己
2009-12-16 14:47:00
7980
1
原创 MessageBox中第一个参数hWnd的作用
MFC好久不用就会忘记,这次用到MessageBox才注意到里面第一个参数。函数定义如下: int MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType );Parameters h
2009-12-16 13:33:00
4226
原创 HWND和CWnd的关系及互相转换
HWNDHWND是窗口句柄,记录了你要找的窗口对象的地址,通过这个成员记录的地址,你能轻松的找到窗口对象。 CWnd CWnd是窗口类,它把句柄和相关API封装到一个类中,使得使用方便。 在该类中包含句柄成员变量m_hWnd 两个之间互相转换 句柄
2009-12-16 13:19:00
1193
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人