具体实施方式
在下面详细地讨论具体实施方式。虽然讨论了特定实现方式,但是应当理解这仅是为了阐释的目的而做出。相关领域技术人员将认识到其它组件和配置也可以被使用,而不脱离本公开的主题的精神和范围。
综述
在多个实施方式中,存储设备被用户可移除地附接至计算设备(主机),该存储设备可以记录关于计算设备组件与用户可移除地附接的存储设备的活动会话什么时候已经开始和结束的时间的信息。组件可以表示主机操作系统组件(例如驱动器堆栈)以及预引导(preboot)环境组件(例如可扩展固件接口EFI模块)。可以从计算设备发送命令至用户可移除地附接的存储设备,以向用户可移除地附接的存储设备登记或注销(unregister)计算设备组件。命令可以包括时间戳和指明登记命令或注销命令的参数(argument)。用户可移除地附接的存储设备可以记录开始会话时间戳和结束会话时间戳。用户可移除地附接的存储设备能够识别控制用户可移除地附接的存储设备的计算设备(主机)组件,能够识别相对于其它一些计算设备组件,哪些I/O来自于所识别的计算设备组件,还能够识别用户可移除地附接的存储设备的介质的哪些逻辑块地址(LBA)与计算设备组件相关联,这样只有对于敏感区域的修改被考虑。
登记命令和注销命令可以分别包括要向用户可移除地附接的存储设备登记或注销的标识符。该标识符可以与计算设备组件相关联。在向特定的用户可移除地附接的存储设备登记的所有标识符的范围中,每个登记的标识符可以不同于所有其它登记的标识符。在一些实施方式中,标识符可以由计算设备的组件在运行时生成。在其它实施方式中,标识符可以被编码到计算系统的非易失性存储器中。
当创建要与特定计算设备组件相关联的标识符时,计算设备可以向用户可移除地附接的存储设备查询向用户可移除地附接的存储设备登记的标识符,并可以创建与所登记的标识符不同的标识符。用户可移除地附接的存储设备可以识别在记录会话开始的时间和记录会话结束的时间之间发生的对于用户可移除地附接的存储设备的介质的修改。用户可移除地附接的存储设备可以识别源自特定计算设备组件的修改。
一种登记机制被提供,用以建立与特定计算设备组件(例如,如软件组件或其它组件)相关联的LBA的一个或多个范围,可以由计算设备组件使用命令以向用户可移除地附接的存储设备查询来自相同计算设备或不同计算设备的任何其它计算设备组件对于登记的LBA范围的任何修改的发生。查询命令可以具有参数,包括与计算设备组件关联的标识符,和被查询的(多个)LBA范围。查询命令可以返回清洁(没有其它计算设备组件修改给定的(多个)LBA范围)或脏(至少一个其它计算设备组件修改了给定的(多个)LBA范围或者另一个计算设备或虚拟计算设备的组件修改了给定的LBA范围)的状态。
作为记录会话开始和结束的结果,用户可移除地附接的存储设备可以向计算设备组件提供关于先前活动的会话由于例如复位命令或者在会话结束之前发生掉电而没有恰当的会话结束的通知。用户可移除地附接的存储设备可以响应于登记命令或者单独的查询命令而提供该通知。
与用户可移除地附接的存储设备的计算设备(主机)会话可以包括多个互相排它的活动计算设备组件,诸如例如基本输入输出系统(BIOS)、正常会话驱动器(Normalsessiondriver)、后操作驱动器(休眠(hibernate),崩溃转储(crashdump))或者其它计算设备组件。每个计算设备组件可以在活动时排它地使用设备。因此每个计算设备组件可以具有它自己的与用户可移除地附接的存储设备的活动会话。与用户可移除地附接的存储设备的会话可以包括从用户可移除地附接的存储设备开启电源到关闭电源的全部时间。
示例性计算设备
图1是用于多个实施方式的示例性操作环境100的功能框图。示例性操作环境100可以包括可以起到主机的作用的计算设备108和用户可移除的存储设备110。
计算设备108可以包括处理器102、随机存取存储器(RAM)104、只读存储器(ROM)和连接处理器102、RAM104和ROM106的通信总线112。
处理器102可以包括一个或多个传统的处理器,其解释并执行指令。存储器可以包括RAM104、ROM106和/或另外一个类型的动态或静态存储设备,其存储信息和由处理器102执行的指令。RAM104或者另外一个类型的动态存储设备可以存储指令以及临时变量或在处理器102执行指令期间使用的其它中间信息。ROM106或者另外一个类型的静态存储设备可以为处理器102存储静态信息和指令。
计算设备102可以响应于处理器102执行在非瞬态机器可读介质(诸如例如RAM104、ROM106或其它非瞬态介质)中包含的指令序列而执行功能。该指令可以从另一个非瞬态机器可读介质或者从分离的设备经由通信接口(未示出)被读入RAM106。
用户可移除的存储设备110可以被用户可移除地附接至计算设备108,这样处理器102和用户可移除的存储设备110可以经由通信总线112彼此通信。
示例性用户可移除的存储设备
图2是示例性用户可移除的存储设备110的功能框图。用户可移除的存储设备110可以包括处理器202、RAM204、ROM206、介质208、非易失性存储介质210和连接处理器202、RAM204、ROM206、介质208和非易失性存储介质210的通信总线212。
处理器202可以包括一个或多个传统的处理器,其解释并执行指令。存储器可以包括RAM204、ROM206和/或另外一个类型的动态或静态存储设备,其存储信息和由处理器202执行的指令。RAM204或者另外一个类型的动态存储设备可以存储指令以及临时变量或在处理器202执行指令期间使用的其它中间信息。ROM206或者另外一个类型的静态存储设备可以为处理器202存储静态信息和指令。
介质208可以包括闪存(flash)RAM、磁盘、光盘或其它用于存储数据和/或指令的介质。非易失性存储介质210可以包括能够在电力循环期间自始至终保持所存储的信息的非易失性介质。在一些实施方式中,介质208可以包括非易失性存储介质210。
示例性实施方式
登记
图3图示了多个计算设备组件,具有互相排它的与用户可移除地附接的存储设备的活动会话。图3中的多个计算设备组件包括基本输入/输出系统(BIOS)302、正常会话设备驱动器304、休眠驱动器306。每个与用户可移除地附接的存储设备的会话可以具有会话ID,通过该会话ID多个计算设备组件中的每一个和用户可移除地附接的存储设备可以识别特定的会话。
图4是当计算设备组件尝试生成和向可移除地附接的存储设备登记新的组件标识符时,可以由计算设备和用户可移除地附接的存储设备执行的示例性过程的流程图。该过程可以开始于计算设备组件生成组件标识符,该组件标识符将与计算设备组件相关联(动作402)。可替换地,组件标识符可以是先前已存储的。在一个实施方式中,组件标识符可以被随机地生成。然后计算设备组件可以发送查询命令至用户可移除地附接的存储设备(动作404)。该查询命令可以包括组件标识符。
然后用户可移除地附接的存储设备可以接收该查询命令并确定在该查询命令中包括的组件标识符是否已经向用户可移除地附接的存储设备登记(动作406)。如果用户可移除地附接的存储设备确定该组件标识符已经登记,则用户可移除地附接的存储设备返回指示至计算设备以指示该组件标识符已经登记,然后计算设备组件可以重复执行动作402-406以生成新的组件标识符并确定该新的组件标识符是否已经向用户可移除地附接的存储设备登记。
如果用户可移除地附接的存储设备在动作406处确定组件标识符没有向用户可移除地附接的存储设备登记,则计算设备可以发送登记命令至用户可移除地附接的存储设备(动作408)。登记命令可以包括组件标识符和登记标识符。在一些实施方式中,登记标识符可以包括时间信息,诸如例如对应于计算设备的时间的时间戳,包括但不限于:根据计算设备的当前时间。在其它实施方式中,登记标识符可以包括随机生成的数字。
用户可移除地附接的存储设备可以接收该登记命令并登记该组件标识符和登记标识符,并可以返回成功或失败的指示至计算设备(动作408)。然后计算设备可以确定返回的指示(或者从用户可移除地附接的存储设备发送的指示)是否是成功指示。如果返回的指示是成功指示,则过程完成。否则,计算设备可以基于失败指示的特定值而采取或执行行动(动作412)。在一个实现方式中,所采取的行动可以包括再次重复动作408和410直到返回的指示是成功指示或者动作408和410已经重复了给定的次数。在另一个实现方式中,采取的行动可以包括提供失败指示给调用过程并返回至调用过程。
图5是图示了在多个实施方式中在动作408(图4)期间执行的示例性过程的流程图。该过程可以开始于用户可移除地附接的存储设备确定在登记命令中包括的组件标识符是否向用户可移除地附接的存储设备登记了(动作502)。用户可移除地附接的存储设备可以通过检查该用户可移除地附接的存储设备的介质或非易失性介质而做出该确定。
如果组件标识符被确定为没有向该用户可移除地附接的存储设备登记,则用户可移除地附接的存储设备可以在该介质或该非易失性介质中记录该组件标识符(动作504)和登记标识符(动作506)。然后用户可移除地附接的存储设备可以发送响应至计算设备以指示成功登记(动作512)并且该过程可以完成。
如果在动作502期间用户可移除地附接的存储设备确定在登记命令中包含的组件标识符已经向用户可移除地附接的存储设备登记,则用户可移除地附接的存储设备可以参考与登记的组件标识符相关联的所记录的登记标识符,并且可以确定所记录的登记标识符是否匹配在接收到的登记命令中包含的登记标识符(动作508)。
如果所记录的登记标识符匹配在接收到的登记命令中包含的登记标识符,则用户可移除地附接的存储设备可以发送成功登记指示至计算设备(动作512),并且该过程可以完成。
如果在动作508期间用户可移除地附接的存储设备确定所记录的登记标识符不匹配在接收到的登记命令中包含的登记标记符,则用户可移除地附接的存储设备可以发送登记失败指示至计算设备(动作512),并且该过程可以完成。
在一些实施方式中,用户可移除地附接的存储设备的介质的一个或多个逻辑块地址(LBA)范围可以关于组件标识符被登记。多个登记的组件标识符可以被登记为具有相应的重叠LBA范围。登记LBA范围命令可以包括组件标识符、登记标识符和创建者签名。创建者签名可以指明一个或多个LBA范围的特性,诸如例如新技术文件系统(NTFS)、微软(MSFT)闪存缓存(flashcache)、Intel闪存缓存格式1、Intel闪存缓存格式A等。
图6是在一个实施方式中登记一个或多个LBA范围的示例性过程的流程图。该过程可以开始于用户可移除地附接的存储设备确定在从计算设备接收的登记LBA命令中包含的组件标识符是否已经向用户可移除地附接的存储设备登记(动作602)。在一些实施方式中,在接收命令以向用户可移除地附接的存储设备登记计算设备组件之后,登记一个或多个LBA范围的命令可以被用户可移除地附接的存储设备接收。
如果组件标识符不是已经登记,则用户可移除地附接的存储设备可以通过将该组件标识符记录在用户可移除地附接的存储设备的介质中来登记该组件标识符(动作604)。在一些实施方式中,介质可以是非易失性介质。然后用户可移除地附接的存储设备可以将在登记LBA命令中包含的登记标识符记录在用户可移除地附接的存储设备的介质中(动作606)。接下来,用户可移除地附接的存储设备可以通过将一个或多个LBA范围记录在用户可移除地附接的存储设备的介质中来登记在登记LBA范围命令中包含的一个或多个LBA范围(动作610)。然后用户可移除地附接的存储设备可以发送指示至计算设备,以指示成功登记(动作612)。然后该过程可以完成。
如果在动作602期间用户可移除地附接的存储设备确定组件标识符被登记,则用户可移除地附接的存储设备可以确定在登记LBA命令中包含的登记标识符是否匹配与在用户可移除地附接的存储设备中记录的登记的组件标识符相关联的登记标识符(动作608)。如果在登记LBA命令中包含的登记标识符匹配与在用户可移除地附接的存储设备中记录的登记的组件标识符关联的登记标识符,则动作610和612可以如先前所描述的被执行。然后该过程可以完成。
如果在动作608期间用户可移除地附接的存储设备确定在登记LBA命令中包含的登记标识符不匹配与用户可移除地附接的存储设备中记录的登记的组件标识符相关联的登记标识符,则用户可移除地附接的存储设备可以发送指示至计算设备以指示登记失败(动作614)。然后该过程可以完成。
计算设备组件可以通过发送查询登记的LBA范围命令至用户可移除地附接的存储设备来向用户可移除地附接的存储设备查询登记的LBA范围。在接收到查询登记的LBA范围命令时,用户可移除地附接的存储设备可以确定是否有任何LBA范围被登记,如果有,则可以将关于与用户可移除地附接的存储设备相关的所有登记的LBA范围和相应的在登记期间使用的创建者签名的信息返回至计算设备。在一些实施方式中,如果LBA范围被多次登记,则LBA范围将与在每次登记期间使用的相应的创建者签名一起被多次地包括在来自用户可移除地附接的存储设备的查询响应中。
会话管理
在计算设备组件和用户可移除地附接的存储设备之间的任何I/O发生之前,开始会话命令可以从计算设备组件被发送至用户可移除地附接的存储设备以开始它们之间的会话。在计算设备组件和用户可移除地附接的存储设备之间的最后的I/O之后,结束会话命令可以从计算设备组件被发送至用户可移除地附接的存储设备以结束在计算设备组件和用户可移除地附接的存储设备之间的会话。
开始会话命令和结束会话命令可以包括主机组件标识符、会话标识符和时间戳。时间戳可以包括来自计算设备的时间信息。在一些实施方式中,会话标识符可以包括来自计算设备的时间信息。响应于接收开始会话命令或结束会话命令,用户可移除地附接的存储设备可以返回成功或失败的指示至计算设备。
图7是图示了在接收来自连接的计算设备的开始会话命令之后可以由用户可移除地附接的存储设备执行的示例性处理的流程图。该过程可以开始于用户可移除地附接的存储设备确定与在开始会话命令中包含的组件标识符对应的计算设备的组件是否已经在会话中(动作702)。如果该组件不在会话中,则用户可移除地附接的存储设备可以将会话的开始、会话标识符和关于会话开始时间的时间信息记录在用户可移除地附接的存储设备的介质中(动作704)。然后用户可移除地附接的存储设备可以发送指示至计算设备以指示会话成功地开始(动作706)。然后该过程可以完成。
如果在动作702期间用户可移除地附接的存储设备确定组件在会话中,则用户可移除地附接的存储设备可以确定在开始会话命令中包含的会话标识符是否匹配所记录的会话的会话标识符(动作708)。如果会话标识符匹配,则用户可移除地附接的存储设备可以在介质中将会话的结束和关于会话的结束时间的时间信息记录在用户可移除地附接的存储设备的介质中(动作710)。然后用户可移除地附接的存储设备可以在介质中将会话的开始和关于会话开始的时间信息记录在用户可移除地附接的存储设备的介质中(动作712)。用户可移除地附接的存储设备可以发送指示至计算设备以指示上一个会话不适当地结束(动作714)。然后该过程可以完成。
如果在动作708期间用户可移除地附接的存储设备确定在开始会话命令中包含的会话标识符和所记录的会话标识符不匹配,则用户可移除地附接的存储设备可以发送失败指示至计算设备以指示开始会话命令中的会话标识符不匹配所记录的会话标识符(动作716)。在一些实施方式中,在接收到失败指示之后,计算设备可以提供失败指示至用户或者可以覆盖会话标识符的设置。然后该过程可以完成。
图8图示了在多种计算设备组件和用户可移除地附接的存储设备之间的多个会话的开始和结束。在发起与用户可移除地附接的存储设备的任何I/O之前,计算设备的BIOS组件可以发送开始会话命令802至用户可移除地附接的存储设备。然后在BIOS组件和用户可移除地附接的存储设备之间可以发生I/O。在BIOS组件和用户可移除地附接的存储设备之间的所有I/O活动已经完成之后,BIOS组件可以发送结束会话命令804至用户可移除地附接的存储设备以结束该会话。
在稍后的时间点,计算设备的正常驱动器组件可以发送开始会话命令806至用户可移除地附接的存储设备,此后才会在它们之间发生I/O活动。在正常驱动器组件和用户可移除地附接的存储设备之间的所有I/O活动已经完成之后,正常驱动器组件可以发送结束会话命令808至用户可移除地附接的存储设备来结束会话。
在稍后的某个时间,计算设备的休眠驱动器组件可以发送开始会话命令810至用户可移除地附接的存储设备,此后才会在它们之间发起I/O。然后在休眠驱动器组件和用户可移除地附接的存储设备之间可以发生I/O。在休眠驱动器组件和用户可移除地附接的存储设备之间的所有I/O活动已经完成之后,休眠驱动器组件可以发送结束会话命令812至用户可移除地附接的存储设备以结束该会话。
如能够在图8中看到的,开始会话命令和结束会话命令正常情况下围绕着在计算设备组件和用户可移除地附接的存储设备之间的I/O活动。结果,异常的会话终止可以被用户可移除地附接的存储设备检测到。例如,如果先前会话的开始没有相应的先前会话的结束,则先前会话是异常终止的。作为具体的例子,假设正常驱动器组件发送第一开始会话命令至用户可移除地附接的存储设备。在稍后的时间点,正常驱动器组件可以发送第二开始会话命令至用户可移除地附接的存储设备,而没有发送居间的结束会话命令。当两个开始会话命令被接收到,而没有居间的结束会话命令时,用户可移除地附接的存储设备可以确定发生了异常的会话终止。
在一些实施方式中,计算设备组件可以发送查询异常会话终止命令至用户可移除地附接的存储设备。用户可移除地附接的存储设备可以接收该查询异常会话终止命令并确定是否已经接收到两个开始会话命令而没有居间的结束会话命令。如果接收到两个开始会话命令而没有居间的结束会话命令,则用户可移除地附接的存储设备可以连同与该异常会话终止相关联的组件标识符一起发送异常会话终止指示至计算设备组件。如果用户可移除地附接的存储设备确定没有出现其间没有结束会话命令的两个开始会话命令,则用户可移除地附接的存储设备可以发送无失败指示至计算设备组件。
在其它实施方式中,当用户可移除地附接的存储设备接收开始会话命令时,可以自动地进行检查以确定是否先前的开始会话命令被接收而没有居间的结束会话命令。如果先前的开始会话命令被接收而没有居间的结束会话命令,则用户可移除地附接的存储设备可以发送异常会话终止指示至计算设备。
在计算设备组件从用户可移除地附接的存储设备接收异常会话终止指示之后,计算设备组件可以发送查询失败信息命令至用户可移除地附接的存储设备。响应于接收到该查询失败信息命令,用户可移除地附接的存储设备可以获得关于失败的详细信息,包括但不限于组件标识符、会话标识符、其间没有结束会话命令的已经被接收的第一开始会话命令和第二开始会话命令的时间戳。用户可移除地附接的存储设备然后发送该详细信息至计算设备组件。在其它实施方式中,附加的或不同的信息可以从用户可移除地附接的存储设备发送至计算设备组件,包括但不限于诊断信息和特定失败码。
在多个实施方式中,计算设备组件可以发送命令至用户可移除地附接的存储设备以查询自从上次会话结束以来对于用户可移除地附接的存储设备的介质所作出的修改。图9是图示了可以由计算设备和用户可移除地附接的存储设备执行的示例性过程的流程图,该过程关于查询自从上次会话结束以来对于用户可移除地附接的存储设备的介质是否作出了修改的命令。
该过程可以开始于计算设备发送源自计算设备组件的命令至用户可移除地附接的存储设备以查询是否对于用户可移除地附接的存储设备的介质作出了修改(动作902)。命令可以包括组件标识符和用户可移除地附接的存储设备的介质的一个或多个LBA范围。在接收到该命令后,用户可移除地附接的存储设备可以确定一个或多个LBA范围是否包括在所接收到的命令中(动作904)。如果没有LBA范围被包括在所接收到的命令中,则用户可移除地附接的存储设备可以确定介质是否被相同计算设备或不同计算设备的任何其它计算设备组件修改了(动作906)。为了确定介质是否被修改,用户可移除地附接的存储设备可以参考所记录的关于与组件标识符关联的上次会话结束的信息,并可以确定在与组件标识符关联的上次会话结束之后是否建立了与任何其它计算设备组件相关联的任何会话和/或用户可移除地附接的存储设备可以参照在介质中记录的信息,该信息指示是否任何其它计算设备组件修改了用户可移除地附接的存储设备的介质,如果是,还指示任何其它计算设备组件何时修改了用户可移除地附接的存储设备的介质。记录的信息可以包括组件标识符、时间信息和一个或多个LBA范围。如果用户可移除地附接的存储设备确定自从上次会话结束以来介质已经被修改,则用户可移除地附接的存储设备发送“脏(dirty)”指示至计算设备组件,指示自从上次会话结束以来在用户可移除地附接的存储设备的介质中记录的信息已经被修改(动作912)。否则,用户可移除地附接的存储设备可以发送“清洁(clean)”指示至计算设备组件,指示自从上次会话结束以来在用户可移除地附接的存储设备的介质中记录的信息没有被修改(动作908)。然后计算设备的计算设备组件可以根据接收到“脏”指示还是“清洁”指示来采取特定行动(动作910)。例如,如果接收到“脏”指示,计算设备可以呈现错误指示给计算设备的用户,或者可以采取不同的行动。如果接收到“清洁”指示,计算设备可以采取行动,诸如例如信任用户远程设备的介质的内容,或者可以采取不同的行动。
如果在动作904期间用户可移除地附接的存储设备确定接收到的命令包括一个或多个LBA范围,则用户可移除地附接的存储设备可以确定LBA范围中的一个LBA范围是否可能已经被修改(动作914)。如果用户可移除地附接的存储设备确定LBA范围可能已经被修改,则用户可移除地附接的存储设备可以准备发送脏指示至计算设备的计算设备组件以指示在上次会话结束之后在该LBA范围内存储的信息可能已经被修改(动作916)。否则,用户可移除地附接的存储设备可以准备发送清洁指示至计算设备组件以指示自从上次会话结束以来在用户可移除地附接的存储设备的介质的LBA范围中记录的信息没有被修改(动作918)。
在执行动作916或动作918中的任一个之后,用户可移除地附接的存储设备可以确定接收到的命令是否包含另外的LBA范围(动作920)。如果用户可移除地附接的存储设备确定接收到的命令包含另外的LBA范围,则用户可移除地附接的存储设备可以执行与该另外的LBA范围相关的动作914-920。否则,用户可移除地附接的存储设备可以发送用于一个或多个LBA范围中的每一个的相应的清洁和/或脏指示至计算设备的计算设备组件(动作922)。然后计算设备可以基于接收到的清洁和/或脏指示采取合适的行动(动作924)。
在一些实施方式中,计算设备可以设置和校正用户可移除地附接的存储设备的时间信息。这可以通过计算设备发送设置和校正时间命令至用户可移除地附接的存储设备来完成。该设置和校正时间命令可以包含来自计算设备的时间信息。在一个实施方式中,时间信息可以被包含在设置和校正时间命令中包含的时间戳中。在接收了设置和校正时间命令后,用户可移除地附接的存储设备可以根据在该设置和校正时间命令中包含的时间信息来设置和校正用户可移除地附接的存储设备的时间信息。在成功地设置和校正时间信息后,用户可移除地附接的存储设备可以发送成功指示至计算设备。如果用户可移除地附接的存储设备不能够成功地设置和校正时间信息,则用户可移除地附接的存储设备可以发送失败指示至计算设备。
在实现设置和校正时间命令的实施方式中,只有当在计算设备组件和用户可移除地附接的存储设备之间建立了会话时,计算设备组件才可以发送设置和校正时间命令至用户可移除地附接的存储设备。在其它实施方式中,计算设备组件可以在任何时间发送设置和校正时间命令至用户可移除地附接的存储设备,无论在计算设备组件和用户可移除地附接的存储设备之间是否建立了会话。
示例性实现方案
在计算设备上的一个示例性实现方案中,驱动器堆栈可以封装上面关于计算设备所描述的实施方式。图10图示了关于驱动器堆栈的示例性分层。如图10中所图示的,驱动器堆栈1006可以位于文件系统层1004之下,文件系统层1004进一步位于端口堆栈1002之下。当驱动器堆栈1006封装该先前描述的关于计算设备的实施方式时,文件系统层1004和端口堆栈1002可以保持不知道对于驱动器堆栈1006中的驱动器做出的任何改变,以实现先前描述的实施方式。
在一个示例性实现方案中,驱动器堆栈1006中的驱动器可以发现用户可移除地附接的存储设备是否能够支持与计算设备的会话。在一个实施方式中,驱动器可以发送特定命令至用户可移除地附接的存储设备,并且作为响应,驱动器可以预计接收来自用户可移除地附接的存储设备的特定响应。当接收到特定响应时,驱动器然后可以发现用户可移除地附接的存储设备支持与计算设备的会话。否则,驱动器可以发现用户可移除地附接的存储设备不支持与计算设备的会话。在其它实施方式中,驱动器可以经由其它方法发现用户可移除地附接的存储设备是否支持与计算设备的会话。
当驱动器发现用户可移除地附接的存储设备能够支持与计算设备的会话时,驱动器可以确定自从上次在计算设备和用户可移除地附接的存储设备之间的会话结束以来用户可移除地附接的存储设备的存储介质是否被修改。正如关于图9的流程所描述的,驱动器可以确定自计算设备和用户可移除地附接的存储设备之间的上一次会话之后存储介质是否被修改。例如,在动作902(图9)中,驱动器可以发送关于对存储介质的修改的查询至用户可移除地附接的存储设备。该查询可以不包含关于存储介质的LBA范围或者可以包括一个或多个LBA范围。用户可移除地附接的存储设备可以确定对于存储介质的任何部分是否做出了任何修改(在查询中没有LBA范围的情形中),或者对于存储介质的一个或多个范围是否做出了修改(在查询中有一个或多个LBA范围的情形中)。
如果用户可移除地附接的存储设备确定做出了修改,则脏指示可以从用户可移除地附接的存储设备发送至驱动器。否则,用户可移除地附接的存储设备可以发送清洁指示至驱动器,如图9中所图示的。当驱动器从用户可移除地附接的存储设备接收到清洁指示时,驱动器可以信任存储介质的内容。否则,当驱动器从用户可移除地附接的存储设备接收到脏指示时,驱动器不可以信任存储介质的内容。
进一步地,在一个示例性实现方案中,用户可移除地附接的存储设备可以检测异常的会话终止,如先前所描述的,并且可以发送异常会话终止指示至驱动器堆栈1006中的驱动器。通过响应于接收该异常会话终止指示发送查询失败命令至用户可移除地附接的存储设备,驱动器可以获取关于异常会话终止的详细信息。
在一些实施方式中,驱动器可以发送查询异常会话终止命令至用户可移除地附接的存储设备。响应于接收该查询异常会话终止命令,用户可移除地附接的存储设备可以发送指示是否检测到异常的会话终止的响应。
另外,在一个示例性实现方案中,驱动器堆栈1006的一个或多个驱动器可以生成组件标识符,查询组件标识符是否已经向用户附接的存储设备登记,登记组件标识符,以及开始和结束与用户可移除地附接的存储设备的会话,如在前所讨论的。
结论
多个实施方式被描述,其中用户可移除地附接的存储设备可以变得知道用户可移除地附接的存储设备关机后经过的时间量。进一步地,在多个实施方式中,计算设备组件可以查询用户可移除地附接的存储设备以确定相同计算设备或者不同计算设备的另一个计算设备组件是否已经访问了该用户可移除地附接的存储设备并可能已经修改了用户可移除地附接的存储设备的介质的内容。另外,计算设备可以从发现来自用户可移除地附接的存储设备的失败信息(包括但不限于异常的会话终止)中受益。
虽然已经用对于结构特征和/或方法动作特定的语言描述了主题,但是应该理解所附权利要求的主题不是必须限于上述特定特征或动作。相反,上述特定特征和动作是作为实现权利要求的示例形式而公开的。
所述实施方式的其它配置是本公开的范围的一部分。例如,在其它实施方式中,由过程执行的动作的次序可以不同和/或可以包括附加的或其它动作。
因此,是所附权利要求和它们的合法等效方案定义了实施方式,而不是所给出的任何特定示例。