码迷,mamicode.com
首页 > Windows程序 > 详细

Windows 驱动开发 - 基础2

时间:2015-05-16 00:15:38      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

    名词:IRP; PDO; FiDO1; FDO;

    Windows 内核设计本身是不与设备交互由。设备驱动程序检测连接的设备,该设备提供的客户端功能接口与 Windows 内核间接通信。Windows 提供了一个抽象的设备支持接口调用驱动程序模型。驱动程序开发人员的工作是提供一个实现该接口已支持设备的具体要求.

技术分享


。设备栈(Device Stack)

    设备的每一次驱动,就会产生一个设备栈。

技术分享    

    I/O Request

    (1) 写请求

         Win API:WriteFile

    (2) 读请求

        Win API:ReadFile

    (3) 设备I/O控制

        Win API:DeviceIoControl


    IRP: I/O  Request Packet

typedef struct _IRP {
  .
  .
  PMDL  MdlAddress;
  ULONG  Flags;
  union {
    struct _IRP  *MasterIrp;
    .
    .
    PVOID  SystemBuffer;
  } AssociatedIrp;
  .
  .
  IO_STATUS_BLOCK  IoStatus;
  KPROCESSOR_MODE  RequestorMode;
  BOOLEAN PendingReturned;
  .
  .
  BOOLEAN  Cancel;
  KIRQL  CancelIrql;
  .
  .
  PDRIVER_CANCEL  CancelRoutine;
  PVOID UserBuffer;
  union {
    struct {
    .
    .
    union {
      KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
      struct {
        PVOID  DriverContext[4];
      };
    };
    .
    .
    PETHREAD  Thread;
    .
    .
    LIST_ENTRY  ListEntry;
    .
    .
    } Overlay;
  .
  .
  } Tail;
} IRP, *PIRP;    


    IRP结构详见《IRP



    FiDO: Filter Device Object(Upper)

    FDO: Functional Device Object

    FiDO: Filter Device Object(Lower)

    PDO: Physical Device Object



参考文献:

    1. Programming the Microsoft Windows Driver Model(2nd)

         1Chapter 2 - Basic Structure of a WDM Driver >> How the System Finds and Loads Drivers


Windows 驱动开发 - 基础2

标签:

原文地址:http://blog.csdn.net/xiaobin_hlj80/article/details/45749683

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!