Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24782
  • 博文数量: 11
  • 博客积分: 445
  • 博客等级: 下士
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-14 14:27
文章分类
文章存档

2012年(11)

我的朋友
最近访客

分类: IT业界

2012-05-18 10:52:41

 驱动程序做出来后,怎么用呢?根据Four-F的说法,有三种方式:
 驱动程序做出来后,怎么用呢?根据Four-F的说法,有三种方式:
服务控制管理器(Service Control Manager (SCM).)
服务控制程序(Service Control Program (SCP).)和服务程序(service program).
下面我们就用服务控制程序(SCP)来实现驱动程序的动态加载,例子程序在 KmdKitexamplessimpleBeeper
代码如下:
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
;scp.asm
;
;ServiceControlProgramforbeeper.sysdriver
;
;WrittenbyFour-F()
;
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.386
.modelflat,stdcall
optioncasemap:none
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;INCLUDEFILES
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
includemasm32includewindows.inc
includemasm32includekernel32.inc
includemasm32includeuser32.inc
includemasm32includeadvapi32.inc
includelibmasm32libkernel32.lib
includelibmasm32libuser32.lib
includelibmasm32libadvapi32.lib
includemasm32MacrosStrings.mac
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;CODE
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.code
startproc
localhSCManager:HANDLE
localhService:HANDLE
localacDriverPath[MAX_PATH]:CHAR
;OpenahandletotheSCManagerdatabase
invokeOpenSCManager,NULL,NULL,SC_MANAGER_CREATE_SERVICE
.ifeax!=NULL
movhSCManager,eax
pusheax
invokeGetFullPathName,$CTA0("beeper.sys"),sizeofacDriverPath,addracDriverPath,esp
popeax
;RegisterdriverinSCMactivedatabase
invokeCreateService,hSCManager,$CTA0("beeper"),$CTA0("NiceMelodyBeeper"),
SERVICE_START+DELETE,SERVICE_KERNEL_DRIVER,SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,addracDriverPath,NULL,NULL,NULL,NULL,NULL
.ifeax!=NULL
movhService,eax
invokeStartService,hService,0,NULL
;Heredriverbeeper.sysplaysitsnicemelody
;andreportserrortoberemovedfrommemory
;RemovedriverfromSCMdatabase
invokeDeleteService,hService
invokeCloseServiceHandle,hService
.else
invokeMessageBox,NULL,$CTA0("Can'tregisterdriver."),NULL,MB_ICONSTOP
.endif
invokeCloseServiceHandle,hSCManager
.else
invokeMessageBox,NULL,$CTA0("Can'tconnecttoServiceControlManager."),
NULL,MB_ICONSTOP
.endif
invokeExitProcess,0
startendp
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
endstart
;=============以下是驱动程序源码beeper.bat的内容===========
;@echooff
;gotomake
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
;beeper-KernelModeDriver
;Makesbeepthoroughcomputerspeaker
;
;WrittenbyFour-F()
;
;WARNING:TestedW2000&XPonly!
;
;::::::::::::::::::::::::::::::
更多文章推荐http://bainchengphp.blog.chinaunix.net
阅读(566) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:关于程序性知识是最有用的知识必掌握

给主人留下些什么吧!~~