参考资料:

1. 《Windows Internals》

2. Windows Drive Kit

3. Microsoft Windows SDK

4. WDK下载地址

知识点:

1. Windows Drive Kit(WDK)是微软提供的用于Windows平台的设备驱动软件开发工具集。它包括:文档、实例、Build环境和为驱动开发人员提供的开发工具。早期,它以Windows Driver Development Kit(DDK)闻名,支持Windows Driver Model(WDM)开发。目前的名词是诞生于Vista的发布,并增加了以下工具:

● Windows Driver Foundation (WDF)

● Installable File System Kit (IFS Kit)

● Driver Test Manager (DTM)

  2. Microsoft Windows SDK,Platform SDK和.Net Framework SDK是微软提供的软件开发工具集。它包括:头文件、库文件、实例、文档和用于开发应用程序的工具。注意它们三者的区别(见Wiki)。

  3. Windows API是用户态下的编程接口。常听说的有Win32 API和Win64 API。

  

      图1 Win API分类

  4. Microsoft .NET Framework由类库Framework Class Library(FCL)和Common Language Runtime(CLR)组成。CLR是提供了可托管代码的执行环境,是一个经典的COM server,它的代码存在于标准的用户态Windows DLL中。实际上,.NET Framework中的所有组件都是基于非托管Windows API并实现为标准用户态的Windows DLL中的。

  

  图2 .NET Framework各组件之间的关系

  5. Windows进程的组成:

  ● 一个私有的虚拟地址空间。

  ● 一个可执程序。

  ● 一个开放的句柄列表,用于访问各种系统资源。比如,信号量、通信接口和文件等。

  ● A security content called an access token

  ● A unique identifier called a process ID

  ● 至少有一个执行进程(At least one thread of execution)。

  6. 每一个进程会指向其父进程或子进程。如果父进程不存在了,该信息不会被更新。因此,很有可能一个进行会引用一个不存在的父进程。但这不是问题,因为没有谁会依赖这些存于当前进程的信息。

  7. Windows线程的组成:

  ● 一组CPU寄存器的内存,代表了处理器的状态。

  ● 两个栈,一个用于内核模式,一个用于用户模式。

  ● 一个私有存储区TLS(thread-local storage)。

  ● 唯一标识符(thread ID)。

  ● 线程有时候拥有各自的security context或token。

  8. 线程的上下文包括:volatile寄存器,栈和私有存储区。

  9. 作业是进程模型的扩展,一个进程对象的主要功能是把一组进程被当做一个单元来进行管理和操作。在一定意义上,作业对象弥补了Windows缺乏结构化进程树的缺陷。

   10. Windows内部大多数文本字符串都是以Unicode字符存储的。因此,当调用ANSI版本的Windows函数时,会有一定的性能影响。

  11. Symbol文件包含了函数和变量的名字,以及数据结构的布局和格式。它们由linker程序产生,被debugger程序使用。因此,这些信息是不存在二进制文件中的。也因此,二进制文件才更小、更快。

  12. User-Mode debugging分Invasive和Noninvasive两种模式。工具:命令行版Kd.exe和GUI版Windbg.exe。

  13. LiveKd是一个免费工具,它允许你使用标准的Windows内核调试工具去检查运行时系统,且无须在调试模式下重启系统。

  

  

Windows Internals学习笔记(一)概念与工具的更多相关文章

  1. Windows Internals学习笔记(八)IO系统

    参考资料: 1. <Windows Internals> 知识点: ● 当一个进

  2. Windows Internals学习笔记(七)Image Loader

    参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...

  3. Windows Internals学习笔记(六)Windows关键系统组件

    参考资料: 1. <Windows Internals> 2. Dependency Walker 3. Ntoskrnl.exe 4. Livekd的使用 5. WinDbg的使用(一) ...

  4. Windows Internals学习笔记(五)Synchronization

    参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...

  5. Windows Internals学习笔记(四)Trap Dispatching

    参考资料: 1. <Windows Internals> 知识点: ● 陷阱trap:它是一种处理器机制,用以在某一异常或中断出现时,捕捉该执行线程,并将其控制权转交到操作系统中某一固定位 ...

  6. Windows Internals学习笔记(二)系统架构

    参考资料: 1. <Windows Internals> 2. http://bestcbooks.com 3. Windows Drive Kit 4. Microsoft Window ...

  7. Windows Internals学习笔记(三)Procdump的使用

    参考资料: 1. 下载地址 2. 使用示例

  8. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  9. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

随机推荐

  1. InnoDB Status Output – Buffer Pool and Spin Rounds

    InnoDB has a good source of information about its status which can be requested every time you need ...

  2. iOS录音加播放.

    现在发现的事实有: 如果没有蓝牙设备, 那么可以用下面的方法边录音, 边放音乐: 在录音按钮按下的时候: _avSession = [AVAudioSession sharedInstance];   ...

  3. 【Pro ASP.NET MVC 3 Framework】.学习笔记.1.主要语言特性

    C# 是一个富有特性的语言,并不是所有的程序员都熟悉本书依赖的所有特性.在本章,我们看看作为一个好的MVC程序员需要知道的C#特性. 1 C#主要特性 } 1.1 使用扩展方法 扩展方法 在你不能拥有 ...

  4. sort DEMO

    测试用文件: [weblogic@etp-mall-dev7][/tmp]$ cat msn.txt aaa, fff, bbb, cc, ee, gg, hh, zz, mmm, DEMO1:按第一 ...

  5. org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.servlet.Servlet

    java.lang.ClassCastException: org.apache.cxf.transport.servlet.CXFServlet cannot be cast to javax.se ...

  6. Effective C++:条款27——条款

    条款27:尽量少做转型动作 单一对象可能拥有一个以上的地址!

  7. vscode使用php调试

    1:首先查看是否安装xdebug扩展 打开终端  ➜ ~ php -vPHP 5.6.24 (cli) (built: Jul 21 2016 14:27:54) Copyright (c) 1997 ...

  8. 去掉DataTable中重复的行

    //DataView dv = dt3.DefaultView;     //dt3默认的虚拟视图 //dv.Sort = "wmid asc"; //排序 ///dv.ToTab ...

  9. HDU 1402:A * B Problem Plus

    A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  10. javaScript判断鼠标滚轮的上下滚动

    分享一个js实现判断鼠标滚轮的上下滚动: <script type="text/javascript"> var scrollFunc = function (e) { ...