MINIPORT_SYNCHRONOUS_OID_REQUEST 函数 (ndis.h)

NDIS 调用微型端口驱动程序的 MiniportSynchronousOidRequest 回调函数来发出同步 OID 请求。

语法

NDIS_STATUS MINIPORT_SYNCHRONOUS_OID_REQUEST(
  [in] NDIS_HANDLE      MiniportAdapterContext,
  [in] NDIS_OID_REQUEST *OidRequest
);

参数

[in] MiniportAdapterContext

微型端口驱动程序在其 MiniportInitializeEx 函数中分配的上下文区域的句柄。 微型端口驱动程序使用此上下文区域来维护微型端口适配器的状态信息。

[in] OidRequest

指向 NDIS_OID_REQUEST 结构的指针,该结构包含微型端口驱动程序要处理的缓冲区和请求数据包。 根据请求,驱动程序在提供的 结构中返回请求的信息。

返回值

MiniportSynchronousOidRequest 可以返回以下状态值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
微型端口驱动程序已按请求设置或获取数据。
NDIS_STATUS_INVALID_OID
OidRequest 指定的请求无效或无法识别。
NDIS_STATUS_NOT_SUPPORTED
已识别 OidRequest 指定的请求,但微型端口驱动程序不支持它。
NDIS_STATUS_BUFFER_TOO_SHORT
OidRequest 提供的缓冲区太小,无法容纳请求的数据。
NDIS_STATUS_INVALID_LENGTH
OidRequest 处的 NDIS_OID_REQUEST 结构的 InformationBufferLength 成员中指定的值对于指定的 OID_Xxx 代码不正确。
NDIS_STATUS_INVALID_DATA
OidRequest 上为请求指定的一个或多个参数无效。
NDIS_STATUS_INDICATION_REQUIRED
微型端口驱动程序将提供 OID 完成状态以及后续状态指示。 微型端口驱动程序无法返回NDIS_STATUS_INDICATION_REQUIRED,除非特定的 OID 允许。 若要确定是否允许此状态,请参阅 OID 参考页。 有关NDIS_STATUS_INDICATION_REQUIRED的详细信息,请参阅 NDIS_OID_REQUESTNDIS_STATUS_INDICATION
NDIS_STATUS_NOT_ACCEPTED
调用 MiniportDevicePnPEventNotify 函数指示意外删除,NDIS 调用驱动程序的 MiniportHaltEx 函数。 如果驱动程序在 NDIS 调用 MiniportHaltEx 之前收到了任何 OID 请求,则应立即完成状态值为 NDIS_STATUS_NOT_ACCEPTED 的此类请求。

在意外删除后,微型端口驱动程序并不总是需要返回所有 OID 的NDIS_STATUS_NOT_ACCEPTED,但这样做有助于解释调用失败的原因。

注解

MiniportSynchronousOidRequest 是一个可选函数。 如果微型端口驱动程序处理同步 OID 请求,则会注册此函数。 驱动程序使用 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 结构的 SynchronousOidRequestHandler 成员调用 NdisMRegisterMiniportDriver 函数时指定 MiniportSynchronousOidRequest 入口点。

微型端口驱动程序不得从 MiniportSynchronousOidRequest 返回NDIS_STATUS_PENDING或NDIS_STATUS_REQUEST_ABORTED。 同步 OID 请求无法停止或取消。

在 NDIS 调用 MiniportDevicePnPEventNotify 通知驱动程序设备意外删除后,微型端口驱动程序可能会返回NDIS_STATUS_NOT_ACCEPTED。 但是,如果可以,微型端口驱动程序仍可能使用不同的状态代码完成 OID 请求。 有关详细信息,请参阅每个 OID 的特定文档。

微型端口驱动程序应能够快速完成同步 OID 请求,而不会阻塞、等待或休眠。 同步 OID 请求仅用于低延迟操作,微型端口驱动程序应努力在几毫秒内完成这些请求。 大多数 OID 请求会传递到 MiniportOidRequest,允许暂停或等待更长的持续时间。

NDIS 不会针对彼此、针对其他 OID 请求、 针对 MiniportPauseMiniportResetEx 或电源转换序列化同步 OID 请求。 微型端口驱动程序负责实现自己的同步,并在无法成功处理请求时对传递的请求进行失败。

NDIS 对 MiniportHaltEx 序列化同步 OID 请求;NDIS 保证在调用 MiniportHaltEx 后,同步 OID 请求不会处于活动状态。

实现 NDIS 选择性挂起的微型端口驱动程序与同步 OID 不兼容,不得注册 MiniportSynchronousOidRequest 处理程序。

要求

要求
最低受支持的客户端 Windows 10 版本 1709
目标平台 Windows
标头 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL

另请参阅

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

NDIS_MINIPORT_DRIVER_CHARACTERISTICS

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMRegisterMiniportDriver

NDIS 6.80 中的同步 OID 请求接口