阅读:1821回复:6
NDIS框架一问
读了一段时间的NDIS,现在发现其实很多问题我还没弄清楚,如下一些问题我倍感模糊,烦请各位给我释疑一下,谢谢了!
1. 小端口驱动是否是物理网卡的驱动?是否和网卡类型、总线类型?DMA等相关?是否和端口号等物理特性相关?虚拟网卡和小端口驱动是同一个意思吗? 2. 网卡接收到数据是如何传给小端口驱动的?小端口接收到的数据是如何传给协议驱动或中间层驱动的(是通过indicate函数吗)? 3. 协议驱动在NDIS中所处的位置如何?是和TCPIP.SYS、NETBEUI.SYS等协议对等还是在它们下面?如果对等的话,协议驱动是否必须要有相应的应用才能接收到用户数据?使用协议驱动的方式可以收到其它所有协议类型的数据吗?如何接收? 4. 协议驱动接收到的数据如何发送给上层应用(通过什么方式或函数)?协议驱动如何接收上层发送下来的发送数据(通过什么方式或函数)?如何发送出去? |
|
沙发#
发布于:2003-08-11 22:57
各位讨论讨论呀!
|
|
板凳#
发布于:2003-08-13 13:23
1。Miniport驱动同硬件无关,你可以写一个实际物理网卡的驱动,你也可以写一个根本没有任何硬件的驱动
2。Miniport如何取得硬件提交的数据同硬件有关,主要有PIO和DMA两种方法 3。协议驱动同TCPIP.sys等是对等的,一般来说协议可以收到底层Miniport提交的所有数据,但有些包是可以指定Filter的,如组播包,若想接收组播包则必须向Miniport设置Filter. 4。协议驱动同应用程序交互一般通过WriteFile(ReadFile)或DeviceIoControl进行 |
|
地板#
发布于:2003-08-15 10:05
我现在也要用一个网卡的驱动程序,很是苦恼。我做的是无线网卡的应用,网卡和网卡驱动都是现成的,但是没有驱动的源码,应用程序如何跟驱动程序接口的呢?
我用pc机的网卡做试验,却发现readfile,writefile都无法对网卡操作,出错原因是网卡不支持这样的操作,那这种情况应用程序怎么跟网卡驱动通信呢? 头疼呀,望大侠指教! |
|
地下室#
发布于:2003-08-15 16:40
对网卡操作就是要与网卡的firmware打交道了。
一般用与网卡提供的DeviceIoControl函数了,其中操作的参数还是比较通用的如OID_802_11_***。 |
|
5楼#
发布于:2003-08-20 00:10
1. 小端口驱动是否是物理网卡的驱动?是否和网卡类型、总线类型?DMA等相关?是否和端口号等物理特性相关?虚拟网卡和小端口驱动是同一个意思吗?
一般而言,端口驱动适于硬件相关的,比方说,究竟对硬件的那些寄存器进行那些操作,才能真正传输数据。当然,他必须对上面提供特定接口,以便其它程序利用你的端口驱动传输数据。你也可以实现一个端口驱动程序,他并不操作硬件,而是通过其他方法传输数据,这样,就可以看成一块虚拟网卡了。 2. 网卡接收到数据是如何传给小端口驱动的?小端口接收到的数据是如何传给协议驱动或中间层驱动的(是通过indicate函数吗)? 对 3. 协议驱动在NDIS中所处的位置如何?是和TCPIP.SYS、NETBEUI.SYS等协议对等还是在它们下面?如果对等的话,协议驱动是否必须要有相应的应用才能接收到用户数据?使用协议驱动的方式可以收到其它所有协议类型的数据吗?如何接收? tcpip.sys 等等都是协议驱成。端口驱程受到数据后通知所有绑定了的协议驱程,有这些驱程自己决定是否需要该数据。所以,要接受数据,写一个协议驱程就可以了。 4. 协议驱动接收到的数据如何发送给上层应用(通过什么方式或函数)?协议驱动如何接收上层发送下来的发送数据(通过什么方式或函数)?如何发送出去? 协议驱程可以通过任何自定一的方法与应用曾通信,当然可以传输数据,可以用writefile,readfile,如果你认为这不能实现你的功能,你可以自定义一个ioctrl,通过DeviceIoControl来进行 |
|
|
6楼#
发布于:2003-08-20 00:12
to floatyang :网卡驱程有了,还要干什么,写一个协议驱程不久可以接受数据了吗,后者绑定tcpip,这样,可以进行tcpip通行了
|
|
|