NdisEnumerateFilterModules 函数 (ndis.h)

NdisEnumerateFilterModules 函数枚举筛选器堆栈中的所有筛选器模块和筛选器中间驱动程序实例。

语法

NDIS_STATUS NdisEnumerateFilterModules(
  [in]      NDIS_HANDLE NdisHandle,
  [in]      PVOID       InterfaceBuffer,
  [in]      ULONG       InterfaceBufferLength,
  [in, out] PULONG      BytesNeeded,
  [in, out] PULONG      BytesWritten
);

参数

[in] NdisHandle

在调用方初始化期间获取的 NDIS 句柄。 有关此句柄的详细信息,请参阅 获取池句柄

如果句柄是 NDIS 微型端口适配器句柄,则 NDIS 返回有关当前附加到微型端口适配器的所有接口模块的信息,从最顶层的筛选器模块开始。

如果句柄是 NDIS 绑定句柄,则 NDIS 返回有关当前附加到基础微型端口适配器的所有筛选器模块的信息,从最顶层的筛选器模块开始。

如果句柄是 NDIS 筛选器模块句柄,则 NDIS 返回有关当前附加到指定筛选器模块所附加到的基础微型端口适配器(从最顶层筛选器模块开始)的所有筛选器模块的信息。

[in] InterfaceBuffer

指向调用方分配的内存块的指针,其中 NDIS 返回筛选器堆栈中所有筛选器模块的信息,从最顶层筛选器开始。 此缓冲区包含一个 NDIS_ENUM_FILTERS 结构,该结构后跟零个或多个 NDIS_FILTER_INTERFACE 结构,堆栈中的每个筛选器模块对应一个结构。

[in] InterfaceBufferLength

InterfaceBuffer 成员中调用方提供的内存块的长度(以字节为单位)。

[in, out] BytesNeeded

指向调用方提供的变量的指针,NDIS 在其中写入 NDIS 成功返回筛选器堆栈中所有筛选器的接口信息所需的字节总数。

[in, out] BytesWritten

指向调用方提供的变量的指针,其中 NDIS 写入 NDIS 在 InterfaceBuffer 的内存中写入的总字节数。

返回值

NdisEnumerateFilterModules 返回以下状态值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
操作已成功完成。
NDIS_STATUS_INVALID_PARAMETER
NdisEnumerateFilterModules 失败,因为 NdisHandle 参数不是有效的 NDIS 微型端口适配器、协议绑定或筛选器模块句柄。
NDIS_STATUS_BUFFER_TOO_SHORT
NdisEnumerateFilterModules 失败,因为在 InterfaceBuffer 参数中提供的缓冲区太短,NDIS 无法返回所有信息。 如果在 InterfaceBuffer 处写入了部分结果,则 BytesWritten 参数中的值包含部分结果的长度。

注解

NDIS 微型端口驱动程序、协议驱动程序或筛选器驱动程序可以调用 NdisEnumerateFilterModules 函数来枚举筛选器堆栈中的所有筛选器。

NdisEnumerateFilterModules 从驱动程序堆栈的顶部到底部返回筛选器模块和筛选中间驱动程序的列表。 例如,如果筛选器模块 (F1 和 F2) 附加到微型端口适配器 (M1) 并且 F2 高于 F1, 则 NdisEnumerateFilterModules 将按以下顺序返回列表:F2、F1。 如果还有一个筛选器中间驱动程序 (M2) 绑定到 M1,如果 M2 高于 F2,并且另一个筛选器 (F3) 附加到 M2, 则 NdisEnumerateFilterModules 将按以下顺序返回筛选器列表:F3、M2、F2、F1。

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 Irql_Filter_Driver_Function (ndis)

另请参阅

NDIS_ENUM_FILTERS

NDIS_FILTER_INTERFACE