??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久国产A级,欧美一区二区久久精品,中文字幕久久欲求不满http://www.shnenglu.com/mydriverc/articles/35186.html旅?/dc:creator>旅?/author>Thu, 25 Oct 2007 16:55:00 GMThttp://www.shnenglu.com/mydriverc/articles/35186.htmlhttp://www.shnenglu.com/mydriverc/comments/35186.htmlhttp://www.shnenglu.com/mydriverc/articles/35186.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/35186.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/35186.html 10分钟完成一个USB驱动E序 责Q~辑Qadmin   更新日期Q?005-8-6   很多写Windows Device Driver的开发h员基本上都是使用Windows DDKq行开发的。但是,现在也有不少人都开始借助一些辅助工兗笔者去q开始接触到riverStudioQ发现它真的是一个不错的开发工P不仅写代码的时候思\清晰Q而且和DDK的结合很好?br />
    当然Q也有很多h觉得用DriverStudio不够正宗Q或者说不能很好的理解Windows Device Driver的架构。我感觉q就有点像MFC和SDK的关p,关于q个问题在很多地斚w有争论,比如在万千新ȝ上,pZ近2个月。每个h都有自己的最爱,都有自己的习惯,只要你能把事情做好,我想用什么方法应该都是一L。如果你已经习惯了用DDK开发,那完全还可以l箋用下去;如果你觉得DriverStudio不错Q那试用一个可以给你按照OOP概念?a class="channel_keylink" >~程的工h什么不好呢Q?br />


在驱动开发网上,l常看到有h询问一些关于DriverStudio的用的问题。我正好很有q用它作了几个驱动程序,包括VXD, KMD和WDMQ稍微有点心得,因此惛_下来l大家作一个小的参考。如果其中有错误Q欢q大家给我指出,谢谢?br />


下面我就介绍一下用DriverStudio开发一个USB驱动E序的过E。这个USB讑֤?个双向端点,每个端点的配|如下:

EP cd 地址 buffer(Bytes)

0 IN/OUT Control 0x80/0x00 16/16

1 IN/OUT Bulk 0x81/0x01 16/16

2 IN/OUT Bulk 0x82/0x02 64/64

我们的驱动程序需要实现的功能是控制讑֤上的LED灯的亮和灭,以及通过Endpoint 2对设备进行读写?br />


׃DriveStudio由几个部分组成,我们写这个驱动程序只要用到DriverWorksQ因此下面我们就U它为DW。在q里Q我们假定读者已l正的安装了DWQƈ且已l编译好了各个库文g?br />


1. 首先Q我们通过快捷方式“Setup DDK and Start MSVC“来启动VC IDE。这个快h式所指向的程序,会进行一些必要的讄Q然后再启动VC IDEQ这h们的E序可以用DDK和DW的头文g和库了?br />
2. 从VC IDE的菜?DriverStudio"中选择"DriverWizard", 在如?所C的对话框中, 写上目名称. 在这? 我们这个项目称? TEST, 所在的目录为D:\TEST. 然后Ҏ?Next >".


?

3. 在接下来的这个对话框?如图2), 我们需要选择驱动E序的类? ׃USB讑֤驱动E序是WDMcd? 所以我们选择W二ƈ且点按钮"Next >".


?

4. 在第3个对话框?如图3), 选择我们的驱动程序所操作的ȝcd. q里, 我们选择USB. 在USB Vendor ID和USB Product ID中填入USB讑֤的VID和PID. 假定我们的USB讑֤的VID和PID分别?6q制?471?801. 然后Ҏ?Next >". 关于VID和PID的规定请参考USB-IF的规?


?

5. 在接下来的对话框?如图4), 我们需要加入Endpoint 1和Endpoint 2的定? ׃在USB中规定Endpoint 0是必d在的, 所以我们不需要对Endpoint 0q行定义. ?Add..."按钮, 弹出一个如?所C的对话? 我们它修改成如?所C? 其中, 按照USB的规? 对于端点, 它的地址?; 按照前面说明的设备的特点, Endpoint 1的最大的包大ؓ16字节, 因此?Max Transer Size"中填?6; Endpoint Name可以通过"Suggest Name"得到. 按照q些原则, l箋讄其他的配|? 以对话?变成如图7所C? 接下? l箋?Next >"按钮.


?


?




?


?

6. 在如?所C的对话框中, 可以填入我们需要的Driver Class的名字和文g? 一般我们不需要更? l箋?Next >"按钮.


?

7. 在如?所C的对话框中, 因ؓ不需要给其他的驱动程序提供接? 也不需要提供Flush功能, 所以不需要Q何修? 直接?Next >"按钮.


?

8. 在如?0所C的对话框中, 我们选择l端?产生BULK Read的代? q且?Next >"按钮. DW会给我们产生一套对端点2q行ȝ代码, 不用修改, 可以直接?


?0

9. 在如?1所C的对话框中, 我们选择l端?产生BULK Write的代? q且?Next "按钮. q样, DW也会l我们生一套对端点2q行写的代码, 不用修改, 可以直接?


?1

10. 对于如图12的对话框, 我们直接?Next >"按钮. q里是设|是否要I/Oh排队, 在这? 我们不需要排?


?2

11. 在如?3所C的对话框中, 我们不需要创ZQ何注册表? 所以直接按"Next >"按钮.


?3

12. 如图14所C的对话? 是让我们讄一些驱动程序的属? 比如接口, ~冲Zcȝ. 一般的都可以用缺省设|? l箋?Next >"按钮.


?4

13. 在如?5所C的对话框中, 是让我们l驱动程序增加一些IOCTL接口. 我们只增加一个如?6所C的IOCTL来控制USB讑֤的LED? 然后?Next >"按钮.


?5


?6

14. 在最后一个如?7所C的对话框中, 可以讄一些驱动程序的属? 产生一个console试E序. 按下"Finish"按钮, q束了Wizard.


?7

q样, 我们创建好了一个基本的驱动E序, 下面来看看还要做哪些工作才可以和我们的设备以及上层的应用E序通讯.



把函数NTSTATUS TESTDevice::TEST_IOCTL_LED_Handler(KIrp I)Ҏ如下面的样子Q?br />
NTSTATUS TESTDevice::TEST_IOCTL_LED_Handler(KIrp I)

{

NTSTATUS status = STATUS_INVALID_PARAMETER;



t << "Entering TESTDevice::TEST_IOCTL_LED_Handler, " << I << EOL;



__try

{

// TODO: Verify that the input parameters are correct

// If not, return STATUS_INVALID_PARAMETER

if(I.IoctlOutputBufferSize() || !I.IoctlBuffer() ||

(I.IoctlInputBufferSize() != sizeof(UCHAR)))

__leave;

// TODO: Handle the the ZBUARD_IOCTL_LED_ON request, or

// defer the processing of the IRP (i.e. by queuing) and set

// status to STATUS_PENDING.

PURB pUrb = m_Lower.BuildVendorRequest(

NULL, // transfer buffer

0, // transfer buffer size

0, // request reserved bits

(UCHAR)(*(PUCHAR)I.IoctlBuffer()), // request. 1 = LED_ON, 0 = LED_OFF

0 // Value

);



// transmit

status = m_Lower.SubmitUrb(pUrb, NULL, NULL, 5000L);

}

__finally

{

// TODO: Assuming that the request was handled here. Set I.Information

// to indicate how much data to copy back to the user.

I.Information() = 0;

I.Status() = status;

}



return status;

}

q个函数是控制LED灯的Q它是通过USB Vendor Request来向讑֤传送的。其中,request=1的时候表CLED亮,request=0的时候让LED灭。它是通过DeviceIoControl׃层应用程序传下来?br />


再看看读写部分,l过查NTSTATUS TESTDevice::Read(KIrp I)和NTSTATUS TESTDevice::Write(KIrp I)可以发现QDW已经l我们写好了d的代码,我们可以直接使用了。这些代码就是在上面的第8和第9步中产生的代码?br />


最后,修改~译一下DriverStudio产生的测试程序Test_TESTE序Q我们就可以通过命o行来试我们的驱动程序了。对于LED的控Ӟ我们可以直观的在讑֤上看刎ͼ但对于读写的操作需要和firmwareE序配合Q这已经出了本文的范围Q不在这里讨Z?br />


通过上面的讲解,我们可以看到有了DriverStudioQ就可以快速的产生一个驱动程序,然后在里面作一些小的改动就可以使用了。即使是写一个比较复杂的USB驱动E序Q我们也可以不用一些系l的IRP处理Q只要专注于我们自己的特定应用就可以了。而且它把一个驱动程序概括成几个cȝ概念Qƈ且DWq附带有一些很有用的STLc,在VC IDE里面有了一个很清晰直观的表C。这P对一些从上层应用转向驱动E序的开发h员,或者一些对C++/OOP很熟悉但不太了解pȝ内核的开发h员,都比较容易上手。即使对于推崇直接用DDK~程的h来说Q通过阅读DriverStudio附带的源代码Q也可以寚w动程序的开发有一个更加深入的了解?br /> 

]]>
DriverStudio工具包介l?/title><link>http://www.shnenglu.com/mydriverc/articles/35184.html</link><dc:creator>旅?/dc:creator><author>旅?/author><pubDate>Thu, 25 Oct 2007 16:37:00 GMT</pubDate><guid>http://www.shnenglu.com/mydriverc/articles/35184.html</guid><wfw:comment>http://www.shnenglu.com/mydriverc/comments/35184.html</wfw:comment><comments>http://www.shnenglu.com/mydriverc/articles/35184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mydriverc/comments/commentRss/35184.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mydriverc/services/trackbacks/35184.html</trackback:ping><description><![CDATA[ <table class="jjt" id="19648" cellspacing="0" cellpadding="0" width="950" align="center" border="0"> <tbody> <tr> <td class="bk1" id="19648" valign="top"> <table id="19648" cellspacing="0" cellpadding="0" width="96%" align="center" border="0"> <tbody> <tr> <td style="PADDING-TOP: 5px"> DriverStudio 是一套用来简化微软Windows q_下设备驱动程序的开发,调试和测试的工具包?br />DriverStudio 当前的版本包括下列工h块:<br />DriverAgent<br />    DriverAgent 为Win32 应用E序提供直接讉Kg的功能。即使你没有M讑֤驱动E序开发的l验或经历,你也能编写出DriverAgent应用E序来直接访问硬件设备。DriverAgent 应用E序可以q行?Windows 98, Windows 95, Windows NT ?Windows 2000q_上?当前版本不支持Windows XPq_?<br />VToolsD<br />    VToolsD 是一个用来开发针对Win9X (Windows 95 ?Windows 98)操作pȝ下设备驱动程?VxD)的工兗VToolsD 中包括生成驱动程序源代码的工Prun-time ?interface 库,以及一些驱动程序样本,可以用来作ؓ各种cd的设备驱动程序的基础部分?br />DriverWorks<br />    DriverWorks对于Windows NT下和 Windows 98 ?Windows 2000共同支持的Win32驱动模型(WDM)讑֤驱动E序的开发提供完全的支持。DriverWorks中包含一个非常完善的源代码生成工?DriverWizard) 以及相应的类库和驱动E序hQ它提供了在C++下进行设备驱动程序开发的支持?<br />DriverNetworks<br />    DriverNetworks 是针对Windows<a class="channel_keylink" ><font face="宋体" color="#0810b7">|络</font></a>驱动开发h员的一个模块。在它的核心部分QDriverNetworks 是一个针对NDIS drivers ?TDI clients (DriverSockets)?C++ 的类库。DriverNetworks 中也有Quick Miniport Wizard 用来直接开始一个NDIS Miniport ?Intermediate Driver 工程。它可以让你快速的生成所有采用DriverNetworks C++ cd~写的NDIS驱动E序的编译,安装和调试所需要的文g <br />SoftICE<br />    SoftICE 是一个功能极其强大的内核模式调试器,它支持在配置一台单独的计算机或两台计算Zq行讑֤驱动E序的调试?br />    BoundsChecker Driver Edition<br />BoundsChecker 驱动E序版采用了NuMega针对应用E序开发的一U创新的错误?a class="channel_keylink" ><font face="宋体" color="#0810b7">技?/font></a>。BoundsChecker 驱动E序版中提供了参数确认和pȝ实施可以用来监视和跟t在不同的设备驱动程序与其它的操作系l的lg之间的所有的交互作用。配|向导提供了对于BoundsChecker 采集到的各种cd的大量信息的_的控制?<br />BoundsChecker 驱动E序版当前支持Windows NT, Windows 2000, Windows Millennium Edition?Windows 98?当前版本不支持Windows XP)<br />DriverWorkbench<br />    DriverWorkbench 可以使你q一步了解系l崩溃时的dump 文g和当时的事g。由于与BoundsChecker Driver Edition集成在一? 在DriverWorkbench 中可以看到在pȝ崩溃前或其登录的时候由BoundsChecker 采集到的<a class="channel_keylink" ><font face="宋体" color="#0810b7">数据</font></a>。这U独特的查看pȝ的方式提供了I前的能力,使得可以通过查看在系l崩溃之前系l实际活动的t迹来发现问题之所在?<br />DriverWorkbench 中也包含?TrueTime Driver Edition. TrueTime Driver Edition 是一个性能分析工具Q可让Windows NT 的设备驱动开发h员发现ƈ修正驱动E序的性能瓉。TrueTime Driver Edition 是用来满_于设备驱动程序和内核模式下代码开发h员的需求。一些额外的功能出现在TrueTime Driver Edition 的下一个版本中?br />DriverWorkbench 当前支持 Windows NT ?Windows 9x. (当前版本不支持Windows XP)<br />FieldAgent<br />    FieldAgent 可让你对q行在客L计算Z的驱动程序进行处理。由FieldAgent攉到的信息可用于追捕到那些可能只发生在特定的配|环境下问题的原因?br />FieldAgent 当前支持 Windows NT ?Windows 9x. (当前版本不支持Windows XP)<br />TrueCoverage Driver Edition<br />    用来保对于所有的代码都已l完全被试的方法是使用代码覆盖率工兗TrueCoverage 可以帮助你检代码中的哪些部分已l被试Q哪些部分还没有被测试。通过在开发过E中量和跟t代码的执行情况和稳定程度,可以节约试旉q提高代码的可靠性。TrueCoverage 能够很轻杄攉驱动E序的覆盖率<a class="channel_keylink" ><font face="宋体" color="#0810b7">数据</font></a>Q在源代码的上下文中查看q些<a class="channel_keylink" ><font face="宋体" color="#0810b7">数据</font></a>Q也可以多ơ会话的l果合ƈ以篏加覆盖率?a class="channel_keylink" ><font face="宋体" color="#0810b7">数据</font></a>?br />TrueCoverage Driver Edition当前支持 Windows NT 4.0 (Service Pack 3 or later) ?Windows 2000. (当前版本不支持Windows XP)<br />在我们推荐你使用DriverWorks ?VToolsD来开发设备驱动程序的同时QDriverStudio 中的工具与Microsoft DDK在一起也能很好的与其配合使用来开发出高质量的驱动E序? <p></p></td> </tr> </tbody> </table> </td> </tr> <tr> <td align="middle" height="40"> </td> </tr> </tbody> </table> <img src ="http://www.shnenglu.com/mydriverc/aggbug/35184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mydriverc/" target="_blank">旅?/a> 2007-10-26 00:37 <a href="http://www.shnenglu.com/mydriverc/articles/35184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是WDM驱动http://www.shnenglu.com/mydriverc/articles/28969.html旅?/dc:creator>旅?/author>Sun, 29 Jul 2007 07:55:00 GMThttp://www.shnenglu.com/mydriverc/articles/28969.htmlhttp://www.shnenglu.com/mydriverc/comments/28969.htmlhttp://www.shnenglu.com/mydriverc/articles/28969.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/28969.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/28969.html
  q试一试的态度在学校的电脑上进入了CSQ有声音Q赶? 退出游戏,q入“讑֤理?#8221;中一看,用的声卡和我的一P都是“Creative PCI 128”。那Z么在我的电脑上就没有声音呢?l常反复的检查我发现Q本机安装的是声卡驱动是支持WDM的,而我在家用的则是完整版的驱动Q不支持 WDMQ,N问题在这儿?

  q不及待地赶回家中,从新安装支持WDM的声卡驱动,安装完成后,怀着忐忑不安的心情进入了CS……哇,有声音了!

  问题p栯决了Q不知道有没有h也遇CcM的问题,如果有的话,那么赶紧安装一个支持WDM的驱动吧Q?

  什么是WDM驱动Q?

WDMQWin32 Driver ModelQ,即Win32驱动E序模型Q是Microsoft力推的全新驱动程序模式,旨在通过提供一U灵zȝ方式来简化驱动程序的开发。在实现Ҏ? 件的支持上,减少q低了所必须开发的驱动E序的数量和复杂性。除了通用的^台服务和扩展外,WDMq实C一个模块化的、分层次的微型驱动程序结构? WDM驱动的主要特Ҏ可以让不支持多音频流的声卡支持多音频,不用音频线直接听音乐CD{?


]]>
VXD,KMD,WDM基本概念http://www.shnenglu.com/mydriverc/articles/28968.html旅?/dc:creator>旅?/author>Sun, 29 Jul 2007 07:50:00 GMThttp://www.shnenglu.com/mydriverc/articles/28968.htmlhttp://www.shnenglu.com/mydriverc/comments/28968.htmlhttp://www.shnenglu.com/mydriverc/articles/28968.html#Feedback0http://www.shnenglu.com/mydriverc/comments/commentRss/28968.htmlhttp://www.shnenglu.com/mydriverc/services/trackbacks/28968.htmlq里要讲的是Vxd,Kernel Mode Driver,和WDM的一些基本问?

什么是VxD?
  VxD?VIRTUAL X DRIVER.?说了也白?其实是虚拟讑֤驱动E序.是系l用于对各种g资源识别,理,l护q作的扩?/span>.VXD和VMM(虚拟机管理器)一起合 ?l持着pȝ的运?VxD模式从WIN3X时代开始了.一直到了WIN98q一直在MS的WINpd操作pȝ中vd作用.VxDq作在INTEL pdCPU保护模式下的RING0.拥有对硬件的最高控制权.

什么是Kernel Mode Driver(KMD)?
  Kernel Mode Driver是NT下提出的理,l护gq作的驱动程序模?该DRIVERq行于NT的KERNEL模式?cM于RING0.但是,一个KMD的运 作环境在不同的时候是Ҏ不同?DRIVER收到讑֤h时的q行环境很可能和讑֤h实际操作的运行环?font color="#cc0000" size="1">Ҏ不同.q也是NT?DRIVER的运作也受到NT的许多限?一不小?DRIVER和NT同归于?来个BSOD(BLUE SCREEN OF DEATH).

什么是WDM?
  WDM乃WIN32 DRIVER MODEL的简?随WIN95 OSR2.1推出,和WIN2000兼容.乃MS力推?全新'的驱动程序模?目前|上WDM的文章很?但是成书不多.基本上由?8对WDM的支? 有限,而WIN2000又没有正式版推出,WDM的实际应用还不多.但是很快,WDM成Z的DRIVER模式.在我看来,WDM只不q是?font color="#cc0000" size="1">PNP的KMD而已.(也许是没领悟到精髓说的话:))
 



   早期的WIN3X,核心是VMM,当时的VMM已经具备了基本的操作pȝ核心的一些特?但是WIN3X的驱动程序模式؜׃?g由VxD驱动,|络和文件系l由实模?/font>驱动E序驱动,多媒体硬件和打印机有RING3 DLL驱动,pȝ服务军_部分被{?font color="#cc0000" size="1">V86模式下由实模式的DOS完成.
   CWIN95很大一部分pȝ服务被{换到了保护模式下.但是,混ؕ的驱动模式没有改?WIN95L方向是易用?而且的确WIN95在用L面上? 些进??5开发组努力开发的时?NT也推Z.q是个号UC2极的OS.当然,我ƈ不相信该pȝ的强壮?如果它的源代码公开的话,很可能就不堪一 ?当然,NT?5q是有可圈点之处?它乃是个真正?2位系l?而且,提供?个应用环?WIN32,VDM,POSIX.WOW,OS/2.q? 5个环境相互独?q且操作pȝ仅对WIN32环境提供接口,WIN32提供其他环境接口,其他环境的API调用最l被转换到WIN32,q入OS核心. 换言?WIN32是屏q?鼠标,键盘的拥有?其他环境如要使用,p向WIN32子系l申?
   现在的WIN98乃是一个大杂种.包含了所?5的驱动程序模?加上了WDM.很难惌.如果有一个硬仉要开N动程?你必首先看一?适合什么模?MINIPORT? NDIS? HID? RING0? RING3? 几乎每个g都对应一U模?
  ::UNDOCUMENTED HINT
    NT 隐藏了一个环?那就是NATIVE环境.q个环境可以说基本上没有在文档里出现q?也没有支?在DDK里仅仅公开了一部分NATIVE API.NATIVE环境在系l启动时其重要.NT的CHKDSKE序是个NATIVE应用E序.在运行该E序?Ҏ没有WIN32环境,更没? WOW, POSIX环境.q时候只有NATIVE API可供调用.而MS在很多情况下是靠NATIVE API来获取更高的应用E序效能.得到不公q的竞争优势.某些NATIVE API甚至可饶q系l的安全查来完成原先不能完成的Q?

  VXD和KMD的最大区别在于VXD不需要考虑多CPU的问?而KMD需要调用自旋锁来同步多CPU之间数据讉K.当然,如果必要的话,通过VXD来增 加对多CPU的支持应该ƈ不困?因ؓVMM提供了很开攄环境:VXD可以拦截VMM的调用入?qg在DOS时代拦截INT21来扩展系l服? 而NT如果要扩展系l的化就很困难了.因ؓq是未公开?(当然,Ҏq是有的.{过一D|间我再写:))
  另外一个重要的区别是VXD可以在CPU处于实模式时p得系l的控制.而KMD不能.{KMD获得W一个启动时?CPU已经处于保护模式,甚至你替换调HAL或NTOSKRNL也无于?因ؓCPU的模式切换是有NTLDRq行?(


到底如何军_该用VXDq是KMDq是WDM?
当然,首先应该考虑的是应用q_.如果是NT4.X,你没得选了,肯定是KMD?如果是WIN95,那也只有VXD一U选择.当目标^台是98或WIN2000,?
供选择的方法多?但是也受到OS规范的限?
98?如果惛_发的是FSD,那么必须用VXD.管98有个WDMFS.SYS的东?但是它ƈ非真正的WDM的文件系l驱动程?98支持的FSD是以
IFSMGR.VXD为基的VXD.
如果xDISK,COMM...{一pd的DRIVER.你也要写VXD.因ؓ98q没有提供该cȝWDM支持.那么98下什么可以用WDM?HID,|络c?多媒体类
的硬件支持已l{化到了WDM.你已l可以从DDK里发现这几类驱动E序的样板程?
在NT2000?我还不是很熟.但是很显?对WDM的支持会更多.老的KMD逐渐退?当然,KMD有他不可灭的优?(在NT?KMD的限制比9X
下的VXD?但是它仍有一些活l余?例如DISK驱动E序可以讉K视频g,或者其他资?但随NT的发?早晚q些zȝ余地也会被取?)WDM
需要将自己注册到相应的c里.有相应的例程必须输出.有些cM于MINIDRIVER.
最l要考虑的是DRIVER作者的习惯.对哪1U模式更熟悉,写作更方?那就用哪?
我个人开?8/95q_更多?所以自己更們֐于VXD:安全限制最?q且,我喜Ƣ汇~?:) ?

 


NTKERN.VXD的一些东?


NTKERN.VXD乃是WIN98提供NTcL务的核心驱动E序.它输Z几个VXD服务.管有头文g,但是却没有文?q里告诉大家一个诀H?很多服务和NT下ZwXXX例程h相同的参?乃是VXD版的ZwXXX.
例如NtKernCreateFile是ZwCreateFile的翻?它也h11个参?
下面是NTKERN.VXD的VXD服务列表.
NTKERN_Service       _NTKERN_Get_Version, LOCAL
NTKERN_StdCall_Service   _NtKernCreateFile, 11, VxD_CODE
NTKERN_StdCall_Service   _NtKernClose, 1, VxD_CODE
NTKERN_StdCall_Service   _NtKernReadFile, 9, VxD_CODE
NTKERN_StdCall_Service   _NtKernWriteFile, 9, VxD_CODE
NTKERN_StdCall_Service   _NtKernDeviceIoControl, 10, VxD_CODE
NTKERN_Service       _NtKernGetWorkerThread, VxD_CODE
NTKERN_StdCall_Service   _NtKernLoadDriver, 1, VxD_CODE
NTKERN_StdCall_Service   _NtKernQueueWorkItem, 2, VxD_CODE
NTKERN_Service       _NtKernPhysicalDeviceObjectToDevNode, VxD_CODE
NTKERN_StdCall_Service   _NtKernSetPhysicalCacheTypeRange, 4, VxD_CODE
NTKERN_Service       _NtKernWin9XLoadDriver, VxD_CODE
NTKERN_StdCall_Service   _NtKernCancelIoFile, 2, VxD_CODE
NTKERN_Service       _NtKernGetVPICDHandleFromInterruptObj, VXD_CODE
NTKERN_StdCall_Service   _NtKernInternalDeviceIoControl, 10, VxD_CODE
? q服务里,部分是未公开?如果大家参悟透了,NT下也有很多东西可q刃而解.我想,文gIO应该没什么问?但是其他东西难搞了.在这?我在|络? 仅看C_NtKernLoadDriver的接?他和ZwLoadDriverh相同的参?用来从VXD加蝲KMD.(ZwLoadDriver 本n又是个未公开的函?具体接口如下:
NTSTATUS __stdcall ZwLoadDriver( PUNICODE_STRING ServiceKeyPath ).

 




]]>
޾þһ| þ¶ݺɫ| þþƷ99Ʒ| 99Ʒþþþþþó| վþþ| ޹˾þۺ| AVպAVþ| 99ھƷþþþþþ| ŷƷרþ| þˮav뾫Ʒ鶹| Ʒþþþþù| Ըߺþþþþþþ| þþƷ| þˬˬƬAV| þþþĻɫ| ޵һƷƷþ| ޹Ʒһþ | þþþۺϹŷһ| ƷëٸAVѾþ| ˾þþƷ| ڸþþþþ| ҹƷþþþþ| þþƷӰԺ| ҹþӰԺ| ˾ھƷþþþ| AVþ| һɫۺϾþ| þþþúǿ׊| ĻѾþ| þþƷƵ| þ777߿ۿƷ| þþþ޾Ʒ| þþ뾫Ʒպý | ƷþþþþӰԺ| Ʒ99þѹۿ| þþþAV鶹| ɫվ޷ľþò| ѾƷþþþþĻ | þݺҹҹ | AAƬѿƵþ| þҹɫtvվ|