欢迎来到天天文库
浏览记录
ID:33708417
大小:66.42 KB
页数:51页
时间:2019-02-28
《ndis中间层驱动开发在win7系统下和winxp系统下的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、标题:【原创】NDIS中间层驱动开发在Win7系统下和WindowsXP系统下的区别作者:tianhz时间:2011-07-21,14:58:04链接:http://bbs.pediy.com/showthread.php?t=137545NDIS中间层驱动的开发在Win7系统上和WindowsXP系统上冇差别。我把NDIS中间层的讨论分成2块。windows7系统和WindowsXP系统。(一)在WindowsXP系统上进行开发平时很多朋友包括我在内,我们都在XP系统上使用NDIS5.1的框架來进行程序开发。我们都使用MicrosoftWDK提供
2、的NDIS的Passthru例子,在这个例子上做进一步的修改,来达到我们的目地。在PassthruI程的DriverEntry函数里而,我们都看见如下的代码:NTSTATUSDriverEntry(INPDRIVER_OBJECTDriverobject,INPUNICODE_STRINGRegistryPath){NDIS_STATUSStatus;NDISPROTOCOLCHARACTERISTICSPChars;NDISMINIPORTCHARACTERISTICSMChars;PNDIS_CONFIGURATION_PARAMETERPar
3、am;NDIS_STRINGName;NDIS_HANDLEWrapperHandle;UNICODE_STRINGnameString,linkString;UINTFunclndex;PDEVICE_OBJECTMyDeviceObject;PDRIVER_DISPATCHMajorFunction[IRP_MJJ/lAXIMUIVI_FUNCTION+1];Status=NDISSTATUSSUCCESS;〃申请自旋锁以到达资源共•亨的同步访问NdisAllocateSpinLock(&GlobalLock);〃调用NdisMInitial
4、izeWrapper函数來保存在NdisWrapperHandle返回的句柄NdisMlnitializeWrapper(&NdisWrapperHandle,Driverobject,RegistryPath,NULL);do{〃调用NdisMInitializeWrapper函数來保存在WrapperHandle返回的句柄NdisMInitializeWrapperf&WrapperHandle,Driverobject,RegistryPath,NULL);〃对MiniportCharacteristics组件'如果驱动程序不用导出Minip
5、ortXxx这样的函数,则必须赋值为NULL。〃如果要导出任何新版木的V4.0或V5.0的MiniportXxx函数,那么中间层驱动程序的丄版本必须是V4.0,并且提供4.0或5.0版木的Miniportcharacteristics组件.NdisZeroMemory(&MCharszsizeof(NDIS_MINIPORT_CHARACTERISTICS));MChars.MajorNdisVersion=PASSTHRU_MAJOR_NDIS_VERSION;MChars.MinorNdisVersion二PASSTHRU_MINOR_NDIS
6、_VERSION;****水水*亦亦亦未*********************亦亦亦未末*************卜•而开始注册中间层驱动程序的MiniportXxx函数**************************************************MChars.HaltHandler=MPHalt;MChars.lnitializeHandler=MPInitialize;MChars.QuerylnformationHandler=MPQuerylnformation;MChars.SetlnformationHandl
7、er=MPSetlnformation;MChars.ResetHandler=MPReset;MChars.SendHandler=NULL;MChars.SendPacketsHandler=MPSendPackets;MChars.TransferDataHandler=MPTransferData;MChars.ReturnPacketHandler=MPReturnPacket;MChars.CheckForHangHandler=NULL;#ifdefNDIS51_MINIPORTMChars.CancelSendPacketsHand
8、ler=MPCancelSendPackets;MChars.PnPEventNotifyHandler=MPDevice
此文档下载收益归作者所有