The LoginToTarget method instructs a miniport driver that manages an HBA initiator to log on to a target portal.
实现 MSiSCSI_Operations WMI 类的 微型端口驱动程序必须支持此方法。
微型端口驱动程序必须公开它通过 MSiSCSI_InitiatorSessionInfo WMI 类创建的会话的相关信息。
下表描述了发起程序可以建立的登录会话类型。
| Login session | Description |
|---|---|
Discovery |
A discovery session is used exclusively for SendTargets operations. |
Informational |
信息会话允许发起程序查询目标以获取信息,但发起程序不会向即插即用(PnP)管理器报告目标上的逻辑单元号(LUN);存储端口驱动程序不枚举 LUN 或将其公开为本地设备。 Management applications can query these remote LUNs by establishing an informational session and calling iSCSI user-mode library routines, such as SendScsiInquiry, SendScsiReportLuns, and SendScsiReadCapacity. |
Data |
数据会话是功能齐全的会话。 启动会话的微型端口驱动程序应向端口驱动程序报告目标上的 LUN,因此端口驱动程序将枚举它们并加载相应的驱动程序。 软件可以访问这些远程设备,就像它们是本地设备一样。 |
Boot |
启动会话是一个功能齐全的会话,其中 iSCSI LUN 用作启动设备。 |
The identifier (ID) that the LoginToTarget method assigns to the session must remain constant for the lifetime of a session. 即使异步注销或网络事件将断开到目标的连接并强制微型端口驱动程序重新连接,微型端口驱动程序也应继续使用相同的会话 ID。
微型端口驱动程序在重新建立数据和信息会话时应使用以下准则:
定期重新连接尝试
微型端口驱动程序应定期尝试重新连接(建议使用 5 秒间隔),直到登录成功或微型端口驱动程序收到注销请求。
设备删除延迟
微型端口驱动程序不应立即从本地作系统的设备堆栈中删除目标的逻辑单元。 相反,微型端口驱动程序应使用本地缓存数据来处理 INQUIRY 和 REPORT LUNS 请求以及微型端口驱动程序必须发送到远程目标以进行处理的队列请求。
如果微型端口驱动程序在大约 60 秒后无法与目标重新建立会话,则应从本地设备堆栈中删除目标的逻辑单元。 通过引入从设备堆栈中删除设备的 60 秒延迟,微型端口驱动程序可以避免不必要的中断访问远程目标上的数据的本地应用程序的工作。 但是,延迟超过 60 秒可能需要微型端口驱动程序对大量请求进行排队,并且这些请求可能会消耗不可接受的系统资源量。 确切的延迟时间应该可配置。
The LoginToTarget WMI method belongs to the MSiSCSI_Operations WMI class.
For an explanation of the algorithm that the iSCSI user-mode library uses to establish a log, see LoginIScsiTarget.