1.windows主要系统组件

  1.对象管理器

  用来管理各种对象,包括文件,设备,注册表键值,进程,线程,事件,符号链接,互斥体,信号量。

  可以进行对象的创建和销毁,跟踪分配给每一个进程的资源,某对象的访问权限。

  通常对应的api是Ob开头的

 

   2. 内存管理器

  对内存进行分配与释放。支持内存映射文件,共享内存,写时复制。

  对应的ap以Mm开头

 

  3.进程线程管理器

   操作进程和线程的功能。

  以Ps开头的api

 

  4.I/O管理器

  负责用户层程序与设备驱动程序之间的交互。他们之间的交互主要通过IRP(I/O请求包)实现。

  以Io开头的api

  

  5.配置管理器

  主要用来管理注册表。

  驱动可以通过注册回调函数来获取注册表变化情况

  以Cm开头的api

  

  6.安全监视器

  windows通过acl判断哪些对象有哪些安全权限,确保操作没有违反安全策略

  以Se开头的api

 

2.重要概念术语

  1.符号链接

  在内核中,虽然设备对象有名字,但是只能在内核中使用,用户层程序需要通过符号链接来对其访问

  

  2.IRQL

  请求中断级别。即处于某个级别的函数不能调用比其调用者级别更高的函数。反之可以。

  级别排序:PASSIVE_LEVEL < APC_LEVEL < DISPATCH_LEVEL < DIRQL

 

  3.IRP

  是I/O管理器与驱动进行通信的基础数据结构,当用户层程序发起I/O请求,I/O管理器创建并根据请求设置IRP的值,发送给目标驱动

  

3. 重要数据结构及其常用字段

  

typedef struct _DRIVER_OBJECT {
    PDEVICE_OBJECT DeviceObject;  //指向设备对象
    PDRIVER_EXTENSION DriverExtension; //指向设备拓展对象
    UNICODE_STRING DriverName;    //指向驱动名字
    PFAST_IO_DISPATCH FastIoDispatch;  //快速I/O函数入口
    PDRIVER_INITIALIZE DriverInit;    //指向驱动入口函数
    PDRIVER_UNLOAD DriverUnload;    //指向驱动卸载函数
    PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; //设置分发函数

   //... 还有其他一些不重要的字段
} DRIVER_OBJECT;

 

 

。。。。。