问题标签 [ndis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
619 浏览

ndis - 在过滤器驱动程序中调用 FilterAttach

我创建了 NDIS 网络过滤器驱动程序,但是当我安装它时,我看到“FilterAttach”调用 4 次。
为什么“FilterAttach”在我的过滤器驱动程序中调用 4 次?

0 投票
1 回答
712 浏览

c++ - 如何使用 NDIS 切换到监控模式?

我正在编写一个程序(C++),它将在 Windows 操作系统上使用 Wi-fi 检测我周围的设备。
为了做到这一点,我使用了 Netmon API,我需要将无线网络适配器切换到监控模式。
我读到 Netmon 没有为此提供 API,因此我需要使用 WDK 和 NDIS 来完成。

有谁知道如何切换到监控模式?我将不胜感激代码示例。

谢谢。

0 投票
1 回答
185 浏览

driver - 802.11 的物理层管理实体服务

我正在尝试为 802.11 实现 ExtSTA 操作模式。任何机构都可以告诉我 802.11 的 PLME(物理层管理实体)服务以及我们如何实现这些..

0 投票
1 回答
174 浏览

sockets - 当 802.11 微型端口驱动程序在 NetMon 模式下传输原始数据包

根据 msdn 文档,在 NetMon 模式下,微型端口驱动程序只能根据过滤器设置接收数据包。微型端口驱动程序无法发送数据包。

但是我需要在 NetMon 模式下的微型端口驱动程序中传输原始数据包。任何人都可以建议,我如何从微型端口驱动程序发送原始数据包?

0 投票
1 回答
1091 浏览

c++ - OID_802_11_BSSID_LIST 的 DeviceIoControl 错误 87

我正在尝试从网络 GUID 获取可用的访问点,但我总是收到 DeviceIoControl() 的错误 87(错误参数)。这让我疯狂了一段时间,因为我不知道哪个参数是错误的!我已经搜索了几个小时,但找不到解决方案。代码如下:

我正在尝试使用 wsGuid = L"\\.\{8D36491D-C393-4D71-B10A-153C4FA69AEE}" 获取此列表,这是一个 Broadcom 802.11n 网络适配器。

编辑:我在 Win7 工作中尝试它。我知道它已被弃用(因此我还使用 WlanGetNetworkBssList() 为更高版本添加了可移植性,并且运行良好)。我在调试旧版本时遇到错误(在同一个 win7 工作站中),问题可能是:如果代码正确,NDIS IOCTL 是否仍在 Win7 及更高版本中工作?

0 投票
1 回答
1060 浏览

windows - 以编程方式安装过滤器驱动程序?

我正在尝试编写 C++ 代码以编程方式安装 NDIS 6.0 轻量级过滤器驱动程序。在查看了 WinDDK、在线示例和 MSDN 文档后,我最终得到了下面的代码示例。

使用 INetCfgClassSetup::Install 的路径不起作用。

它采用“从磁盘浏览选项”中的默认路径

例如:我的 inf 文件路径是 C:\Users\Mani\Desktop\sagar\objchk_win7_x86\i386\netlwf.inf

但它要求有磁盘菜单中的默认路径(第一个条目)

d:\软件\filter_driver

类似于图像 ==> http://i.stack.imgur.com/tmyMX.png

它总是要求相同的 sys 文件。

有什么遗漏吗?

0 投票
1 回答
711 浏览

crash - 如何从 Windows ndislwf 驱动程序通知用户模式应用程序?

我获取了示例 ndislwf 6.0 示例并进行了一些更改,例如将唯一传入的 ARP 数据包放入链接列表中。我可以通过 IOCTL 命令从用户空间获取所有数据。这么多就好了。

现在,我想要一个正在运行的应用程序;一旦我的驱动程序收到一个 ARP 数据包,它应该向客户端应用程序发送一些通知或信号。然后客户端应用程序将发出另一个请求,该请求将获取最新数据。

我找到了三种方法:

  1. 有一个事件并在客户端应用程序中等待它
  2. 有一个待处理的 IRP,并且
  3. 使用命名管道。

我通过逐字复制 ..winddk...\src\general\event 项目的实现来实现第一个。

现在,因为我没有使用计时器,所以我很困惑。问题是这样的:

事件并等待它,需要 IOCTL 命令。ARP 缓存随着新的 ARP 数据包到达并添加到列表中而更新。只有当它被添加到列表中时,我才需要发出信号。但这是基于中断的。

那么,如何将这两者结合起来,以便在来自 NDIS 的中断时通知客户端应用程序。

我这样做了:

在我正在处理将当前请求放入 DPC 的传入 IOCTL 请求的函数中

现在,发生的情况是来自用户空间客户端应用程序的第一个请求有时会成功,但后续请求会导致错误。

在调试时,我发现它指向我添加的代码,即 if else 和 KeSetTimer() 调用。并且错误与 IRQL 不小于或等于有关。

我不知道如何做到这一点以及发生了什么崩溃。代码不会在其他任何地方崩溃,但仅在此函数中。

谢谢。

0 投票
1 回答
956 浏览

windows - NDIS LWF - FilterRestart 和 FilterPause

我是 NDIS LWF 驱动程序的新手,但在确定 Win7 上的 WFP 不能满足我的要求后,我不得不转向它们。所以希望这不是一个太基本的问题。

我的要求基本上需要能够在多 NIC 系统上的选定 NIC 上混杂地监听。我已经修改了 LWF 示例以将接口置于混杂模式,但我现在陷入了如何设置指定适配器的问题。我意识到 LWF 位于所有适配器之上,因此它不像我可以调用 NdisOpenAdapterEx 的协议,但我认为必须有一些过滤机制来忽略某些适配器。

我需要能够向驱动程序 IOCTL 选择我关心的接口的 MAC 地址。是否可以加载驱动程序但仅在特定接口上运行过滤器,或者我只需要忽略来自其他人在 FilterReceiveNetBufferLists 中不关心的调用。如果我不对特定接口执行任何操作,那么不必使用 FilterReceiveNetBufferLists 回调似乎会更有效。

让我感到困惑的是,在 DriverEntry 期间(通过 NdisFRegisterFilterDriver)自动调用了 FilterRestart,并且似乎没有 NdisFPauseFilter(但有一个 NdisFRestartFilter)。理想情况下,我希望能够在任何过滤开始之前设置必要的参数,并且我希望在 DriverEntry 期间不要使用注册表,因为我仍然需要能够根据需要动态重新分配任务。

最后,为了更好地理解 NDIS 内部结构,当过滤器模块暂停时,整个堆栈是否会暂停,或者 NDIS 是否围绕暂停的模块进行路由?

0 投票
1 回答
129 浏览

windows-ce - NDISUIO 是否对要侦听的 EtherType 数量有限制

我被要求研究在 WinCE 7.0 上使用原始以太网帧

据我所知,我需要调用CreateFile并使用IOCTL_NDISUIO_SET_ETHER_TYPE我想要接收的每种以太类型。

我已经多次测试了这个调用创建文件并使用不同的以太类型,似乎我可以创建尽可能多的,但同时调用ReadFile超过 3 个会导致错误代码 31(来自 GetLastError)

我的假设是错误的,还是我可以使用 NDISUIO 收听的以太类型的数量有限制?

0 投票
1 回答
249 浏览

ndis - 如何在 NDIS 6 中将标头添加到 NetBuffer?

我们正在将 NDIS 5.1 中间微型端口驱动程序升级到 NDIS 6。

我们需要在将要发送的数据包中添加一些标头信息。在 5.1 中,我们使用了 NdisChainBufferAtFront()。

我们已经做了整个厨房来遍历和克隆整个 NetBufferLists 结构,我们正在准备每个克隆的 NetBuffer。

将 22 字节标头附加到将要发送的数据包(NetBuffer)的正确方法是什么?(我们更喜欢一种避免复制原始 MDL 数据的方法)