基于Windows2000开发WDM设备驱动程序的方法(2)
作者:佚名; 更新时间:2014-12-05
IRP_MJ_XXXXX为驱动程序所收到的系统消息,RequestXXXXX为相应的消息处理函数。在客户端程序中,我们一般要采用DeviceIoContro l通过自定义的控制码与驱动程序通信(在VxD中大多也采用这种方式)。看看驱动程序所收到的系统消息,我们不难发现当用户调用DeviceIoControl时操作系统就会向驱动程序发出一条IRP_MJ_DEVICE_CONTROL消息,以触发RequestControl消息处理函数。NTSTATUS RequestControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)  {  PIO_STACK_LOCATION IrpStack;     ULONG ControlCode;     ULONG InputLength,OutputLength;     NTSTATUS status;     IrpStack=IoGetCurrentIrpStackLocation(Irp);   //获取当前IRP所在的I/O堆栈  ControlCode=IrpStack- >Parameters.DeviceIoControl.IoControlCode; //取得控制码  InputLength=IrpStack- >Parameters.DeviceIoControl.InputBufferLength;  //取输入缓冲区大小
 OutputLength=IrpStack- >Parameters.DeviceIoControl. OutputBufferLength;//取输出缓冲区大小
switch(ControlCode)  { case HELLOWDM_IOCTL_HELLO: DbgPrint ("Hello from WDM.\n");//向调试器输出字符串    status=STATUS_SUCCESS;   //置返回值    break;    default:  status=STATUS_INVALID_DEVICE_REQUEST;    //输入的控制码不支持   }   return CompleteRequest(Irp, status, 0);  //调用CompleteRequest通知操作系统完成IRP操作 
立刻注册,免费享受三天的试用收看期,火爆,激情 让您免费欣赏三天
 4.结束语
   本文是笔者在Windows2000下开发网卡驱动程序的一些经验总结,使用Windows2000 DDK开发包和Windows2000 platform SDK ,在VC++6.0下调试通过。
      
参考文献
[1] Art Baker Jerry Lozano 著 施 诺 译   Windows 2000设备驱动程序设计指南 机械工业出版社 2001
[2]  武安河 周利莉 著 Windows 设备驱动程序开发实务 电子工业出版社 2002
核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com