NdisOpenAdapterEx 函数 (ndis.h)
协议驱动程序从其 ProtocolBindAdapterEx 函数调用 NdisOpenAdapterEx 函数,以在协议驱动程序和基础驱动程序之间设置绑定。
语法
NDIS_STATUS NdisOpenAdapterEx(
[in] NDIS_HANDLE NdisProtocolHandle,
[in] NDIS_HANDLE ProtocolBindingContext,
[in] PNDIS_OPEN_PARAMETERS OpenParameters,
[in] NDIS_HANDLE BindContext,
[out] PNDIS_HANDLE NdisBindingHandle
);
参数
[in] NdisProtocolHandle
返回的句柄 NdisRegisterProtocolDriver 函数。
[in] ProtocolBindingContext
调用方提供的上下文区域的句柄,协议驱动程序在其中维护此绑定的状态信息。
[in] OpenParameters
指向调用方设置 的NDIS_OPEN_PARAMETERS 结构的指针。
[in] BindContext
标识绑定操作的 NDIS 上下文区域的句柄。 NDIS 将此句柄传递给 ProtocolBindAdapterEx 函数的 BindContext 参数。
[out] NdisBindingHandle
指向调用方提供的变量的指针。 NDIS 在 NdisBindingHandle 中写入一个句柄,该句柄标识调用方与 OpenParameters 的 AdapterName 成员中指定的微型端口适配器之间的绑定。 调用方在对 NdisXxx 函数的后续调用中使用此句柄。
返回值
NdisOpenAdapterEx 返回以下状态值之一:
返回代码 | 说明 |
---|---|
|
NdisOpenAdapterEx 成功完成了打开操作。 |
|
NdisOpenAdapterEx 未完成打开操作。 NDIS 稍后调用协议驱动程序的 ProtocolOpenAdapterCompleteEx 函数,用于完成打开操作。 |
|
NdisOpenAdapterEx 由于资源不足而失败。 |
|
NdisOpenAdapterEx 失败,因为找不到 OpenParameters 的 AdapterName 成员中指定的微型端口适配器。 |
|
NdisOpenAdapterEx 失败,因为在 OpenParameters 的 MediumArray 成员中指定的数组不包含 NDIS 或基础驱动程序支持的介质类型。 |
|
NdisOpenAdapterEx 由于上述列表中的原因以外的原因而失败。 |
注解
协议驱动程序必须从其 ProtocolBindAdapterEx 函数调用 NdisOpenAdapterEx 。 NDIS 无法尝试在 ProtocolBindAdapterEx 的上下文之外调用 NdisOpenAdapterEx。
如果 NdisOpenAdapterEx 返回NDIS_STATUS_PENDING,则在 NDIS 调用 之前,调用方不得使用 NdisBindingHandle 中的值和 OpenParameters 上的 SelectedMediumIndex 成员 ProtocolOpenAdapterCompleteEx 函数。
AdapterName 中的字符串必须仅在 NdisOpenAdapterEx 返回之前保持有效。 因此,如果 NdisOpenAdapterEx 返回NDIS_STATUS_PENDING,则驱动程序不需要在 NdisOpenAdapterEx 返回后继续保留此字符串。
打开操作成功完成后,调用方可以在后续调用 Ndis Xxx 函数时使用 NDIS 在 NdisBindingHandle 中返回的值。 调用方可以使用 OpenParameters 参数的 SelectedMediumIndex 成员来确定它应如何与基础驱动程序交互。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | Irql_Protocol_Driver_Function (ndis) |