NdisCloseAddressFamily 函数 (ndis.h)

NdisCloseAddressFamily 释放客户端协议与调用管理器或 MCM 驱动程序注册的 AF 之间的关联,以便客户端绑定到的特定 NIC。

语法

NDIS_STATUS NdisClCloseAddressFamily(
  [in] NDIS_HANDLE NdisAfHandle
);

参数

[in] NdisAfHandle

指定返回的 NDIS 提供的句柄 NdisClOpenAddressFamilyEx.

返回值

When NdisCloseAddressFamily 返回除NDIS_STATUS_PENDING以外的任何内容,客户端应对其进行内部调用 ProtocolCloseAfComplete 函数。 否则,NDIS 会调用客户端的完成此操作时 ProtocolCloseAfComplete 函数。

如果 NdisCloseAddressFamily 返回NDIS_STATUS_PENDING,一个正在等待它的客户端要调用的 ProtocolCloseAfComplete 函数不应阻止当前线程,因为这可能会导致死锁。 当客户端在处理 NdisCloseAddressFamily 的上下文中调用 NdisCloseAddressFamily 时,这尤其重要 NdisCmNotifyCloseAddressFamily 请求。 在这种情况下,在客户端从处理 NdisCmNotifyCloseAddressFamily 请求返回后,调用管理器可能无法关闭地址系列。 如果客户端阻止当前线程,则客户端永远不会完成 NdisCmNotifyCloseAddressFamily 请求的处理,从而导致死锁。

备注

客户端通常从其调用 NdisCloseAddressFamily
ProtocolUnbindAdapterEx 函数,在绑定上关闭所有客户端打开的 VC,并调用 NdisCloseCall 和/或 NdisClDeregisterSap。 A client can also call NdisClCloseAddressFamily in the context of processing an NdisCmNotifyCloseAddressFamily 请求。

NDIS 调用客户端每当将客户端绑定到的基础 NIC 从计算机中删除或正在重新配置时,ProtocolUnbindAdapterEx 函数。 基础微型端口驱动程序的 PnP 重新配置会导致调用管理器或 MCM 驱动程序重新注册它通过该 NIC 支持的地址系列。 这反过来又会导致对客户端的后续调用 ProtocolCoAfRegisterNotify 函数。 在任一方案中,客户端的 ProtocolUnbindAdapterEx 函数必须使用任何未完成的 NdisAfHandle 调用 NdisCloseAddressFamily,具体取决于基础微型端口驱动程序。

作为一般准则,客户端应在其之前通过微型端口驱动程序释放它为面向连接的通信分配的所有资源 ProtocolUnbindAdapterEx 函数调用 NdisCloseAdapterEx

此调用发生后,传递给 NdisCloseAddressFamilyNdisAfHandle 对客户端无效。

在调用 NdisCloseAddressFamily 之前,客户端可以在 AF 打开或打开时使用 NdisAfHandle ProtocolClNotifyCloseAf 操作挂起。 如果你的设备不支持 ProtocolClNotifyCloseAf function returns NDIS_STATUS_PENDING, use the handle in the关闭操作完成后,NdisClNotifyCloseAddressFamilyComplete 调用。

要求

   
最低受支持的客户端 (支持 NDIS 6.0 和 NDIS 5.1 驱动程序,请参阅 Windows Vista 中的 NdisCloseAddressFamily (NDIS 5.1) ) 。 (支持的 NDIS 5.1 驱动程序,请参阅 Windows XP 中的 NdisCloseAddressFamily (NDIS 5.1) ) 。
目标平台 桌面
Header ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 符合性规则 Irql_Protocol_Driver_Function (ndis)

另请参阅

NdisClCloseCall

NdisClDeregisterSap

NdisClOpenAddressFamilyEx

ProtocolCloseAfComplete

ProtocolCmCloseAf

ProtocolCoAfRegisterNotify

ProtocolUnbindAdapterEx