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 在 InterfaceBuffer 的内存中写入 NDIS 的总字节数。

返回值

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。 如果还有一个绑定到 M1 的筛选器中间驱动程序 (M2) ,如果 M2 高于 F2,如果另一个筛选器 (F3) 附加到 M2, NdisEnumerateFilterModules 将按以下顺序返回筛选器列表:F3、M2、F2、F1。

要求

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

另请参阅

NDIS_ENUM_FILTERS

NDIS_FILTER_INTERFACE