问题标签 [miniport]

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 回答
786 浏览

c++ - 如何在 NDIS 期间从注册表中检索 mac 地址?

我试图在我的虚拟微型端口驱动程序的 WHQL 测试中通过 AddressChnage 测试用例。在测试期间,我可以看到如下错误日志:

对于虚拟 mac,我正在设置 MAC 地址。0a-1b-3c-4d-5e-6f

但我在微型端口初始化期间处理所有必需的调用。

并添加到 miniort 适配器:

最后在 OID 查询请求期间,我传递了 CurrentAddress 和 PermenentAddress 值。

这是我在测试期间面临的确切问题。我不知道为什么我面临这个问题。我正在处理处理NdisReadNetworkAddress程序以获取配置的注册表值。miniport initialize 将在驱动程序重新启动后调用并将注册表值设置为 currentaddress 。不是吗?

那为什么这失败了?还有其他替代方法来调用和获取适配器的mac地址吗?我在 Windows 7 和更高版本的操作系统中使用 NDIS 6.2 微型端口。

0 投票
1 回答
347 浏览

windows - 如何设置和查询 NDIS 虚拟微型端口驱动程序的多播地址?

我想在虚拟 Miniport 驱动程序上添加多播支持。我有一个过滤器驱动程序绑定在每个物理网卡上。根据微软文档
https://msdn.microsoft.com/en-us/library/windows/hardware/ff569073(v=vs.85).aspx

我盯着添加支持多播地址:

这些是我的步骤: 在微型端口驱动程序中:在miniport initialization我添加的过程MaxMulticastListSize = 32NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES

我还更新了 OID_802_3_MAXIMUM_LIST_SIZE OID 中的 32 个最大地址。接下来我更新PacketFilters

OID_GEN_CURRENT_PACKET_FILTEROID 设置请求期间,我用值更新了 PacketFilters DATA.SET_INFORMATION.InformationBuffer

OID_GEN_MAC_OPTION我添加宏期间: NDIS_MAC_OPTION_NO_LOOPBACK | NDIS_MAC_OPTION_FULL_DUPLEX | NDIS_MAC_OPTION_8021P_PRIORITY ;

接下来在 OID_802_3_MULTICAST_LIST OID 设置请求中,我维护了一个多播列表

我用 NDISTester 进行了测试。它有一个将绑定到微型端口适配器的协议驱动程序。但在接收期间我没有收到任何多播数据包。有什么遗漏吗?我收到类似的错误received less than expected percentage of sent。有什么建议么 ?

0 投票
1 回答
45 浏览

windows - Windows 网络设备驱动程序:从驱动程序中设置链接 UP/DOWN

我正在为 Windows 编写网络驱动程序。我想做类似下面的伪代码:

所有这些都发生在驱动程序代码中。

我使用 Windows 驱动程序示例作为参考。我发现了一些看起来很有希望的东西:https://github.com/microsoft/Windows-driver-samples/blob/master/network/ndis/netvmini/6x/adapter.c#L353 AdapterGeneral.MediaConnectState = HWGetMediaConnectStatus(Adapter); 我可以将这个 MediaConnectSate 设置为MediaConnectStateDisconnected这里和驱动程序在断开连接状态下初始化,这是我想要的。但是在初始化驱动程序后,我找不到在其他地方更改此状态的方法。

0 投票
0 回答
38 浏览

winapi - 使用 NDIS 驱动程序同时(非异步)发送和接收的最佳方式是什么?

我试图找到通过以太网第 2 层同时发送和接收的最佳方法,在这种情况下,使用 Windows 上的 NDIS 驱动程序。我评估的方法如下:

  1. 具有两个独立线程和 NDIS 驱动程序(fileapi.h Win32)的同步功能。通过这种方式,我设法打开了驱动程序的两个句柄,但我没有设法独立链接两次网卡。有两张独立的卡,一张读卡,一张写卡,工作没有任何问题。信息:在可以使用此方法的位置(在@falstaff 的最终评论中)发布。

第一个函数在两个线程中都能正常工作,第二个函数 (DeviceIoControl) 在第二次执行时失败。它表明无法重做第二个绑定,我曾希望通过单独的线程来实现。

  1. 使用 Miniport Mux NDIS。我认为它可以使用单个网卡同时发送和接收,但我不确定。

问题:

  • 通过单个网络接口执行同时通信的最佳方法是什么?

  • 为什么第 1 点中的 DeviceIoControl 函数不起作用,只能将一个驱动程序或它的一个实例链接到外围设备?

非常感谢。此致。

0 投票
1 回答
57 浏览

driver - Windows 2000 wdm:没有显示驱动程序调用我的微型端口驱动程序的 HwVidStartIo

我正在为 Windows NT 4.0 - 5.1 编写图形微型端口驱动程序。我陷入了这种情况,我的微型端口驱动程序的 HwVidStartIo 永远不会被调用。

我希望显示驱动程序通过向 videoprt.sys 发送请求来触发函数调用,然后 videoprt.sys 调用我的 HwVidStartIo。但不知何故,没有显示驱动程序关心我的微型端口驱动程序。

我是否需要以某种方式向显示驱动程序宣布或注册我的微型端口驱动程序?

当系统启动时,流程是这样的:

  1. DriverEntry 被调用
  2. HwVidFindAdapter 被调用
  3. HwVidFindAdapter 返回 NO_ERROR/0x00
  4. HwVidFindAdapter 被调用
  5. HwVidFindAdapter 返回 ERROR_INVALID_PARAMETER/0x57
  6. HwVidFindAdapter 被调用
  7. HwVidFindAdapter 返回 ERROR_INVALID_PARAMETER/0x57
  8. HwVidFindAdapter 被调用
  9. HwVidFindAdapter 返回 NO_ERROR/0x00
  10. DriverEntry 返回 0x00(VideoPortInitialize 的返回值)
  11. HwVidInitialize 被调用
  12. HwVidInitialize 返回 true/0x01
  13. HwVidInitialize 被调用
  14. HwVidInitialize 返回 true/0x01