NdisCloseAddressFamily 函数 (ndis.h)
NdisCloseAddressFamily 释放客户端协议与调用管理器或 MCM 驱动程序注册的 AF 之间的关联,以便客户端绑定到的特定 NIC。
NDIS_STATUS NdisClCloseAddressFamily(
[in] NDIS_HANDLE NdisAfHandle
);
[in] NdisAfHandle
指定返回的 NDIS 提供的句柄 NdisClOpenAddressFamilyEx。
什么时候 NdisCloseAddressFamily 返回除NDIS_STATUS_PENDING以外的任何内容,客户端应对其进行内部调用 ProtocolCloseAfComplete 函数。 否则,NDIS 调用客户端完成此作后, ProtocolCloseAfComplete 函数。
如果 NdisCloseAddressFamily 返回NDIS_STATUS_PENDING,客户端正在等待其 要调用的 ProtocolCloseAfComplete 函数不应阻止当前线程,因为这可能会导致死锁。 当客户端调用 NdisCloseAddressFamily 处理上下文时,这一点尤其重要 NdisCmNotifyCloseAddressFamily 请求。 在这种情况下,在客户端处理 NdisCmNotifyCloseAddressFamily 请求后,调用管理器可能无法关闭地址系列。 如果客户端阻止当前线程,则客户端永远不会完成 NdisCmNotifyCloseAddressFamily 请求的处理,从而导致死锁。
客户端通常从其调用 NdisCloseAddressFamily
ProtocolUnbindAdapterEx 函数后,它会关闭绑定上所有客户端打开的 VC,并调用 NdisCloseCall 和/或 NdisClDeregisterSap。 客户端还可以在处理 a 的上下文中调用 NdisCloseAddressFamily
NdisCmNotifyCloseAddressFamily 请求。
NDIS 调用客户端 ProtocolUnbindAdapterEx 函数,每当从计算机中删除该客户端所绑定到的基础 NIC 或正在重新配置时。 基础微型端口驱动程序的 PnP 重新配置会导致调用管理器或 MCM 驱动程序重新注册它通过该 NIC 支持的地址系列。 这反过来又会导致对客户端的后续调用 ProtocolCoAfRegisterNotify 函数。 在任一方案中,客户端 ProtocolUnbindAdapterEx 函数必须调用 NdisCloseAddressFamily 任何未完成的 NdisAfHandle 它当前使用的依赖于基础微型端口驱动程序。
作为一般准则,客户端应在微型端口驱动程序之前通过微型端口驱动程序释放它为面向连接的通信分配的所有资源 ProtocolUnbindAdapterEx 函数调用 NdisCloseAdapterEx。
NdisAfHandle 传递到 NdisCloseAddressFamily 在发生此调用后立即对客户端无效。
在调用 NdisCloseAddressFamily之前,客户端可以在 AF 打开或打开 AF 时使用 NdisAfHandle ProtocolClNotifyCloseAf作挂起。 如果 ProtocolClNotifyCloseAf 函数返回NDIS_STATUS_PENDING,请使用关闭作完成后, NdisClNotifyCloseAddressFamilyComplete 调用。
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista 中支持 NDIS 6.0 和 NDIS 5.1 驱动程序(请参阅 NdisCloseAddressFamily (NDIS 5.1)。 支持 NDIS 5.1 驱动程序(请参阅 Windows XP 中的 NdisCloseAddressFamily (NDIS 5.1) 。 |
目标平台 | 桌面 |
标头 | ndis.h (包括 Ndis.h) |
库 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | Irql_Protocol_Driver_Function(ndis) |