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