<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[keepdoingit的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/keepdoingit</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; keepdoingit]]></copyright><item><title><![CDATA[linux 设备驱动模型]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/109330569</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/109330569</guid><author>keepdoingit</author><pubDate>Thu, 29 Oct 2020 13:12:54 +0800</pubDate><description><![CDATA[linux 设备驱动模型（linux device model）:

usb转串口设备插入centos主机中，内核处理全过程，包括如果得到usb设备中的配置信息，如何为其找到并加载一个合适的驱动程序，直到最后为其在/dev/中创建一个设备名称。



设备驱动模型的生成（即/sys下的结点生成等工作）是bus-level logic和其它的子系统（如usb核心子系统）的工作，驱动工程师不需要针对设备驱动模型函数编程。

设备有个注册函数，比如usb设备，

参考资料：linux device driver.]]></description><category></category></item><item><title><![CDATA[android apk获取system权限]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/69258922</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/69258922</guid><author>keepdoingit</author><pubDate>Wed, 05 Apr 2017 16:14:55 +0800</pubDate><description><![CDATA[普通的用eclipse编译出来的apk程序，是不具有system权限的。想要具备system权限，可以使用signapk方法。

C:\Program Files\Java\jdk1.8.0_102\bin>java-jar signapk.jar platform.x509.pem p
latform.pk8D:\workspace\GeeRobot\bin\geerobot.apk D:]]></description><category></category></item><item><title><![CDATA[理解android和linux内核的关系]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/68958288</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/68958288</guid><author>keepdoingit</author><pubDate>Mon, 03 Apr 2017 12:50:01 +0800</pubDate><description><![CDATA[理解android:
最初学习android的时候，在网上经常看到的对于android的解释，经常是这样一句：“android是基于linux内核的”。我自己当初对于这句话的理解是，“android是在linux源码上改编的，是一种Linux”,当然现在看来，这是不对的。
要真正理解android和linux内核的关系，可以这样来看：
 
0： 烧录ubuntu镜像和android镜像和“]]></description><category></category></item><item><title><![CDATA[ndis协议驱动开发]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/49201961</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/49201961</guid><author>keepdoingit</author><pubDate>Sat, 17 Oct 2015 10:48:12 +0800</pubDate><description><![CDATA[协议驱动的开发流程：
首先，一个协议驱动调用函数ndisRegisterProtocol()先把自己注册为协议驱动，此举的意义告诉windows，我是一个ndis协议驱动，并将约定好的回调函数的列表告诉windows，这样以后当有与网络相关的事件发生时，windows会调用相应的回调函数，并且在参数中传入适当的信息，当然这些回调函数是我们要自己实现的。
        NdisRegister]]></description><category></category></item><item><title><![CDATA[IRP和IO_STACK_LOCATION]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/9315467</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/9315467</guid><author>keepdoingit</author><pubDate>Fri, 12 Jul 2013 22:07:29 +0800</pubDate><description><![CDATA[当一个应用程序调用函数去操作某个设备时，比如调用createFile,deviceIOControl,等等时，I/O管理器为此函数创建一个IRP数据结构对象和一个IRP_STACK_LOCATION数据结构对象数组。
（数组个数等于驱动程序堆栈上驱动的个数）。IRP对象中的数据成员是已经被填充好了的，其中有一个CurrentLocation是当前IRP_STACK_LOCATION堆栈单元的索引]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/6099677</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/6099677</guid><author>keepdoingit</author><pubDate>Sun, 26 Dec 2010 23:17:00 +0800</pubDate><description><![CDATA[http://baike.baidu.com/view/94238.htm/d 和 [0-9]有什么区别?]]></description><category></category></item><item><title><![CDATA[使用map文件找bug.]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/6064175</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/6064175</guid><author>keepdoingit</author><pubDate>Wed, 08 Dec 2010 22:35:00 +0800</pubDate><description><![CDATA[<br />转载文章, 以供后用.<br /> <br />对“仅通过崩溃地址找出源代码的出错行”一文的补充与改进<br /><br />作者：上海伟功通信 roc<br />下载源代码<br /><br />读了老罗的“仅通过崩溃地址找出源代码的出错行”(下称"罗文")一文后，感觉该文还是可以学到不少东西的。不过文中尚存在有些说法不妥，以及有些操作太繁琐的地方。为此，本人在学习了此文后，在多次实验实践基础上，把该文中的一些内容进行补充与改进，希望对大家调试程序，尤其是release版本的程序有帮助。欢迎各]]></description><category></category></item><item><title><![CDATA[oracle学习笔记]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/6056028</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/6056028</guid><author>keepdoingit</author><pubDate>Sun, 05 Dec 2010 13:58:00 +0800</pubDate><description><![CDATA[红字是问题. 绿字是当前进度.蓝字是重点.欲速则不达. 切勿急功近利!Introduction:How this book is structured]]></description><category></category></item><item><title><![CDATA[理解ATL]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5983079</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5983079</guid><author>keepdoingit</author><pubDate>Tue, 02 Nov 2010 21:22:00 +0800</pubDate><description><![CDATA[chaper 8  Advanced Class Composition Techniques]]></description><category></category></item><item><title><![CDATA[STL基础]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5980622</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5980622</guid><author>keepdoingit</author><pubDate>Mon, 01 Nov 2010 22:38:00 +0800</pubDate><description><![CDATA[1  It's important to realize that these templates are not class and member function definitions. Rather, they are instructions to the C++ compiler about how to generate class and member function definitions.  所以, 模板类是在编译时被替换的, 当编译时, 参数会替换成实际参数, 就像宏的处理一样.2 ]]></description><category></category></item><item><title><![CDATA[unit test(UT)]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5978206</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5978206</guid><author>keepdoingit</author><pubDate>Sun, 31 Oct 2010 22:31:00 +0800</pubDate><description><![CDATA[要见多识广, 必须要走南闯北.  做软件开发的, 时间并不等于经验. 年头长不代表经验多.  自从进入了软件开发的行业, 五年来一直在同一家公司, 做着相对简单的工作, 虽然自己也算是勤奋好学, 但是并没有积累到太多的项目经验, 所以距离一个技术高手的路还太远.进入了大公司, 才发现自己有好多好多不懂事东西, 有好多自己没见过没听过的东西. 发现自己原来就是一只井底这蛙.在我跳到同方的那一段时间, 做一个很大的项目, 代码据说上百万行, 编码有非常严格的规范, 类与类之间的分工非常的明确, 什么样的操作应该]]></description><category></category></item><item><title><![CDATA[c++异常处理]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5975522</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5975522</guid><author>keepdoingit</author><pubDate>Sat, 30 Oct 2010 00:38:00 +0800</pubDate><description><![CDATA[1 为什么我们一直强调不能使用返回错误值的方法来代替异常处理?   看这个例子:   int add(int a, int b)   {        return a+b;   }   在这里, 我们无法用返回错误值的方法来表示错误. 因为我们无法分辨返回的值是正确计算的结果还是错误码.2  在判断new是否成功时, 我们究竟是用返回值为null来判断还是用std::bad_alloc异常来判断? 当new无法成功分配内存时, 它会即返回null又抛出std::bad_alloc吗? 如果是, 它是怎么做]]></description><category></category></item><item><title><![CDATA[创建frame/view]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5972878</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5972878</guid><author>keepdoingit</author><pubDate>Thu, 28 Oct 2010 22:11:00 +0800</pubDate><description><![CDATA[一 创建一个frame,连同view和menu.    区别于template的另一种我不知道的方法。void CReportSampleView::OnTestTasklist(){ //CFrameWnd* m_pTaskFrame; if (m_pTaskFrame) {  m_pTaskFrame->ActivateFrame();  return; } CCreateContext contextT; // if no context specified, generate one from th]]></description><category></category></item><item><title><![CDATA[MFC ATL 引发的思考]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5970496</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5970496</guid><author>keepdoingit</author><pubDate>Wed, 27 Oct 2010 23:31:00 +0800</pubDate><description><![CDATA[1 最近在做ATL,  始终不能理解ATL的实质,  掌握不了它的基本原理. 因为自己"掌握"了MFC, 它们同样是一套类库, 而MFC不但是一套类库, 更是一套Application Framework. 所以觉得理解ATL不应该是问题. 但是最后不但没有理解ATL, 反而发现自己根本就没有"掌握"MFC.比如MFC 与 windows sdk 之间的关系, 我只知道mfc包装了sdk, 但是究竟是怎么包装的,我根本不明白, 这也就是我不明白CWnd::FromHandle()的原因. 为什么这么多年来始]]></description><category></category></item><item><title><![CDATA[debug与release区别]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5957479</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5957479</guid><author>keepdoingit</author><pubDate>Thu, 21 Oct 2010 21:19:00 +0800</pubDate><description><![CDATA[<br />   今天又遇到一个问题, 我的程序在debug下可以好好的跑, 但是在release却不能正常运行.<br />根本原因是: 如果你没有初始化一个变量, 在DEBUG下会被初始化成0xffffffff,  在release下会被初始化成0.<br />另外,debugview是一个非常好用的调试工具.<br />方法是在代码中加入outputdebug()函数. ]]></description><category></category></item><item><title><![CDATA[重温MFC.]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5917476</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5917476</guid><author>keepdoingit</author><pubDate>Fri, 01 Oct 2010 00:57:00 +0800</pubDate><description><![CDATA[第五章: 浅出MFC 程序设计.1 AFXRES.H.    mfc程序的RC文件必须载入此文件. MFC对于标准资源(例如File, Edit等菜单项目)的ID都有默认值.定义于此文件中, 例如:   #define ID_FILE_NEW 0XE100]]></description><category></category></item><item><title><![CDATA[ATL Internals 笔记]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5898160</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5898160</guid><author>keepdoingit</author><pubDate>Mon, 20 Sep 2010 23:20:00 +0800</pubDate><description><![CDATA[书要慢慢读, 饭要慢慢吃.急什么? 越急越慢, 再急熄火...]]></description><category></category></item><item><title><![CDATA[在vc中使用组件的两种方法]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5877703</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5877703</guid><author>keepdoingit</author><pubDate>Sat, 11 Sep 2010 15:58:00 +0800</pubDate><description><![CDATA[当我们想要在vc中调用一个DLL文件所提供的组件的时候怎么办?假如我们想调用msxml4.dll中提供的组件来操作XML文件.那么首先要调用#import "msxml4.dll",  然后你就可以使用msxml4.dll中提供的组件了,比如说::CoInitialize(NULL);//初始化COM环境   一定要加   不要忘记!!!  MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot;    //创建DOMDocume]]></description><category></category></item><item><title><![CDATA[com套间]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5858678</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5858678</guid><author>keepdoingit</author><pubDate>Thu, 02 Sep 2010 14:31:00 +0800</pubDate><description><![CDATA[简序　　大学毕业前的最后一学期，在一家公司实习，当时的工作需要用到一些操作系统提供的组件。那时候只知道COM这个名词，并不知道到底是怎么回事，只知道上网到处找别人的源码解决自己的问题；那段日子到现在回忆起来都是灰色的，每天呆坐在电脑前，一个网站一个网站的查找自己需要的源码。但并不清楚自己到底在做什么；那时候对自己能不能成为一个程序员充满了怀疑。在实习结束返校的火车上，一夜间，我把一本《COM本质论》翻看了120多页。当我和当时的女友吹嘘自己一夜可以看100多页书的时候，她马上问我：看懂多少？当时我哑口无言。]]></description><category></category></item><item><title><![CDATA[调试]]></title><link>https://blog.youkuaiyun.com/keepdoingit/article/details/5788841</link><guid>https://blog.youkuaiyun.com/keepdoingit/article/details/5788841</guid><author>keepdoingit</author><pubDate>Wed, 04 Aug 2010 19:14:00 +0800</pubDate><description><![CDATA[1  release下也可以调试？.pdb,有时提示不正确。2 如何写正则表达式]]></description><category></category></item></channel></rss>