问题标签 [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.
windows - 为什么 NdisFRegisterFilterDriver 返回 NDIS_STATUS_FAILURE?
我正在尝试编写 NDIS 中间过滤器驱动程序,但在任何事情发生之前我就被卡住了。
除了尝试注册过滤器驱动程序之外,我的代码还没有做任何事情:
所有其他函数都是空的(除了一些跟踪代码)。他们在这里无关紧要。
NdisFRegisterFilterDriver 总是返回 NDIS_STATUS_FAILURE。该文档没有描述为什么会发生这种情况。(这不应该是 .inf 文件的问题,因为我已经尝试使用 DDK 中的示例驱动程序的文字副本。)
windows - Windows 过滤平台:访问数据包的有效负载
我正在遍历 NET_BUFFER 的 MDL 链来获取相关数据。用于指示已用数据空间开始位置的两个宏 ( NET_BUFFER_DATA_OFFSET()
&NET_BUFFER_CURRENT_MDL_OFFSET()
) 让我有些困惑,因为我一直观察到它们返回相同的值,而且看起来都同样可用。
应该使用哪一个?他们之间有什么区别?
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 微型端口驱动程序的初始化处理程序。在其他操作系统上,我无法重现此问题。
请让我知道您对此问题的宝贵建议。
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],5CUSTOMER_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
推送 esiSYMBOL_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
感谢您的任何意见。
c - PNDIS_GENERIC_OBJECT 错误 C2061
PNDIS_GENERIC_OBJECT
声明变量后出现编译器错误。为什么会发生这种情况,我该如何避免?
错误 C2061:语法错误:标识符“gNdisGenericObj”
错误 C2059:语法错误:';'
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 微型端口驱动程序的实现。
提前致谢。
c - 使用 OSR 驱动程序加载程序错误加载驱动程序
我无法使用 OSR 驱动程序加载程序加载我的驱动程序。我将路径指向我的驱动程序,成功注册服务,但是当我单击启动服务时,我收到错误消息“系统找不到指定的文件”。
具体来说,我试图从样本中制作驱动程序:
http://www.ndis.com/ndis-ndis6/inspect/packetinspect.htm
请问有什么想法吗?
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 驱动程序函数的上下文说明符。
windows - 如何实现多 vpn 动态路由表 NDIS 微型端口驱动程序?
我想编写一个 NDIS 微型端口驱动程序,作为虚拟适配器映像描述在此处弹出(就像 VMWare 一样)。其目的是将数据包转发到现有连接的 vpn 内部 IP(适配器)。可能有许多现有的 vpn 连接。我的驱动程序通过不同的进程将数据包转发给其中一个(这些进程可能连接到同一个 IP,因此用于区分不同连接的路由表将不起作用)。
我可以参考的任何提示或示例?谢谢。
windows - 以编程方式安装 NDIS 过滤器驱动程序
我正在尝试编写 C++ 代码以编程方式安装 NDIS 6.0 轻量级过滤器驱动程序。在查看了 WinDDK、在线示例和 MSDN 文档后,我最终得到了下面的代码示例。(为清楚起见,跳过了错误处理)问题是 INetCfgClassSetup::Install 总是返回错误 0x8004a024。(我在头文件中找不到错误代码。)
使用相同的 .inf 文件手动安装驱动程序就可以了。
WinDDK 中的 Bindview 示例可以很好地安装驱动程序,只要它采用调用 INetCfgClassSetup::SelectAndInstall 的路径即可。使用 INetCfgClassSetup::Install 的替代路径不起作用。
我的机器上启用了内核调试,因此不需要驱动程序签名。
下面的代码有什么问题吗?
谢谢。