李sir_Blog

博客园 首页 联系 订阅 管理
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 71 下一页

2011年1月30日

摘要: 检查自已的代码时,发现一个比较弱智的错误,是关于转码的,和CString的=操作符有关。 为了能简单重现,我模拟了一下代码: //未有UNICODE或_UNICODE定义 USES_CONVERSION; CString sTest(_T("test中文")); sTest = A2W(sTest); ::MessageBoxW(NULL,(LPCWSTR)sTest.GetBuffer(0),L"test中文标题",MB_OK); 输出: 对话框的内容区为乱码。 我的想象中:A2W取得宽字符串,然后赋值给CString,CString中应该保存的是宽字符串。 显然,并不如我想,想是没用的,仔 阅读全文
posted @ 2011-01-30 13:11 李sir 阅读(1678) 评论(0) 推荐(1)

2011年1月25日

摘要: http://sosoman.wikidot.com/ 阅读全文
posted @ 2011-01-25 13:35 李sir 阅读(678) 评论(0) 推荐(1)

2011年1月24日

摘要: 静态数据成员:下面看一个例子:#include iostream.hclass Point{public:void output(){}static void init(){}};void main( void ){Point pt;pt.init();pt.output();}这样编译是不会有任何错误的。下面这样看#include iostream.hclass Point{public:void output(){}static void init(){}};void main( void ){Point::output();}这样编译会处错,错误信息:illegal call o 阅读全文
posted @ 2011-01-24 19:45 李sir 阅读(4890) 评论(0) 推荐(1)

摘要: 类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 class 阅读全文
posted @ 2011-01-24 15:28 李sir 阅读(103427) 评论(3) 推荐(17)

摘要: 听过无数次不要TerminateThread,只是工作中常用,貌似也没有什么问题。今天在高强度测试中发现了一个不可原谅的错误。参看下面的例子DWORD __stdcall mythread(void* ){ while( true ) { char* p = new char[1024]; delete p; }}int _tmain(int argc, _TCHAR* argv[]){ HANDLE h = CreateThread(NULL, 0, mythread, NULL, 0, NULL); Sleep(1000); TerminateThread(h, 0); h = NULL; 阅读全文
posted @ 2011-01-24 10:21 李sir 阅读(923) 评论(0) 推荐(0)

2011年1月23日

摘要: stl string 使用1. 查找字符std::wstring strData = L"result[北京市, 上海市, 深圳市]/result"void DoF(const std::wstring &strData, std::liststd::wstring& listDo){ std::wstring strTarB = L"result["; std::wstring strTarE = L"]/result"; std::wstring::size_type nBeginTempB = 0, nEndTempB = 0, nBeginTempE = 0, nE 阅读全文
posted @ 2011-01-23 15:13 李sir 阅读(6317) 评论(0) 推荐(0)

2011年1月21日

摘要: 本文分三部分来介绍如何构造一个简单的USB过滤驱动程序,包括“基本原理”、“程序的实现”、“使用INF安装”。此文的目的在于希望读者了解基本原理后,可以使用除DDK以外最流行也最方便的驱动开发工具DriverStudio来实现一个自己的过滤驱动,并正确地安装。一、基本原理我们知道,WDM(和KDM)是分层的,在构造设备栈时,IO管理器可以使一个设备对象附加到另外一个初始驱动程序创建的设备对象上。与初始设备对象相关的驱动程序决定的IRP,也将被发送到附加的设备对象相关的驱动程序上。这个被附加的驱动程序便是过滤驱动程序。如右图,过滤驱动可以在设备栈的任何层次中插入。IO管理器发出的IRP将会沿着右 阅读全文
posted @ 2011-01-21 17:21 李sir 阅读(4749) 评论(1) 推荐(0)

摘要: 4 编译与调试环境简介4.1 源码 ps/2键盘驱动的设备栈有3层,最底层设备对象的驱动是 acpi,中间层设备对象的驱动是 i8042prt,最高层设备对象的驱动是 kbdclass。 DDK 所附的源码中有 i8042prt 和 kbdclass 的源码,分别位于 ...\NTDDK\src\input\pnpi8042 ,...\NTDDK\src\input\kbdclass 。 注意,在目前DDK所附的源码中没有 acpi 的源码,不过 acpi 对于键盘驱动几乎没有起什么作用。在DDK中可以找到一个叫acpi的目录,但那个下面并不是acpi.sys的源码,而是acpiec.sys的 阅读全文
posted @ 2011-01-21 17:14 李sir 阅读(724) 评论(0) 推荐(0)

摘要: 本文讲述Windows磁盘驱动的主要结构功能与编写方法基础。本文描述的内容仅限于软件层面,并不与具体的硬件相关。1.磁盘驱动基础 不少人把文件系统驱动和磁盘驱动混为一谈。实际上文件系统驱动应该与磁盘驱动是两类不同的驱动程序。文件系统仅仅考虑数据在存储设备上的保存格式(而不考虑具体是什么存储设备),而磁盘是存储设备的一种。 在存储设备驱动(storage driver)中,与实际的硬件设备打交道的驱动称为微端口(miniport)驱动,而更上层的驱动称为类驱动(class driver)。这里说的磁盘驱动(disk driver)是一个类驱动。类驱动具体功能通过下层的微端口驱动实现。而自己则抽象 阅读全文
posted @ 2011-01-21 16:52 李sir 阅读(4330) 评论(1) 推荐(0)

2011年1月18日

摘要: 2. 什么是“引用”?申明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 3. 将“引用”作为函数参数有哪些特点? (1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数 阅读全文
posted @ 2011-01-18 17:20 李sir 阅读(4428) 评论(3) 推荐(5)

上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 71 下一页