LogicaDisk.Devi-ceId“C”。
3应用于网络驱动
程序的WMI模型一旦操作
系统提供了WMI服务它就建立了标准的CIM对象管理器、CIM存储库以及适用于各种软硬件的WMI提供程序。
因此驱动开发者所要做的就是使网络驱动程序能够提供CIM数据块给WMI而对于
网络管理员则是根据需要选择合适的工具从WMI中获得网络驱动程序的CIM对象。
3.1开发网络驱动程序的WMIWMI提供程序位于用户层它只有通过内核模式的WMI组件WDM/WMI才能获得驱动程序的数据。
WDM/WMI是WMI提供程序与驱动程序的接口它使用主功能
代码为IRP_MJ_SYSTEM_CONTROL的IRP输入输出请求包向驱动程序传递WMI请求。
然而典型的网络驱动程序大多被NDIS所封装并不处理IRP所以首先应该调用NDIS库函数NdisMRegisterDevice创建一个独立的设备对象作为面向WDM驱动程序的接口之后应用程序可以向这个对象发送IRP。
其次需要将提供给WMI的网络数据以CIM类的形式封装。
并将这些类定义在MOF文件中。
例如可以定义如下的WMI块cassNetInfo…WmiDataId1readWriteDesciptionNetCardModebooeanIsPromiscuousWmiDataId2readDesciptionPacketmountInMinuteuint32Packetmount在NetInfo这个数据块中作者自己定义了两个属性可读可写的IsPro
miscuous和只读的Packetmount它们分别表示网卡当前的工作模式是否为混杂模式和驱动程序在一分钟内收到的数据包的数量。
最后使用函数WmiSystemContro向WMI库注册驱动程序提供的WMI数据块以及处理WMI请求的例程。
WMI库简化了网络驱动程序处理WMI请求的过程当网络驱动接收到主功能
代码为IRP_MJ_SYSTEM_CONTROL的IRP时会将其交给WMI库以进一步判断这个IRP的次功能
代码是否为属于WMI请求。
如果是WMI库会自动调用网络驱动已
注册的相应处理例程完成这一请求。
另外为了提高驱动程序的
工作效率可以考虑开辟另外的线程处理WMI请求。
图2显示了网络驱动程序处理WMI请求的过程。
在这一过程中网络驱动不但要与WDM/WMI交互同时还要访问其它驱动程序。
图2网络驱动程序处理WMI数据的机制当用户查询Packetmount项时WDM/WMI向网络驱动发送IRP查询因为Packetmount是网络驱动程序对所截获的网络数据包统计得来的因此它直接将该数据封装到IRP中提交给WDM/WMI但是如果WDM/WMI
查询IsPromis-cuous项网络驱动程序必须将IRP映射为NDIS_REUEST包并将该包通过函数NdisReuest向管理网卡的NDIS小端口驱动程序发出查询请求待收到回答NDIS_REUEST包后将其映射为IRP交给WDM/WMI。
3.2使用WMI脚本管理网络驱动程序可以通过几种方法访问WMI1092004.10
计算机工程与应用骨料浓度胶结剂细粒级温度C效率因子遗传算法02750620200.81混合遗传算法02760720200.88上接41页4.3运行结果该系统投入运行后效果良好。
对于过去难以解决的充填材料质量优化问题在使用该系统后取得了较为满意的结果。
为了将遗传算法与混合遗传算法对充填材料质量优化的结果进行比较将两种方法的最终优化结果列入表1中。
表1两种方法优化的结果注效率因子由优化结果和程序运行时间分别乘以相应权值而得。
5结束语通过实验进一步证明了用混合遗传算法进行工程优化其性能、效率均高于用遗传算法的方法克服了遗传算法的局部搜索能力差的不足显著地提高了优化质量。
当然也可以将梯度法、爬山法、贪婪法和小生境法引入遗传算法以提高遗传算法的
搜索能力和质量。
这些方法各有千秋应根据具体的工程
问题来确定用哪种方法。
有关混合遗传算法的理论研究还在不断地深入和完善其在工程中的应用也在不断的探索之中。
但可以相信随着理论研究的深入和发展混合遗传算法必将在智能计算和工程优化中发挥更大的作用。
收稿日期2003年8月参考文献1.kirpatricsGelattDVecchiMP.OptimizationbysimulatedAnnealingJ.science2.MahfoudsWGoldbergDE.AGeneticAlgorithmforParallelsim-ulatedAnnealing.InParallelProblemsolvingfromNature2Northolland.周明孙树栋.遗传算法原理及应用M.北京国防工业出版社1996-0678894.崔明义孙恒虎.基于MATLAB的胶结充填材料线性回归研究J.矿冶工程200222311125.崔明义孙恒虎.用V6.0实现胶结充填材料质量控制J.有色金属矿山部分200254215166.UIMingyiUua.ealizingofOptimizationofBinderBacfillMaterialunderertainstrengthwithFuzzysetJ.JournalofUniver-ityofMiningTechnology20011121471497.崔明义孙恒虎.模糊集合在等强度胶结充填材料优化中的应用J.有色金属200254397988.崔明义.计算智能M.成都电子科技大学出版社2003-051基于OM/DOM的程序
设计语言比如或通过OMAPI与IM对象管理器通信。
2基于OM/DOM的脚本语言比如VBscript、Jcript或
VBA通过脚本API与IM对象管理器
通信。
3带ActiveX控制的IE。
ActiveX控制是可以通过本地API与WMI通信的OM对象。
比如WMIIMstudio、WMI对象浏览器和WMI事件注册器。
对于管理网络驱动程序的用户来说他的工作包括监视网络状态收集网络数据远程管理网络设备以及对数据进行简单处理等等。
WMI脚本可以较好地满足以上要求同时相对于/等设计语言脚本更容易编写且可以内嵌于网页便于通过网络浏览。
下面通过一个例子来简单介绍使用VBscipt访问WMI的方法。
我们想了解P01计算机是否安装了支持WMI的网络驱动程序假设事先已知道该驱动提供NetInfo类的数据块。
如果安装就显示当前的网络流量并将网卡设置成混杂工作模式。
其具体步骤如下1使用WMIscriptingAPI的WbemscriptingWMI脚本类型库类来例示swbemLocator对象。
这是通过将VBscript函数reateObject应用于Wbemscripting.swbemLocatorProgID来完成的setObjLocatorreateObjectWbemscripting.swbemLocatorWbemscripting用于提供对各种WMI脚本API接口的访问。
2创建swbemLocator对象后使用函数onnectserver来连接swbemservice对象本例的对象代表了P01计算机上rootwmi名字空间。
setObjserviceObjLocator.onnectserverP01rootwmionnectserver有几个可选参数包括目标服务器名、目标计算机上要连接的名字空间、连接用户名、连接密码等等这里使用最简单的形式。
3利用rootwmi名字空间对象得到NetInfo类的全部实例。
setObjIntanceObjservice.IntanceOfNetInfoForEachObjIntanceInObjIntanceWscript.EchoObjIntance.IntanceNameForEachObjPropertyInObjIntance.Propertie_Wscript.EchoObjProperty.Namehr9ObjProperty.ValueNextObjIntance.IPromicuoutrueObjIntance.Put_Next使用循环语句浏览NetInfo类的各实例及其属性并使用函数ObjIntance.Put_将网卡设置成混杂模式。
如果存在该类的实例说明P01确实安装了提供此数据块的网络驱动。
如果安装了多块网卡还可能有多个实例。
由这个例子可以看到借助于WMI提供的脚本API只需编写极少的
代码即可实现远程管理网络驱动的功能。
对于其它名字空间的WMI管理对象也可使用类似的脚本
代码进行访问。
4总结网络驱动程序在越来越多的系统中得到使用。
如何以统一、规范的方式管理网络驱动是驱动开发者和系统管理者都非常关心的问题。
论文从这两个角度出发讨论了网络驱动程序支持WMI的机制以及WMI用户访问网络驱动的方法。
随着WMI功能日益增强使用WMI管理网络驱动程序的优势将更加明显。
收稿日期2003年6月参考文献1.MarcinPolicht.WMI技术指南M.北京机械工业出版社200228332.hriant.WindowWDM设备驱动程序指南M.北京机械工业出版社20002032083.WalterOney.ProgrammingtheMicrooftWindowDriverModeM/D.WAMicrooftPre19994.Microoft.DDkDocumentationM/D.WAMicrooftPre2000110