自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 zz C++ 虚函数表解析

From:http://www.cppblog.com/mzty/archive/2008/02/18/42877.htmlC++ 虚函数表解析 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试

2008-04-25 16:40:00 437

转载 zz 理解I/O Completion Port(完成端口)

From:http://www.cnblogs.com/flying_bat/archive/2006/09/29/517987.html           欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提

2008-04-24 17:21:00 452

转载 zz bat文件的写法

BAT文件写法 BAT文件写法扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件。 ==== 注 ======================================= .bat是dos下的批处理文件 .cmd是nt内核命令行环境的另一种批处理文件 从更广义的

2008-04-22 17:25:00 983

原创 读Windows核心编程 - 8

 线程需要在下面两种情况下互相进行通信:1. 当有多个线程访问共享资源而不使资源被破坏时。2. 当一个线程需要将某个任务已经完成的情况通知另外一个或多个线程时。线程同步问题在很大程度上与原子访问有关。来看一个例子:// Define a global variablelong g_x = 0;DOWRD WINAPI ThreadFunc1(PVOID pvParam)...{

2008-04-15 22:39:00 658

原创 读Head First设计模式 - 1

一个公司有一款游戏,鸭子(有很多种类的鸭子)可以有不同的外观(display函数表示),也可以游泳(swim函数表示),有些鸭子可以飞(fly函数表示)。方法一:基类Duck定义display,swim,fly三个函数,所有鸭子继承Duck。问题:如果某种鸭子没有fly行为,需要在该类中重写fly函数,fly(){},麻烦...方法二:定义接口Flyable,只要拥有fly功能的鸭子就实现

2008-04-15 00:22:00 584

原创 读Windows核心编程 - 7

         windows是抢占式的,我们无法保证线程在某个事件的某个时间段内开始运行。系统只调度可以调度的线程,但实际情况是,系统中的大多数线程是不可调度的。除了暂停的线程外,还有其他许多线程也是不可调度的,因为它们正在等待某些事情的发生。例如,如果运行Notepad,但是并不输入任何数据,那么Notepad的线程就没有什么事情要做。系统不给无事可做的线程分配CPU时间。当我们移动Note

2008-04-10 22:09:00 1928

原创 读Windows核心编程 - 6

        线程由两部分构成:线程堆栈+线程内核对象。通常情况下,一个应用程序拥有一个用户界面线程,用于创建所有窗口,并且有一个GetMessage循环。进程中的所有其他线程都是工作线程,它们与计算机或者I/O相关联,但是这些线程从不创建窗口。虽然单个进程拥有多个用户界面线程的情况并不多见,但是这种情况有着某种有效的用途。Windows Explorer为每个文件夹窗口创建了一个独立的线程。它

2008-04-08 23:30:00 1370

原创 读Windows核心编程 - 5

        Windows2000 提供了一个新的作业内核对象,使你能够将进程组合在一起,并且创建一个"沙框",以便限制进程能够进程的操作,最好将作业对象视为一个进程的容器。与其他所有内核对象相似,创建作业对象需要调用Handle CreateJobObject(PSECURITY_ATTRIBUTES psa, PCTSTR pszName),第一个参数与其他类似Create*函数相同,第二

2008-04-08 21:30:00 1051

原创 VC下多进程的调试方法

         比如:A函数调用了CreateProcess创建了另外一个相同的进程,然后这个新进程调用了函数B,我们直接把断点设在函数B中肯定是不可行的。这里有两种方法可以解决这个问题:        1. 在B函数入口调用AfxMessageBox函数,当进程一旦进入这个函数就挂起。然后启动第一个进程(非调试),执行相应的操作创建第二个进程并调用函数B,这样就会弹出这个MessageBo

2008-04-08 17:09:00 3857 1

原创 读Windows核心编程 - 4

        进程分为两部分,一个是操作系统用来管理进程的内核对象,一个是地址空间。进程是不活泼的,活泼的是线程,每个线程都有它自己的一组CPU寄存器和它自己的堆栈。        Windows支持两种应用程序,一种是GUI(基于图形用户界面),还有一种CUI(基于控制台用户界面)。Windows应用程序必须有一个在应用程序启动运行时的进入点函数。一共有4个:WinWain、wWinMai

2008-04-05 22:05:00 906

原创 读Windows核心编程 - 3

        什么是内核对象?比如:事件对象,文件对象,文件映射对象,互斥对象,进程对象,作业对象,线程对象等等都是内核对象。每个内核对象只是内核分配的一个内存块,并且只能 由内核访问。该内存块是一个数据结构,它的成员负责维护该对象的各种信息。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。该句柄可以被视为一个不透明值,进程中的任何线程都可以使用这个值。注意:该句柄是与

2008-04-04 18:10:00 981 1

原创 读Windows核心编程 - 2

Microsoft对Unicode的支持:Windows 98 :只支持ANSIWindows 2000: 即支持Unicode也支持ANSI,但是用Unicode会更快,因为会有一个内部的转化过程,比如调用CreateWindowEx函数,参数传非Unicode字符串,那么CreateWindowEx必须分配内存(进程的默认堆中),将非Unicode字符转化成Unicode字符,然后在传

2008-04-01 21:43:00 956

原创 读Windows核心编程 - 1

        当调用一个Windows函数失败,可以用DWORD GetLastError(); 返回该线程的32位错误代码。WinError.h头文件中包含了Microsoft公司定义的错误代码列表。每一个错误代码包含消息ID(ERROR_PATH_NOT_FOUND),消息文本和一个号码(0L、1L)三部分。当Windows函数运行失败时,应该立即调用GetLastError函数,如果调用了

2008-04-01 20:00:00 724

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除