问题标签 [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 回答
571 浏览

windows - 为什么 NdisFRegisterFilterDriver 返回 NDIS_STATUS_FAILURE?

我正在尝试编写 NDIS 中间过滤器驱动程序,但在任何事情发生之前我就被卡住了。

除了尝试注册过滤器驱动程序之外,我的代码还没有做任何事情:

所有其他函数都是空的(除了一些跟踪代码)。他们在这里无关紧要。

NdisFRegisterFilterDriver 总是返回 NDIS_STATUS_FAILURE。该文档没有描述为什么会发生这种情况。(这不应该是 .inf 文件的问题,因为我已经尝试使用 DDK 中的示例驱动程序的文字副本。)

0 投票
1 回答
385 浏览

windows - Windows 过滤平台:访问数据包的有效负载

我正在遍历 NET_BUFFER 的 MDL 链来获取相关数据。用于指示已用数据空间开始位置的两个宏 ( NET_BUFFER_DATA_OFFSET()&NET_BUFFER_CURRENT_MDL_OFFSET()​​ ) 让我有些困惑,因为我一直观察到它们返回相同的值,而且看起来都同样可用。

应该使用哪一个?他们之间有什么区别?

0 投票
1 回答
330 浏览

windows - 在特定情况下,NDIS 微型端口驱动程序无法在 XP 操作系统上加载

我们的 USB 复合设备将支持不同的功能。一个接口将支持网络功能。我们正在为不同的操作系统开发不同的 NDIS 微型端口版本。(用于 XP 的 NDIS 5.1、用于 Vista 的 NDIS 6.1 和用于 Windows7 操作系统的 NDIS 6.20)。我们有一个测试用例,如下所示: 1)加载所有驱动程序(串行和 NDIS)后,使用超级终端打开任何串行接口 2)进行一些通信(输入 AT 命令等) 3)在不关闭超级终端的情况下拔下设备 4)重新插入设备连接到同一个 USB 端口。

对于上述测试场景,在 XP OS 上的步骤 4(错误代码 31)之后,NDIS 微型端口驱动程序无法加载。未调用 NDIS 微型端口驱动程序的初始化处理程序。在其他操作系统上,我无法重现此问题。

请让我知道您对此问题的宝贵建议。

0 投票
1 回答
1597 浏览

driver - pacer.sys 导致 BSOD

我创建了一个名为 fxwrap.sys 的 NDIS5 中间过滤器驱动程序,但是当我卸载它时。windows导致蓝屏。似乎ndis!ndisOidRequestComplete从转储文件中读取了空地址。我想知道这个问题是由fxwrap还是其他原因引起的。

环境:Windows 7 终极版 7601


这里是 fxwrap!PtRequestComplete 函数源代码:


以下是转储信息:

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1) 试图以过高的中断请求级别 (IRQL) 访问可分页(或完全无效)地址。这通常是由使用不正确地址的驱动程序引起的。如果内核调试器可用,则获取堆栈回溯。参数: Arg1:00000000,引用的内存 Arg2:00000002,IRQL Arg3:00000000,值 0 = 读取操作,1 = 写入操作 Arg4:8a81bd11,引用内存的地址

调试细节:

READ_ADDRESS:GetPointerFromAddress:无法从 84788848 读取无法读取 MiSystemVaType 内存在 84767e20 00000000

当前_IRQL:2

FAULTING_IP: ndis!ndisOidRequestComplete+8a 8a81bd11 803b05
cmp 字节 ptr [ebx],5

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID:VISTA_DRIVER_FAULT

BUGCHECK_STR:0xD1

PROCESS_NAME:系统

TRAP_FRAME: 8dd07aa0 -- (.trap 0xffffffff8dd07aa0) ErrCode = 00000000 eax=00000200 ebx=00000000 ecx=00000001 edx=00000000 esi=8dd07b4c edi=a277f5a4 eip=8a81bd11 esp=8dd07b14 ebp=8dd07b34 iopl=0 nv up ei pl zr na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246

ndis!ndisOidRequestComplete+0x8a:

8a81bd11 803b05 cmp 字节 ptr [ebx],5 ds:0023:00000000=??

重置默认范围

LAST_CONTROL_TRANSFER:从 8a81bd11 到 846605fb

堆栈文本:

8dd07aa0 8a81bd11 badb0d00 00000000 8dd07ac0 nt!KiTrap0E+0x2cf

8dd07b34 8a81c8b9 8dd07b4c 8c840008 870c1618 ndis!ndisOidRequestComplete+0x8a

8dd07b68 952b411b 8963b0f0 a277f5a4 00000000 ndis!NdisFOidRequestComplete+0x6a

8dd07b88 8a81c19d 870c1618 8c840008 00000000 起搏器!PcFilterRequestComplete+0x5b

8dd07bbc 8a843572 02d07bd4 00000000 89ac60e0 ndis!ndisOidRequestComplete+0x516

8dd07bf4 8a843805 00ac60e0 8c840008 00000000 ndis!ndisMOidRequestCompleteInternal+0xd0

8dd07c18 8a87a765 02ac60e0 00000000 8c840008 ndis!ndisCompleteLegacyRequest+0xdb

8dd07c38 95a831c5 89ac60e0 00000000 89ad20e0 ndis!NdisMSetInformationComplete+0x81

8dd07c54 8a87506f 8a1d48e8 8a1d4908 00000000 fxwrap!PtRequestComplete+0x61

8dd07c70 8a81c05b 876f54c0 8966f0f0 00000000 ndis!ndisCompleteOidRequestToRequest+0x4a

8dd07ca4 8a8704b2 00d07cbc 89ad20e0 8a85a000 ndis!ndisOidRequestComplete+0x3d4

8dd07ce8 8a823221 00ad20e0 8966f190 86a58638 ndis!ndisMDoOidRequest+0x528

8dd07d00 8469ca6b 8966f188 00000000 86a58638 ndis!ndisDoOidRequests+0x4d

8dd07d50 84827fda 00000000 92ed9892 00000000 nt!ExpWorkerThread+0x10d

8dd07d90 846d01f9 8469c95e 00000000 00000000 nt!PspSystemThreadStartup+0x9e

00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x19

堆栈命令:kb

FOLLOWUP_IP:起搏器!PcFilterRequestComplete+5b 952b411b 56
推送 esi

SYMBOL_STACK_INDEX:3

SYMBOL_NAME:起搏器!PcFilterRequestComplete+5b

FOLLOWUP_NAME:机器所有者

MODULE_NAME:起搏器

IMAGE_NAME:起搏器.sys

DEBUG_FLR_IMAGE_TIMESTAMP:4a5bc916

FAILURE_BUCKET_ID: 0xD1_pacer!PcFilterRequestComplete+5b

BUCKET_ID: 0xD1_pacer!PcFilterRequestComplete+5b

跟进:MachineOwner

感谢您的任何意见。

0 投票
1 回答
249 浏览

c - PNDIS_GENERIC_OBJECT 错误 C2061

PNDIS_GENERIC_OBJECT声明变量后出现编译器错误。为什么会发生这种情况,我该如何避免?

错误 C2061:语法错误:标识符“gNdisGenericObj”

错误 C2059:语法错误:';'

0 投票
1 回答
332 浏览

windows - NDIS 版本的迁移

NDIS 6.0 和 NDIS 6.30 之间的主要区别是什么?以下是我所知道的信息,

在 NDIS 6.0 的情况下,没有什么像 WWAN 介质那样。WWAN 特定的 OID 在 NDIS 6.0 中也不可用。因此 TCP/IP 使用 802.3 标头发送。NDIS 6.0 中仅存在 WAN。

后来,从 NDIS 6.20 开始,引入了称为 WWAN 的介质,其中 TCP/IP 直接发送原始 IP 数据包。之后还介绍了 WWAN 特定的 OID。

这个对吗?以及如何从 NDIS 6.0 版本迁移到 NDIS 6.30?我们究竟需要做什么来更改版本?它有什么影响?上面的问题是 wrt 微型端口驱动程序的实现。

提前致谢。

0 投票
1 回答
1007 浏览

c - 使用 OSR 驱动程序加载程序错误加载驱动程序

我无法使用 OSR 驱动程序加载程序加载我的驱动程序。我将路径指向我的驱动程序,成功注册服务,但是当我单击启动服务时,我收到错误消息“系统找不到指定的文件”。

具体来说,我试图从样本中制作驱动程序:

http://www.ndis.com/ndis-ndis6/inspect/packetinspect.htm

请问有什么想法吗?

0 投票
1 回答
192 浏览

device-driver - WinXPe NDIS 5.1 多端口

拥有一个包含三个 NIC 的 PCI 设备,由 Altera 以太网内核提供。因此必须为 WinXPe 实施 NDIS 5.1。MVP 建议为每个内核实现一个 WDM 驱动程序,然后是一个与各个 WDM 驱动程序对话的单个 NDIS 驱动程序,我不明白,因为单个 NDIS 驱动程序似乎没有任何多端口或通道的概念。

如果在 DriverEntry 中,NDIS 驱动程序为每个以太网核心调用一次 NdisMInitializeWrapper 会怎样?它每次都需要使用相同的 DriverObject 进行调用,但可能会在每次调用时返回不同的 NdisWrapperHandle。这个独特的 NdisWrapperHandle 可以用作调用所有其他 NDIS 驱动程序函数的上下文说明符。

0 投票
1 回答
483 浏览

windows - 如何实现多 vpn 动态路由表 NDIS 微型端口驱动程序?

我想编写一个 NDIS 微型端口驱动程序,作为虚拟适配器映像描述在此处弹出(就像 VMWare 一样)。其目的是将数据包转发到现有连接的 vpn 内部 IP(适配器)。可能有许多现有的 vpn 连接。我的驱动程序通过不同的进程将数据包转发给其中一个(这些进程可能连接到同一个 IP,因此用于区分不同连接的路由表将不起作用)。

我可以参考的任何提示或示例?谢谢。 数字

0 投票
1 回答
2859 浏览

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

我正在尝试编写 C++ 代码以编程方式安装 NDIS 6.0 轻量级过滤器驱动程序。在查看了 WinDDK、在线示例和 MSDN 文档后,我最终得到了下面的代码示例。(为清楚起见,跳过了错误处理)问题是 INetCfgClassSetup::Install 总是返回错误 0x8004a024。(我在头文件中找不到错误代码。)

使用相同的 .inf 文件手动安装驱动程序就可以了。

WinDDK 中的 Bindview 示例可以很好地安装驱动程序,只要它采用调用 INetCfgClassSetup::SelectAndInstall 的路径即可。使用 INetCfgClassSetup::Install 的替代路径不起作用。

我的机器上启用了内核调试,因此不需要驱动程序签名。

下面的代码有什么问题吗?

谢谢。