阅读:2825回复:6
NdisMRegisterDevice 驱动与应用的通信流程问题
各位大侠:
在前面的帖子里看到在PASSTHRU里不能用IOCREATEDEVICE来建立设备, 而且查DDK帮助文档也是这么说的。 所以我用NdisMRegisterDevice建立设备,但发现在应用中无法它, 我的调用方法如下: Status = NdisMRegisterDevice( WrapperHandle, // &win32DeviceName,//\"\\\\Device\\\\Packet\" &ntDeviceName, //\"\\\\DosDevices\\\\Packet\" DriverObject->MajorFunction, &deviceObject, &NdisDeviceHandle ); DriverObject->MajorFunction[IRP_MJ_CREATE] = PacketOpen; DriverObject->MajorFunction[IRP_MJ_CLOSE] = PacketClose; DriverObject->MajorFunction[IRP_MJ_READ] = PacketRead; DriverObject->MajorFunction[IRP_MJ_WRITE] = PacketWrite; DriverObject->MajorFunction[IRP_MJ_CLEANUP] = PacketCleanup; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = PacketIoControl; DriverObject->DriverUnload = NULL; // 打开设备用的方法如下: hFile=CreateFile(TEXT(\"\\\\\\\\.\\\\Packet\"), /// Open device GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0 ); 这是为什么?请高手们解救 |
|
最新喜欢:txysp
|
沙发#
发布于:2002-11-06 13:23
CreateFile 出错码是多少?
用SoftICE跟踪一下你的PacketOpen是否返回了成功? |
|
板凳#
发布于:2002-11-06 16:00
各位大侠: MINIPORT Driver DriverObject 里的MajorFunc表是不能改的。 |
|
|
地板#
发布于:2002-11-07 15:45
MINIPORT Driver 如果是这样,那么NdisMRegisterDevice中的第四个参数放什么? 我曾经自己建立了一个MajorFunc数组,来存放dispatch函数, 结果是一样的,? CreateFile 出错码是多少? CreateFile 出错码是:hFile=0xFFFFFFFF,GetLastError = 2, 帮助分析一下, 另外,在2000下我安装的SoftICE不是很好用,能给我推荐一个好的版本吗? |
|
|
地下室#
发布于:2002-11-08 09:47
两位斑竹,救命啊!
是否有这方面的简单代码示例,参考以下也好! 郁闷!!!!迷茫!!!!!! |
|
|
5楼#
发布于:2002-11-08 12:30
现在我发现是NdisMRegisterDevice这个函数没有成功执行, 现在有一个问题希望得到大侠的指点, DriverEntry中传入的DriverObject已经和NDIS驱动连接起来了, 新建的虚拟设备与哪个DriverObject连接呐? 如果是同一个的话,就存在gjpland斑竹所说的问题MajorFunction会乱掉, 在这里,我不是很清楚,请高人指点 谢谢!!! |
|
|
6楼#
发布于:2002-11-08 13:50
你的MajorFunction表应该在NdisMRegisterDevice()调用之前建立。
你可以参照xppassthru: MajorFunc表用PtDispatch()代替了,xppassthru在PtDispatch()处理来自应用层命令。 可以修改原始的xppassthru,在IRP_MJ_CREATE加入调试语句,察看应用层CreateFile()的响应。 [编辑 - 11/8/02 by kaput] |
|
|