- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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 _cplusplusextern 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
您可能关注的文档
最近下载
- 人乳头瘤病毒感染护理.pptx VIP
- 压疮品管圈成果汇报PPT幻灯片.ppt VIP
- 车险承保方案.pdf VIP
- 中华民族共同体概论教案合集(第一讲-第十六讲)附《中华民族共同体概论》课程大纲.doc VIP
- “中华民族共同体概论”课程教学与建设关键问题探讨.docx VIP
- 诸侯纷争与变法运动【课件】.pptx VIP
- 中国高血压防治指南(2024年修订版)_中国高血压防治指南修订委员会__.pdf VIP
- “扬子石化杯”2024年第38届中国化学奥林匹克(江苏赛区)初赛化学.pdf VIP
- 民事诉讼法中案外第三人对执行的异议之诉.pdf VIP
- “扬子石化杯”2024年第38届中国化学奥林匹克(江苏赛区)初赛化学试卷含答案.pdf VIP
文档评论(0)