驱动对象(DRIVER_OBJECT)

原创 2013年12月03日 19:10:44

每个驱动程序会有唯一的DRIVER_OBJECT驱动对象与之对应,并且这个DRIVER_OBJECT是在驱动加载时候,被内核中的对象管理器所创建。它作为驱动一个实例被内核加载,并且内核对一个驱动只加载一个实例。确切的说,是由内核的I/O管理器负责加载的。驱动程序需要在DriveEntry中初始化。

typedef struct _DRIVER_OBJECT {
    CSHORT Type;
    CSHORT Size;

    //
    // The following links all of the devices created by a single driver
    // together on a list, and the Flags word provides an extensible flag
    //location for driver objects.
    
	
    PDEVICE_OBJECT DeviceObject;//the first pointer Of links
	
	
    ULONG Flags;

    //
    // The following section describes where the driver is loaded.  The count
    // field is used to count the number of times the driver has had its
   // registered reinitialization routine invoked.
    //

    PVOID DriverStart;
    ULONG DriverSize;
    PVOID DriverSection;
    PDRIVER_EXTENSION DriverExtension;

    //
    // The driver name field is used by the error log thread
    // determine the name of the driver that an I/O request is/was bound.
    //

    UNICODE_STRING DriverName;

    //
    // The following section is for registry support.  Thise is a pointer
    // to the path to the hardware information in the registry
    //

    PUNICODE_STRING HardwareDatabase;

    //
    // The following section contains the optional pointer to an array of
    // alternate entry points to a driver for "fast I/O" support.  Fast I/O
    // is performed by invoking the driver routine directly with separate
    // parameters, rather than using the standard IRP call mechanism.  Note
    // that these functions may only be used for synchronous I/O, and when
    // the file is cached.
    //

    PFAST_IO_DISPATCH FastIoDispatch;

    //
    // The following section describes the entry points to this particular
    // driver.  Note that the major function dispatch table must be the last
    // field in the object so that it remains extensible.
    //

    PDRIVER_INITIALIZE DriverInit;
    PDRIVER_STARTIO DriverStartIo;
    PDRIVER_UNLOAD DriverUnload;
    PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];//handle IRP functions
} DRIVER_OBJECT;
typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT; 

为了更形象的说明这个字段,我贴个图




strut2接收参数的三种方式(属性驱动\对象驱动\模型驱动)说明

strut2接收参数的三种方式(属性驱动\对象驱动\模型驱动)说明
  • qq_36648435
  • qq_36648435
  • 2016年11月12日 12:19
  • 1384

JavaScipt——基于对象和事件驱动的客户端语言

JavaScript(下面简称JS)是一种基于对象和事件驱动的语言。所谓基于对象,这和我们常说的面向对象语言是有所不同的。 面向对象,简单而言就是用户可以自己定义设计类。 JavaScript(下...
  • Helios_2015
  • Helios_2015
  • 2014年10月14日 09:07
  • 1092

Windows 驱动中获取指定的设备对象

转载自:http://tudian2007.blog.163.com/blog/static/3156641320137295338938/Windows 驱动中获取指定的设备对象  众所周知应用层要...
  • u011471873
  • u011471873
  • 2016年06月07日 22:53
  • 1663

驱动对象(DRIVER_OBJECT)

每一个驱动对象代表着一个已经装载的内核模式下的驱动, 指向驱动对象的指针是驱动程序中以下例程的输入参数之一: DriverEntry, AddDevice, Reinitialize(可选例程),Un...
  • saloon_yuan
  • saloon_yuan
  • 2012年05月14日 13:19
  • 3923

驱动对象(DRIVER_OBJECT)

驱动对象(DRIVER_OBJECT)  每个驱动程序对象代表了一个加载了的内核模式驱动程序映像.这个驱动对象就是以 DRIVER_OBJECT结构体的形式存在的.这个驱动对象的指针从驱动程序的D...
  • YL_WH
  • YL_WH
  • 2012年09月06日 13:07
  • 526

通过暴搜DRIVER_OBJECT枚举驱动

作 者: gjden 时 间: 2010-03-30,00:12:20 链 接: http://bbs.pediy.com/showthread.php?t=109819 通过暴搜DRI...
  • cqyczj
  • cqyczj
  • 2014年04月24日 15:13
  • 815

Windows驱动开发(6) - DRIVER_OBJECT结构体

Windows驱动开发(6) - DRIVER_OBJECT结构体typedef struct _DRIVER_OBJECT { CSHORT Type; C...
  • u011471873
  • u011471873
  • 2016年05月04日 15:50
  • 521

使用模拟对象(Mock Object)技术进行测试驱动开发

方 世明 (fangshim@cn.ibm.com), 软件工程师, EMC 方世明就职于 IBM 中国软件开发中心存储部门,从事存储设备管理软件的开发工作。 简介: 测试...
  • m13666368773
  • m13666368773
  • 2011年11月30日 11:56
  • 1639

(数组 list集合 map集合 Object对象 XML数据格式) 转成 string json

  • 2017年12月08日 18:07
  • 2KB
  • 下载

iOS对象转字典 object2Dictionary

  • 2014年11月06日 23:17
  • 36KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:驱动对象(DRIVER_OBJECT)
举报原因:
原因补充:

(最多只允许输入30个字)