- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 NDIS 6.2 支持微型端口驱动程序。现在我想将 NDIS 6.2 移植到 NDIS 6.3 。
https://msdn.microsoft.com/en-us/library/windows/hardware/dn232191(v=vs.85).aspx
使用此链接,我更改了 NDIS 6.30 中增强功能的一些一般要求和电源管理。
我将所有更改都放在同一个 NDIS 6.2 文件中。
变化是 (miniport.cpp)
ndisMiniportDriverCharacteristics.MajorNdisVersion = 6;
ndisMiniportDriverCharacteristics.MinorNdisVersion = 30;
ndisMiniportDriverCharacteristics.MajorDriverVersion = VERSION_MAJOR_NUM;
ndisMiniportDriverCharacteristics.MinorDriverVersion = VERSION_MINOR_NUM;
ndisMiniportDriverCharacteristics.SetOptionsHandler = CMiniport::SetOptions;
ndisMiniportDriverCharacteristics.InitializeHandlerEx = CMiniport::InitializeEx;
…………等
然后在 InitializeEx() 函数中,NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES
的更改是:
NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES ndisMiniportAdapterRegistrationAttributes;
NdisZeroMemory(&ndisMiniportAdapterRegistrationAttributes, sizeof(NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES));
#if (NDIS_SUPPORT_NDIS630)
C_ASSERT(sizeof(NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES) >= NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_2);
ndisMiniportAdapterRegistrationAttributes.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES;
ndisMiniportAdapterRegistrationAttributes.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_2;
ndisMiniportAdapterRegistrationAttributes.Header.Revision = NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_2;
#else
C_ASSERT(sizeof(NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES) >= NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1);
ndisMiniportAdapterRegistrationAttributes.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES;
ndisMiniportAdapterRegistrationAttributes.Header.Size = NDIS_SIZEOF_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1;
ndisMiniportAdapterRegistrationAttributes.Header.Revision = NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES_REVISION_1;
#endif // NDIS MINIPORT VERSION
ndisMiniportAdapterRegistrationAttributes.MiniportAdapterContext = CMiniport::m_pMiniport;
#if (NDIS_SUPPORT_NDIS630)
ndisMiniportAdapterRegistrationAttributes.AttributeFlags |= NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND;
#else
ndisMiniportAdapterRegistrationAttributes.AttributeFlags = NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK | NDIS_MINIPORT_ATTRIBUTES_NDIS_WDM;
#endif
ndisMiniportAdapterRegistrationAttributes.CheckForHangTimeInSeconds = 5;
对于更改 NDIS_PM_CAPABILITIES 我这样写:
NDIS_PM_CAPABILITIES ndisPmCapabilities;
NdisZeroMemory(&ndisPmCapabilities, sizeof(NDIS_PM_CAPABILITIES));
#if (NDIS_SUPPORT_NDIS630)
C_ASSERT(sizeof(NDIS_PM_CAPABILITIES) >= NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2);
ndisPmCapabilities.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
ndisPmCapabilities.Header.Size = NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_2;
ndisPmCapabilities.Header.Revision = NDIS_PM_CAPABILITIES_REVISION_2;
ndisPmCapabilities.MinMagicPacketWakeUp = NdisDeviceStateUnspecified;
ndisPmCapabilities.MinPatternWakeUp = NdisDeviceStateUnspecified;
ndisPmCapabilities.MinLinkChangeWakeUp = NdisDeviceStateUnspecified;
#else
C_ASSERT(sizeof(NDIS_PM_CAPABILITIES) >= NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1);
ndisPmCapabilities.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
ndisPmCapabilities.Header.Size = NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1;
ndisPmCapabilities.Header.Revision = NDIS_PM_CAPABILITIES_REVISION_1;
ndisPmCapabilities.MinMagicPacketWakeUp = NdisDeviceStateUnspecified;
ndisPmCapabilities.MinPatternWakeUp = NdisDeviceStateUnspecified;
ndisPmCapabilities.MinLinkChangeWakeUp = NdisDeviceStateUnspecified;
#endif // NDIS MINIPORT VERSION
所以我的疑问是:
NDIS_SUPPORT_NDIS630
宏? 在 ndis.h WDK 文件中,宏是这样的:
#if !defined(NDIS_SUPPORT_NDIS630)
#if (((defined (NDIS_MINIPORT_MAJOR_VERSION) && (NDIS_MINIPORT_MAJOR_VERSION >= 6)) && \
(defined (NDIS_MINIPORT_MINOR_VERSION) && (NDIS_MINIPORT_MINOR_VERSION >= 30))) || \
(defined (NDIS630)) || NDIS_WRAPPER)
#define NDIS_SUPPORT_NDIS630 1
#else
#define NDIS_SUPPORT_NDIS630 0
#endif
#endif // !defined(NDIS_SUPPORT_NDIS630)
但是当我直接使用 ndisPmCapabilities.Header.Revision = NDIS_PM_CAPABILITIES_REVISION_2;
时,我得到了如下错误 NDIS_PM_CAPABILITIES_REVISION_2 未定义
。
如何使用这个 NDIS_SUPPORT_NDIS630
宏?
最佳答案
您可以通过在项目中定义适当的 NDIS6XX_MINIPORT
来激活相关的 NDIS
版本。您可以在 ndis.h
header 开头的注释中查看更多详细信息。
您可以使用您想要的任何 NDIS
版本编译您的驱动程序,但它们不向后兼容 - 每个 Windows 版本都提供不同的 NDIS
版本,自然是旧版本OS
版本无法与较新的 NDIS
版本一起使用。
关于c++ - 如何使用 NDIS_SUPPORT_NDIS630 将 NDIS 6.2 移植到 NDIS 6.3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34331918/
我有 NDIS 6.2 支持微型端口驱动程序。现在我想将 NDIS 6.2 移植到 NDIS 6.3 。 https://msdn.microsoft.com/en-us/library/window
NDIS 6.0 和 NDIS 6.30 之间的主要区别是什么?这是我知道的信息, 在 NDIS 6.0 的情况下,没有像 WWAN 媒体那样的东西。 WWAN 特定的 OID 在 NDIS 6.0
我目前正在尝试使用来自 windows driver samples 的 NDIS 过滤器驱动程序发送我自己的数据包. 我想我必须用函数 FilterSendNetBufferLists 发送数据包.
我正在尝试使用 Visual Studio 2012 中提供的 WDK 工具修改以太网驱动程序。 WDK 中提供的示例包括“微型端口适配器”和“NDIS 轻型过滤器”等。我仍处于驱动程序编写的最初阶段
我正在编写一个程序 (C++),它将在 Windows 操作系统上使用 Wi-fi 检测我周围的设备。 为此,我正在使用 Netmon API,我需要将无线网络适配器切换到监控模式。 我读到 Netm
我知道我可以使用 Windows PowerShell Get-netadapter|选择名称,ndisversion 将结果输出到一个文本文件,并从那里解析数据,但这有点老套。我想知道是否有办法使用
我已经在 Windows 7/8 上构建并安装了 netvmini。而且我能够从一个 IP ping 到另一个 IP。但我对其下面列出的功能有一些疑问: 驱动程序放置在哪一层 w.r.t OSI 层。
我想在虚拟微型端口驱动程序上添加多播支持。我有一个过滤驱动程序绑定(bind)到每个物理 NIC 上。根据微软文档 https://msdn.microsoft.com/en-us/library/w
我正在尝试以编程方式编写 C++ 代码来安装 NDIS 6.0 轻量级筛选器驱动程序。在查看了 WinDDK、在线示例和 MSDN 文档之后,我最终得到了下面的代码示例。 (为清楚起见,跳过了错误处理
我正在尝试定义一些自定义事件查看器事件。我一直按照 MSDN 和其他一些在线资源中的说明进行操作,但事件查看器找不到关联的文本数据。 这是我所做的: 为带有事件代码和相关字符串的消息编译器创建了一个输
我正在编写一个 Windows NDIS 过滤器驱动程序,并希望能够从内核内部查询有关 tcp 端口的状态(是否正在使用?)。当驱动程序处于 IRQL = dispatch_level 时,我可以使用
我使用 NdisRegisterProtocol() 来注册协议(protocol)驱动程序,并使用 _NDIS_OPEN_BLOCK 和 _NDIS_PROTOCOL_BLOCK 结构来 Hook
我是 WDD 的初学者。我需要制作一个网络驱动程序过滤器,根据签名丢弃某些数据包,以保护系统免受程序漏洞的影响。现在,我只是想获取我需要的数据包并找到我的签名。我使用 Metasploit Frame
背景:我需要创建一个 NDIS 过滤器中间驱动程序。该驱动程序将在收集元数据(主要是时间信息)的同时传递所有流量。驱动程序将通过插入自己的包含元数据的数据包并将它们向上传递到堆栈,将此信息导出到用户应
我正在 Linux 中开发一个尽可能接近实时的系统,并且需要在收到特定数据包后立即在 TCP 数据包中发送大约 600-800 字节。 为了获得尽可能好的延迟,我希望这个数据包直接从内核发送,而不是接
我正在开发本质上是专门的防火墙应用程序。该解决方案需要兼容 32 位和 64 位。我的公司想保留当前的程序界面,它是用 C# 编写的。 我需要的是:一种监视和操纵系统上所有网络流量的方法。我的研究使我
我正在开发 WinPcap,一个 NDIS 轻量级过滤器 驱动程序。为了捕获环回数据包,我还制作了一个Windows Filtering Platform (WFP) callout驱动程序。我已将这
大家。又是我,那个将 WinPcap 从 NDIS 6 协议(protocol)移植到 NDIS 6 过滤器的人:) 我遇到了一个 bug,困了我两天。是这样的:我安装了npf6x.sys驱动程序(原
我尝试开发 NDIS lwf 驱动程序来过滤特定数据包。 我成功在Windows 10中运行了我开发的驱动程序,这是用于调试的测试模式。 我将窗口测试模式更改为正常模式,然后在非测试模式的窗口中运行驱
我正在学习 Windows NDIS 中级 (IM) 驱动程序开发。我在安装时遇到问题。我总是需要手动安装它。 我的问题是如何以编程方式安装 NDIS 中间 (IM) 驱动程序 问候 纳瓦尼思 最佳答
我是一名优秀的程序员,十分优秀!