自己动手写驱动禁用电脑主板喇叭.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自己动手写驱动禁用电脑主板喇叭

??????这是自学Windows驱动开发的第三天,也是我所写的第一个完整的、有用的驱动程序,加之今天日子比较特殊,就用它来纪念今天吧! ?????? 众所周知,在我们电脑的主板上有个小喇叭,在计算机一切正常的情况下,你开机时所听到的那清脆的“嘀”一声就是它发出来的,其实要操纵它发出声是很简单的,Windows的Beep这个API就可以轻松办到,根本就不用进Ring0,但如果想对它进行更多的操作就得进Ring0了,要进Ring0,那就得靠驱动了。 ?????? 话说302和303机房的机器都装了一个叫“增霸卡”的系统还原工具,该工具有一个缓冲区,当缓冲区装满之后,电脑主析的喇叭就会发出不间断的刺耳报警声,但计算机仍然可以正常使用,这也是我为什么要写这个小驱动的原因。 ?????? 闲话不多说,还是那问老的:翠花,上代码! ? /*************************************************** ?*FileName:RingControler.h ?*Author:swtar ?*Data:2011-3-31 ***************************************************/ //这个预处理可以避免头文件的多次包含 #pragma once //包含头文件 #ifdef _cplusplus extern C { #endif #include NTDDK.h #ifdef _cplusplus } #endif //设置分布内存和非分布内存,初始化内存块 #define PAGEDCODE code_seg(PAGE) #define LOCKEDCODE code_seg() #define?INITCODE code_seg(INIT) #define PAGEDDATA data_seg(PAGE) #define LOCKEDDATA data_seg() #define INITDATA data_seg(INIT) #define arraysize(p) (sizeof(p)/sizeof((p)[0])) //定义驱动扩展结构 typedef struct _DEVICE_EXTENSION{ ?PDEVICE_OBJECT pDevice; ?UNICODE_STRING ustrDeviceName; ?UNICODE_STRING ustrSymLinkName; } DEVICE_EXTENSION,*PDEVICE_EXTENSION; //声明函数 NTSTATUS DefaultRoutine(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp); VOID RingControlerUnload(IN PDRIVER_OBJECT pDriverObject); /*************************************************** ?*FileName:RingControler.cpp ?*Author:swtar ?*Data:2011-3-31 ***************************************************/ //包含头文件 #include RingControler.h //说明以下代码为初始代码 #pragma INITCODE //驱动入口函数 extern C NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,IN UNICODE_STRING pRegistryPath) { ?NTSTATUS status; ?PDEVICE_OBJECT pDevObj; ?PDEVICE_EXTENSION pDevExt; //指明派遣函数 ?pDriverObject-DriverUnload=RingControlerUnload; ?pDriverObject-MajorFunction[IRP_MJ_CREATE]=DefaultRoutine; ?pDriverObject-MajorFunction[IRP_MJ_CLOSE]=DefaultRoutine; ?pDriverObject-MajorFunction[IRP_MJ_WRITE]=DefaultRoutine; ?pDriverObject-MajorFunction[IRP_MJ_READ]=DefaultRoutine; //指明设备名称 ?UNICODE_STRING ustrDevName; ?RtlInitUnicodeString(ustrDevName,L\\Devi

文档评论(0)

ww39ef + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档