从 NDIS 筛选器驱动程序生成 OID 请求

筛选器驱动程序可以通过调用 NdisFOidRequest 函数来发起 OID 查询或将请求设置为基础驱动程序。

下图演示了一个源自筛选器驱动程序的 OID 请求。

diagram illustrating an oid request originated by a filter driver.

筛选器驱动程序调用 NdisFOidRequest 函数后,NDIS 将调用下一个基础驱动程序的请求函数。 有关微型端口驱动程序如何处理 OID 请求的详细信息,请参阅 适配器的 OID 请求

若要同步完成, NdisFOidRequest 返回NDIS_STATUS_SUCCESS或错误状态。 若要异步完成, NdisFOidRequest 返回NDIS_STATUS_PENDING。

若要确定基础驱动程序成功处理的信息,发出 OID 请求的筛选器驱动程序必须在 OID 请求返回后检查NDIS_OID_REQUEST结构中 SupportedRevision 成员中的值。 有关 NDIS 版本信息的详细信息,请参阅 指定 NDIS 版本信息

如果 NdisFOidRequest 返回NDIS_STATUS_PENDING,则 NDIS 会在基础驱动程序完成 OID 请求后调用 FilterOidRequestComplete 函数。 在这种情况下,NDIS 在 FilterOidRequestCompleteOidRequest 参数处传递请求的结果。 NDIS 在 FilterOidRequestComplete的状态参数中传递请求的最终状态。

如果 NdisFOidRequest 返回NDIS_STATUS_SUCCESS,它将在 OidRequest 参数的NDIS_OID_REQUEST结构中返回查询请求的结果。 在这种情况下,NDIS 不调用 FilterOidRequestComplete 函数。

驱动程序可以在处于重启正在运行暂停暂停状态时调用 NdisFOidRequest

注意 筛选器驱动程序应跟踪其源自的 OID 请求,并确保它在此类请求完成后不调用 NdisFOidRequestComplete 函数。