MINIPORT_DIRECT_OID_REQUEST回调函数 (ndis.h)
NDIS 调用微型端口驱动程序的 MiniportDirectOidRequest 函数来处理直接 OID 请求,以查询或设置驱动程序中的信息。
语法
MINIPORT_DIRECT_OID_REQUEST MiniportDirectOidRequest;
NDIS_STATUS MiniportDirectOidRequest(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PNDIS_OID_REQUEST OidRequest
)
{...}
参数
[in] MiniportAdapterContext
微型端口驱动程序在其 MiniportInitializeEx 函数中分配的上下文区域的句柄。 微型端口驱动程序使用此上下文区域来维护微型端口适配器的状态信息。
[in] OidRequest
指向 NDIS_OID_REQUEST 结构的指针,该结构包含要处理的微型端口驱动程序的缓冲区和请求数据包。 根据请求,驱动程序返回所提供的结构中请求的信息。
返回值
MiniportDirectOidRequest 可以返回以下状态值之一:
返回代码 | 描述 |
---|---|
|
微型端口驱动程序按请求设置或获取数据。 |
|
微型端口驱动程序将以异步方式完成请求。 微型端口驱动程序完成所有处理后,它必须调用 NdisMDirectOidRequestComplete 函数,以通知 NDIS 请求已完成。 |
|
指定 OidRequest 的请求无效或无法识别。 |
|
已识别 OidRequest 的请求,但微型端口驱动程序不支持它。 |
|
OidRequest 提供的缓冲区太小,无法保存请求的数据。 |
|
OidRequest 的 InformationBufferLength NDIS_OID_REQUEST 成员中指定的值对于指定的 OID_Xxx 代码不正确。 |
|
OidRequest 为请求指定的一个或多个参数无效。 |
|
调用 MiniportDevicePnPEventNotify 函数指示意外删除,NDIS 称为驱动程序的 MiniportHaltEx 函数。 如果驱动程序在 NDIS 调用 MiniportHaltEx之前收到任何 OID 请求,则应立即完成状态值为 NDIS_STATUS_NOT_ACCEPTED 的此类请求。 |
|
微型端口驱动程序停止处理请求。 例如,NDIS 调用 MiniportResetEx 函数。 |
|
微型端口驱动程序将提供具有后续状态指示的 OID 完成状态。 微型端口驱动程序无法返回NDIS_STATUS_INDICATION_REQUIRED,除非特定的 OID 允许它。 若要确定是否允许此状态,请参阅 OID 参考页。 有关NDIS_STATUS_INDICATION_REQUIRED的详细信息,请参阅 NDIS_OID_REQUEST 和 NDIS_STATUS_INDICATION。 |
言论
MiniportDirectOidRequest 是一个可选函数。 微型端口驱动程序在处理直接 OID 请求时注册此函数。 驱动程序在调用 时指定 MiniportDirectOidRequest 入口点
NdisMRegisterMiniportDriver 函数。 注册
NDIS 代表自己调用 MiniportDirectOidRequest 函数,或者代表调用 NdisDirectOidRequest 函数的绑定协议驱动程序。 微型端口驱动程序应检查在 OidRequest 参数中提供的请求,并执行请求的作。
请注意,NDIS 不会在 OidRequest验证特定于 OID 的内容。 因此,驱动程序本身必须验证这些内容。 如果驱动程序确定要设置的值超出边界,则它应失败请求并返回NDIS_STATUS_INVALID_DATA。
NDIS 不会将发送到 MiniportDirectOidRequest 的请求与其他 OID 请求一起序列化。 当 发送到 miniportOidRequest 或 MiniportDirectOidRequest 的其他请求时,微型端口驱动程序必须能够处理对 MiniportDirectOidRequest 的多个调用。
示例
若要定义 MiniportDirectOidRequest 函数,必须先提供一个函数声明来标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。例如,若要定义名为“MyDirectOidRequest”的 MiniportDirectOidRequest 函数,请使用 MINIPORT_DIRECT_OID_REQUEST 类型,如以下代码示例所示:
MINIPORT_DIRECT_OID_REQUEST MyDirectOidRequest;
然后,按如下所示实现函数:
_Use_decl_annotations_
NDIS_STATUS
MyDirectOidRequest(
NDIS_HANDLE MiniportAdapterContext,
PNDIS_OID_REQUEST OidRequest
)
{...}
MINIPORT_DIRECT_OID_REQUEST 函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 MINIPORT_DIRECT_OID_REQUEST 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | NDIS 6.1 及更高版本中受支持。 |
目标平台 | 窗户 |
标头 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |