读书笔记&原创和心得
文章平均质量分 76
Kendiv
这个作者很懒,什么都没留下…
展开
-
Windows2000 进程/线程分析(一)
Windows2000 进程/线程分析(一) ---读书笔记一、 内核对象1.1 什么是内核对象系统和应用程序使用内核对象来管理各种各样的资源,比如:进程、线程和文件等。每个内核对象只是内核分配的一个内存块,并且只能有内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如:安全描述符、使原创 2003-10-31 23:07:00 · 4131 阅读 · 1 评论 -
Windows 95 System Programming SECRENTS学习笔记---第五章(4)
GetProcessHeap 使用一个Win32 Heap函数,首先你得有一个heap handle。大部分程序都使用KERNEL32在程序产生时给与的一个默认堆(default heap)。你可以调用GetProcessHeap获得其Heap handle。这个函数很简单,它取出KERNEL32的一个全局变量,指向当前进程的process database。其中存放有进程的默认堆的句柄原创 2005-01-11 04:55:00 · 3217 阅读 · 3 评论 -
Windows 95 System Programming SECRENTS学习笔记---第五章(3)
接下来VirtualAlloc处理来自fdwAllocationType参数的各种标志值。首先,它看看是否有未公开的0x80000000标志,那意味要分配2GB以上的内存。VirtualAlloc忽略MEM_TOP_DOWN标志。然后它再测试是否你只传入了MEM_COMMIT或MEM_RESERVED标志。任何其他的标志都会引发调试版的一个警告信息。最后,函数代码调用mmPAGEToPC,那是一个原创 2005-01-11 04:53:00 · 3066 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(5)
补充: 进程的handle保存在自己的process handle table中,系统可以通过hProcess找到对应的process database,那么进程所拥有的线程的handle保存在哪儿?前面提到过,在PDB中有两个位置与此有关:一个用来保存该进程拥有的线程个数,另一个保存ThreadList的表头。个人感觉,hTread应该在process handle table中,原创 2005-01-11 01:46:00 · 2179 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第五章(1)
Windows 95 System Programming SECRETS读书笔记、心得第五章 内存管理Author: KendivLast Update: Tuesday, January 11, 2005 虽然本书内容是根据Windows 95而写的,但是很多思路和细节对于我们研究Windows2000及其后续系统还是非常有用的。本读书笔记不是针对全书的,只针对原书的第3、原创 2005-01-11 04:42:00 · 2977 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第五章(2)
Windows 95的“Copy on Write”(写入时才复制)既然知道Windows 95尽其可能的共享程序代码,我们很自然就会关心:调试器(Debugger)对此如何应对。有什么问题吗?哦,调试器会在你的程序代码中写入中断点(break point)指令(INT 3,opcode 0xCC)。如果调试器写入中断点指令的那个code page是被两个进程共享的话,就会有潜在的问题。要知道原创 2005-01-11 04:49:00 · 3097 阅读 · 1 评论 -
Visual Studio 2005 Team System 试用有感
Visual Studio 2005 Team System 试用有感 注:根据网友--开心就好 指出的错误,修改了原文。 最近拿到了Visual Studio 2005 Team System CTP 2004后,安装试用了一下,很不错,和Visual Studio .NET 2003相比变化非常大,和Excel、Project以及WSS很好的集成在了一起,内建有独立的源代码控制原创 2005-03-25 18:41:00 · 2745 阅读 · 0 评论 -
探索Windows的内部机制所需的基础
探索Windows的内部机,分析Windows各种系统机能的实现方式,并不那么难。只要有一定的基础就可以开始这方面的学习。以我的学习经历来说,我觉得在开始深入学习Windows之前,最好有如下的基础:1. 熟练使用C语言 你至少要对C中的指针了如指掌,知道如何使用指针访问数组。知道数组并不是仅可通过下标来访问的。如果你看过很多遍《C缺陷和陷阱》并认为这本书很棒。那就太好了。原创 2005-05-26 04:17:00 · 3464 阅读 · 6 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(7)
虽然我所说的不足以让你写一个自己的操作系统层面的异常处理机制,但是以足够让你了解SEH是如何运作的。在本章的示例程序SHOWSEH程序中,会利用__try块来设立异常处理链表。设立好后,该程序将遍历SEH链表并打印出每一个节点的内容。 SHOWSEH的输出结果如下图所示。我要你注意几点。第一,请注意“next rec”一栏总是递增的,那是编译器用来放置EXCEPTIONREGISTRATI原创 2005-01-11 04:36:00 · 3766 阅读 · 1 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(6)
线程控制函数Win32 API提供了几个函数,用来修改和查询线程的执行状态。在底层,线程可以读些另一个线程的寄存器(假设它有其他线程的handle)。在高层方面,有些Win32 API允许你暂停/开始其他线程的执行。让我们看看这些线程控制函数。 GetThreadContext和IGetThreadContextGetThreadContext使线程有能力获得另一个线程的寄存器的副原创 2005-01-11 01:52:00 · 2206 阅读 · 0 评论 -
编程计算CPU主频
源程序如下:// Compile: cl /TC #define WIN32_LEAN_AND_MEAN#include #include #define RDST _asm _emit 0x0f _asm _emit 0x31float GetCpuSpeed(){ __int64 cStart=0,cEnd=0; u原创 2004-08-05 23:53:00 · 2761 阅读 · 0 评论 -
Nmake入门(一)
今天IDE已经满天飞了,功能也越来越强,对于程序员来说,这确实是好事,不言而喻可以提高工作效率。但对于初学者来说,直接使用IDE或许并不是好事,原因是IDE为你做了很多事情,而你却并不了解。引侯捷的一句话:“勿在浮沙筑高台”。下面就让我们看一下,如何在命令行进行程序的编译和链接。要知道,这可是IDE的主要功能之一啊。 在Windows平台下,命令行的编译主要采用nmake,关于原创 2004-09-07 20:01:00 · 4165 阅读 · 0 评论 -
关于随机函数
写程序时,常会遇到使用随机函数的地方,这里我给出一种最简单的办法,MSDN中也类似的东西。要想产生真正的随机数还是比较复杂的,但对于大多数应用来说,并不需要。 示例代码:// Name: rand_example.cpp// Compile: cl /EHsc rand_example.cpp// OS: Window 2000原创 2004-09-07 19:15:00 · 2586 阅读 · 1 评论 -
Windows网络编程总结(一)
Windows网络编程总结(一) 1. 关于bind INADDR_ANY 的具体含义是,绑定到0.0.0.0。此时,对所有的地址都将是有效的,如果系统考虑冗余,采用多个网卡的话,那么使用此种bind,将在所有网卡上进行绑定。在这种情况下,你可以收到发送到所有有效地址上数据包。例如:SOCKADDR_IN Local;Local.sin_addr.s_addr = hto原创 2004-10-29 00:16:00 · 6055 阅读 · 0 评论 -
Windows网络编程总结(二)
Windows网络编程总结(二) 1. WinSokcet Architecture2. 关于AcceptEx使用此函数时,要包含头文:Mswsock.h,同时要链接:Mswsock.lib。可在源程序中加入下面的语句,这样在编译时,将自动链接Mswsock.lib。#pragma comment(lib,” Mswsock.lib”) 下面是使用AcceptEx函原创 2004-11-10 02:01:00 · 2932 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(1)
第三章 模块、进程、线程(Modules、Processes、Threads)Author: KendivLast Update: Sunday, December 26, 2004 虽然本书内容是根据Windows 95而写的,但是很多思路和细节对于我们研究Windows2000及其后续系统还是非常有用的。本读书笔记不是针对全书的,只针对原书的第3、5、8、10章。这四章分别如下原创 2004-12-23 02:15:00 · 2832 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(2)
与模块有关的API函数相关函数列表:l GetModuleUsagel GetProcAddressl GetModuleHandlel GetModuleFileNamel LoadLibraryl FreeLibrary GetModuleUsage这是一个老原创 2004-12-23 02:21:00 · 2404 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(3)
进程(Process)首先让我们看看,Windows中关于进程的定义,以下内容引自《Windows核心编程》:进程通常被定义为一个正在运行的程序的实例,它由两部分组成:l 一个是操作系统用来管理进程的内核对象(K32对象)。内核对象也是系统用来存放关于进程统计信息的地方。l 另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态原创 2004-12-26 01:04:00 · 2781 阅读 · 0 评论 -
Windows 95 System Programming SECRENTS学习笔记---第三章(4)
OpenProcess此函数要求一个process ID作为参数,并返回一个process handle。Process handle随后被交给像ReadProcessMemory或VirtualQueryEx之类的函数。而你知道,TOOLHELP32有能力给你任何进程的process ID。因此,如果你能组合这两股力量,你就可以大有作为。奇怪的是Windows 95允许你打开一个proces原创 2004-12-27 06:16:00 · 3636 阅读 · 0 评论