billx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1955回复:13

这个问题可能有点难,但有分

楼主#
更多 发布于:2002-08-01 11:34
外设是一个通信设备,通过USB口与PC连接。现在需要开发针对这个外设的网卡驱动,不知道DDK中有什么例子可以作为参考。

用DS生成了一个driver, 能够作为网卡安装上并设置IP地址,而且ping自己能够通,但ping不通其他设备,不知道是什么原因。

另外,DS中的例子不太好看懂,想用参考DDK下的例子重新开发一个Driver.

请各位高手指点!谢过了先。

billx@163.com

最新喜欢:

zhaihuazhaihu...
zhaihua
驱动中牛
驱动中牛
  • 注册日期2003-10-11
  • 最后登录2007-07-24
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-20 13:00
还是对NdisMGetDeviceProperty函数的使用不清楚!
status = NdisMRegisterMiniport(g_NdisWrapperHandle, &UsbNdisMiniportCharacteristics, sizeof(UsbNdisMiniportCharacteristics));//这里UsbNdisMiniportCharacteristics是不是指向WDM驱动?
if(status == NDIS_STATUS_SUCCESS)
{
InstanceNumber = 0;
g_DriverObject = DriverObject;//这里是什么意思?
UsbNdis_HookAddDevice(DriverObject);//这里是什么意思?
status = NDIS_STATUS_SUCCESS;
}//
else
{
NdisTerminateWrapper(g_NdisWrapperHandle, NULL);
status = NDIS_STATUS_FAILURE;
}
return status;

}
谁能解释一下这段程序啊?谢谢
没钱的日子真难过! 大哥,拉兄弟一把.
jeffgemi
驱动牛犊
驱动牛犊
  • 注册日期2004-04-07
  • 最后登录2004-04-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-07 15:37
很高兴看到这些帖子,我新来的,最近也碰到类似的问题
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-05 16:09
-------Re-------
----------------------------------------------------------
......
这就是人们平时说的usb网卡,他的DriverEntry与一般NIC driver无二。在对其操作时转换
为对usb的操作。其设备对象(DeviceObject)通过NdisMGetDeviceProperty()获得。详细
讲来很麻烦。
.....
----------------------------------------------------------
    

Hi,dazzy!  您好!

非常高兴,看到了您的回帖。我知道您一定是在这方面有丰富经验的高手,所以非常盼望能得到您的指点和帮助!

我已经详细阅读了DDK中的开发文档,对这个项目整体上已有所了解。但苦于没有这方面值得参考的例子,所以我现在非常希望能得到这方面的参考源代码(DriverStudio中的实在是很难理出头绪 )。不知道是否方便请您提供参考源代码?或请您告诉我在什么地方能找到参考源
代码?

非常非常急切的盼望着......

先谢过了!

billx, 一个焦头烂额中的驱动开发网网友。


 


1. 我用ddk开发的。
2. 由于某些原因,我的源代码不便参考。
3. 我也找不到其他可以参考的源代码。
4. 有问题的话来email. 我会给你点一点步。
billx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-05 10:25
-------Re-------
----------------------------------------------------------
......
这就是人们平时说的usb网卡,他的DriverEntry与一般NIC driver无二。在对其操作时转换
为对usb的操作。其设备对象(DeviceObject)通过NdisMGetDeviceProperty()获得。详细
讲来很麻烦。
.....
----------------------------------------------------------
    

Hi,dazzy!  您好!

非常高兴,看到了您的回帖。我知道您一定是在这方面有丰富经验的高手,所以非常盼望能得到您的指点和帮助!

我已经详细阅读了DDK中的开发文档,对这个项目整体上已有所了解。但苦于没有这方面值得参考的例子,所以我现在非常希望能得到这方面的参考源代码(DriverStudio中的实在是很难理出头绪 )。不知道是否方便请您提供参考源代码?或请您告诉我在什么地方能找到参考源
代码?

非常非常急切的盼望着......

先谢过了!

billx, 一个焦头烂额中的驱动开发网网友。


fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
5楼#
发布于:2002-08-02 10:00
我想你无非是注册一个网卡驱动程序,然后将所有发往这个包的数据通过USB发出去,所有进来的数据从USB读出,那么问题就变成:只要你能从USB读写数据不就解决了吗?
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-01 23:05
-----------------------------------------------------
是不是你也要做usb驱动,然后再做虚拟网卡,然后虚拟网卡与usb驱动进行交互,让用户看到的是网卡,其实操作的是usb,对否?

------------------------------------------------------

是想让用户看到的是网卡,其实操作的是usb。不过好像不用单独开发
USB驱动,而是在虚拟网卡驱动中直接读写USB总线就可以了。

难道没有人能指点一下吗?


这就是人们平时说的usb网卡,他的DriverEntry与一般NIC driver无二。在对其操作时转换为对usb的操作。其设备对象(DeviceObject)通过NdisMGetDeviceProperty()获得。详细讲来很麻烦。

NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING pRegistryPath
)
{
NDIS_STATUS status = NDIS_STATUS_SUCCESS;
NDIS_MINIPORT_CHARACTERISTICS UsbNdisMiniportCharacteristics;

NdisMInitializeWrapper(&g_NdisWrapperHandle, DriverObject, pRegistryPath, NULL);
if(g_NdisWrapperHandle == NULL)
{
return NDIS_STATUS_FAILURE;
}

NdisZeroMemory(&UsbNdisMiniportCharacteristics, sizeof(UsbNdisMiniportCharacteristics));

UsbNdisMiniportCharacteristics.MajorNdisVersion = 5;
UsbNdisMiniportCharacteristics.MinorNdisVersion = 0;
UsbNdisMiniportCharacteristics.CheckForHangHandler = NULL;
UsbNdisMiniportCharacteristics.DisableInterruptHandler = NULL;
UsbNdisMiniportCharacteristics.EnableInterruptHandler = NULL;
UsbNdisMiniportCharacteristics.HaltHandler = UsbNdis_MiniportHalt;
UsbNdisMiniportCharacteristics.HandleInterruptHandler = NULL;
UsbNdisMiniportCharacteristics.ISRHandler = NULL;
UsbNdisMiniportCharacteristics.QueryInformationHandler = UsbNdis_MiniportQueryInformation;
UsbNdisMiniportCharacteristics.ReconfigureHandler = NULL;
UsbNdisMiniportCharacteristics.ResetHandler = UsbNdis_MiniportReset;
UsbNdisMiniportCharacteristics.InitializeHandler = UsbNdis_MiniportInitilize;
UsbNdisMiniportCharacteristics.SetInformationHandler = UsbNdis_MiniportSetInformation;
UsbNdisMiniportCharacteristics.SendHandler = NULL;
UsbNdisMiniportCharacteristics.SendPacketsHandler = UsbNdis_MiniportSendPackets;
UsbNdisMiniportCharacteristics.ReturnPacketHandler = UsbNdis_MiniportReturnPacket;
UsbNdisMiniportCharacteristics.AllocateCompleteHandler = NULL;

status = NdisMRegisterMiniport(g_NdisWrapperHandle, &UsbNdisMiniportCharacteristics, sizeof(UsbNdisMiniportCharacteristics));
if(status == NDIS_STATUS_SUCCESS)
{
InstanceNumber = 0;
g_DriverObject = DriverObject;
UsbNdis_HookAddDevice(DriverObject);
status = NDIS_STATUS_SUCCESS;
}
else
{
NdisTerminateWrapper(g_NdisWrapperHandle, NULL);
status = NDIS_STATUS_FAILURE;
}
return status;

}
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-01 18:41
俺对usb的读写没有经验的喽。 :)
按第一贴的“给分”键,给分。
billx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-01 17:57
-----------------------------------------------------
是不是你也要做usb驱动,然后再做虚拟网卡,然后虚拟网卡与usb驱动进行交互,让用户看到的是网卡,其实操作的是usb,对否?

------------------------------------------------------

是想让用户看到的是网卡,其实操作的是usb。不过好像不用单独开发
USB驱动,而是在虚拟网卡驱动中直接读写USB总线就可以了。

难道没有人能指点一下吗?
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-08-01 14:27
是不是你也要做usb驱动,然后再做虚拟网卡,然后虚拟网卡与usb驱动进行交互,让用户看到的是网卡,其实操作的是usb,对否?
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-08-01 14:18
我没有用过ds,ddk地下还有几个网卡的驱动源码,不知能用不能?
:\\NTDDK\\src\\network\\ndis\\ne2000
:\\NTDDK\\src\\network\\ndis\\e100bex
按第一贴的“给分”键,给分。
billx
驱动牛犊
驱动牛犊
  • 注册日期2002-03-13
  • 最后登录2011-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-08-01 13:41
不是USB驱动,而应该是NDIS网络驱动中的一种。是想安装这个驱动后,要PC认为该带有USB口的外设是一个网卡。
应该是DDK文档中提到的miniport-WDM性质的网络驱动程序吧,底层接口是USB总线。但好像DDK中并没有提供类似的例子。用DS的drivernetworks生成了一个,唉,又出问题,所以想用DDK直接来作。

请诸高手继续出招!
moqingsong
论坛版主
论坛版主
  • 注册日期2002-04-07
  • 最后登录2011-02-03
  • 粉丝0
  • 关注0
  • 积分74分
  • 威望71点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-08-01 13:03
是usb口外边加一个网卡楼?
ddk底下有一个usb驱动的例子,不用改,编译一下,就能工作。再往里边加你的网卡的通信程序行不行?
按第一贴的“给分”键,给分。
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-08-01 12:22
那是不是要开发专门的usb驱动吧!

游客

返回顶部