注册 SAN NIC 通知

当代理驱动程序从其关联的 SAN 服务提供商收到请求,请求提供分配给驱动程序控制下的 NIC 的 IP 地址列表时,驱动程序会确定此列表并将其传递给提供程序。

为了获取这些 IP 地址,代理驱动程序必须注册到传输驱动程序接口 (TDI) ,以接收地址更改通知。 代理驱动程序调用 TdiRegisterPnPHandlers 函数。 在此调用中,此代理驱动程序将指针传递给 TDI_CLIENT_INTERFACE_INFO 结构的 AddAddressHandlerV2DelAddressHandlerV2 成员中的回调函数,以指定用于添加和删除地址的回调函数。 成功返回 TdiRegisterPnPHandlers 函数后,TDI 会立即使用地址添加回调将当前活动的所有网络地址指示给代理驱动程序。 该指示包含网络地址和这些地址绑定到的设备标识符。

每当 TDI 调用这些回调函数之一来指示地址添加或删除时,代理驱动程序需要以下参数:

地址
指向TA_ADDRESS结构的指针,该结构描述分配给 NIC 或从 NIC 中删除的网络地址。 对于 TCP/IP,此指针实际上是指向TA_ADDRESS_IP结构的指针。

DeviceName
指向 Unicode 字符串的指针,该字符串标识与地址关联的传输到 NIC 绑定。 对于 TCP/IP,Unicode 字符串采用以下格式:\Device\Tcpip_{NIC-GUID},其中 NIC-GUID 是由网络配置子系统分配给 NIC 的全局唯一标识符。

上述结构定义在 tdi.h 头文件中定义。 上述注册和回调函数在 tdikrnl.h 头文件中定义。 Microsoft Windows 驱动程序开发工具包 (DDK) 和 Windows 驱动程序工具包 (WDK) 中提供了这些头文件。 有关 TDI 即插即用 (PnP) 通知的详细信息,请参阅 TDI 客户端回调TDI 客户端事件和 PnP 通知处理程序

在系统启动时,TDI 调用代理驱动程序的地址添加回调,以指示所有当前处于活动状态的 IP 地址。 每当 TCP/IP 传输协议向 TDI 注册新的 IP 地址时,TDI 也会调用此回调。 代理驱动程序的 IP 地址列表中仅包括分配给代理驱动程序的 NIC 的地址。 如果驱动程序无法识别 DeviceName 中的 NIC,驱动程序的地址添加回调应立即返回控制权。

每当 TCP/IP 传输协议向 TDI 指示已删除 NIC 时,TDI 都会调用代理驱动程序的地址删除回调。 如果 NIC 的 IP 地址属于代理驱动程序的 NIC 之一,则代理驱动程序将从列表中删除该 IP 地址。

注意 Windows Vista 之后的 Microsoft Windows 版本将不支持 TDI。 请改用 Windows 筛选平台Winsock 内核